免费黄网站在线观看_成人午夜剧场免费观看完整版_多野结衣av一区_亚洲激情在线视频_国产乱码精品一区二区三区亚洲人 _国产成人精品三级_视频一区视频二区视频三区高_一区福利视频_国产成人精品午夜_蜜桃成人365av_国产精品美女久久久久久久_国产伦精品一区二区三区视频免费

您的位置:網站首頁 > Ansys教程

非線性彈性全量本構模型程序(THURC3A)

時間:2010-01-29 05:29:53 來源:
module TypeDef !定義混凝土材性模塊
type :: typ_Concrete
real*8 fc, ft,E0, ENU, EPS_Crush !抗壓強度+,抗拉強度+,初始彈性模量,初始泊松比,壓碎應變-
real*8 Es, ENUs !割線模量,割線泊松比
real*8 T(6,6) !坐標轉換矩陣
integer NCrack (3), Pre_NCrack(3), Pre_inc, Pre_incsub; !開裂記錄,前次迭代開裂記錄,前次增量步,前次增量子步
real*8 SIG(6), EPS(6),dEPS(6); !開始時應力,應變,應變增量
real*8 StressP(6), StrainP(6); !主應力,主應變
real*8 Stress(6), Strain(6) !結束時應力,應變
real*8 Beta,Pre_Beta !非線性指標,前次迭代非線性指標
real*8 D(6,6), Dela(6,6), Ds(6,6) !剛度矩陣,彈性剛度矩陣,割線剛度矩陣
end type typ_Concrete
end module TypeDef
module My_MOD !開辟公共變量空間
use TypeDef
type(typ_Concrete) :: My_Con(1000,8) !定義混凝土數組
end module


subroutine Get_DS(D,G,E,DE,S,TEMP0,
1 DTEMP,NGENS,N,NN,KC,MATS,NDI,NSHEAR,inc,incsub,ncycle)
! D(6x6) 迭代本構矩陣(out)
! G(6) 由于狀態改變引起的應力變化,不用(out)
! E(6) 開始時刻的應變(in)
! DE(6) 應變增量(in)
! S(6) 開始時刻的應變(in & out)
! Temp0 溫度(in)
! DTEMP 溫度變化(in)
! NGENS 應變維數(in)
! N(2) 單元編號(in)
! NN 積分點編號(in)
! KC 層號(in)
! MATS 材料編號(in)
! NDI 正應力維數(in)
! NSHEAR 剪應力維數(in)
! inc 當前增量步(in)
! incsub 當前增量子步(in)
! ncycle 當前循環數(in)

use IMSL !引用IMSL函數庫
use typedef
use My_Mod
implicit none
integer :: ngens,nn,kc,mats,ndi,nshear,inc,incsub,ncycle
real*8 :: e(ngens),de(ngens),temp0(1),dtemp(1),g(ngens)
1 ,d(ngens,ngens),s(ngens)

integer :: n(2)

type(typ_concrete) :: C
real*8 Beta1,strain_m
real*8 s_m,J2,J3,r,sita,TempA, TempB, TempC;
integer NSubStep !子步積分步數
integer I,J,K1,K2


C=My_Con(n(1),nn) !得到內存中保留的數據

c ----------------------------------------------------
c 初次計算,清零并賦值
if(inc==0.and.incsub==0.and.ncycle==0) then
open(77,file='debug.txt')
write(77,*)
close(77)

C%fc=30.; C%ft=3.; C%E0=30e3; C%ENU=0.18;
C%EPS_Crush=-0.0033;
C%T=0.; C%NCrack=0; C%Pre_NCrack=0;
C%Beta=0; C%Pre_Beta=0;
C%Pre_inc=0;
C%Pre_incsub=0;
C%SIG=0.; C%EPS=0.; C%Stress=0.; C%Strain=0.;
end if
c ----------------------------------------------------
c 如果新的增量步開始,則更新相應變量
if(inc>C%Pre_inc .or. incsub>C%Pre_incsub) then
C%Pre_inc=inc; C%Pre_incsub=incsub
C%NCrack=C%Pre_NCrack; !修正裂縫狀態
C%Beta=C%Pre_Beta; !修正非線性指標狀態
! 判斷是否壓壞
strain_m=(C%EPS(1)+C%EPS(2)+C%EPS(3))/3.
if(Strain_m>0.) Strain_m=0.
if(minval(C%EPS(1:3)-Strain_m)<C%EPS_Crush) then
C%NCrack=100 !徹底破壞
end if
end if

