114
115
116
117 USE timer_mod
119 USE mat_elem_mod
125 USE sensor_mod
126 USE elbufdef_mod
128 use glob_therm_mod
129 use dttherm_mod
130 use element_mod , only : nixtg
131
132
133
134#include "implicit_f.inc"
135
136
137
138#include "mvsiz_p.inc"
139
140
141
142#include "param_c.inc"
143#include "com01_c.inc"
144#include "com04_c.inc"
145#include "scr18_c.inc"
146#include "com_xfem1.inc"
147#include "parit_c.inc"
148#include "timeri_c.inc"
149
150
151
152 TYPE(TIMER_), INTENT(INOUT) :: TIMERS
153 INTEGER, INTENT(IN) :: USERL_AVAIL
154 INTEGER, INTENT(IN) :: MAXFUNC
155 INTEGER, INTENT(INOUT) :: IDEL7NOK
156 INTEGER, INTENT(IN) :: SBUFMAT
157 INTEGER, INTENT(IN) :: STF
158 INTEGER, INTENT(IN) :: SNPC
159 INTEGER, INTENT(IN) :: JTUR
160 INTEGER, INTENT(IN) :: IGRE
161 INTEGER, INTENT(IN) :: IPRI
162 INTEGER JFT, JLT, NVC, MTN,NELTST,ITYPTST, OFFSET,
163 . NEL ,ISTRAIN,ISH3N , ICSEN,
164 . ITHK ,IOFC ,IPLA ,NFT ,ISMSTR ,NPT,KFTS,IFAILURE,
165 . JSMS,ISUBSTACK
166 INTEGER NPF(*),IXTG(NIXTG,*),IADTG(3,*),IGEO(NPROPGI,*),IPM(*),
167 . IPARTTG(*),ITASK,JTHE,IEXPAN,GRTH(*),IGRTH(*),IPARG(*),ITAB(*),
168 . IXFEM,IBORDNODE(*),
169 . ELCUTC(2,*),INOD_CRK(*),NODENR(*),IEL_CRK(*),IADTG_CRK(3,*),
170 . NODEDGE(2,*),CRKNODIAD(*),KNOD2ELC(*),XEDGE3N(3,*),INDX_DRAPE(STDRAPE)
172 . pm(npropm,*), f(*), m(*), v(*), r(*),x(*),
173 . geo(npropg,*), tf(*), bufmat(*), pmsav(*),stifn(*),
174 . stifr(*),fsky(*),epsdot(6,*),thke(*),dt2t,
175 . f11(mvsiz), f12(mvsiz), f13(mvsiz),
176 . f21(mvsiz), f22(mvsiz), f23(mvsiz),
177 . f31(mvsiz), f32(mvsiz), f33(mvsiz),
178 . m11(mvsiz), m12(mvsiz), m13(mvsiz),
179 . m21(mvsiz), m22(mvsiz), m23(mvsiz),
180 . m31(mvsiz), m32(mvsiz), m33(mvsiz),
181 . fzero(3,3,*),temp(*),fthe(*),fthesky(*),gresav(*),mstg(*),
182 . dmeltg(*),ptg(3,*),condn(*),condnsky(*)
183
184 REAL(kind=8), dimension(*), INTENT(in), TARGET :: xdp
185
186 TYPE(TTABLE) TABLE(*)
187 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
188 TYPE (ELBUF_STRUCT_), DIMENSION(NXEL), TARGET :: XFEM_STR
189 TYPE (XFEM_EDGE_) , DIMENSION(*) :: CRKEDGE
190 TYPE (STACK_PLY) :: STACK
191 TYPE (NLOCAL_STR_) ,TARGET :: NLOC_DMG
192 TYPE (FAILWAVE_STR_) ,TARGET :: FAILWAVE
193 TYPE (DRAPE_), DIMENSION(NUMELTG_DRAPE) :: DRAPE_SH3N
194 TYPE (SENSORS_) ,INTENT(INOUT) :: SENSORS
195 TYPE (MAT_ELEM_),INTENT(INOUT) :: MAT_ELEM
196 TYPE (GROUP_PARAM_) :: GROUP_PARAM
197 TYPE (DT_), INTENT(IN) :: DT
198 type (glob_therm_) ,intent(inout) :: glob_therm
199 INTEGER, INTENT(IN) :: LIPART1
200 INTEGER, DIMENSION(LIPART1,NPART), INTENT(IN) :: IPART
201
202
203
204 INTEGER INDX(MVSIZ)
205 INTEGER MAT(MVSIZ),PID(MVSIZ),NGL(MVSIZ),FWAVE_EL(NEL)
206 INTEGER I, J, NPG, IBID, IDRIL, NG, IR, IS,
207 . IXEL,IXLAY,ILAY,NXLAY,NLAY,L_DIRA,L_DIRB,J1,J2,IGMAT,IGTYP,
208 . IMAT,NPTTOT,IREP,IFRAM_OLD,IFAILWAVE, IDRAPE,NPTT,IT,
209 . ACTIFXFEM ,SEDRAPE,NUMEL_DRAPE
211 INTEGER SDIR_A
212 INTEGER SDIR_B
213 my_real :: dt1,dtinv,asrate,eps_m2,eps_k2
215 . sti(mvsiz),stir(mvsiz),rho(mvsiz),bid,
216 . viscmx(mvsiz),
area(mvsiz),
217 . x2l(mvsiz), x3l(mvsiz), y2l(mvsiz),y3l(mvsiz),
218 . exx(mvsiz), eyy(mvsiz), exy(mvsiz), ezx(mvsiz), eyz(mvsiz),
219 . kxx(mvsiz), kyy(mvsiz), kxy(mvsiz),
220 . px1(mvsiz), py1(mvsiz), py2(mvsiz),
221 . off(mvsiz), sigy(mvsiz),thk0(mvsiz),
222 . nu(mvsiz) , shf(mvsiz), dt1c(mvsiz),
223 . g(mvsiz) , ym(mvsiz) , a11(mvsiz) , a12(mvsiz),
224 . vol0(mvsiz),thk02(mvsiz),zcfac(mvsiz,2), gs(mvsiz),
225 . vol00(mvsiz),alpe(mvsiz),die(mvsiz), tempel(mvsiz),
226 . e1x0(mvsiz), e1y0(mvsiz), e1z0(mvsiz), e2x0(mvsiz),
227 . e2y0(mvsiz), e2z0(mvsiz), e3x0(mvsiz), e3y0(mvsiz), e3z0(mvsiz),
228 . e1x(mvsiz), e1y(mvsiz), e1z(mvsiz), e2x(mvsiz),
229 . e2y(mvsiz), e2z(mvsiz), e3x(mvsiz), e3y(mvsiz), e3z(mvsiz),
230 . vl1(mvsiz,3),vl2(mvsiz,3),vl3(mvsiz,3),
231 . vrl1(mvsiz,3),vrl2(mvsiz,3),vrl3(mvsiz,3) ,them(mvsiz,3),
232 . x21g(mvsiz), y21g(mvsiz), z21g(mvsiz),
233 . x31g(mvsiz), y31g(mvsiz), z31g(mvsiz),
234 . ux1(mvsiz),ux2(mvsiz),ux3(mvsiz),
235 . uy1(mvsiz),uy2(mvsiz),uy3(mvsiz),
236 . vx13(mvsiz), vx23(mvsiz),vy12(mvsiz),
237 . rlz(mvsiz,3),wxy(mvsiz),mlz(mvsiz,3),krz(mvsiz),
238 . b0rz(mvsiz,3),bkrz(mvsiz,2),berz(mvsiz,2),bm0rz(mvsiz,3,2),
239 . conde(mvsiz),a11r(mvsiz),aldt(mvsiz),ssp(mvsiz)
241 . areat(mvsiz),x2t(mvsiz) ,y2t(mvsiz), x3t(mvsiz),y3t(mvsiz),
242 . f_def(mvsiz,8), u21x(mvsiz),u31x(mvsiz),u21y(mvsiz),u31y(mvsiz),
243 . rz13(mvsiz),rz23(mvsiz),bmrzt(mvsiz,8),wkxy(mvsiz),
244 . ecos(mvsiz),esin(mvsiz),nfor(nel,5),nmom(nel,3)
245 !
246 my_real ,
DIMENSION(NEL) :: zoffset
247
248 REAL(kind=8), dimension(mvsiz) ::x1g,x2g,x3g
249 REAL(kind=8), dimension(mvsiz) ::y1g,y2g,y3g
250 REAL(kind=8), dimension(mvsiz) ::z1g,z2g,z3g
251 my_real,
dimension(nel) :: epsd_pg
252
253 my_real,
dimension(mvsiz) :: fheat
254 my_real,
dimension(mvsiz) :: ssp_eq
255
256
257 INTEGER :: NDDL, K, INOD(3),NC1(MVSIZ), NC2(MVSIZ), NC3(MVSIZ), L_NLOC, IPOS(3),INLOC
258 my_real,
DIMENSION(:,:),
ALLOCATABLE :: var_reg
259 my_real,
DIMENSION(:),
POINTER :: dnl
260
261 INTEGER, DIMENSION(NEL) :: OFFLY
262 INTEGER, ALLOCATABLE, DIMENSION(:) :: ELCRKINI
263 my_real ,
ALLOCATABLE,
DIMENSION(:) :: dira,dirb,dir1_crk,dir2_crk
264 my_real ,
DIMENSION(:) ,
POINTER :: dir_a,dir_b,crkdir,crklen,dadv
265 TARGET :: dira,dirb
266
267
268 TYPE(G_BUFEL_) ,POINTER :: GBUF
269
270 TYPE(L_BUFEL_DIR_) ,POINTER :: LBUF_DIR
271
272
273
274 gbuf => elbuf_str%GBUF
275 idrape = elbuf_str%IDRAPE
276 ibid = 0
277 bid = zero
278 idril = iparg(41)
279 actifxfem = iparg(70)
280 inloc = iparg(78)
281 nlay = elbuf_str%NLAY
284 tempel(:) = zero
285 fheat(: ) = zero
286
287
288 npg = 1
289 ir = 1
290 is = 1
291 ng = 1
292 ixel = 0
293 ixlay = 0
294 irep = iparg(35)
295
296 zcfac(1:mvsiz,1:2) = zero
297
298 npttot = 0
299 DO ilay=1,nlay
300 npttot = npttot + elbuf_str%BUFLY(ilay)%NPTT
301 ENDDO
302 nddl = npttot
303 ALLOCATE(var_reg(nel,nddl))
304 IF (npt == 0) npttot = npt
305 IF (ish3n==3.AND.ish3nfram==0) THEN
306 ifram_old =0
307 ELSE
308 ifram_old =1
309 END IF
310
311 DO i=jft,jlt
312 mat(i) = ixtg(1,i)
313 pid(i) = ixtg(5,i)
314 ngl(i) = ixtg(6,i)
315 thk0(i) = thke(i)
316 ENDDO
317 imat = ixtg(1,jft)
318 icsen = igeo(3,pid(1))
319 igtyp = igeo(11,pid(1))
320 igmat = igeo(98,pid(1))
321
322
323
324 ifailwave = iparg(79)
325 IF (ifailwave > 0) THEN
326 fwave_el(:) = zero
327 offly(:) = elbuf_str%BUFLY(1)%OFF(:)
328 DO i=2,nlay
329 DO j=1,nel
330 offly(j) =
max(offly(j), elbuf_str%BUFLY(i)%OFF(j))
331 ENDDO
332 ENDDO
333 dadv => gbuf%DMG
335 . nel ,ixtg ,itab ,ngl ,offly )
336
337 ENDIF
338
339 l_dira = elbuf_str%BUFLY(1)%LY_DIRA
340 l_dirb = elbuf_str%BUFLY(1)%LY_DIRB
341 IF(idrape > 0 .AND. (igtyp == 51 .OR. igtyp == 52)) THEN
342 ALLOCATE(dira(npttot*nel*l_dira))
343 ALLOCATE(dirb(npttot*nel*l_dirb))
344 IF (l_dira == 0) THEN
345 CONTINUE
346 ELSEIF (irep == 0) THEN
347 npttot = 0
348 DO ilay=1,nlay
349 nptt = elbuf_str%BUFLY(ilay)%NPTT
350 DO it=1,nptt
351 j = npttot + it
352 lbuf_dir => elbuf_str%BUFLY(ilay)%LBUF_DIR(it)
353 j1 = 1+(j-1)*l_dira*nel
354 j2 = j*l_dira*nel
355 dira(j1:j2) = lbuf_dir%DIRA(1:nel*l_dira)
356 ENDDO
357 npttot = npttot + nptt
358 ENDDO
359 ENDIF
360 sdir_a = npttot*nel*l_dira
361 sdir_b = npttot*nel*l_dirb
362 dir_a => dira(1:npttot*nel*l_dira)
363 dir_b => dirb(1:npttot*nel*l_dirb)
364
365 ELSE
366 sdir_a = nlay*nel*l_dira
367 sdir_b = nlay*nel*l_dirb
368 ALLOCATE(dira(nlay*nel*l_dira))
369 ALLOCATE(dirb(nlay*nel*l_dirb))
370 dira=zero
371 dirb=zero
372 IF (l_dira == 0) THEN
373 CONTINUE
374 ELSEIF (irep == 0) THEN
375 DO j=1,nlay
376 j1 = 1+(j-1)*l_dira*nel
377 j2 = j*l_dira*nel
378 dira(j1:j2) = elbuf_str%BUFLY(j)%DIRA(1:nel*l_dira)
379 ENDDO
380 ENDIF
381 sdir_a=nlay*nel*l_dira
382 sdir_b=nlay*nel*l_dirb
383 dir_a => dira(1:nlay*nel*l_dira)
384 dir_b => dirb(1:nlay*nel*l_dirb)
385 ENDIF
386
387 nxlay = nlay
388
389 IF (ixfem > 0) THEN
390 ALLOCATE(elcrkini(nxlaymax*mvsiz))
391 ALLOCATE(dir1_crk(nxlaymax*mvsiz))
392 ALLOCATE(dir2_crk(nxlaymax*mvsiz))
393 dir1_crk = zero
394 dir2_crk = zero
395 elcrkini = 0
396 IF (nlevset > 0) THEN
398 . iel_crk,inod_crk,nodenr ,crkedge,xedge3n )
399 ENDIF
400 ELSE
401 ALLOCATE(elcrkini(0))
402 ALLOCATE(dir1_crk(0))
403 ALLOCATE(dir2_crk(0))
404 ENDIF
405
406
407 CALL c3coor3(jft ,jlt ,x ,ixtg ,
408 . gbuf%OFF ,off ,dt1c ,
409 . v ,r ,vl1 ,vl2 ,vl3 ,
410 . vrl1 ,vrl2 ,vrl3 ,sigy ,
411 . x1g ,x2g ,x3g ,y1g ,y2g ,
412 . y3g ,z1g ,z2g ,z3g ,xdp )
413
414
415
416
417 CALL c3evec3(elbuf_str,dir_a ,dir_b ,jft ,jlt ,
418 . irep ,e1x0 ,e1y0 ,e1z0 ,e2x0 ,
419 . e2y0 ,e2z0 ,e3x0 ,e3y0 ,e3z0 ,
420 . e1x ,e1y ,e1z ,e2x ,
421 . e2y ,e2z ,e3x ,e3y ,e3z ,
422 . nlay ,gbuf%OFF ,ecos ,esin ,ifram_old,
423 . nel ,
area ,x21g ,y21g ,z21g ,
424 . x31g ,y31g ,z31g ,
425 . x1g ,x2g ,x3g ,y1g ,y2g ,
426 . y3g ,z1g ,z2g ,z3g )
427
428 IF (ismstr /= 3)THEN
429 CALL c3deri3(jft ,jlt ,px1 ,py1 ,py2 ,
430 . gbuf%SMSTR,gbuf%OFF,ismstr ,alpe ,aldt ,
431 . ux1 ,ux2 ,ux3 ,uy1 ,uy2 ,
432 . uy3 ,nel ,
area ,x21g ,y21g ,
433 . z21g ,x31g ,y31g ,z31g ,x2l ,
434 . y2l ,x3l ,y3l ,
435 . e1x ,e1y ,e1z ,e2x ,
436 . e2y ,e2z ,e3x ,e3y ,e3z )
437 ELSE
438
439 CALL c3pxpy3(jft ,jlt ,pm ,sti ,stir,
440 2 gbuf%SMSTR,px1 ,py1 ,py2 ,mat ,
441 3 ssp ,nel )
442 ENDIF
443
444 IF (idril > 0)
CALL c3brz3(jft ,jlt ,
area ,x2l ,x3l ,
445 . y3l ,bm0rz,b0rz,bkrz,berz)
446
447 CALL c3coef3(jft ,jlt ,pm ,mat ,geo ,
448 2 pid ,off ,
area ,sti ,stir ,
449 3 shf ,thk0 ,thk02 ,nu ,
450 4 g ,ym ,a11 ,a12 ,gbuf%THK,
451 5 ssp ,rho ,vol0 ,gs ,mtn ,
452 6 ithk ,npttot ,ismstr ,vol00 ,igeo ,
453 7 a11r ,isubstack , stack%PM,nel, zoffset )
454
455 CALL c3defo3(jft ,jlt ,vl1 ,vl2 ,vl3 ,
456 . ixtg ,ish3n ,px1 ,py1 ,py2 ,
457 . exx ,eyy ,exy ,eyz ,ezx ,
458 . vx13 ,vx23 ,vy12 ,
459 . e1x ,e1y ,e1z ,e2x ,
460 . e2y ,e2z ,e3x ,e3y ,e3z )
461
462 IF (idril > 0) THEN
463 CALL c3defrz(jft ,jlt ,rlz ,bm0rz ,b0rz,
464 1 bkrz ,berz ,e3x0 ,e3y0 ,e3z0 ,
465 2 vrl1 ,vrl2 ,vrl3 ,exx ,eyy ,
466 3 exy ,px1 ,py1 ,py2 ,wxy ,
467 4
area ,vx13 ,vx23 ,vy12 )
469 END IF
470
471 CALL c3curv3(jft,jlt,vrl1,vrl2,vrl3,
472 . ixtg,wkxy,ismstr,kxx,kyy,kxy,
473 . px1 ,py1 ,py2 ,eyz ,ezx ,
474 . e1x ,e1y ,e1z ,e2x ,
475 . e2y ,e2z ,e3x ,e3y ,e3z )
476
477 IF (ismstr == 10) THEN
478 CALL c3coort3(jft ,jlt ,x ,ixtg ,gbuf%OFF,
479 1 r ,x2l ,x3l ,y2l ,y3l ,
480 2 e1x0 ,e1y0 ,e1z0 ,e2x0 ,e2y0 ,
481 3 e2z0 ,e3x0 ,e3y0 ,e3z0 ,nel ,
482 4 u21x ,u31x ,u21y ,u31y ,rz13 ,
483 5 rz23 ,x2t ,x3t ,y2t ,y3t ,
484 6 areat ,gbuf%SMSTR ,idril )
485 CALL c3deft3(jft,jlt,x2t,y2t,x3t,y3t,u21x,u21y,u31x,u31y,
486 . bmrzt,rz13,rz23,areat,f_def,idril )
487 END IF
488
489 IF (ifram_old==0) THEN
490 CALL shroto3(jft,jlt,ecos,esin,exx,
491 . eyy,exy,ezx,eyz,kxx,
492 . kyy,kxy)
493 END IF
495 2 mat ,
area ,exx ,eyy ,exy ,
496 3 ezx ,eyz ,kxx ,kyy ,kxy ,
497 4 geo ,pid ,nu ,shf ,gbuf%STRA,
498 5 ssp ,rho ,epsdot ,
499 6 nft ,istrain,ismstr ,
500 7 ux1 ,ux2 ,ux3 ,uy1 ,uy2 ,
501 8 uy3 ,px1 ,py1 ,py2 ,mtn ,
502 9 f_def ,wkxy ,gbuf%STRW,nel )
503
504 IF (ifram_old==0.AND.ismstr>=10) THEN
505 CALL shtroto3(jft,jlt,ecos,esin,gbuf%STRA,
506 . f_def,ismstr,nel)
507 END IF
508
509
510
511 IF (inloc > 0) THEN
512 l_nloc = nloc_dmg%L_NLOC
513 dnl => nloc_dmg%DNL(1:l_nloc)
514 DO i=jft,jlt
515 nc1(i) = ixtg(2,i)
516 nc2(i) = ixtg(3,i)
517 nc3(i) = ixtg(4,i)
518 ENDDO
519 DO k = 1,nddl
520#include "vectorize.inc"
521 DO i=jft,jlt
522 inod(1) = nloc_dmg%IDXI(nc1(i))
523 inod(2) = nloc_dmg%IDXI(nc2(i))
524 inod(3) = nloc_dmg%IDXI(nc3(i))
525 ipos(1) = nloc_dmg%POSI(inod(1))
526 ipos(2) = nloc_dmg%POSI(inod(2))
527 ipos(3) = nloc_dmg%POSI(inod(3))
528 var_reg(i,k) = third*(dnl(ipos(1)+k-1)
529 . + dnl(ipos(2)+k-1)
530 . + dnl(ipos(3)+k-1))
531 ENDDO
532 ENDDO
533 ENDIF
534
535
536
537
538
539
540
541 dt1 = dt1c(1)
542 dtinv = dt1 /
max(dt1**2,em20)
543 asrate = one
544#include "vectorize.inc"
545 do i = 1,nel
546 eps_k2 = (kxx(i)**2+kyy(i)**2+kxx(i)*kyy(i)+fourth*kxy(i)**2)
547 . * one_over_9*gbuf%thk(i)**2
548 eps_m2 = four_over_3*(exx(i)**2+eyy(i)**2+exx(i)*eyy(i) + fourth*exy(i)**2)
549 epsd_pg(i) = sqrt(eps_k2 + eps_m2)*dtinv
550 end do
551 gbuf%epsd(1:nel) = asrate * epsd_pg(1:nel) + (one - asrate) * gbuf%epsd(1:nel)
552
553 IF (jthe /= 0 )
CALL temp3cg(jft ,jlt ,pm ,mat ,ixtg,
554 . temp ,tempel )
555
556 IF ((imon_mat==1).AND.itask == 0)
CALL startime(timers,35)
557
559 1 elbuf_str ,jft ,jlt ,nft ,iparg ,
560 2 nel ,mtn ,ipla ,ithk ,group_param,
561 3 pm ,geo ,npf ,tf ,bufmat ,
562 4 ssp ,rho ,viscmx ,dt1c ,sigy ,
563 5
area ,exx ,eyy ,exy ,ezx ,
564 6 eyz ,kxx ,kyy ,kxy ,nu ,
565 7 off ,thk0 ,mat ,pid ,mat_elem ,
566 8 gbuf%FOR ,gbuf%MOM ,gbuf%STRA ,failwave ,fwave_el ,
567 9 gbuf%THK ,gbuf%EINT ,iofc ,
568 a g ,a11 ,a12 ,vol0 ,indx ,
569 b ngl ,zcfac ,shf ,gs ,epsd_pg ,
570 c kfts ,ish3n ,alpe ,
571 d dir_a ,dir_b ,igeo ,
572 e ipm ,ifailure ,npg ,fheat ,
573 f tempel ,die ,jthe ,iexpan ,gbuf%TEMP ,
574 g ibid ,bid ,
575 h bid ,bid ,bid ,bid ,bid ,
576 i bid ,bid ,bid ,e1x0 ,e1y0 ,
577 j e1z0 ,e2x0 ,e2y0 ,e2z0 ,e3x0 ,
578 k e3y0 ,e3z0 ,ng ,table ,ixfem ,
579 l bid ,sensors ,bid ,elcrkini ,
580 m dir1_crk ,dir2_crk ,aldt ,glob_therm%IDT_THERM ,glob_therm%THEACCFACT,
581 n ismstr ,ir ,is ,nlay ,npt ,
582 o ixlay ,ixel ,isubstack ,stack ,
583 p f_def ,itask ,drape_sh3n ,var_reg ,nloc_dmg ,
584 q indx_drape,thke ,sedrape ,numel_drape,dt ,
585 r ncycle ,snpc ,stf ,nxlaymax ,
586 s idel7nok ,userl_avail ,maxfunc ,npttot,
587 t sbufmat ,sdir_a , sdir_b ,gbuf%FOR_G,ssp_eq ,
588 x ipart ,lipart1 ,iparttg )
589
590 IF ((imon_mat==1).AND.itask == 0)
CALL stoptime(timers,35)
591
592
593
594 IF (ismstr /= 3)
CALL c3dt3(
595 1 jft ,jlt ,pm ,off ,dt2t ,
596 2 neltst ,ityptst ,sti ,stir ,gbuf%OFF,
597 3 ssp ,viscmx ,ismstr ,nft ,iofc ,
598 4 alpe ,mstg ,dmeltg ,jsms ,ptg ,
599 5 shf ,igtyp ,igmat ,g ,a11 ,
600 6 a11r ,gbuf%G_DT ,gbuf%DT ,aldt ,thk0 ,
601 7
area ,ngl ,imat ,mtn ,nel ,
602 8 zoffset,ssp_eq )
603
604
605 CALL c3sroto3(jft ,jlt ,ecos ,esin ,gbuf%FOR,
606 + gbuf%MOM,nfor ,nmom ,ifram_old ,nel )
607
608
609
610
611 IF(ipri>0)
613 1 jft, jlt, pm, v,
614 2 gbuf%THK, gbuf%EINT, pmsav, iparttg,
615 3 rho, vol00, ixtg, x,
616 4 r, thk02,
area, gresav,
617 5 grth, igrth, off, ibid,
618 6 ibid, ibid, ibid, ibid,
619 7 iexpan, gbuf%EINTTH,itask, mat,
620 8 gbuf%VOL, actifxfem, igre, sensors,
621 9 nel, gbuf%G_WPLA,gbuf%WPLA)
622
623
624
625 CALL c3fint3(jft ,jlt ,nfor ,nmom ,thk0,
626 2 px1 ,py1 ,py2 ,f11 ,f12 ,
627 3 f13 ,f21 ,f22 ,f23 ,f31 ,
628 4 f32 ,f33 ,m11 ,m12 ,m13 ,
629 5 m21 ,m22 ,m23 ,nel )
630 IF (idril > 0) THEN
632 2 py1 ,py2 ,f11 ,f12 ,f13 ,
633 3 f21 ,f22 ,f23 ,wxy ,nfor ,
634 4 gbuf%HOURG,mlz ,bm0rz,b0rz,bkrz,
635 5 berz ,krz ,rlz ,dt1c ,gbuf%EINT,
636 6 off ,vol0 ,nel)
637 END IF
638
639
640
641 IF (inloc > 0) THEN
643 1 nloc_dmg, var_reg, gbuf%THK, nel,
644 2 off,
area, nc1, nc2,
645 3 nc3, px1, py1, py2,
646 4 elbuf_str%NLOC(1,1), imat, nddl,
647 5 itask, dt2t, aldt, gbuf%THK_I,
648 6 gbuf%AREA, nft)
649 ENDIF
650
651
652
653 IF (jthe /= 0) THEN
654 dtime = dt1c(1)
655 IF (mat_elem%MAT_PARAM(imat)%HEAT_FLAG == 1) THEN
656 CALL therm3c(nel ,pm(1,imat) ,thk0 ,ixtg ,
657 . px1 ,py1 ,py2 ,
area ,dtime ,
658 . temp ,tempel,fheat ,them ,glob_therm%THEACCFACT)
659 ELSE
660 CALL therm3c(nel ,pm(1,imat) ,thk0 ,ixtg ,
661 . px1 ,py1 ,py2 ,
area ,dtime ,
662 . temp ,tempel,die ,them ,glob_therm%THEACCFACT)
663 END IF
664 ENDIF
665
666
667
668 IF (jthe > 0 .AND. glob_therm%IDT_THERM == 1)THEN
669 call dttherm(nel ,pm(1,imat),npropm,glob_therm,mat_elem%mat_param(imat),
670 . jtur ,tempel ,vol0 ,rho ,
671 . aldt ,off ,conde ,gbuf%re ,gbuf%rk )
672 ENDIF
673
674
675
677 . f11,f12,f13,f21,f22,f23,
678 . f31,f32,f33,fzero,
679 . e1x ,e1y ,e1z ,e2x ,
680 . e2y ,e2z ,e3x ,e3y ,e3z )
682 . m11,m12,m13,m21,m22,m23,m31,m32,m33,
683 . e1x ,e1y ,e1z ,e2x ,
684 . e2y ,e2z ,e3x ,e3y ,e3z )
685
686 IF (idril > 0) THEN
687 CALL c3mzcum3(jft ,jlt ,mlz ,e3x0 ,e3y0 ,
688 . e3z0 ,m11 ,m12 ,m13 ,m21 ,
689 . m22 ,m23 ,m31 ,m32 ,m33)
690 END IF
691
692 IF (iparit == 0) THEN
693 CALL c3updt3(jft ,jlt ,f ,m ,nvc ,
694 2 gbuf%OFF,off ,sti ,stir,stifn,
695 3 stifr ,ixtg ,glob_therm%NODADT_THERM,
696 4 f11 ,f12 ,f13 ,f21 ,f22 ,f23 ,
697 5 f31 ,f32 ,f33 ,m11 ,m12 ,
698 7 m13 ,m21 ,m22 ,m23 ,m31 ,
699 8 m32 ,m33 ,jthe,them,fthe ,
700 9 gbuf%EINT,pm ,
area,gbuf%THK,
701 a pmsav,mat,iparttg,condn,conde)
702 ELSE
703 CALL c3updt3p(jft ,jlt ,gbuf%OFF,off,sti,
704 2 stir ,fsky ,fsky,iadtg ,f11,
705 4 f12 ,f13 ,f21 ,f22 ,f23 ,
706 5 f31 ,f32 ,f33 ,m11 ,m12 ,
707 7 m13 ,m21 ,m22 ,m23 ,m31 ,
708 8 m32 ,m33 ,jthe,them,fthesky,
709 9 gbuf%EINT,pm ,
area,gbuf%THK ,
710 b pmsav ,mat ,iparttg,condnsky,
711 c conde ,glob_therm%NODADT_THERM)
712 ENDIF
713
714 IF (icsen > 0)
CALL csens3(jft ,jlt ,pid ,igeo ,epsd_pg)
715
716
717
718 IF (icrack3d > 0 .AND. ixfem > 0) THEN
719 DO ilay=1,nxlay
720
721 crklen => elbuf_str%BUFLY(ilay)%DMG(1:nel)
723 . nel ,nft ,ilay ,nlay ,ixtg ,
724 . crklen ,elcrkini ,iel_crk ,dir1_crk ,dir2_crk ,
725 . nodedge ,crkedge ,xedge3n ,ngl ,x2l ,
726 . x3l ,y2l ,y3l ,aldt )
727
729 . nel ,nft ,ilay ,nxlay ,ixtg ,
730 . elcutc ,elcrkini ,iel_crk ,inod_crk ,iadtg_crk ,
731 . nodenr ,dir1_crk ,dir2_crk ,nodedge ,crknodiad ,
732 . knod2elc ,crkedge ,xedge3n ,ngl ,
area ,
733 . x2l ,x3l ,y2l ,y3l )
734
736 . nel ,nft ,ilay ,nxlay ,ixtg ,
737 . elcutc ,elcrkini ,iel_crk ,inod_crk ,iadtg_crk ,
738 . nodenr ,dir1_crk ,dir2_crk ,nodedge ,crknodiad ,
739 . knod2elc ,crkedge ,xedge3n ,ngl ,
area ,
740 . x2l ,x3l ,y2l ,y3l )
741 ENDDO
742
744 . jft ,jlt ,nft ,ir ,is ,
745 . nxlay ,iel_crk ,crkedge,xedge3n )
746 END IF
747
748
749
750
751 IF (ifailwave > 0) THEN
752 crkdir => elbuf_str%BUFLY(1)%CRKDIR
753
755 . nel ,ixtg ,itab ,crkdir ,dir_a ,
756 . l_dira ,x2l ,x3l ,y2l ,y3l )
757 ENDIF
758
759 IF (ALLOCATED(dir2_crk)) DEALLOCATE(dir2_crk)
760 IF (ALLOCATED(dir1_crk)) DEALLOCATE(dir1_crk)
761 IF (ALLOCATED(elcrkini)) DEALLOCATE(elcrkini)
762 IF (ALLOCATED(dirb)) DEALLOCATE(dirb)
763 IF (ALLOCATED(dira)) DEALLOCATE(dira)
764 IF (ALLOCATED(var_reg)) DEALLOCATE(var_reg)
765
766 RETURN
subroutine c3bilan(jft, jlt, pm, v, thk, eint, partsav, iparttg, rho, vol00, ixtg, x, vr, thk02, area, gresav, grth, igrth, off, ixfem, ilev, iel_crk, iadtg_crk, nft1, iexpan, eintth, itask, mat, gvol, actifxfem, igre, sensors, nel, g_wpla, wpla)
subroutine c3coef3(jft, jlt, pm, mat, geo, pid, off, area, sti, stir, shf, thk0, thk02, nu, g, ym, a11, a12, thk, ssp, rho, vol0, gs, mtn, ithk, npt, ismstr, vol00, igeo, a11r, isubstack, pm_stack, nel, zoffset)
subroutine c3coor3(jft, jlt, x, ixtg, offg, off, dt1c, v, vr, vl1, vl2, vl3, vrl1, vrl2, vrl3, sigy, x1, x2, x3, y1, y2, y3, z1, z2, z3, xdp)
subroutine c3coort3(jft, jlt, x, ixtg, offg, dr, xl2, xl3, yl2, yl3, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, nel, v21x, v31x, v21y, v31y, rz13, rz23, x2_t, x3_t, y2_t, y3_t, area, smstr, isrot)
subroutine c3curv3(jft, jlt, vrl1, vrl2, vrl3, ixtg, wxy, ismstr, kxx, kyy, kxy, px1, py1, py2, eyz, ezx, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)
subroutine c3deft3(jft, jlt, x2, y2, x3, y3, v21x, v21y, v31x, v31y, bm0rz, rz13, rz23, area, vdef, idril)
subroutine c3defo3(jft, jlt, vl1, vl2, vl3, ixtg, ish3n, px1, py1, py2, exx, eyy, exy, eyz, ezx, vx13, vx23, vy12, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)
subroutine c3defrz(jft, jlt, rlz, bm0rz, b0rz, bkrz, berz, e3x, e3y, e3z, vrl1, vrl2, vrl3, exx, eyy, exy, px1, py1, py2, wxy, area, vx13, vx23, vy12)
subroutine c3brz3(jft, jlt, area, x2, x3, y3, bm0rz, b0rz, bkrz, berz)
subroutine c3deri3(jft, jlt, px1, py1, py2, smstr, offg, ismstr, alpe, aldt, ux1, ux2, ux3, uy1, uy2, uy3, nel, area, x21g, y21g, z21g, x31g, y31g, z31g, x2, y2, x3, y3, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)
subroutine c3dt3(jft, jlt, pm, off, dt2t, neltst, ityptst, sti, stir, offg, ssp, viscmx, ismstr, nft, iofc, alpe, mstg, dmeltg, jsms, ptg, shf, igtyp, igmat, g, a1, a11r, g_dt, dtel, aldt, thk0, area, ngl, imat, mtn, nel, zoffset, ssp_eq)
subroutine shtroto3(jft, jlt, ecos, esin, gstr, nel)
subroutine c3fcum3(jft, jlt, f, f11, f12, f13, f21, f22, f23, f31, f32, f33, fzero, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)
subroutine c3fint3(jft, jlt, for, mom, thk, px1, py1, py2, fx1, fx2, fx3, fy1, fy2, fy3, fz1, fz2, fz3, mx1, mx2, mx3, my1, my2, my3, nel)
subroutine c3fintrz(jft, jlt, thk, area, px1, py1, py2, f11, f12, f13, f21, f22, f23, wxy, vstre, vsrz, vmz, bm0rz, b0rz, bkrz, berz, krz, rlz, dt1c, eint, off, vol, nel)
subroutine c3fint_reg(nloc_dmg, var_reg, thk, nel, off, area, nc1, nc2, nc3, px1, py1, py2, bufnl, imat, nddl, itask, dt2t, le, thk0, area0, nft)
subroutine c3mcum3(jft, jlt, m, m11, m12, m13, m21, m22, m23, m31, m32, m33, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z)
subroutine c3mzcum3(jft, jlt, mlz, e3x, e3y, e3z, m11, m12, m13, m21, m22, m23, m31, m32, m33)
subroutine c3pxpy3(jft, jlt, pm, sti, stir, smstr, px1, py1, py2, mat, ssp, nel)
subroutine c3stra3(jft, jlt, pm, mat, area, exx, eyy, exy, exz, eyz, kxx, kyy, kxy, geo, pid, nu, shf, gstr, ssp, rho, epsdot, nft, istrain, ismstr, ux1, ux2, ux3, uy1, uy2, uy3, px1, py1, py2, mtn, f_def, wxy, gstrw, nel)
subroutine c3updt3(jft, jlt, f, m, nvc, offg, off, sti, stir, stifn, stifr, ixtg, nodadt_therm, f11, f12, f13, f21, f22, f23, f31, f32, f33, m11, m12, m13, m21, m22, m23, m31, m32, m33, jthe, them, fthe, eint, pm, area, thk, partsav, mat, iparttg, condn, conde)
subroutine c3updt3p(jft, jlt, offg, off, sti, stir, fsky, fskyv, iadtg, f11, f12, f13, f21, f22, f23, f31, f32, f33, m11, m12, m13, m21, m22, m23, m31, m32, m33, jthe, them, fthesky, eint, pm, area, thk, partsav, mat, iparttg, condnsky, conde, nodadt_therm)
subroutine cmain3(timers, elbuf_str, jft, jlt, nft, iparg, nel, mtn, ipla, ithk, group_param, pm, geo, npf, tf, bufmat, ssp, rho, viscmx, dt1c, sigy, area, exx, eyy, exy, exz, eyz, kxx, kyy, kxy, nu, off, thk0, mat, pid, mat_elem, for, mom, gstr, failwave, fwave_el, thk, eint, iofc, g, a11, a12, vol0, indxdel, ngl, zcfac, shf, gs, epsd_pg, kfts, jhbe, alpe, dir_a, dir_b, igeo, ipm, ifailure, npg, fheat, tempel, die, jthe, iexpan, tempel0, ishplyxfem, ply_exx, ply_eyy, ply_exy, ply_exz, ply_eyz, ply_f, del_ply, th_iply, sig_iply, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, ng, table, ixfem, offi, sensors, a11_iply, elcrkini, dir1_crk, dir2_crk, aldt, idt_therm, theaccfact, ismstr, ir, is, nlay, npt, ixlay, ixel, isubstack, stack, f_def, itask, drape, varnl, nloc_dmg, indx_drape, thke, sedrape, numel_drape, dt, ncycle, snpc, stf, nxlaymax, idel7nok, userl_avail, maxfunc, varnl_npttot, sbufmat, sdir_a, sdir_b, for_g, ssp_eq, ipart, lipart1, ipartc)
subroutine c3coefrz3(jft, jlt, g, krz, area, thk)
subroutine crklayer3n_adv(nel, nft, ilay, nlay, ixtg, elcutc, elcrkini, iel_crktg, inod_crk, iad_crktg, nodenr, dir1, dir2, nodedge, crknodiad, knod2elc, crkedge, xedge3n, ngl, area, xl2, xl3, yl2, yl3)
subroutine crklayer3n_ini(nel, nft, ilay, nlay, ixtg, elcutc, elcrkini, iel_crktg, inod_crk, iad_crktg, nodenr, dir1, dir2, nodedge, crknodiad, knod2elc, crkedge, xedge3n, ngl, area, xl2, xl3, yl2, yl3)
subroutine crklen3n_adv(nel, nft, ilay, nlay, ixtg, crklen, elcrkini, iel_crktg, dir1, dir2, nodedge, crkedge, xedge3n, ngl, xl2, xl3, yl2, yl3, aldt)
subroutine csens3(jft, jlt, pid, igeo, epsp)
subroutine c3sroto3(jft, jlt, ecos, esin, for, mom, nfor, nmom, ifram_old, nel)
subroutine shroto3(jft, jlt, ecos, esin, exx, eyy, exy, exz, eyz, kxx, kyy, kxy)
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine precrklaytg(jft, jlt, nft, nlay, elcrkini, iel_crktg, inod_crk, nodenr, crkedge, xedge3n)
subroutine crkofftg(elbuf_str, xfem_str, jft, jlt, nft, ir, is, nxlay, iel_crktg, crkedge, xedge3n)
subroutine set_failwave_nod3(failwave, fwave_el, ngl, nel, ixtg, itab, crkdir, dir_a, nrot, xl2, xl3, yl2, yl3)
subroutine c3evec3(jft, jlt, area, x1, x2, x3, y1, y2, y3, z1, z2, z3, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, x31, y31, z31, x2l, x3l, y3l)
subroutine startime(event, itask)
subroutine stoptime(event, itask)
subroutine temp3cg(jft, jlt, pm, mat, ixtg, temp, tempel)
subroutine therm3c(nel, pm, thk, ixtg, px1, py1, py2, area, dt, tempnc, tempel, dheat, fphi, theaccfact)
subroutine set_failwave_sh3n(failwave, fwave_el, dadv, nel, ixtg, itab, ngl, offly)