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)
64 use element_mod ,
only : nixs
68#include "implicit_f.inc"
83#include "vect01_c.inc"
89 INTEGER IXS(NIXS,*), IPARG(NPARG),IPARTS(*),
90 . NEL, IPART(LIPART1,*),
91 . IGEO(NPROPGI,*), IPM(NPROPMI,*), PTSOL(*), NSIGI, NSIGS,
92 . NPF(*),FAIL_INI(*),PERTURB(NPERTURB)
94 . MS(*), X(3,*), GEO(NPROPG,*),PM(NPROPM,*),
95 . VEUL(LVEUL,*), DTELEM(*),SIGI(NSIGS,*),SKEW(LSKEW,*),STIFN(*),
96 . PARTSAV(20,*), V(3,*), MSS(8,*),RNOISE(NPERTURB,*),
97 . sigsp(nsigi,*) , in(*), vr(3,*),temp(*),
98 . volnod(*), bvolnod(*), vns(8,*), bns(8,*),bufmat(*), tf(*),
100 TYPE(elbuf_struct_),
TARGET :: ELBUF_STR
101 INTEGER,
INTENT(IN) :: ILOADP(SIZLOADP,*)
102 my_real,
INTENT(IN) :: FACLOAD(LFACLOAD,*)
103 TYPE(DETONATORS_STRUCT_)::DETONATORS
104 TYPE(t_ale_connectivity),
INTENT(INOUT) :: ALE_CONNECTIVITY
105 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(INOUT) :: MAT_PARAM
106 type (glob_therm_) ,
intent(in) :: glob_therm
110 INTEGER I,J,NF1,JHBE,IGTYP,IREP,NCC,NUVAR,IP,NREFSTA,
111 . ipid1,nptr,npts,nptt,nlay,iadb,mlw,ii(6)
112 INTEGER MAT(MVSIZ), PID(MVSIZ), NGL(MVSIZ),
113 . iprop(mvsiz) ,imat(mvsiz) ,sid(mvsiz),
114 . nc1(mvsiz), nc2(mvsiz), nc3(mvsiz), nc4(mvsiz),
115 . nc5(mvsiz), nc6(mvsiz), nc7(mvsiz), nc8(mvsiz)
116 CHARACTER(LEN=NCHARTITLE)::TITR1
119 my_real ,
DIMENSION(MVSIZ,8) :: mas,inn,xx,yy,zz,vx,vy,vz,vrx,vry,vrz
120 my_real ,
DIMENSION(MVSIZ) :: volu,
area,aire,mass,dtx,deltax,sti,stir,viscm,viscr,
121 . x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8,z1,z2,z3,z4,z5,z6,z7,z8,
122 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
123 . e1x,e1y,e1z,e2x,e2y,e2z,e3x,e3y,e3z,f1x,f1y,f1z,f2x,f2y,f2z
124 my_real :: sig_loc(6,nel)
125 DOUBLE PRECISION ,
DIMENSION(MVSIZ) ::
126 . xd1, xd2, xd3, xd4, xd5, xd6, xd7, xd8,
127 . yd1, yd2, yd3, yd4, yd5, yd6, yd7, yd8,
128 . zd1, zd2, zd3, zd4, zd5, zd6, zd7, zd8
129 my_real ,
DIMENSION(NEL) :: tempel,thick
131 TYPE(l_bufel_) ,
POINTER :: LBUF
132 TYPE(g_bufel_) ,
POINTER :: GBUF
133 TYPE(buf_mat_) ,
POINTER :: MBUF
137 dtx(1:mvsiz) = -huge(dtx(1))
138 gbuf => elbuf_str%GBUF
139 lbuf => elbuf_str%BUFLY(1)%LBUF(1,1,1)
140 mbuf => elbuf_str%BUFLY(1)%MAT(1,1,1)
141 nptr = elbuf_str%NPTR
142 npts = elbuf_str%NPTS
143 nptt = elbuf_str%NPTT
144 nlay = elbuf_str%NLAY
145 mlw = elbuf_str%BUFLY(1)%ILAW
161 IF (igtyp == 43)
THEN
163 . x ,ixs(1,nf1) ,geo ,nel ,mat
164 . nc1 ,nc2 ,nc3 ,nc4 ,nc5 ,nc6 ,nc7 ,nc8 ,
166 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
167 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
168 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
170 IF (elbuf_str%GBUF%G_THK == 1) elbuf_str%GBUF%THK(1:nel) = thick(1:nel)
171 ELSEIF (jcvt == 0)
THEN
172 CALL scoor3(x ,bid ,ixs(1,nf1) ,geo ,mat ,pid ,ngl ,
173 . nc1 ,nc2 ,nc3 ,nc4 ,nc5 ,nc6 ,nc7 ,nc8 ,
174 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
175 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
176 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
177 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
178 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
179 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,bid, bid,glob_therm%NINTEMP,
180 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
181 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
182 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
184 CALL srcoor3(x,bid ,ixs(1,nf1) ,geo ,mat ,pid ,ngl ,jhbe ,
185 . nc1 ,nc2 ,nc3 ,nc4 ,nc5 ,nc6 ,nc7 ,nc8 ,
186 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
187 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
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 ,
199 IF (jthe == 0 .and. glob_therm%NINTEMP
THEN
201 tempel(i) = one_over_8 *(temp(ixs(2,i)) + temp(ixs(3,i))
202 . + temp(ixs(4,i)) + temp(ixs(5,i))
203 . + temp(ixs(6,i)) + temp(ixs(7,i))
204 . + temp(ixs(8,i)) + temp(ixs(9,i)))
207 tempel(1:nel) = pm(79,mat(1:nel))
211 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
212 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
213 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 )
215 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
216 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
217 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8,
220 IF (igtyp /= 43)
THEN
222 CALL matini(pm ,ixs ,nixs ,x ,
223 . geo ,ale_connectivity ,detonators,iparg ,
224 . sigi ,nel ,skew ,igeo ,
226 . mat ,ipm ,nsigs ,numsol ,ptsol ,
227 . ip ,ngl ,npf ,tf ,bufmat ,
228 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
229 . facload, deltax ,tempel ,mat_param )
234 xx(i,j)=x(1,ixs(j+1,i+nft))
235 yy(i,j)=x(2,ixs(j+1,i+nft))
236 zz(i,j)=x(3,ixs(j+1,i+nft))
237 vx(i,j)=v(1,ixs(j+1,i+nft))
238 vy(i,j)=v(2,ixs(j+1,i+nft))
239 vz(i,j)=v(3,ixs(j+1,i+nft))
245 vrx(i,j)=vr(1,ixs(j+1,i+nft))
246 vry(i,j)=vr(2,ixs(j+1,i+nft))
247 vrz(i,j)=vr(3,ixs(j+1,i+nft))
257 iprop(i)=ixs(10,i+nft)
258 sid(i) =ixs(11,i+nft)
259 imat(i) =ixs(1,i+nft)
261 iadb = ipm(7,imat(1))
262 nuvar = elbuf_str%GBUF%G_NUVAR
268 sig_loc(1,i) = gbuf%SIG(ii(1)+i)
269 sig_loc(2,i) = gbuf%SIG(ii(2)+i)
270 sig_loc(3,i) = gbuf%SIG(ii(3)+i)
271 sig_loc(4,i) = gbuf%SIG(ii(4)+i)
272 sig_loc(5,i) = gbuf%SIG(ii(5)+i)
273 sig_loc(6,i) = gbuf%SIG(ii(6)+i)
275 IF (userl_avail==1)
THEN
276 CALL st_userlib_siniusr(igtyp,rootnam
277 1 nel ,nuvar ,iprop ,imat ,sid ,
278 2 gbuf%EINT,gbuf%VOL,gbuf%VAR,gbuf%OFF,gbuf%RHO,sig_loc,
279 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),
280 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),
281 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),
282 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),
283 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),
284 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),
285 9 vrx(1,1),vrx(1,2),vrx(1,3),vrx(1,4),
286 9 vrx(1,5),vrx(1,6),vrx(1,7),vrx(1,8),
287 a vry(1,1),vry(1,2),vry(1,3),vry(1,4),
288 a vry(1,5),vry(1,6),vry(1,7),vry(1,8),
289 b vrz(1,1),vrz(1,2),vrz(1,3),vrz(1,4),
291 c mas(1,1),mas(1,2),mas(1,3),mas(1,4),
292 c mas(1,5),mas(1,6),mas(1,7),mas(1,8),
293 d inn(1,1),inn(1,2),inn(1,3),inn(1,4),
294 d inn(1,5),inn(1,6),inn(1,7),inn(1,8),
295 c sti ,stir ,viscm ,viscr)
297 option=
'/PROP/USER29'
304 gbuf%SIG(ii(1)+i) = sig_loc(1,i)
305 gbuf%SIG(ii(2)+i) = sig_loc(2,i)
306 gbuf%SIG(ii(3)+i) = sig_loc(3,i)
307 gbuf%SIG(ii(4)+i) = sig_loc(4,i)
308 gbuf%SIG(ii(5)+i) = sig_loc(5,i)
309 gbuf%SIG(ii(6)+i) = sig_loc(6,i)
311 ELSEIF(igtyp == 30)
THEN
313 ELSEIF(igtyp == 31)
THEN
315 ELSEIF(igtyp == 43)
THEN
317 nuvar = elbuf_str%BUFLY(1)%NVAR_MAT
320 1 mlw ,nel ,
area ,gbuf%VOL ,gbuf%RHO ,
322 3 mas(1,1) ,mas(1,2) ,mas(1,3) ,mas(1,4) ,mas(1,5) ,
323 4 mas(1,6) ,mas(1,7) ,mas(1,8) ,inn(1,1) ,inn(1,2) ,
324 5 inn(1,3) ,inn(1,4) ,inn(1,5) ,inn(1,6) ,inn(1,7) ,
325 6 inn(1,8) ,pm ,mat ,gbuf%OFF ,gbuf%EINT,
326 7 ptsol ,sigsp ,nsigi ,nuvar )
331 v(1,ixs(j+1,i+nft)) = vx(i,j)
332 v(2,ixs(j+1,i+nft)) = vy(i,j)
333 v(3,ixs(j+1,i+nft)) = vz(i,j)
339 vr(1,ixs(j+1,i+nft))= vrx(i,j)
340 vr(2,ixs(j+1,i+nft))= vry(i,j)
341 vr(3,ixs(j+1,i+nft))= vrz(i,j)
348 CALL sumass3(ms,partsav,x,v,iparts(nf1),mss(1,nf1),
349 2 mas,inn,gbuf%VOL,volu,mass,in,
350 3 nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8,
351 4 ins(1,nf1),gbuf%FILL)
355 CALL failini(elbuf_str,nptr,npts,nptt,nlay,
356 . ipm,sigsp,nsigi,fail_ini ,
357 . sigi,nsigs,ixs,nixs,ptsol,
358 . rnoise,perturb,mat_param)
366 CALL sbulk3(volu ,nc1 ,ncc,mat,pm ,
367 2 volnod,bvolnod,vns(1,nf1),bns(1,nf1),bid,
374 CALL dtmain(geo ,pm ,ipm ,pid ,mat ,fv ,
375 . lbuf%EINT ,lbuf%TEMP ,lbuf%DELTAX ,lbuf%RK ,lbuf%RE ,bufmat, deltax, aire,
376 . volu, dtx, igeo,igtyp)
380 stifn(ixs(2,i+nft))=stifn(ixs(2,i+nft))+sti(i)
381 stifn(ixs(3,i+nft))=stifn(ixs(3,i+nft))+sti(i)
382 stifn(ixs(4,i+nft))=stifn(ixs(4,i+nft))+sti(i)
383 stifn(ixs(5,i+nft))=stifn(ixs(5,i+nft))+sti(i)
384 stifn(ixs(6,i+nft))=stifn(ixs(6,i+nft))+sti(i)
385 stifn(ixs(7,i+nft))=stifn(ixs(7,i+nft))+sti(i)
386 stifn(ixs(8,i+nft))=stifn(ixs(8,i+nft))+sti(i)
387 stifn(ixs(9,i+nft))=stifn(ixs(9,i+nft))+sti(i)
389 IF (igtyp/=29 .AND. igtyp/=30 .AND. igtyp/=31 .AND.
392 ipid1=ixs(nixs-1,i+nft)
393 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid1),ltitr)
396 . anmode=aninfo_blind_1,
414 2 MAS,INN,VOL,VOLU,MASS,IN,
415 3 NC1, NC2, NC3, NC4, NC5, NC6, NC7, NC8,
420#include "implicit_f.inc"
424#include "com01_c.inc"
425#include "mvsiz_p.inc"
432 . (*),IN(*),X(3,*),V(3,*),PARTSAV(20,*),VOL(*),VOLU(*),MASS(*),
433 . MSS(8,*),INS(8,*) ,FILL(*)
434 INTEGER NC1(*), NC2(*), NC3(*), NC4(*), NC5(*), NC6(*), NC7(*),
439#include
"vect01_c.inc"
443 INTEGER I, IP,I1,I2,I3,I4,I5,I6,I7,I8
447 . mas(mvsiz,8),inn(mvsiz,8)
452 mass(i) = fill(i)*(mas(i,1)+mas(i,2)+mas(i,3)+mas(i,4)
453 + + mas(i,5)+mas(i,6)+mas(i,7)+mas(i,8))*one_over_8
484 partsav(1,ip)=partsav(1,ip) + eight*mass(i)
485 partsav(2,ip)=partsav(2,ip) + mass(i)*
486 . (x(1,i1)+x(1,i2)+x(1,i3)+x(1,i4)
487 . +x(1,i5)+x(1,i6)+x(1,i7)+x(1,i8))
488 partsav(3,ip)=partsav(3,ip) + mass(i
489 . (x(2,i1)+x(2,i2)+x(2,i3)+x(2,i4)
490 . +x(2,i5)+x(2,i6)+x(2,i7)+x(2,i8))
491 partsav(4,ip)=partsav(4,ip) + mass(i)*
492 . (x(3,i1)+x(3,i2)+x(3,i3)+x(3,i4)
494 xx = (x(1,i1)*x(1,i1)+x(1,i2)*x(1,i2)
495 . +x(1,i3)*x(1,i3)+x(1,i4)*x(1,i4)
496 . +x(1,i5)*x(1,i5)+x(1,i6)*x(1,i6)
497 . +x(1,i7)*x(1,i7)+x(1,i8)*x(1,i8))
498 xy = (x(1,i1)*x(2,i1)+x(1,i2)*x(2,i2)
499 . +x(1,i3)*x(2,i3)+x(1,i4)*x(2,i4
500 . +x(1,i5)*x(2,i5)+x(1,i6)*x(2,i6)
501 . +x(1,i7)*x(2,i7)+x(1,i8)*x(2,i8))
502 yy = (x(2,i1)*x(2,i1)+x(2,i2)*x(2,i2)
503 . +x(2,i3)*x(2,i3)+x(2,i4)*x(2,i4)
504 . +x(2,i5)*x(2,i5)+x(2,i6)*x(2,i6)
505 . +x(2,i7)*x(2,i7)+x(2,i8)*x(2,i8))
506 yz = (x(2,i1)*x(3,i1)+x(2,i2)*x(3,i2)
507 . +x(2,i3)*x(3,i3)+x(2,i4)*x(3,i4)
508 . +x(2,i5)*x(3,i5)+x(2,i6)*x(3,i6)
509 . +x(2,i7)*x(3,i7)+x(2,i8)*x(3,i8))
510 zz = (x(3,i1)*x(3,i1)+x(3,i2)*x(3,i2)
511 . +x(3,i3)*x(3,i3)+x(3,i4)*x(3,i4)
512 . +x(3,i5)*x(3,i5)+x(3,i6)*x(3,i6)
513 . +x(3,i7)*x(3,i7)+x(3,i8)*x(3,i8))
514 zx = (x(3,i1)*x(1,i1)+x(3,i2)*x(1,i2)
515 . +x(3,i3)*x(1,i3)+x(3,i4)*x(1,i4)
516 . +x(3,i5)*x(1,i5)+x(3,i6)*x(1,i6)
517 . +x(3,i7)*x(1,i7)+x(3,i8)*x(1,i8))
518 partsav(5,ip) =partsav(5,ip) + mass(i) * (yy+zz)
519 partsav(6,ip) =partsav(6,ip) + mass(i) * (zz+xx)
520 partsav(7,ip) =partsav(7,ip) + mass(i) * (xx+yy)
521 partsav(8,ip) =partsav(8,ip) - mass(i) * xy
522 partsav(9,ip) =partsav(9,ip) - mass(i) * yz
523 partsav(10,ip)=partsav(10,ip) - mass(i) * zx
525 partsav(11,ip)=partsav(11,ip) + mass(i)*
526 . (v(1,i1)+v(1,i2)+v(1,i3)+v(1,i4)
527 . +v(1,i5)+v(1,i6)+v(1,i7)+v(1,i8))
528 partsav(12,ip)=partsav(12,ip) + mass(i)*
529 . (v(2,i1)+v(2,i2)+v(2,i3)+v(2,i4)
530 . +v(2,i5)+v(2,i6)+v(2,i7)+v(2,i8))
531 partsav(13,ip)=partsav(13,ip) + mass(i)*
532 . (v(3,i1)+v(3,i2)+v(3,i3)+v(3,i4)
533 . +v(3,i5)+v(3,i6)+v(3,i7)+v(3,i8))
534 partsav(14,ip)=partsav(14,ip) + half * mass(i) *
535 . (v(1,i1)*v(1,i1)+v(2,i1)*v(2,i1)+v(3,i1)*v(3,i1)
536 . +v(1,i2)*v(1,i2)+v(2,i2)*v(2,i2)+v(3,i2)*v(3,i2)
537 . +v(1,i3)*v(1,i3)+v(2,i3)*v(2,i3)+v(3,i3)*v(3,i3)
538 . +v(1,i4)*v(1,i4)+v(2,i4)*v(2,i4)+v(3,i4)*v(3,i4)
539 . +v(1,i5)*v(1,i5)+v(2,i5)*v(2,i5)+v(3,i5)*v(3,i5)
540 . +v(1,i6)*v(1,i6)+v(2,i6)*v(2,i6)+v(3,i6)*v(3,i6)
541 . +v(1,i7)*v(1,i7)+v(2,i7)*v(2,i7)+v(3,i7)*v(3,i7)
542 . +v(1,i8)*v(1,i8)+v(2,i8)*v(2,i8)+v(3,i8)*v(3,i8))