c 數據賦值
open(77,file='debug.txt',position='append')

C%SIG=s; C%EPS=e; C%dEPS=de;
C%Pre_NCrack=C%NCrack
C%Pre_Beta=C%Beta
NSubStep=4
c ------------------------------------
c 計算彈性矩陣
C%Dela=0.
do K1=1, 3
do K2=1, 3
C%Dela(K2,K1)=C%ENU
end do
C%Dela(K1,K1)=1.-C%ENU
END do
do K1=4,6
C%Dela(K1,K1)=(1.-2.*C%ENU)*0.5
end do
C%Dela=C%Dela*C%E0/(1.+C%ENU)/(1.-2.*C%ENU)
c --------------------------------------
c 如果已經壓碎,應力清零,剛度為很小值,結束計算
if(maxval(C%NCrack)==100) then
C%D=0.0001*C%Dela
C%SIG=0.;
C%Stress=0.;
s=0.
return
end if

C 計算主應力和割線剛度
C%Stress=C%SIG
do I=1, NSubStep

s_m=(C%Stress(1)+C%Stress(2)+C%Stress(3))/3. !計算平均應力
s(1:3)=C%Stress(1:3)-s_m
s(4:6)=C%Stress(4:6) !計算應力偏量
J2=-s(1)*s(2)-s(2)*s(3)-s(3)*s(1)+s(4)**2+s(5)*2+s(6)**2 !計算J2
J3=s(1)*s(2)*s(3)+2.*s(4)*s(5)*s(6) ! 計算J3
1 -s(1)*s(5)**2-s(2)*s(6)**2-s(3)*s(4)**2
r=sqrt(4.*J2/3.)
if(r.ne.0.) then
sita=acos(4.*J3/r**3)/3.
else
sita=0.
end if

if(maxval(abs(C%Pre_NCrack))==0) then !沒有裂縫
call Get_T_Matrix(C%SIG,C%T) !計算坐標轉換矩陣
end if

C%StressP=matmul(transpose(C%T),C%Stress); !計算主應力
C%StrainP=matmul(transpose(C%T),C%Strain); !計算主應變

if(C%StressP(1)<0.05*C%fc.and.
1 maxval(abs(C%Pre_NCrack))==0) then !沒有裂縫
TempA=1.2856/C%fc**2;
TempB=(1.4268+10.2551*cos(sita))/C%fc;
TempC=3.2128*s_m*3./C%fc-1.;
Beta1=-TempB+sqrt(TempB**2-4.*TempA*TempC)
Beta1=Beta1/2./TempA
Beta1=sqrt(J2)/Beta1 !根據江見鯨模型求解Beta

if(Beta1>C%Beta) then !Beta應該始終增大(對于全量模型)
C%Pre_Beta=Beta1
else
Beta1=C%Beta
end if
! 計算割線剛度和泊松比
if(Beta1>1.) Beta1=1.
C%Es=C%E0/2.*(1.+sqrt(1.-Beta1))
if(Beta1<0.8) C%ENUs=C%ENU
if(Beta1.ge.0.8) C%ENUs=0.42-(0.42-C%ENU)*
1 sqrt(1.-((Beta1-.8)/.2)**2)
!計算割線剛度矩陣
C%Ds=0.
do K1=1, 3
do K2=1, 3
C%Ds(K2,K1)=C%ENUs
end do
C%Ds(K1,K1)=1.-C%ENUs
end do
do K1=4,6
C%Ds(K1,K1)=(1.-2.*C%ENUs)*0.5
end do
C%Ds=C%Ds*C%Es/(1.+C%ENUs)/(1.-2.*C%ENUs)
else !如果處于開裂控制區
C%Ds=C%Dela
do K1=1,3
if(C%StressP(K1)>C%ft .OR. C%Pre_NCrack(K1)>0) then !按開裂處理
C%Pre_NCrack(K1)=1;
Call Crack_Open(C,K1) !計算開裂矩陣
end if
end do

