54
55
56
57 USE matparam_def_mod
58 USE sigeps01_mod, only : sigeps01
59
60
61
62#include "implicit_f.inc"
63
64
65
66#include "mvsiz_p.inc"
67
68
69
70#include "param_c.inc"
71#include "scr03_c.inc"
72#include "com04_c.inc"
73
74
75
76 INTEGER LFT,LLT,NFT,MTN,NUVAR,JCVT,ISORTH,JSPH,ISMSTR,NEL,IMAT,NVARTMP
77 INTEGER NPF(*), NGL(MVSIZ),PID(MVSIZ),IPM(NPROPMI,NUMMAT)
78
80 . pm(npropm,nummat), gama(*),
81 . off(*), sig(nel,6), strain(nel,6), eint(*),
82 . rho(*), vol(*), uvar(*), bufmat(*), tf(*),
83 . geo(npropg,*),epsd(mvsiz),
84 . wxx(*), wyy(*), wzz(*), ssp(*),
85 . voln(*) , vis(mvsiz) ,
86 . sold1(mvsiz) ,sold2(mvsiz) ,sold3(mvsiz) ,
87 . sold4(mvsiz) ,sold5(mvsiz) ,sold6(mvsiz),
88 . d1(*) ,d2(*),d3(*),d4(*),d5(*),d6(*) ,
89 . dvol(*),
90 . rx(mvsiz) ,ry(mvsiz) ,rz(mvsiz),
91 . sx(mvsiz) ,sy(mvsiz) ,sz(mvsiz) ,
92 . tx(mvsiz) ,ty(mvsiz) ,tz(mvsiz) ,
93 . mfxx(*) ,mfxy(*) ,mfxz(*) ,mfyx(*) ,mfyy(*) ,mfyz(*) ,
94 . mfzx(*) ,mfzy(*) ,mfzz(*)
95 INTEGER ,DIMENSION(NEL,NVARTMP) ,INTENT(INOUT):: VARTMP
96 TYPE(MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MATPARAM
97
98
99
100 INTEGER I,J,NVPHAS, N0PHAS, NPH, IFLG,NPAR,
101 . IADBUF, NFUNC, IFUNC(100)
103 . ep1(mvsiz), ep2(mvsiz), ep3(mvsiz),e7(mvsiz),
104 . ep4(2*mvsiz),ep5(2*mvsiz),ep6(2*mvsiz),
105 . s1(mvsiz) ,s2(mvsiz) ,s3(mvsiz) ,
106 . s4(2*mvsiz) ,s5(2*mvsiz) ,s6(2*mvsiz),
107 . de1(mvsiz),de2(mvsiz),de3(mvsiz),
108 . de4(2*mvsiz),de5(2*mvsiz),de6(2*mvsiz),
109 . so1(mvsiz),so2(mvsiz),so3(mvsiz),
110 . so4(2*mvsiz),so5(2*mvsiz),so6(2*mvsiz),
111 .es1(mvsiz),es2(mvsiz),es3(mvsiz),es4(mvsiz),es5(mvsiz),es6(mvsiz),
112 .sv1(mvsiz),sv2(mvsiz),sv3(mvsiz),sv4(mvsiz),sv5(mvsiz),sv6(mvsiz),
113 .r11(mvsiz),r12(mvsiz),r13(mvsiz),r21(mvsiz),r22(mvsiz),r23(mvsiz),
114 .r31(mvsiz),r32(mvsiz),r33(mvsiz)
115 my_real rho0(mvsiz),vol_avg(mvsiz)
116 my_real rbid, e1, e2, e3, e4, e5, e6, p2, time, timestep
117
118 time =zero
119 timestep=one/float(nitrs)
120
121 npar = ipm(9,imat)
122 iadbuf = ipm(7,imat)
123 nfunc = ipm(10,imat)
124 DO i=1,nfunc
125 ifunc(i) = ipm(10+i,imat)
126 ENDDO
127
128 vis = zero
129 DO i=lft,llt
130 rho0(i)= pm(1,imat)
131 END DO
132
133 ep1 = zero
134 ep2 = zero
135 ep3 = zero
136 ep4 = zero
137 ep5 = zero
138 ep6 = zero
139 epsd= zero
140 sv1 = zero
141 sv2 = zero
142 sv3 = zero
143 sv4 = zero
144 sv5 = zero
145 sv6 = zero
146 s1 = zero
147 s2 = zero
148 s3 = zero
149 s4 = zero
150 s5 = zero
151 s6 = zero
152 e7 = zero
153
154
155
156 DO i=lft,llt
157 de1(i) = d1(i)
158 de2(i) = d2(i)
159 de3(i) = d3(i)
160 de4(i) = d4(i)
161 de5(i) = d5(i)
162 de6(i) = d6(i)
163 so1(i) = sig(i,1)
164 so2(i) = sig(i,2)
165 so3(i) = sig(i,3)
166 so4(i) = sig(i,4)
167 so5(i) = sig(i,5)
168 so6(i) = sig(i,6)
169 ENDDO
170
171 DO i=lft,llt
172 strain(i,1)= strain(i,1) + de1(i)
173 strain(i,2)= strain(i,2) + de2(i)
174 strain(i,3)= strain(i,3) + de3(i)
175 strain(i,4)= strain(i,4) + de4(i)
176 strain(i,5)= strain(i,5) + de5(i)
177 strain(i,6)= strain(i,6) + de6(i)
178 es1(i) = strain(i,1)
179 es2(i) = strain(i,2)
180 es3(i) = strain(i,3)
181 es4(i) = strain(i,4)
182 es5(i) = strain(i,5)
183 es6(i) = strain(i,6)
184 ENDDO
185
186
187 IF (ismstr == 10.OR.ismstr == 12) THEN
188 DO i=lft,llt
189
190 es1(i)=mfxx(i)*(two+mfxx(i))+mfxy(i)*mfxy(i)+mfxz(i)*mfxz(i)
191 es2(i)=mfyy(i)*(two+mfyy(i))+mfyx(i)*mfyx(i)+mfyz(i)*mfyz(i)
192 es3(i)=mfzz(i)*(two+mfzz(i))+mfzx(i)*mfzx(i)+mfzy(i)*mfzy(i)
193 es4(i)=two*(mfxy(i)+mfyx(i)+mfxx(i)*mfyx(i)+mfxy(i)*mfyy(i)+mfxz(i)*mfyz(i))
194 es6(i)=two*(mfxz(i)+mfzx(i)+mfxx(i)*mfzx(i)+mfxy(i)*mfzy(i)+mfxz(i)*mfzz(i))
195 es5(i)=two*(mfzy(i)+mfyz(i)+mfzx(i)*mfyx(i)+mfzy(i)*mfyy(i)+mfzz(i)*mfyz(i))
196 ENDDO
197 ELSEIF(ismstr == 11)THEN
198 DO i=lft,llt
199 es1(i)=mfxx(i)
200 es2(i)=mfyy(i)
201 es3(i)=mfzz(i)
202 es4(i)=mfxy(i)+mfyx(i)
203 es6(i)=mfxz(i)+mfzx(i)
204 es5(i)=mfzy(i)+mfyz(i)
205 ENDDO
206 END IF
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221 IF(mtn==1)THEN
222 CALL sigeps01(llt ,pm(1,imat),npropm, rho,rho0,ismstr,
223 . de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
224 . es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
225 . so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
226 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
227 . ssp ,vis )
228 ELSEIF(mtn==35)THEN
229 CALL sigeps35(llt ,npar,nuvar,nfunc,ifunc,
230 . npf ,tf ,time,timestep,bufmat(iadbuf),
231 . rho0,rho ,voln,eint,
232 . ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
233 . de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
234 . es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
235 . so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
236 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
237 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
238 . ssp ,vis ,uvar,off )
239 ELSEIF(mtn==37)THEN
240 CALL sigeps37(llt ,npar,nuvar,nfunc,ifunc,
241 . npf ,tf ,time,timestep,bufmat(iadbuf),
242 . rho0,rho ,voln,eint,
243 . ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
244 . de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
245 . es1 ,es2 ,es3 ,es4 ,es5 ,es6
246 . so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
247 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
248 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
249 . ssp ,vis ,uvar,off )
250 ELSEIF(mtn==38)THEN
251 CALL sigeps38(llt ,npar,nuvar,nfunc,ifunc ,
252 . npf ,tf ,time,timestep,bufmat(iadbuf),
253 . rho0,rho ,voln ,eint ,
254 . ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
255 . de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
256 . es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
257 . so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
258 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
259 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
260 . ssp ,vis ,uvar,off ,
261 . rbid,ismstr,mfxx,mfxy,mfxz,mfyx,
262 . mfyy ,mfyz ,mfzx ,mfzy,mfzz)
263 ELSEIF(mtn==42)THEN
264 CALL sigeps42(matparam(imat),llt ,nuvar,nfunc,ifunc ,
265 2 npf ,tf ,time,timestep,rho0,rho ,
266 3 ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
267 4 de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
268 5 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
269 6 so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
270 7 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
271 8 ssp ,vis ,uvar,off ,wxx ,wyy ,
272 a wzz ,ismstr,mfxx,mfxy,mfxz,mfyx
273 . mfyy ,mfyz ,mfzx ,mfzy,mfzz)
274
275 ELSEIF(mtn==70)THEN
276 CALL sigeps70(llt ,npar,nuvar,nfunc,ifunc,
277 2 npf ,tf ,time,timestep,bufmat,
278 3 rho0,rho ,voln,eint,nvartmp ,vartmp ,
279 4 de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
280 5 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
281 6 so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
282 7 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
283 8 sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
284 9 ssp ,vis ,uvar,off ,ngl ,
285 a pm ,ipm ,imat ,matparam(imat))
286 ELSEIF(mtn==90)THEN
287 CALL sigeps90(llt ,npar,nuvar,nfunc,ifunc,
288 2 npf ,tf ,time,timestep,bufmat,
289 3 rho0,rho ,voln,eint,
290 4 ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
291 5 de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
292 6 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
293 7 so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
294 8 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
295 a ssp ,vis ,uvar,off ,ngl ,ismstr)
296 END IF
297
298 DO i=lft,llt
299 sig(i,1) = s1(i)*off(i)
300 sig(i,2) = s2(i)*off(i)
301 sig(i,3) = s3(i)*off(i)
302 sig(i,4) = s4(i)*off(i)
303 sig(i,5) = s5(i)*off(i)
304 sig(i,6) = s6(i)*off(i)
305 END DO
306
307 IF (ismstr == 1.OR.ismstr == 11) THEN
308 DO i=lft,llt
309 vol_avg(i) = vol(i)
310 END DO
311 ELSE
312 DO i=lft,llt
313 vol_avg(i) = voln(i)- half*dvol(i)
314 END DO
315 END IF
316 DO i=lft,llt
317 p2 = -(sold1(i)+sig(i,1)+sold2(i)+sig(i,2)+sold3(i)+sig(i,3))
318 . * third
319 e1=d1(i)*(sold1(i)+sig(i,1)+p2)
320 e2=d2(i)*(sold2(i)+sig(i,2)+p2)
321 e3=d3(i)*(sold3(i)+sig(i,3)+p2)
322 e4=d4(i)*(sold4(i)+sig(i,4))
323 e5=d5(i)*(sold5(i)+sig(i,5))
324 e6=d6(i)*(sold6(i)+sig(i,6))
325 eint(i)=eint(i)
326 . -p2*dvol(i)*half
327 . +(e1+e2+e3+e4+e5+e6+e7(i))*vol_avg(i)*half
328 eint(i)=eint(i)/
max(vol(i),em20)
329 END DO
330
331 RETURN
subroutine sigeps35(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, rho0, rho, volume, eint, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigvxx, sigvyy, sigvzz, sigvxy, sigvyz, sigvzx, soundsp, viscmax, uvar, off)
subroutine sigeps37(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, rho0, rho, volume, eint, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigvxx, sigvyy, sigvzz, sigvxy, sigvyz, sigvzx, soundsp, viscmax, uvar, off)
subroutine sigeps38(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, rho0, rho, volume, eint, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, sigvxx, sigvyy, sigvzz, sigvxy, sigvyz, sigvzx, soundsp, viscmax, uvar, off, uvarbid, ismstr, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz)
subroutine sigeps42(mat_param, nel, nuvar, nfunc, ifunc, npf, tf, time, timestep, rho0, rho, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, sigoxx, sigoyy, sigozz, sigoxy, sigoyz, sigozx, signxx, signyy, signzz, signxy, signyz, signzx, soundsp, viscmax, uvar, off, wxxdt, wyydt, wzzdt, ismstr, mfxx, mfxy, mfxz, mfyx, mfyy, mfyz, mfzx, mfzy, mfzz)
subroutine sigeps70(nel, nuparam, nuvar, mfunc, kfunc, npf, tf, time, timestep, uparam, rho0, rho, volume, eint, nvartmp, vartmp, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, sig0xx, sig0yy, sig0zz, sig0xy, sig0yz, sig0zx, signxx, signyy, signzz, signxy, signyz, signzx, sigvxx, sigvyy, sigvzz, sigvxy, sigvyz, sigvzx, soundsp, viscmax, uvar, off, ngl, pm, ipm, imat, matparam)
subroutine sigeps90(nel, nuparam, nuvar, nfunc, ifunc, npf, tf, time, timestep, uparam, rho0, rho, volume, eint, epspxx, epspyy, epspzz, epspxy, epspyz, epspzx, depsxx, depsyy, depszz, depsxy, depsyz, depszx, epsxx, epsyy, epszz, epsxy, epsyz, epszx, sig0xx, sig0yy, sig0zz, sig0xy, sig0yz, sig0zx, signxx, signyy, signzz, signxy, signyz, signzx, soundsp, viscmax, uvar, off, ngl, ismstr)