49 . ELBUF_STR,MAS ,IXS ,PM ,X ,
50 . DETONATORS,GEO ,VEUL ,ALE_CONNECTIVITY,IPARG ,
51 . DTELEM ,SIGI ,NEL ,SKEW ,IGEO ,
52 . STIFN ,PARTSAV ,V ,IPARTS ,MSS ,
54 . SIGSP ,NSIGI ,IPM ,IUSER ,NSIGS ,
55 . VOLNOD ,BVOLNOD ,VNS ,BNS ,PTSOL ,
56 . BUFMAT ,MCP ,MCPS ,MCPSX ,TEMP ,
57 . NPF ,TF ,STRSGLOB,STRAGLOB ,MSSA ,
58 . ORTHOGLOB,FAIL_INI,ILOADP ,FACLOAD ,RNOISE,
59 . PERTURB ,MAT_PARAM,DEFAULTS_SOLID)
77#include "implicit_f.inc"
90#include "vect01_c.inc"
94 INTEGER IXS(NIXS,*), IPARG(*),IPARTS(*),
95 . NEL, IPART(LIPART1,*),PERTURB(NPERTURB),
96 . IPM(NPROPMI,*), PTSOL(*), NSIGI, IUSER, NSIGS, NPF(*)
97 INTEGER IGEO(NPROPGI,*),STRSGLOB(*),STRAGLOB(*),ORTHOGLOB(*),
100 . MAS(*), PM(NPROPM,*), X(*), GEO(NPROPG,*),
101 . VEUL(LVEUL,*), DTELEM(*),SIGI(NSIGS,*),SKEW(LSKEW,*),STIFN(*),
102 . PARTSAV(20,*), V(*), MSS(8,*),SIGSP(NSIGI,*),
103 . VOLNOD(*), BVOLNOD(*), VNS(8,*), BNS(8,*),BUFMAT(*),MCP(*),
104 . MCPS(8,*), MCPSX(12,*),TEMP(*), TF(*), MSSA(*),RNOISE(NPERTURB,*)
105 TYPE(elbuf_struct_),
TARGET :: ELBUF_STR
106 INTEGER,
INTENT(IN) :: ILOADP(SIZLOADP,*)
107 my_real,
INTENT(IN) :: FACLOAD(LFACLOAD,*)
109 TYPE(t_ale_connectivity),
INTENT(INOUT) :: ALE_CONNECTIVITY
110 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(INOUT) :: MAT_PARAM
111 TYPE(SOLID_DEFAULTS_),
INTENT(IN) :: DEFAULTS_SOLID
112 type (glob_therm_) ,
intent(in) :: glob_therm
116 INTEGER I,NF1,IBID,IGTYP,IREP,IP,ILAY,NLAY,NUVAR,NCC,JHBE,
117 . nuvarr,idef,ipang,ipthk,ippos,ipmat,ig,im,mtn0,nlymax,
118 . ipid1,nptr,npts,nptt,l_pla,l_sigb,imas_ds
119 INTEGER MAT(MVSIZ), PID(MVSIZ), NGL(MVSIZ), MAT0(MVSIZ)
120 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
121 . ix5(mvsiz), ix6(mvsiz)
123 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz), x5(mvsiz), x6(mvsiz),
124 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz), y5(mvsiz), y6(mvsiz),
125 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz), z5(mvsiz), z6(mvsiz)
126 CHARACTER(LEN=NCHARTITLE)::TITR1
128 . bid, fv, sti, zi,wi
130 . v8loc(51,mvsiz),volu(mvsiz),dtx(mvsiz),vzl(mvsiz),vzq(mvsiz),
131 . rx(mvsiz) ,ry(mvsiz) ,rz(mvsiz) ,sx(mvsiz) ,
132 . sy(mvsiz) ,sz(mvsiz) ,tx(mvsiz) ,ty(mvsiz) ,tz(mvsiz) ,
133 . e1x(mvsiz),e1y(mvsiz),e1z(mvsiz),
134 . e2x(mvsiz),e2y(mvsiz),e2z(mvsiz),
135 . e3x(mvsiz),e3y(mvsiz),e3z(mvsiz),
136 . f1x(mvsiz) ,f1y(mvsiz) ,f1z(mvsiz) ,llsh(mvsiz) ,
137 . f2x(mvsiz) ,f2y(mvsiz) ,f2z(mvsiz) ,rhocp(mvsiz),temp0(mvsiz), deltax(mvsiz), aire(mvsiz)
138 my_real :: tempel(nel)
140 TYPE(g_bufel_) ,
POINTER :: GBUF
141 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
142 TYPE(L_BUFEL_) ,
POINTER :: LBUF
143 TYPE(BUF_MAT_) ,
POINTER :: MBUF
146 . W_GAUSS(9,9),A_GAUSS(9,9),ANGLE(MVSIZ),DTX0(MVSIZ)
154 3 0.555555555555556,0.888888888888889,0.555555555555556,
157 4 0.347854845137454,0.652145154862546,0.652145154862546,
158 4 0.347854845137454,0. ,0. ,
160 5 0.236926885056189,0.478628670499366,0.568888888888889,
161 5 0.478628670499366,0.236926885056189,0. ,
163 6 0.171324492379170,0.360761573048139,0.467913934572691,
164 6 0.467913934572691,0.360761573048139,0.171324492379170,
166 7 0.129484966168870,0.279705391489277,0.381830050505119,
167 7 0.417959183673469,0.381830050505119,0.279705391489277,
168 7 0.129484966168870,0. ,0. ,
169 8 0.101228536290376,0.222381034453374,0.313706645877887,
170 8 0.362683783378362,0.362683783378362,0.313706645877887,
171 8 0.222381034453374,0.101228536290376,0. ,
172 9 0.081274388361574,0.180648160694857,0.260610696402935,
173 9 0.312347077040003,0.330239355001260,0.312347077040003,
174 9 0.260610696402935,0.180648160694857,0.081274388361574/
179 2 -.577350269189626,0.577350269189626,0. ,
182 3 -.774596669241483,0. ,0.774596669241483,
185 4 -.861136311594053,-.339981043584856,0.339981043584856,
186 4 0.861136311594053,0. ,0. ,
188 5 -.906179845938664,-.538469310105683,0. ,
189 5 0.538469310105683,0.906179845938664,0. ,
191 6 -.932469514203152,-.661209386466265,-.238619186083197,
192 6 0.238619186083197,0.661209386466265,0.932469514203152,
194 7 -.949107912342759,-.741531185599394,-.405845151377397,
195 7 0. ,0.405845151377397,0.741531185599394,
196 7 0.949107912342759,0. ,0. ,
197 8 -.960289856497536,-.796666477413627,-.525532409916329,
198 8 -.183434642495650,0.183434642495650,0.525532409916329,
199 8 0.796666477413627,0.960289856497536,0. ,
200 9 -.968160239507626,-.836031107326636,-.613371432700590,
201 9 -.324253423403809,0. ,0.324253423403809,
202 9 0.613371432700590,0.836031107326636,0.9681602
206 gbuf => elbuf_str%GBUF
207 lbuf => elbuf_str%BUFLY(1)%LBUF(1,1,1)
208 mbuf => elbuf_str%BUFLY(1)%MAT(1,1,1)
209 bufly => elbuf_str%BUFLY(1)
210 nptr = elbuf_str%NPTR
211 npts = elbuf_str%NPTS
212 nptt = elbuf_str%NPTT
213 nlay = elbuf_str%NLAY
222 IF (igtyp /= 22)
THEN
225 imas_ds = defaults_solid%IMAS
228 rhocp(i) = pm(69,ixs(1,nft+i))
229 temp0(i) = pm(79,ixs(1,nft+i))
232 CALL s6ccoor3(x ,ixs(1,nf1) ,geo ,ngl
233 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
234 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
235 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,temp0, temp,glob_therm%NINTEMP,
236 . ix1, ix2, ix3, ix4, ix5, ix6,
237 . x1, x2, x3, x4, x5, x6,
238 . y1, y2, y3, y4, y5, y6,
239 . z1, z2, z3, z4, z5, z6)
240 IF (igtyp == 21 .OR. igtyp == 22)
THEN
242 angle(i) = geo(1,pid(i))
244 CALL scmorth3(pid ,geo ,igeo ,skew ,irep ,gbuf%GAMA ,
245 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
246 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
247 . ngl ,angle,nsigi,sigsp,nsigs,sigi ,ixs ,1 ,
248 . orthoglob,ptsol,nel)
249 IF (igtyp == 22)
THEN
263 CALL s6cderi3(nel,gbuf%VOL,geo,vzl,ngl,deltax,volu ,
264 . x1, x2, x3, x4, x5, x6,
265 . y1, y2, y3, y4, y5, y6,
266 . z1, z2, z3, z4, z5, z6)
269 . x1, x2, x3, x4, x5, x6,
270 . y1, y2, y3, y4, y5, y6,
271 . z1, z2, z3, z4, z5, z6)
273 IF (gbuf%IDT_TSH(i)>0)
274 . deltax(i)=
max(llsh(i),deltax(i))
280 IF (jthe == 0 .and. glob_therm%NINTEMP > 0)
THEN
282 tempel(i) = one_over_8 *(temp(ixs(2,i)) + temp(ixs(3,i))
283 . + temp(ixs(4,i)) + temp(ixs(5,i))
284 . + temp(ixs(6,i)) + temp(ixs(7,i))
285 . + temp(ixs(8,i)) + temp(ixs(9,i)))
288 tempel(1:nel) = temp0(1:nel)
292 CALL matini(pm ,ixs ,nixs ,x ,
293 . geo ,ale_connectivity ,detonators ,iparg ,
294 . sigi ,nel ,skew ,igeo ,
296 . mat ,ipm ,nsigs ,numsol ,ptsol ,
297 . ip ,ngl ,npf ,tf ,bufmat ,
298 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
299 . facload, deltax ,tempel )
301 IF (igtyp == 22)
CALL sczero3(gbuf%RHO,gbuf%SIG,gbuf%EINT,nel)
304 IF(jthe /=0)
CALL atheri(mat,pm,gbuf%TEMP)
308 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
309 mbuf => elbuf_str%BUFLY
310 l_pla = elbuf_str%BUFLY(ilay)%L_PLA
311 l_sigb= elbuf_str%BUFLY(ilay)%L_SIGB
313 IF (igtyp == 22)
THEN
314 zi = geo(ippos+ilay,ig)
315 wi = geo(ipthk+ilay,ig)
316 im=igeo(ipmat+ilay,ig)
320 angle(i) = geo(ipang+ilay,pid(i))
323 zi = a_gauss(ilay,nlay)
324 wi = w_gauss(ilay,nlay)
328 lbuf%VOL0DP(i)= half*wi*(gbuf%VOL(i)+vzl(i)*zi)
329 lbuf%VOL(i)= lbuf%VOL0DP(i)
332 .
CALL scmorth3(pid ,geo ,igeo ,skew ,irep ,lbuf%GAMA ,
333 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
334 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z
335 . ngl ,angle,nsigi,sigsp,nsigs,sigi ,ixs,ilay,
336 . orthoglob,ptsol,nel)
340 IF (jthe == 0 .and. glob_therm%NINTEMP > 0)
THEN
342 tempel(i) = one_over_8 *(temp(ixs(2,i)) + temp(ixs(3,i))
343 . + temp(ixs(4,i)) + temp(ixs(5,i))
344 . + temp(ixs(6,i)) + temp(ixs(7,i))
345 . + temp(ixs(8,i)) + temp(ixs(9,i)))
348 tempel(1:nel) = temp0(1:nel)
351 CALL matini(pm ,ixs ,nixs ,x ,
352 . geo ,ale_connectivity ,detonators,iparg ,
353 . sigi ,nel ,skew ,igeo ,
355 . mat ,ipm ,nsigs ,numsol ,ptsol ,
356 . ilay ,ngl ,npf ,tf ,bufmat ,
357 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
358 . facload, deltax ,tempel )
360 nuvar = ipm(8,ixs(1,nft+1))
364 IF(mtn == 14 .OR. mtn == 12)
THEN
366 ELSEIF(mtn == 24)
THEN
368 ELSEIF(istrain == 1)
THEN
375 ELSEIF(mtn == 3.OR.mtn == 6.OR.mtn == 10
376 . .OR.mtn == 21.OR.mtn == 22.OR.mtn == 23.OR.mtn == 49)
THEN
382 . lbuf%SIG,pm ,lbuf%VOL ,sigsp ,
383 . sigi ,lbuf%EINT,lbuf%RHO,mbuf%VAR ,lbuf%STRA,
384 . ixs ,nixs ,nsigi ,ilay ,nuvar ,
385 . nel ,iuser ,idef ,nsigs ,strsglob ,
386 . straglob,jhbe ,igtyp ,x ,lbuf%GAMA,
387 . mat ,lbuf%PLA ,l_pla ,ptsol ,lbuf%SIGB,
388 . l_sigb ,ipm ,bufmat ,lbuf%VOL0DP)
393 CALL dtmain(geo ,pm ,ipm ,pid ,mat ,fv ,
394 . lbuf%EINT ,lbuf%TEMP ,lbuf%DELTAX ,lbuf%RK ,lbuf%RE ,bufmat, deltax, aire,
395 . volu, dtx , igeo,igtyp)
398 . lbuf%RHO,lbuf%VOL,lbuf%OFF,lbuf%SIG,lbuf%EINT,dtx,
399 . gbuf%RHO,gbuf%VOL,gbuf%OFF,gbuf%SIG,gbuf%EINT,dtx0,
412 CALL s6mass3(gbuf%RHO,mas,partsav,x,v,iparts(nf1),mss(1,nf1),
413 . rhocp,mcp ,mcps(1,nf1),mssa(nf1),gbuf%FILL, volu,
414 . ix1, ix2, ix3, ix4, ix5, ix6,imas_ds)
417 CALL failini(elbuf_str,nptr,npts
418 . ipm,sigsp,nsigi,fail_ini ,
419 . sigi,nsigs,ixs,nixs,ptsol,
420 . rnoise,perturb,mat_param)
426 CALL sbulk3(volu ,ix1 ,ncc,mat,pm ,
427 2 volnod,bvolnod,vns(1,nf1),bns(1,nf1),bid,
433 CALL dtmain(geo ,pm ,ipm ,pid ,mat ,fv ,
434 . lbuf%EINT ,lbuf%TEMP ,lbuf%DELTAX ,lbuf%RK ,lbuf%RE ,bufmat, deltax, aire
435 . volu, dtx, igeo,igtyp)
444 IF(ixs(10,i+nft) /= 0)
THEN
445 IF (igtyp < 20 .OR. igtyp > 22)
THEN
446 ipid1=ixs(nixs-1,i+nft)
447 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid1),ltitr)
450 . anmode=aninfo_blind_1,
457 sti = fourth * gbuf%FILL(i) * gbuf%RHO(i) * volu(i) /
458 .
max(em20,dtx(i)*dtx(i))
459 stifn(ixs(2,i+nft))=stifn(ixs(2,i+nft))+sti
460 stifn(ixs(3,i+nft))=stifn(ixs(3,i+nft))+sti
461 stifn(ixs(4,i+nft))=stifn(ixs(4,i+nft))+sti
462 stifn(ixs(5,i+nft))=stifn(ixs(5,i+nft))+sti
463 stifn(ixs(6,i+nft))=stifn(ixs(6,i+nft))+sti
464 stifn(ixs(7,i+nft))=stifn(ixs(7,i+nft))+sti
465 stifn(ixs(8,i+nft))=stifn(ixs(8,i+nft))+sti
466 stifn(ixs(9,i+nft))=stifn(ixs(9,i+nft))+sti