45
46
47
48#include "implicit_f.inc"
49
50
51
52#include "mvsiz_p.inc"
53
54
55
56#include "param_c.inc"
57
58
59
60 INTEGER NGL(MVSIZ),IMAT,ILAYER,IPT,ISRATE,NPTTOT,
61 . JFT,JLT,IPLA,NEL,INLOC
64 my_real pm(npropm,*),thk(*),off(*),gstr(nel,8),
65 . shf(*),sigy(*),zcfac(mvsiz,2),dpla(*),
66 . thk0(mvsiz),thklyl(nel),dplanl(nel)
68 . depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),depsyz(mvsiz),
69 . depszx(mvsiz),sigoxx(nel),sigoyy(nel),sigoxy(nel),
70 . sigoyz(nel),sigozx(nel),signxx(nel),signyy(nel),signxy(nel),
71 . signyz(nel),signzx(nel),dirdmg(nel,2),
72 . pla(nel),crak(nel),dam(nel),zz(mvsiz)
73 my_real,
DIMENSION(NEL),
INTENT(IN) :: loff
74 my_real ,
DIMENSION(NEL),
INTENT(IN) :: epsd_pg
75 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: epsd
76
77
78
79 INTEGER I
80
82 . sig(nel,5),nu,strn1(mvsiz),strn2(mvsiz),strn3(mvsiz),yld(mvsiz),
83 . etse(mvsiz),zt,ezz(mvsiz),young
84
85
86 young = pm(20,imat)
87 nu = pm(21,imat)
88
89 ezz(1:mvsiz) = zero
90
91
92
93
94
95
96 DO i=jft,jlt
97 sig(i,1) = sigoxx(i)
98 sig(i,2) = sigoyy(i)
99 sig(i,3) = sigoxy(i)
100 sig(i,4) = sigoyz(i)
101 sig(i,5) = sigozx(i)
102 ENDDO
103
104 CALL roto_sig(jft,jlt,sig,dirdmg,nel)
105
106 CALL m27elas(jft ,jlt ,pm ,sig ,imat ,
107 2 depsxx ,depsyy ,depsxy ,depsyz ,depszx,
108 3 dam ,crak ,shf ,nel )
109
110
111
112 CALL m27plas(jft ,jlt ,pm ,off ,sig ,
113 2 pla ,imat ,dt1 ,ipla ,ezz ,
114 3 epsd_pg,israte ,yld ,etse ,dpla ,
115 4 depsxx ,depsyy ,depsxy ,depsyz ,depszx,
116 5 nel ,epsd ,asrate )
117
118
119
121
122 DO i=jft,jlt
123 signxx(i) = sig(i,1)
124 signyy(i) = sig(i,2)
125 signxy(i) = sig(i,3)
126 signyz(i) = sig(i,4)
127 signzx(i) = sig(i,5)
128 ENDDO
129
130
131
132 DO i=jft,jlt
133 zt = zz(i)*thk0(i)
134 strn1(i) = gstr(i,1)+zt*gstr(i,6)
135 strn2(i) = gstr(i,2)+zt*gstr(i,7)
136 strn3(i) =(gstr(i,3)+zt*gstr(i,8))*half
137 ENDDO
138
139 CALL m27crak(jft ,jlt ,pm ,dam ,dirdmg
140 2 imat ,ilayer ,off ,ngl ,nel ,
141 3 strn1 ,strn2 ,strn3 )
142
143 DO i=jft,jlt
144 zcfac(i,1) = zcfac(i,1) + etse(i) / npttot
145 zcfac(i,2) =
min(etse(i),zcfac(i,2))
146 sigy(i) =
min(sigy(i),yld(i))
147 ENDDO
148
149
150
151 DO i=jft,jlt
152 IF (inloc > 0) THEN
153 IF (loff(i) == one) THEN
154 ezz(i) = -nu*(signxx(i)-sigoxx(i)+signyy(i)-sigoyy(i))/young
155 ezz(i) = ezz(i) -
max(dplanl(i),zero)*half*(signxx(i)+signyy(i))/yld(i)
156 ENDIF
157 ELSE
158 ezz(i) =-(depsxx(i)+depsyy(i))*nu-(one - two*nu
159 ezz(i) = ezz(i)/(one-nu)
160 ENDIF
161 thk(i) = thk(i) + ezz(i) * thklyl(i)*off(i)
162 ENDDO
163
164 RETURN
subroutine m27crak(jft, jlt, pm, damt, dir, imat, ilayer, off, ngl, nel, strn1, strn2, strn3)
subroutine m27elas(jft, jlt, pm, sig, imat, depsxx, depsyy, depsxy, depsyz, depszx, damt, crak, shf, nel)
subroutine m27plas(jft, jlt, pm, off, sig, pla, imat, dt1, ipla, ezz, epsd_pg, israte, yld, etse, dpla, depsxx, depsyy, depsxy, depsyz, depszx, nel, epsd, asrate)
subroutine roto_sig(jft, jlt, sig, dir, nel)
subroutine uroto_sig(jft, jlt, sig, dir, nel)