module MConcrete !混凝土模板

发布日期:[08-12-04 15:24:26] 浏览人次:[]

implicit none

type::typ_Concrete
!混凝土抗拉强度,抗压强度,初始弹性模量,初始泊松比
!最终泊松比,初始剪切模量
real*8 Ft,Fc,E0,MU0,MUU,G0
!抗拉下降段参数,裂面剪力折减系数
real*8 A1,A2
!Crack=1,一条裂缝,=2两条裂缝,AddLoad=1加载,=0,卸载
integer*4 Crack, AddLoad
!裂缝角度
real*8 ANGLE
!t时的应力,主应力,应力增量,t+dt时的应力
real*8 SIG(3),SIGP(3),dSIG(3),Stress(3)
real*8 EPS(3),EPSP(3),dEPS(3),Strain(3)
!非线性指标, 破坏面,最大非线性指标
real*8 Beta,J2f,BetaMax
!弹性本构矩阵,割线本构矩阵,本构矩阵
real*8 De(3,3), Ds(3,3), D(3,3)
!坐标转换矩阵
real*8 N(3,3)
integer(4) INC, NCycle
end type typ_Concrete
contains

subroutine Con_Initial(C) !初始化混凝土参数
type(typ_Concrete) :: C
C%Fc=30d6; C%Ft=3d6; C%E0=30d9; C%MU0=0.2d0; C%MUU=0.2d0
C%A1=3000; C%A2=0.5;
C%G0=C%E0/(2.d0*(1.d0+C%MU0))
C%Crack=0; C%Angle=0.d0; C%AddLoad=1
call Con_Get_De(C)
return
end subroutine Con_Initial
subroutine Con_Get_D(C)
type(typ_Concrete) :: C
call Con_Get_De(C)
if(C%Crack<1) then
call MAXMIN(C%SIG,C%SIGP,C%ANGLE)
end if
! RCM程序
! if(C%Crack>1) then
! call MAXMIN(C%EPS,C%EPSP,C%ANGLE)
! end if
call Con_Get_N(C)
Call Con_Add_Load(C) !判断是否为加载

if(C%AddLoad==0) then !如果是卸载
call Con_UnLoad(C)
!return
end if
if(C%AddLoad==1) then
call Con_Get_Beta(C)
if(C%Beta<=C%BetaMax) then
call Con_UnLoad(C)
else
call Con_Get_Ds(C)
C%BetaMax=C%Beta
end if
if(C%Crack<1) then
call MAXMIN(C%Stress,C%SIGP,C%ANGLE)
end if
! RCM程序
! if(C%Crack>1) then
! call MAXMIN(C%EPS,C%EPSP,C%ANGLE)
! end if
call Con_Get_N(C)
call Con_Crack(C)
end if
return
end subroutine Con_Get_D
subroutine Con_Crack(C) !处理裂缝
type(typ_Concrete) :: C
real*8 EPSC,EPST
integer(4) :: CrackState(3)
real*8 :: E1,E2,E12,G

EPSC=-C%Fc/C%E0*2.d0 !峰值压应变
EPST=C%Ft/C%E0 !峰值拉应变
CrackState=0

C%SIGP=matmul(transpose(C%N),C%Stress)
if(C%SIGP(1)>C%Ft.and.C%Crack<1) then
C%Crack=1
end if
if(C%SIGP(2)>C%Ft.and.C%Crack<2) then
C%Crack=2
end if
if(C%Crack>0) then
C%EPSP=matmul(transpose(C%N),(C%EPS+C%dEPS))
if(C%EPSP(1)<=0.d0) then
if(abs(C%EPSP(1)) C%SIGP(1)=2.d0*(C%EPSP(1)/EPSC)
1 -(C%EPSP(1)/EPSC)**2
C%SIGP(1)=-C%SIGP(1)*C%Fc
else
C%SIGP(1)=-C%Fc
end if
else
if(C%EPSP(1)<=EPSt) then
C%SIGP(1)=C%EPSP(1)*C%E0
else
C%SIGP(1)=C%Ft*exp(-C%A1*(C%EPSP(1)-EPSt))
CrackState(1)=1
end if
end if
if(C%EPSP(2)<=0.d0) then
if(abs(C%EPSP(2)) C%SIGP(2)=2.d0*(C%EPSP(2)/EPSC)
1 -(C%EPSP(2)/EPSC)**2
C%SIGP(2)=-C%SIGP(2)*C%Fc
else
C%SIGP(2)=-C%Fc
end if
else
if(C%EPSP(2)<=EPSt) then
C%SIGP(2)=C%EPSP(2)*C%E0
else
C%SIGP(2)=C%Ft*exp(-C%A1*(C%EPSP(2)-EPSt))
CrackState(2)=1
end if
end if
C%SIGP(3)=C%G0*C%EPSP(3)*C%A2

C%

|<< << < 1 2 3 > >> >>|
www.mapeng.net 马棚网
www.mapeng.net
文章作者:未知 | 文章来源:网络 | 责任编辑:admin | 发送至邮箱: | 加入收藏:
本文关键字:module  MConcrete  混凝土  模板
本文所属专题:ANSYS技术 
相关资讯
热点资讯
推荐资讯

关于我们 | 站点导航 | 使用帮助 | 友情链接 | 广告服务 | 免责声明 | 新手上路
设为首页 | 加入收藏 | 在线留言 | 马棚网QQ群:{92562572}{102901272}{333259257} | 交流QQ: 客户服务 客户服务 客户服务