45 SUBROUTINE suinit3(ELBUF_STR,MS ,IXS ,PM ,X ,
46 . DETONATORS,GEO ,VEUL ,ALE_CONNECTIVITY ,IPARG ,
47 . DTELEM ,SIGI ,NEL ,SKEW ,IGEO ,
48 . STIFN ,PARTSAV ,V ,IPARTS ,MSS ,
49 . IPART ,SIGSP ,GLOB_THERM,TEMP ,
50 . NSIGI ,IN ,VR ,IPM ,NSIGS ,
51 . VOLNOD ,BVOLNOD ,VNS ,BNS ,PTSOL ,
52 . BUFMAT ,NPF ,TF ,FAIL_INI ,INS ,
53 . ILOADP ,FACLOAD ,RNOISE ,PERTURB ,MAT_PARAM)
67#include "implicit_f.inc"
82#include "vect01_c.inc"
88 INTEGER IXS(NIXS,*), IPARG(NPARG),IPARTS(*),
89 . NEL, IPART(LIPART1,*),
90 . IGEO(NPROPGI,*), IPM(NPROPMI,*), PTSOL(*), NSIGI, NSIGS,
91 . NPF(*),FAIL_INI(*),PERTURB(NPERTURB)
93 . MS(*), X(3,*), GEO(NPROPG,*),PM(NPROPM,*),
94 . VEUL(LVEUL,*), DTELEM(*),SIGI(NSIGS,*),SKEW(LSKEW,*),STIFN(*),
95 . PARTSAV(20,*), V(3,*), MSS(8,*),RNOISE(NPERTURB,*),
96 . sigsp(nsigi,*) , in(*), vr(3,*),temp(*),
97 . volnod(*), bvolnod(*), vns(8,*), bns(8,*),bufmat(*), tf(*),
99 TYPE(elbuf_struct_),
TARGET ::
100 INTEGER,
INTENT(IN) :: ILOADP(SIZLOADP,*)
101 my_real,
INTENT(IN) :: FACLOAD(LFACLOAD,*)
102 TYPE(DETONATORS_STRUCT_)::DETONATORS
103 TYPE(t_ale_connectivity),
INTENT(INOUT) :: ALE_CONNECTIVITY
104 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(INOUT) :: MAT_PARAM
105 type (glob_therm_) ,
intent(in) :: glob_therm
109 INTEGER I,J,NF1,IBID,JHBE,IGTYP,IREP,NCC,NUVAR,IP,NREFSTA,
110 . ipid1,nptr,npts,nptt,nlay
111 INTEGER MAT(MVSIZ), PID(MVSIZ), NGL(MVSIZ),
112 . iprop(mvsiz) ,imat(mvsiz) ,sid(mvsiz),
113 . nc1(mvsiz), nc2(mvsiz), nc3(mvsiz), nc4(mvsiz),
114 . nc5(mvsiz), nc6(mvsiz), nc7(mvsiz), nc8(mvsiz)
115 CHARACTER(LEN=NCHARTITLE)::TITR1
118 . bid, fv, volu(mvsiz), dtx(mvsiz),
119 . mass(mvsiz),mas(mvsiz,8),inn(mvsiz,8),xx(mvsiz,8),yy(mvsiz,8),
120 . zz(mvsiz,8),vx(mvsiz,8),vy(mvsiz,8),vz(mvsiz,8),vrx(mvsiz,8),
121 . vry(mvsiz,8),vrz(mvsiz,8),sti(mvsiz),stir(mvsiz),viscm(mvsiz),
122 . viscr(mvsiz),
area(mvsiz),
123 . x1(mvsiz),x2(mvsiz),x3(mvsiz),x4(mvsiz),x5(mvsiz),x6(mvsiz),
124 . x7(mvsiz),x8(mvsiz),y1(mvsiz),y2(mvsiz),y3(mvsiz),y4(mvsiz)
125 . y5(mvsiz),y6(mvsiz),y7(mvsiz),y8(mvsiz),z1(mvsiz),z2(mvsiz),
126 . z3(mvsiz),z4(mvsiz),z5(mvsiz),z6(mvsiz),z7(mvsiz),z8(mvsiz),
128 . sy(mvsiz) ,sz(mvsiz) ,tx(mvsiz) ,ty(mvsiz) ,tz(mvsiz) ,
129 . e1x(mvsiz),e1y(mvsiz),e1z(mvsiz),e2x(mvsiz),
130 . e2y(mvsiz),e2z(mvsiz),e3x
131 . f1x(mvsiz) ,f1y(mvsiz) ,f1z(mvsiz) ,
132 . f2x(mvsiz) ,f2y(mvsiz) ,f2z(mvsiz),
133 . sig_loc(6,nel), deltax(mvsiz), aire(mvsiz)
135 . XD1(MVSIZ), XD2(MVSIZ), XD3(MVSIZ), XD4(MVSIZ),
136 . XD5(MVSIZ), XD6(MVSIZ), (MVSIZ), XD8(MVSIZ),
137 . YD1(MVSIZ), YD2(MVSIZ), YD3(), YD4(MVSIZ),
138 . YD5(MVSIZ), YD6(MVSIZ), YD7(MVSIZ), YD8(MVSIZ),
139 . ZD1(MVSIZ), ZD2(MVSIZ), ZD3(MVSIZ), ZD4(MVSIZ),
140 . ZD5(MVSIZ), ZD6(MVSIZ), ZD7(), ZD8(MVSIZ),THICK(MVSIZ)
141 my_real :: TEMPEL(NEL)
143 TYPE(l_bufel_) ,
POINTER :: LBUF
144 TYPE(G_BUFEL_) ,
POINTER :: GBUF
145 TYPE(BUF_MAT_) ,
POINTER ::
149 dtx(1:mvsiz) = -huge(dtx(1))
150 gbuf => elbuf_str%GBUF
151 lbuf => elbuf_str%BUFLY(1)%LBUF(1,1,1)
152 mbuf => elbuf_str%BUFLY(1)%MAT(1,1,1)
153 nptr = elbuf_str%NPTR
154 npts = elbuf_str%NPTS
155 nptt = elbuf_str%NPTT
156 nlay = elbuf_str%NLAY
157 mlw = elbuf_str%BUFLY(1)%ILAW
173 IF (igtyp == 43)
THEN
176 . nc1 ,nc2 ,nc3 ,nc4 ,nc5 ,nc6 ,nc7 ,nc8 ,
177 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
178 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
179 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
180 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
182 IF (elbuf_str%GBUF%G_THK == 1) elbuf_str%GBUF%THK(1:nel) = thick(1:nel)
183 ELSEIF (jcvt == 0)
THEN
184 CALL scoor3(x ,bid ,ixs(1,nf1) ,geo ,mat ,pid ,ngl ,
185 . nc1 ,nc2 ,nc3 ,nc4 ,nc5 ,nc6 ,nc7 ,nc8 ,
186 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
188 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
189 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
190 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
191 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,bid, bid,glob_therm%NINTEMP,
192 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
193 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
194 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
196 CALL srcoor3(x,bid ,ixs(1,nf1) ,geo ,mat ,pid ,ngl ,jhbe ,
197 . nc1 ,nc2 ,nc3 ,nc4 ,nc5 ,nc6 ,nc7 ,nc8 ,
198 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
199 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
200 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
201 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
202 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z
203 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,bid , bid
204 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
205 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
206 . zd1 ,zd2 ,zd3 ,zd4 ,zd5
211 IF (jthe == 0 .and. glob_therm%NINTEMP > 0)
THEN
213 tempel(i) = one_over_8 *(temp(ixs(2,i)) + temp(ixs(3,i))
214 . + temp(ixs(4,i)) + temp(ixs(5,i))
215 . + temp(ixs(6,i)) + temp(ixs(7,i))
216 . + temp(ixs(8,i)) + temp(ixs(9,i)))
219 tempel(1:nel) = pm(79,mat(1:nel))
223 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
224 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
225 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 )
227 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
228 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
229 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8,
232 IF (igtyp /= 43)
THEN
234 CALL matini(pm ,ixs ,nixs ,x ,
235 . geo ,ale_connectivity ,detonators,iparg ,
236 . sigi ,nel ,skew ,igeo ,
238 . mat ,ipm ,nsigs ,numsol ,ptsol ,
239 . ip ,ngl ,npf ,tf ,bufmat ,
240 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
241 . facload, deltax ,tempel )
246 xx(i,j)=x(1,ixs(j+1,i+nft))
247 yy(i,j)=x(2,ixs(j+1,i+nft))
248 zz(i,j)=x(3,ixs(j+1,i+nft))
249 vx(i,j)=v(1,ixs(j+1,i+nft))
250 vy(i,j)=v(2,ixs(j+1,i+nft))
251 vz(i,j)=v(3,ixs(j+1,i+nft))
257 vrx(i,j)=vr(1,ixs(j+1,i+nft))
258 vry(i,j)=vr(2,ixs(j+1,i+nft))
259 vrz(i,j)=vr(3,ixs(j+1,i+nft))
269 iprop(i)=ixs(10,i+nft)
270 sid(i) =ixs(11,i+nft)
271 imat(i) =ixs(1,i+nft)
273 iadb = ipm(7,imat(1))
274 nuvar = elbuf_str%GBUF%G_NUVAR
280 sig_loc(1,i) = gbuf%SIG(ii(1)+i)
281 sig_loc(2,i) = gbuf%SIG(ii(2)+i)
282 sig_loc(3,i) = gbuf%SIG(ii(3)+i)
283 sig_loc(4,i) = gbuf%SIG(ii(4)+i)
284 sig_loc(5,i) = gbuf%SIG(ii(5)+i)
285 sig_loc(6,i) = gbuf%SIG(ii(6)+i)
287 IF (userl_avail==1)
THEN
288 CALL st_userlib_siniusr(igtyp,rootnam,rootlen,
289 1 nel ,nuvar ,iprop ,imat ,sid ,
290 2 gbuf%EINT,gbuf%VOL,gbuf%VAR,gbuf%OFF,gbuf%RHO,sig_loc,
291 3 xx(1,1),xx(1,2),xx(1,3),xx(1,4),xx(1,5),xx(1,6),xx(1,7),xx(1,8),
292 4 yy(1,1),yy(1,2),yy(1,3),yy(1,4),yy(1,5),yy(1,6),yy(1,7),yy(1,8),
293 5 zz(1,1),zz(1,2),zz(1,3),zz(1,4),zz(1,5),zz(1,6),zz(1,7),zz(1,8),
294 6 vx(1,1),vx(1,2),vx(1,3),vx(1,4),vx(1,5),vx(1,6),vx(1,7),vx(1,8),
295 7 vy(1,1),vy(1,2),vy(1,3),vy(1,4),vy(1,5),vy(1,6),vy(1,7),vy(1,8),
296 8 vz(1,1),vz(1,2),vz(1,3),vz(1,4),vz(1,5),vz(1,6),vz(1,7),vz(1,8),
297 9 vrx(1,1),vrx(1,2),vrx(1,3),vrx(1,4),
298 9 vrx(1,5),vrx(1,6),vrx(1,7),vrx(1,8),
299 a vry(1,1),vry(1,2),vry(1,3),vry(1,4),
300 a vry(1,5),vry(1,6),vry(1,7),vry(1,8),
301 b vrz(1,1),vrz(1,2),vrz(1,3),vrz(1,4),
302 b vrz(1,5),vrz(1,6),vrz(1,7),vrz(1,8),
303 c mas(1,1),mas(1,2),mas(1,3),mas(1,4),
307 c sti ,stir ,viscm ,viscr)
309 option=
'/PROP/USER29'
316 gbuf%SIG(ii(1)+i) = sig_loc(1,i)
317 gbuf%SIG(ii(2)+i) = sig_loc(2,i)
318 gbuf%SIG(ii(3)+i) = sig_loc(3,i)
319 gbuf%SIG(ii(4)+i) = sig_loc(4,i)
320 gbuf%SIG(ii(5)+i) = sig_loc(5,i)
321 gbuf%SIG(ii(6)+i) = sig_loc(6,i)
323 ELSEIF(igtyp == 30)
THEN
325 ELSEIF(igtyp == 31)
THEN
327 ELSEIF(igtyp == 43)
THEN
329 nuvar = elbuf_str%BUFLY(1)%NVAR_MAT
332 1 mlw ,nel ,
area ,gbuf%VOL ,gbuf%RHO ,
333 2 sti ,stir ,viscm ,viscr ,bufmat(iadb),
334 3 mas(1,1) ,mas(1,2) ,mas(1,3) ,mas(1,4) ,mas(1,5) ,
335 4 mas(1,6) ,mas(1,7) ,mas(1,8) ,inn(1,1) ,inn(1,2) ,
336 5 inn(1,3) ,inn(1,4) ,inn(1,5) ,inn(1,6) ,inn(1,7) ,
337 6 inn(1,8) ,pm ,mat ,gbuf%OFF ,gbuf%EINT,
338 7 ptsol ,sigsp ,nsigi ,nuvar )
343 v(1,ixs(j+1,i+nft)) = vx(i,j)
344 v(2,ixs(j+1,i+nft)) = vy(i,j)
345 v(3,ixs(j+1,i+nft)) = vz(i,j)
351 vr(1,ixs(j+1,i+nft))= vrx(i,j)
352 vr(2,ixs(j+1,i+nft))= vry(i,j)
353 vr(3,ixs(j+1,i+nft))= vrz(i,j)
360 CALL sumass3(ms,partsav,x,v,iparts(nf1),mss(1,nf1),
361 2 mas,inn,gbuf%VOL,volu,mass,in,
362 3 nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8,
363 4 ins(1,nf1),gbuf%FILL)
367 CALL failini(elbuf_str,nptr,npts,nptt,nlay,
368 . ipm,sigsp,nsigi,fail_ini ,
369 . sigi,nsigs,ixs,nixs,ptsol,
370 . rnoise,perturb,mat_param)
378 CALL sbulk3(volu ,nc1 ,ncc,mat,pm ,
379 2 volnod,bvolnod,vns(1,nf1),bns(1,nf1),bid,
386 CALL dtmain(geo ,pm ,ipm ,pid ,mat ,fv ,
387 . lbuf%EINT ,lbuf%TEMP ,lbuf%DELTAX ,lbuf%RK ,lbuf%RE ,bufmat, deltax, aire,
388 . volu, dtx, igeo,igtyp)
392 stifn(ixs(2,i+nft))=stifn(ixs(2,i+nft))+sti(i)
393 stifn(ixs(3,i+nft))=stifn(ixs(3,i+nft))+sti(i)
394 stifn(ixs(4,i+nft))=stifn(ixs(4,i+nft))+sti(i)
395 stifn(ixs(5,i+nft))=stifn(ixs(5,i+nft))+sti(i)
396 stifn(ixs(6,i+nft))=stifn(ixs(6,i+nft))+sti(i)
397 stifn(ixs(7,i+nft))=stifn(ixs(7,i+nft))+sti(i)
398 stifn(ixs(8,i+nft))=stifn(ixs(8,i+nft))+sti(i)
399 stifn(ixs(9,i+nft))=stifn(ixs(9,i+nft))+sti(i)
401 IF (igtyp/=29 .AND. igtyp/=30 .AND. igtyp/=31 .AND.
404 ipid1=ixs(nixs-1,i+nft)
405 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid1),ltitr)
408 . anmode=aninfo_blind_1,
426 2 MAS,INN,VOL,VOLU,MASS,IN,
427 3 NC1, NC2, NC3, NC4, NC5, NC6, NC7, NC8,
432#include "implicit_f.inc"
436#include "com01_c.inc"
437#include "mvsiz_p.inc"
444 . MS(*),IN(*),X(3,*),V(3,*),PARTSAV(20,*),(*),VOLU(*)
446INTEGER NC1(*), NC2(*), NC3(*), NC4(*), NC5(*), NC6(*), NC7(*),
451#include
"vect01_c.inc"
455 INTEGER I, IP,I1,I2,I3,I4,I5,I6,I7,I8, J
459 . mas(mvsiz,8),inn(mvsiz,8)
464 mass(i) = fill(i)*(mas(i,1)+mas(i,2)+mas(i,3)+mas(i,4)
465 + + mas(i,5)+mas(i,6)+mas(i,7)+mas(i,8))*one_over_8
496 partsav(1,ip)=partsav(1,ip) + eight*mass(i)
497 partsav(2,ip)=partsav(2,ip) + mass(i)*
498 . (x(1,i1)+x(1,i2)+x(1,i3)+x(1,i4)
499 . +x(1,i5)+x(1,i6)+x(1,i7)+x(1,i8))
500 partsav(3,ip)=partsav(3,ip) + mass(i)*
501 . (x(2,i1)+x(2,i2)+x(2,i3)+x(2,i4)
502 . +x(2,i5)+x(2,i6)+x(2,i7)+x(2,i8))
503 partsav(4,ip)=partsav(4,ip) + mass(i)*
504 . (x(3,i1)+x(3,i2)+x(3,i3)+x(3,i4)
505 . +x(3,i5)+x(3,i6)+x(3,i7)+x(3,i8))
506 xx = (x(1,i1)*x(1,i1)+x(1,i2)*x(1,i2)
507 . +x(1,i3)*x(1,i3)+x(1,i4)*x(1,i4)
508 . +x(1,i5)*x(1,i5)+x(1,i6)*x(1,i6)
509 . +x(1,i7)*x(1,i7)+x(1,i8)*x(1,i8))
510 xy = (x(1,i1)*x(2,i1)+x(1,i2)*x(2,i2)
511 . +x(1,i3)*x(2,i3)+x(1,i4)*x(2,i4)
512 . +x(1,i5)*x(2,i5)+x(1,i6)*x(2,i6)
513 . +x(1,i7)*x(2,i7)+x(1,i8)*x(2,i8))
514 yy = (x(2,i1)*x(2,i1)+x(2,i2)*x(2,i2)
515 . +x(2,i3)*x(2,i3)+x(2,i4)*x(2,i4)
516 . +x(2,i5)*x(2,i5)+x(2,i6)*x(2,i6)
517 . +x(2,i7)*x(2,i7)+x(2,i8)*x(2,i8))
518 yz = (x(2,i1)*x(3,i1)+x(2,i2)*x(3,i2)
519 . +x(2,i3)*x(3,i3)+x(2,i4)*x(3,i4)
520 . +x(2,i5)*x(3,i5)+x(2,i6)*x(3,i6)
521 . +x(2,i7)*x(3,i7)+x(2,i8)*x(3,i8))
522 zz = (x(3,i1)*x(3,i1)+x(3,i2)*x(3,i2)
523 . +x(3,i3)*x(3,i3)+x(3,i4)*x(3,i4)
524 . +x(3,i5)*x(3,i5)+x(3,i6)*x(3,i6)
525 . +x(3,i7)*x(3,i7)+x(3,i8)*x(3,i8))
526 zx = (x(3,i1)*x(1,i1)+x(3,i2)*x(1,i2)
527 . +x(3,i3)*x(1,i3)+x(3,i4)*x(1,i4)
528 . +x(3,i5)*x(1,i5)+x(3,i6)*x(1,i6)
529 . +x(3,i7)*x(1,i7)+x(3,i8)*x(1,i8))
530 partsav(5,ip) =partsav(5,ip) + mass(i) * (yy+zz)
531 partsav(6,ip) =partsav(6,ip) + mass(i) * (zz+xx)
532 partsav(7,ip) =partsav(7,ip) + mass(i) * (xx+yy)
533 partsav(8,ip) =partsav(8,ip) - mass(i) * xy
534 partsav(9,ip) =partsav(9,ip) - mass(i) * yz
535 partsav(10,ip)=partsav(10,ip) - mass(i) * zx
537 partsav(11,ip)=partsav(11,ip) + mass(i)*
538 . (v(1,i1)+v(1,i2)+v(1,i3)+v(1,i4)
539 . +v(1,i5)+v(1,i6)+v(1,i7)+v(1,i8))
540 partsav(12,ip)=partsav(12,ip) + mass(i)*
541 . (v(2,i1)+v(2,i2)+v(2,i3)+v(2,i4)
542 . +v(2,i5)+v(2,i6)+v(2,i7)+v(2,i8))
543 partsav(13,ip)=partsav(13,ip) + mass(i)*
544 . (v(3,i1)+v(3,i2)+v(3,i3)+v(3,i4)
545 . +v(3,i5)+v(3,i6)+v(3,i7)+v(3,i8))
546 partsav(14,ip)=partsav(14,ip) + half * mass(i) *
547 . (v(1,i1)*v(1,i1)+v(2,i1)*v(2,i1)+v(3,i1)*v(3,i1)
548 . +v(1,i2)*v(1,i2)+v(2,i2)*v(2,i2)+v(3,i2)*v(3,i2)
549 . +v(1,i3)*v(1,i3)+v(2,i3)*v(2,i3)+v(3,i3)*v(3,i3)
550 . +v(1,i4)*v(1,i4)+v(2,i4)*v(2,i4)+v(3,i4)*v(3,i4)
551 . +v(1,i5)*v(1,i5)+v(2,i5)*v(2,i5)+v(3,i5)*v(3,i5)
552 . +v(1,i6)*v(1,i6)+v(2,i6)*v(2,i6)+v(3,i6)*v(3,i6)
553 . +v(1,i7)*v(1,i7)+v(2,i7)*v(2,i7)+v(3,i7)*v(3,i7)
554 . +v(1,i8)*v(1,i8)+v(2,i8)*v(2,i8)+v(3,i8)*v(3,i8))