C%Ds=matmul(C%T,matmul(C%Ds,transpose(C%T))); !計算割線剛度矩陣

end if
if(Beta1<0.99999d0) then !如果沒有達到極限應力
C%Strain=C%EPS+C%dEPS*real(I/NSubStep);
C%Stress=matmul(C%Ds,C%Strain);

else !達到極限應力后應力不變
C%Stress=C%SIG
C%Ds=1.d-6*C%Ds
end if
end do

ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
c 設置迭代剛度矩陣
D=c%Ds+1.d-6*C%Dela
s=C%Stress
My_Con(N(1),nn)=C;

c
c write(77,*) 'Step: ',inc, incsub, ncycle
c write(77,*) Beta1
c write(77,*) C%Pre_NCrack
c write(77,*) C%Stress(1:3)
c write(77,*)
close(77)
return
end subroutine

C 根據開裂修正剛度矩陣
subroutine Crack_Open(C,I0)
use typeDef
implicit none
type (typ_Concrete) :: C
integer,intent(in) :: I0
real*8 FACTOR,ECRA1,ECRA2,ECRA12

C%Ds(I0,:)=0.
C%Ds(:,I0)=0.

ECRA1=C%StrainP(I0);
ECRA2=0.;
ECRA12=maxval(abs(C%StrainP(4:6)))
c 計算裂面剪力傳遞系數
call USHRET0 (FACTOR,ECRA1,ECRA2,ECRA12)
C%Ds(4,4)=FACTOR*C%Ds(4,4)
C%Ds(5,5)=FACTOR*C%Ds(5,5)
C%Ds(6,6)=FACTOR*C%Ds(6,6)

return
end subroutine


c 計算裂面剪力傳遞系數
SUBROUTINE USHRET0 (FACTOR,ECRA1,ECRA2,ECRA12)
IMPLICIT REAL *8 (A-H, O-Z)
factor=0.4;
RETURN
END

c 計算主應力及坐標轉換矩陣
subroutine Get_T_Matrix(olds,T)
use IMSL
implicit none
real*8 olds(6), T(6,6)
real*8 SIG(3,3),eval_r(3), EVEC(3,3)
real*8 l(3),m(3),n(3)
real*8 SIGP(3)
integer I
SIG(1,1)=olds(1)
SIG(2,2)=olds(2)
SIG(3,3)=olds(3)
SIG(1,2)=olds(4); SIG(2,1)=olds(4);
SIG(2,3)=olds(5); SIG(3,2)=olds(5);
SIG(1,3)=olds(6); SIG(3,1)=olds(6);
call DEVCSF(3, SIG, 3, EVAL, EVEC, 3)
SIGP(1)=maxval(EVAL)
do I=1,3
if(eval_r(I)==SIGP(1)) then
l=EVec(:,I)
eval_r(I)=minval(EVAL)-10;
exit
end if
end do
SIGP(2)=maxval(EVAL)
do I=1,3
if(eval_r(I)==SIGP(2)) then
m=EVec(:,I)
eval_r(I)=minval(EVAL)-10;
exit
end if
end do
SIGP(3)=maxval(EVAL)
do I=1,3
if(eval_r(I)==SIGP(3)) then
n=EVec(:,I)
eval_r(I)=minval(EVAL)-10;
exit
end if
end do
do I=1,3
T(I,:)=(/l(I)**2,m(I)**2,n(I)**2,l(I)*m(I),
1 m(I)*n(I),n(I)*l(I)/)
end do
T(4,:)=(/2.d0*l(1)*l(2),2.d0*m(1)*m(2),2.d0*n(1)*n(2),
1 l(1)*m(2)+l(2)*m(1),m(1)*n(2)+m(2)*n(1),n(1)*l(2)+n(2)*l(1)/)
T(5,:)=(/2.d0*l(2)*l(3),2.d0*m(2)*m(3),2.d0*n(2)*n(3),
1 l(2)*m(3)+l(3)*m(2),m(2)*n(3)+m(3)*n(2),n(2)*l(3)+n(3)*l(2)/)
T(6,:)=(/2.d0*l(3)*l(1),2.d0*m(3)*m(1),2.d0*n(3)*n(1),
1 l(3)*m(1)+l(1)*m(3),m(3)*n(1)+m(1)*n(3),n(3)*l(1)+n(1)*l(3)/)
return
end subroutine


