49 SUBROUTINE s8cinit3(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 ,MSNF ,MSSF ,IPM ,
55 . IUSER ,NSIGS ,VOLNOD ,BVOLNOD ,VNS ,
56 . BNS ,WMA ,PTSOL ,BUFMAT ,MCP ,
57 . MCPS ,TEMP ,NPF ,TF ,XREFS ,
58 . MSSA ,STRSGLOB,STRAGLOB,ORTHOGLOB,FAIL_INI ,
59 . ILOADP ,FACLOAD ,RNOISE ,PERTURB ,MAT_PARAM,GLOB_THERM)
73 use element_mod ,
only : nixs
77#include "implicit_f.inc"
91#include "vect01_c.inc"
95 INTEGER IXS(NIXS,*), IPARG(*),IPARTS(*),
96 . NEL, IPART(LIPART1,*),PERTURB(NPERTURB),
97 . IPM(NPROPMI,*), PTSOL(*), NSIGI, IUSER, NSIGS, NPF(*)
98 INTEGER IGEO(NPROPGI,*),STRSGLOB(*),STRAGLOB(*),ORTHOGLOB(*),
101 . MAS(*), PM(NPROPM,*), X(*), GEO(NPROPG,*),
102 . VEUL(LVEUL,*), DTELEM(*),SIGI(NSIGS,*),SKEW(LSKEW,*),STIFN(*),
103 . PARTSAV(20,*), V(*), MSS(8,*),
104 . SIGSP(NSIGI,*),MSNF(*), MSSF(8,*), WMA(*),RNOISE(NPERTURB,*),
105 . volnod(*), bvolnod(*), vns(8,*), bns(8,*),bufmat(*),
106 . mcp(*), mcps(8,*),temp(*), tf(*),xrefs(8,3,*), mssa(*)
107 TYPE(elbuf_struct_),
TARGET :: ELBUF_STR
108 INTEGER,
INTENT(IN) :: ILOADP(SIZLOADP,*)
109 my_real,
INTENT(IN) :: FACLOAD(LFACLOAD,*)
111 TYPE(t_ale_connectivity),
INTENT(INOUT) :: ALE_CONNECTIVITY
112 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(INOUT) :: MAT_PARAM
113 type (glob_therm_) ,
intent(in) :: glob_therm
117 INTEGER I,NF1,IBID,IGTYP,IP,IR,IS,IT,IL,NLAY,NPTR,NPTS,NPTT,NCC,
118 . jhbe,irep,mpt,nuvar,nuvarr,idef,nrefsta,
119 . ipthk, ippos,ig,im,mtn0,icstr,ipid1,l_pla,l_sigb
120 INTEGER PID(MVSIZ), NGL(MVSIZ),MAT(MVSIZ), MAT0(MVSIZ),
121 . ix1(mvsiz), ix2(mvsiz), ix3(mvsiz), ix4(mvsiz),
122 . ix5(mvsiz), ix6(mvsiz), ix7(mvsiz), ix8(mvsiz)
124 . x1(mvsiz),x2(mvsiz),x3(mvsiz),x4(mvsiz),x5(mvsiz),x6(mvsiz),
125 . x7(mvsiz),x8(mvsiz),y1(mvsiz),y2(mvsiz),y3(mvsiz),y4(mvsiz),
126 . y5(mvsiz),y6(mvsiz),y7(mvsiz),y8(mvsiz),z1(mvsiz),z2(mvsiz),
127 . z3(mvsiz),z4(mvsiz),z5(mvsiz),z6(mvsiz),z7(mvsiz),z8(mvsiz),
128 . rx(mvsiz) ,ry(mvsiz) ,rz(mvsiz) ,sx(mvsiz) ,
129 . sy(mvsiz) ,sz(mvsiz) ,tx(mvsiz) ,ty(mvsiz) ,tz(mvsiz) ,
130 . e1x(mvsiz),e1y(mvsiz),e1z(mvsiz),e2x(mvsiz),
131 . e2y(mvsiz),e2z(mvsiz),e3x(mvsiz),e3y(mvsiz),e3z(mvsiz),
132 . f1x(mvsiz) ,f1y(mvsiz) ,f1z(mvsiz) ,
133 . f2x(mvsiz) ,f2y(mvsiz) ,f2z(mvsiz) ,
134 . ajc1(mvsiz) , ajc2(mvsiz) , ajc3(mvsiz) ,
135 . ajc4(mvsiz) , ajc5(mvsiz) , ajc6(mvsiz) ,
136 . ajc7(mvsiz) , ajc8(mvsiz) , ajc9(mvsiz) ,
137 . hx(4,mvsiz) , hy(4,mvsiz), hz(4,mvsiz),gama(6,mvsiz),
138 . smax(mvsiz) , volu(mvsiz), dtx(mvsiz), deltax(mvsiz),
139 . rhocp(mvsiz),temp0(mvsiz), aire(mvsiz),llsh(mvsiz)
141 . bid(mvsiz), fv, sti, wi
143 . angle(mvsiz),dtx0(mvsiz),wt,zr,zs,zt,zz
144 my_real :: tempel(nel)
146 . XD1(MVSIZ), XD2(MVSIZ), XD3(MVSIZ), (MVSIZ),
147 . XD5(MVSIZ), XD6(MVSIZ), XD7(MVSIZ), XD8(MVSIZ),
148 . YD1(MVSIZ), YD2(MVSIZ), YD3(MVSIZ), YD4(MVSIZ),
149 . YD5(MVSIZ), YD6(MVSIZ), YD7(MVSIZ), YD8(MVSIZ),
150 . zd1(mvsiz), zd2(mvsiz), zd3(mvsiz), zd4(mvsiz),
151 . zd5(mvsiz), zd6(mvsiz), zd7(mvsiz), zd8(mvsiz)
152 INTEGER , IPMAT,IPANG
153 CHARACTER(LEN=NCHARTITLE)::TITR
154 parameter(nlymax = 200,ipmat = 100,ipang = 200)
156 TYPE(l_bufel_) ,
POINTER :: LBUF
157 TYPE(G_BUFEL_) ,
POINTER :: GBUF
158 TYPE(BUF_MAT_) ,
POINTER :: MBUF
161 . W_GAUSS(9,9),A_GAUSS(9,9)
169 3 0.555555555555556,0.888888888888889,0.555555555555556,
172 4 0.347854845137454,0.652145154862546,0.652145154862546,
173 4 0.347854845137454,0. ,0. ,
175 5 0.236926885056189,0.478628670499366,0.568888888888889,
176 5 0.478628670499366,0.236926885056189,0. ,
178 6 0.171324492379170,0.360761573048139,0.467913934572691,
179 6 0.467913934572691,0.360761573048139,0.171324492379170,
181 7 0.129484966168870,0.279705391489277,0.381830050505119,
182 7 0.417959183673469,0.381830050505119,0.279705391489277,
183 7 0.129484966168870,0. ,0. ,
184 8 0.101228536290376,0.222381034453374,0.313706645877887,
185 8 0.362683783378362,0.362683783378362,0.313706645877887,
186 8 0.222381034453374,0.101228536290376,0. ,
187 9 0.081274388361574,0.180648160694857,0.260610696402935,
188 9 0.312347077040003,0.330239355001260,0.312347077040003,
189 9 0.260610696402935,0.180648160694857,0.081274388361574/
194 2 -.577350269189626,0.577350269189626,0. ,
197 3 -.774596669241483,0. ,0.774596669241483,
200 4 -.861136311594053,-.339981043584856,0.339981043584856,
201 4 0.861136311594053,0. ,0. ,
203 5 -.906179845938664,-.538469310105683,0. ,
204 5 0.538469310105683,0.906179845938664,0. ,
206 6 -.932469514203152,-.661209386466265,-.238619186083197,
207 6 0.238619186083197,0.661209386466265,0.932469514203152,
209 7 -.949107912342759,-.741531185599394,-.405845151377397,
210 7 0. ,0.405845151377397,0.741531185599394,
211 7 0.949107912342759,0. ,0. ,
212 8 -.960289856497536,-.796666477413627,-.525532409916329,
213 8 -.183434642495650,0.183434642495650,0.525532409916329,
214 8 0.796666477413627,0.960289856497536,0. ,
215 9 -.968160239507626,-.836031107326636,-.613371432700590,
216 9 -.324253423403809,0. ,0.324253423403809,
217 9 0.613371432700590,0.836031107326636,0.968160239507626
221 gbuf => elbuf_str%GBUF
222 mbuf => elbuf_str%BUFLY(1)%MAT(1,1,1)
223 lbuf => elbuf_str%BUFLY(1)%LBUF(1,1,1)
234 IF (jcvt==1.AND.isorth/=0) jcvt=2
237 IF (igtyp /= 22) isorth = 0
241 rhocp(i) = pm(69,ixs(1,nft+i))
242 temp0(i) = pm(79,ixs(1,nft+i))
246 CALL scoor3(x ,bid(1),ixs(1,nf1) ,geo ,mat ,pid ,ngl ,
247 . ix1 ,ix2 ,ix3 ,ix4 ,ix5 ,ix6 ,ix7 ,ix8 ,
248 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
249 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
250 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
251 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
252 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
253 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,temp0, temp,glob_therm%NINTEMP,
254 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
255 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
256 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
258 CALL srcoor3(x,bid(1),ixs(1,nf1) ,geo ,mat ,pid ,ngl ,jhbe ,
259 . ix1 ,ix2 ,ix3 ,ix4 ,ix5 ,ix6 ,ix7 ,ix8 ,
260 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
261 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
262 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
263 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
264 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
265 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,temp0,temp,glob_therm%NINTEMP,
266 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
267 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
268 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
275 angle(i) = geo(1,pid(i))
278 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
279 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
280 . ngl ,angle,nsigi,sigsp,nsigs,sigi ,ixs(1,nf1) ,1 ,
281 . orthoglob ,ptsol,nel)
285 angle(i) = geo(1,pid(i))
287 CALL scmorth3(pid ,geo ,igeo ,skew ,irep ,gbuf%GAMA ,
288 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
289 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
290 . ngl ,angle ,nsigi,sigsp,nsigs,sigi ,ixs(1,nf1),1 ,
291 . orthoglob ,ptsol,nel)
305 . ajc7,ajc8,ajc9,smax, volu, ngl,
306 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
307 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
308 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
311 . x1, x2, x3, x4, x5, x6, x7, x8,
312 . y1, y2, y3, y4, y5, y6, y7, y8,
313 . z1, z2, z3, z4, z5, z6, z7, z8,icstr,idt1sol)
317! initialize element temperature from /initemp
319 IF (jthe == 0 .and. glob_therm%NINTEMP > 0)
THEN
321 tempel(i) = one_over_8 *(temp(ixs(2,i)) + temp(ixs(3,i))
322 . + temp(ixs(4,i)) + temp(ixs(5,i))
323 . + temp(ixs(6,i)) + temp(ixs(7,i))
324 . + temp(ixs(8,i)) + temp(ixs(9,i)))
327 tempel(1:nel) = temp0(1:nel)
331 CALL matini(pm ,ixs ,nixs ,x ,
332 . geo ,ale_connectivity ,detonators ,iparg ,
333 . sigi ,nel ,skew ,igeo ,
335 . mat ,ipm ,nsigs ,numsol ,ptsol ,
336 . ip ,ngl ,npf ,tf ,bufmat ,
337 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
338 . facload, deltax ,tempel ,mat_param )
340 CALL sczero3(gbuf%RHO,gbuf%SIG,gbuf%EINT,nel)
343 IF(jthe /=0)
CALL atheri(mat,pm,gbuf%TEMP)
345 nlay = elbuf_str%NLAY
346 nptr = elbuf_str%NPTR
347 npts = elbuf_str%NPTS
348 nptt = elbuf_str%NPTT
356 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
357 mbuf => elbuf_str%BUFLY(il)%MAT(ir,is,it)
358 l_pla = elbuf_str%BUFLY(il)%L_PLA
359 l_sigb= elbuf_str%BUFLY(il)%L_SIGB
361 IF (igtyp == 22)
THEN
362 wt = geo(ipthk+il,ig)
363 zz = geo(ippos+il,ig)
364 im =igeo(ipmat+il,ig)
368 angle(i) = geo(ipang+il,pid(i))
371 zz = a_gauss(il,nlay)
372 wt = w_gauss(il,nlay)
375 IF (icstr == 10)
THEN
376 zr = a_gauss(ir,nptr)
377 zs = a_gauss(is,npts)
379 ELSEIF (icstr == 100)
THEN
380 zr = a_gauss(ir,nptr)
382 zt = a_gauss(is,npts)
383 ELSEIF (icstr == 1)
THEN
385 zs = a_gauss(ir,nptr)
386 zt = a_gauss(is,npts)
388 ip = ir + ( (is-1) + (il-1)*npts )*nptr
389 wi = w_gauss(ir,nptr)*w_gauss(is,npts)*wt
391 CALL s8zderi3(lbuf%VOL,veul(1,nf1),geo,
396 . ajc7,ajc8,ajc9,smax, deltax, ngl,lbuf%VOL0DP)
399 IF (gbuf%IDT_TSH(i)>0)
400 . deltax(i)=
max(llsh(i),deltax(i))
404 .
CALL scmorth3(pid ,geo ,igeo ,skew ,irep ,lbuf%GAMA,
405 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
406 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
407 . ngl ,angle ,nsigi,sigsp,nsigs,sigi ,ixs(1,nf1),il ,
408 . orthoglob, ptsol,nel)
410 IF (jthe == 0 .and. glob_therm%NINTEMP > 0)
THEN
412 tempel(i) = one_over_8 *(temp(ixs(2,i)) + temp(ixs(3,i))
413 . + temp(ixs(4,i)) + temp(ixs(5,i))
414 . + temp(ixs(6,i)) + temp(ixs(7,i))
415 . + temp(ixs(8,i)) + temp(ixs(9,i)))
418 tempel(1:nel) = temp0(1:nel)
421 CALL matini(pm ,ixs ,nixs ,x ,
422 . geo ,ale_connectivity ,detonators,iparg ,
423 . sigi ,nel ,skew ,igeo ,
425 . mat ,ipm ,nsigs ,numsol ,ptsol ,
426 . ip ,ngl ,npf ,tf ,bufmat ,
427 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
428 . facload,deltax ,tempel ,mat_param )
432 nuvar = ipm(8,ixs(1,nft+1))
436 IF (mtn == 14 .OR. mtn == 12 .OR. mtn == 24)
THEN
438 ELSEIF (istrain == 1 .AND.
439 . (mtn == 1 .OR. mtn == 2 .OR. mtn == 3 .OR.
440 . mtn == 4 .OR. mtn == 6 .OR. mtn == 10 .OR.
441 . mtn == 21 .OR. mtn == 22 .OR. mtn == 23 .OR.
448 . lbuf%SIG ,pm ,lbuf%VOL ,sigsp ,
449 . sigi ,lbuf%EINT,lbuf%RHO ,mbuf%VAR ,lbuf%STRA,
450 . ixs ,nixs ,nsigi ,ip ,nuvar ,
451 . nel ,iuser ,idef ,nsigs ,strsglob ,
452 . straglob ,jhbe ,igtyp ,x ,gbuf%GAMA,
453 . mat ,lbuf%PLA ,l_pla ,ptsol ,lbuf%SIGB,
454 . l_sigb ,ipm ,bufmat ,lbuf%VOL0DP)
456 IF (igtyp == 22)
THEN
458 CALL dtmain(geo ,pm ,ipm ,pid ,mat ,fv ,
459 . lbuf%EINT ,lbuf%TEMP ,lbuf%DELTAX ,lbuf%RK ,lbuf%RE ,bufmat, deltax, aire,
460 . volu, dtx,igeo,igtyp)
463 . lbuf%RHO,lbuf%VOL,lbuf%OFF,lbuf%SIG,lbuf%EINT,dtx,
464 . gbuf%RHO,gbuf%VOL,gbuf%OFF,gbuf%SIG,gbuf%EINT,dtx0,
468 . lbuf%RHO,lbuf%VOL,lbuf%OFF,lbuf%SIG,lbuf%EINT,dtx,
469 . gbuf%RHO,gbuf%VOL,gbuf%OFF,gbuf%SIG,gbuf%EINT,dtx0
477 IF (igtyp == 22)
THEN
486 . gbuf%RHO,mas,partsav,x,v,
487 . iparts(nf1),mss(1,nf1),volu ,
488 . msnf ,mssf(1,nf1) ,bid(1) ,
489 . bid(1) ,bid(1) ,wma ,rhocp ,mcp ,
490 . mcps(1,nf1) ,mssa ,bid(1) ,bid(1),gbuf%FILL,
491 . ix1, ix2, ix3, ix4, ix5, ix6, ix7, ix8)
495 IF (i7stifs /= 0)
THEN
497 CALL sbulk3(volu ,ix1 ,ncc,mat,pm ,
498 . volnod,bvolnod,vns(1,nf1),bns(1,nf1),bid(1),
503 CALL failini(elbuf_str,nptr,npts,nptt,nlay
504 . ipm,sigsp,nsigi,fail_ini ,
505 . sigi,nsigs,ixs,nixs,ptsol,rnoise,perturb,mat_param)
509 CALL dtmain(geo ,pm ,ipm ,pid ,mat ,fv ,
510 . lbuf%EINT ,lbuf%TEMP ,lbuf%DELTAX ,lbuf%RK ,lbuf%RE ,bufmat, deltax, aire,
511 . volu, dtx,igeo,igtyp)
513 IF (igtyp == 22)
THEN
519 IF (ixs(10,i+nft)/=0.AND.invers>14)
THEN
520 IF(igtyp/=0.AND.igtyp/=6.AND.igtyp/=14.AND.igtyp/=15
521 . .AND.igtyp/=20.AND.igtyp/=21.AND.igtyp/=22)
THEN
522 ipid1=ixs(nixs-1,i+nft)
523 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ipid1),ltitr)
526 . anmode=aninfo_blind_1,
534 sti = fourth * gbuf%FILL(i) * gbuf%RHO(i) * volu(i)
535 . /
max(em20,dtx(i)*dtx(i))
536 stifn(ixs(2,i+nft))=stifn(ixs(2,i+nft))+sti
537 stifn(ixs(3,i+nft))=stifn(ixs(3,i+nft))+sti
538 stifn(ixs(4,i+nft))=stifn(ixs(4,i+nft))+sti
539 stifn(ixs(5,i+nft))=stifn(ixs(5,i+nft))+sti
540 stifn(ixs(6,i+nft))=stifn(ixs(6,i+nft))+sti
541 stifn(ixs(7,i+nft))=stifn(ixs(7,i+nft))+sti
542 stifn(ixs(8,i+nft))=stifn(ixs(8,i+nft))+sti
543 stifn(ixs(9,i+nft))=stifn(ixs(9,i+nft))+sti