35
36
37
38#include "implicit_f.inc"
39#include "comlock.inc"
40
41
42
43#include "mvsiz_p.inc"
44
45
46
47#include "com08_c.inc"
48#include "param_c.inc"
49#include "units_c.inc"
50#include "scr17_c.inc"
51
52
53
54 INTEGER, INTENT(IN) :: NFT
55 INTEGER MAT(MVSIZ),NGL(MVSIZ),NEL
57 . pm(npropm,*), off(mvsiz), sig(nel,6), epseq(mvsiz),
58 . ssp(mvsiz), d1(mvsiz), d2(mvsiz), d3(mvsiz), d4(mvsiz),
59 . d5(mvsiz), d6(mvsiz), rho0(mvsiz), dpdm(mvsiz),
60 . sigy(mvsiz), defp(mvsiz), dpla1(mvsiz)
61 INTEGER IPLA
62
63
64
65 INTEGER I, MX, II, LIST(MVSIZ), K
67 . g(mvsiz), g1(mvsiz), g2(mvsiz), qs(mvsiz), yld(mvsiz),
68 . qh(mvsiz), aj2(mvsiz), dav(mvsiz), sj2(mvsiz), p(mvsiz),
69 . epmx(mvsiz), ca(mvsiz), cb(mvsiz), cn(mvsiz), sigmx(mvsiz),
70 . scale, dpla, g11, ca11, cb11, cn11, epmx11,gdt,ggdt,
71 . sigmx11
72
73
74 mx=mat(1)
75 g11=pm(22,mx)
76 ca11=pm(38,mx)
77 cb11=pm(39,mx)
78 cn11=pm(40,mx)
79 epmx11=pm(41,mx)
80 sigmx11=pm(42,mx)
81
82 gdt=dt1*g11
83 ggdt=two*gdt
84
85
86
87
88
89
90
91
92 DO i=1,nel
93 p(i) =-third*(sig(i,1)+sig(i,2)+sig(i,3))
94 dav(i)=-third*(d1(i)+d2(i)+d3(i))
95 ENDDO
96
97
98
99
100
101
102
103
104 !
105
106 DO i=1,nel
107 sig(i,1)=sig(i,1)+p(i)+ggdt*(d1(i)+dav(i))
108 sig(i,2)=sig(i,2)+p(i)+ggdt*(d2(i)+dav(i))
109 sig(i,3)=sig(i,3)+p(i)+ggdt*(d3(i)+dav(i))
110 sig(i,4)=sig(i,4)+gdt*d4(i)
111 sig(i,5)=sig(i,5)+gdt*d5(i)
112 sig(i,6)=sig(i,6)+gdt*d6(i)
113 ENDDO
114
115
116
117 DO i=1,nel
118 yld(i)=
min(sigmx11,ca11+cb11*
max(zero,epseq(i))**cn11)
119 ENDDO
120
121
122
123 IF(cn11==one)THEN
124 DO i=1,nel
125 qh(i)= cb11
126 ENDDO
127 ELSEIF(cn11>one)THEN
128 DO i=1,nel
129 qh(i)= cb11*cn11*
max(zero,epseq(i))**(cn11- one)
130 ENDDO
131 ELSE
132 DO i=1,nel
133 IF(epseq(i)/=zero)THEN
134 qh(i)= cb11*cn11/
max(zero,epseq(i))**(one-cn11)
135 ELSE
136 qh(i)=zero
137 ENDIF
138 ENDDO
139 ENDIF
140
141
142
143
144 DO i=1,nel
145 dpdm(i)=dpdm(i)+onep333*g11
146 ssp(i)=sqrt(abs(dpdm(i))/rho0(i))
147 ENDDO
148 DO i=1,nel
149 aj2(i)=half*(sig(i,1)**2+sig(i,2)**2+sig(i,3)**2)+sig(i,4)**2+sig(i,5)**2+sig(i,6)**2
150 sj2(i)=sqrt(three*aj2(i))
151 ENDDO
152 k=0
153
154 DO i=1,nel
155 IF(yld(i)/=zero)THEN
156 k=k+1
157 list(k)=i
158 ENDIF
159 ENDDO
160 IF(ipla==0)THEN
161 DO ii=1,k
162 i=list(ii)
163 scale=
min(one,yld(i)/
max(sj2(i),em15))
164 sig(i,1)=scale*sig(i,1)
165 sig(i,2)=scale*sig(i,2)
166 sig(i,3)=scale*sig(i,3)
167 sig(i,4)=scale*sig(i,4)
168 sig(i,5)=scale*sig(i,5)
169 sig(i,6)=scale*sig(i,6)
170 dpla1(i) = (one -scale)*sj2(i)/
max(three*g11+qh(i),em15)
171 epseq(i)=epseq(i)+ dpla1(i)
172 ENDDO
173 ELSEIF(ipla==2)THEN
174 DO ii=1,k
175 i=list(ii)
176 scale=
min(one,yld(i)/
max(sj2(i),em15))
177 sig(i,1)=scale*sig(i,1)
178 sig(i,2)=scale*sig(i,2)
179 sig(i,3)=scale*sig(i,3)
180 sig(i,4)=scale*sig(i,4)
181 sig(i,5)=scale*sig(i,5)
182 sig(i,6)=scale*sig(i,6)
183 dpla1(i) = (one -scale)*sj2(i)/
max(three*g11,em15)
184 epseq(i)=epseq(i)+dpla1(i)
185 ENDDO
186 ELSEIF(ipla==1)THEN
187 DO ii=1,k
188 i=list(ii)
189 scale=
min(one,yld(i)/
max(sj2(i),em15))
190
191 dpla=(one -scale)*sj2(i)/
max(three*g11+qh(i),em15)
192
193 yld(i)=yld(i)+dpla*qh(i)
194 scale=
min(one,yld(i)/
max(sj2(i),em15))
195 sig(i,1)=scale*sig(i,1)
196 sig(i,2)=scale*sig(i,2)
197 sig(i,3)=scale*sig(i,3)
198 sig(i,4)=scale*sig(i,4)
199 sig(i,5)=scale*sig(i,5)
200 sig(i,6)=scale*sig(i,6)
201 epseq(i)=epseq(i)+dpla
202 dpla1(i) = dpla
203 ENDDO
204 ENDIF
205
206
207
208 DO i=1,nel
209 IF(off(i)<em01) off(i)=zero
210 IF(off(i)<one) off(i)=off(i)*four_over_5
211 ENDDO
212 DO i=1,nel
213 IF(epmx11==zero .OR. off(i)<one .OR. epseq(i)<epmx11) cycle
214 off(i)=off(i)*four_over_5
215 ii=i+nft
216#include "lockon.inc"
217 WRITE(iout,1000) ngl(i)
218#include "lockoff.inc"
219 ENDDO
220 DO i=1,nel
221 sig(i,1)=sig(i,1)*off(i)
222 sig(i,2)=sig(i,2)*off(i)
223 sig(i,3)=sig(i,3)*off(i)
224 sig(i,4)=sig(i,4)*off(i)
225 sig(i,5)=sig(i,5)*off(i)
226 sig(i,6)=sig(i,6)*off(i)
227 ENDDO
228 DO i=1,nel
229 sigy(i)=yld(i)
230 defp(i)=epseq(i)
231 ENDDO
232 1000 FORMAT(1x,'RUPTURE OF SOLID ELEMENT NUMBER ',i10)
233 RETURN