c marc 接口程序
SUBROUTINE HYPELA(D,G,E,DE,S,TEMP0,
1 DTEMP,NGENS,N,NN,KC,MATS,NDI,NSHEAR)
implicit real*8 (a-h,o-z)
INCLUDE '../common/concom' ! 通過concom模塊得到當前的計算步數
integer :: ngens,nn,kc,mats,ndi,nshear
real*8 :: e(1),de(1),temp0(*),dtemp(*),g(1),d(ngens,ngens),s(1)
integer :: n(2)
if(mats==1) then !如果材料編號是1
call Get_DS(D,G,E,DE,S,TEMP0,
1 DTEMP,NGENS,N,NN,KC,MATS,NDI,NSHEAR,inc,incsub,ncycle)
end if
return
end subroutine

c 后處理子程序
subroutine plotv(v,s,sp,etot,eplas,ecreep,t,m,nn,layer,ndi,
* nshear,jpltcd)
c* * * * * *
c
c select a variable contour plotting (user subroutine).
c
c v variable
c s (idss) stress array
c sp stresses in preferred direction
c etot total strain (generalized)
c eplas total plastic strain
c ecreep total creep strain
c t current temperature
c m(1) user element number
c m(2) internal element number
c nn integration point number
c layer layer number
c ndi (3) number of direct stress components
c nshear (3) number of shear stress components
c
c* * * * * *
use My_Mod
implicit real*8 (a-h,o-z) dp
dimension s(*),etot(*),eplas(*),ecreep(*),sp(*),m(2)
type(typ_Concrete) :: C
C=My_Con(m(1),nn)
c 后處理變量1:輸出是否開裂
if(jpltcd==1) then
if(C%NCrack(1).ne.0) then
v=1
else
v=0
end if
end if
c 后處理變量2-4:輸出裂縫狀態
do I=1,3
if(jpltcd==I+1) then
v=C%NCrack(I)
end if
end do
c 后處理變量5:輸出非線性指標
if(jpltcd==5) then
v=C%Beta
end if

c 后處理變量8:輸出裂縫數量
if(jpltcd==8) then
v=0.
do I=1,3
if(C%NCrack(I).ne.0) v=v+1
end do
end if

return
end

免费亚洲一区二区| 最新中文字幕免费视频| 韩国精品福利一区二区三区 | 国产精品卡一卡二| 一区二区三区四区五区视频| 欧美激情91| 国产suv精品一区二区三区88区| 外国成人毛片| 亚洲男女自偷自拍图片另类| 色综合999| 欧美日韩不卡在线| 国产一级免费在线观看| 午夜精品123| 中国国产一级毛片| 亚洲视频一二区| 成年人视频在线网站| 国产精品视频观看| 男女羞羞视频教学| 17c精品麻豆一区二区免费| www.99在线| 欧美经典三级视频一区二区三区| 国产美女网站在线观看| 粉嫩av一区二区三区在线播放| 男人草女人视频| 成人av网站免费观看| 干日本少妇首页| 国产视频视频一区| 男女激情网站| 91精品福利在线| 黄色成年人视频在线观看| 91精品国产麻豆国产自产在线| 手机在线免费看av| 亚洲成人性视频| 97精品国产综合久久久动漫日韩 | av色综合久久天堂av色综合在| 欧美人体做爰大胆视频| 久操视频在线免费播放| 日韩欧美国产三级电影视频| 国产啊啊啊视频在线观看| 亚洲人成电影网站色www| 精品视频在线播放一区二区三区 | 色菇凉天天综合网| 久久日韩视频| 亚洲香蕉在线观看| 极品尤物一区| 成人www视频在线观看| 美女久久一区| 青青青免费在线| 亚洲欧美日韩在线不卡| 国产三级在线| 亚洲精品网站在线播放gif| 精品999日本久久久影院| 国产精品99一区| 久久中文字幕一区二区三区| 无罩大乳的熟妇正在播放| 亚洲免费电影在线| 麻豆电影在线播放| 日韩在线视频导航| 国产一区二区在线| 久久资源亚洲| 久久久久久久综合| 欧美亚洲日本| 一区二区三区四区在线观看视频| 日韩aaa久久蜜桃av| 国产原创精品| 不卡高清视频专区| 日本国产在线| 中文日韩在线观看| 66久久国产| 自慰无码一区二区三区| 国产一区二区三区站长工具| 国产精品第3页| 成人激情久久| 国产精品日韩av| 国产精品久久久久久久久免费桃花| a成人v在线| 国产小视频免费| 神马久久久久久| 久久久av毛片精品| 人人爱人人干婷婷丁香亚洲| 欧美一级视频免费看| 中日韩美女免费视频网站在线观看 | 欧美色网站导航| av在线播放亚洲| 国产精品一区二区你懂的| 久久精品二区| 免费观看在线综合色| 激情亚洲色图| 不卡免费追剧大全电视剧网站| 久久av一区二区| 国产一区二区视频在线| 国产精品久在线观看| 久久爱.com| 精品久久久久久久久久久院品网| 麻豆影视在线观看| 欧美日韩精品一二三区| 欧美做受69| 久久青青草综合| 国产日产欧美精品一区二区三区| 97涩在线观看视频| 欧美日韩午夜| 中文字幕无码不卡免费视频| 亚洲综合一二区| 成人黄色视屏网站| 精品免费国产| 亚洲国产综合在线| 国产精品原创视频| 欧美精品人人做人人爱视频| 亚洲欧美另类在线| 成人噜噜噜噜| 亚洲最新免费视频| 欧美在线色视频| 精品国产乱码久久久久久果冻传媒| 亚洲中文字幕无码专区| 亚洲国产精品资源| 黄色在线一区| 在线小视频网址| 97久久久免费福利网址| 久久久久久久久久久电影| 666av成人影院在线观看| 亚洲精品久久久久久一区二区| 色综合久久中文综合久久牛| 精品国产精品| 一个人看的免费视频色| 69av成年福利视频| 国产嫩草影院久久久久| 国产不卡精品在线| 欧美极品欧美精品欧美| 综合久久成人| 久久久久久久香蕉| 亚洲男人天堂2019| 韩国一区二区三区| h片精品在线观看| 欧美激情第六页| 日韩一区二区三区免费看| 国产日韩欧美一区| 免费在线午夜视频| 麻豆传媒一区二区| 91精品在线免费观看| 国产婷婷精品| 国精产品一区一区三区mba下载| 麻豆精品传媒视频| 日韩欧美另类在线| 久久se精品一区二区| 不卡av播放| 国产一区二区三区小说| 久久久国产精品亚洲一区| 国产亚洲成av人在线观看导航| 伊人精品久久| 黄色网址三级| 亚洲bt欧美bt日本bt| 欧美日韩精品欧美日韩精品一综合| 亚洲第一精品影视| 韩国成人免费视频| 欧洲精品在线播放| 欧美精品九九久久| 精品久久久国产| 免费亚洲婷婷| 依依综合在线| 五月天婷婷激情视频| 国产精品一区二区久久久| 欧美日韩一区视频| 国产美女一区二区| 国产一区丝袜| 伊人久久青青草| 日本一区二区高清视频| 在线观看免费高清视频97| 国产精品网曝门| 午夜欧美精品久久久久久久| 少女频道在线观看高清| 你真棒插曲来救救我在线观看| 欧美重口另类videos人妖| 欧美亚洲动漫制服丝袜| 久久av中文字幕片| 欧美影院天天5g天天爽| 午夜免费视频在线国产| 国产一区二区三区乱码| 国产精品1区2区在线观看| 欧美日韩三级一区| 高清在线视频不卡| 台湾佬中文娱乐网欧美电影| 日韩精品免费一区| 91精品国产自产91精品| 欧美系列亚洲系列| 成人激情动漫在线观看| 国产不卡一二三区| 少妇av在线| 日韩av片网站| 激情一区二区三区| 91精品国产一区二区三区蜜臀| 国产高清精品久久久久| 久9久9色综合| 国产精品vvv| 99久热re在线精彩视频| 亚洲欧美久久久久一区二区三区| 国内精品久久久久影院 日本资源| 欧美日韩高清不卡| 国产精品午夜久久| 日本成人在线视频网站| 国产探花一区|