85 1 ELBUF_STR, JFT, JLT, PM,
87 3 V, R, FAILWAVE, NVC,
89 5 BUFMAT, PMSAV, DT2T, NELTST,
90 6 ITYPTST, STIFN, STIFR, FSKY,
91 7 IADTG, ITAB, EPSDOT, OFFSET,
92 8 IPARTTG, THKE, F11, F12,
97 D GROUP_PARAM, MAT_ELEM, NEL, ISTRAIN,
98 E ISH3N, XEDGE3N, ITHK, IOFC,
99 F IPLA, NFT, ISMSTR, NPT,
100 G KFTS, FZERO, IGEO, IPM,
101 H IFAILURE, ITASK, JTHE, TEMP,
102 I FTHE, FTHESKY, IEXPAN, GRESAV,
103 J GRTH, IGRTH, MSTG, DMELTG,
104 K JSMS, TABLE, IPARG, IXFEM,
105 L SENSORS, PTG, IBORDNODE, ELCUTC,
106 M INOD_CRK, IEL_CRK, NODENR, IADTG_CRK,
107 N NODEDGE, CRKNODIAD, KNOD2ELC, CONDN,
108 O CONDNSKY, STACK, ISUBSTACK, XFEM_STR,
109 P CRKEDGE, DRAPE_SH3N, IPRI, NLOC_DMG,
110 Q xdp, INDX_DRAPE, IGRE, JTUR,
111 R DT, SNPC, STF, GLOB_THERM,
112 S IDEL7NOK, USERL_AVAIL, MAXFUNC, SBUFMAT ,
130 use element_mod ,
only : nixtg
134#include "implicit_f.inc"
138#include "mvsiz_p.inc"
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"
152 TYPE(timer_),
INTENT(INOUT) :: TIMERS ! Timer structure
153 INTEGER,
INTENT(IN) :: USERL_AVAIL
154 INTEGER,
INTENT(IN) ::
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,
166 INTEGER NPF(*),IXTG(NIXTG,*),IADTG(3,*),IGEO(NPROPGI,*),IPM(*),
167 . IPARTTG(*),,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(*)
184 REAL(kind=8), dimension(*),
INTENT(in),
TARGET :: xdp
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
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,,IFRAM_OLD,IFAILWAVE, IDRAPE,NPTT,IT,
209 . ACTIFXFEM ,SEDRAPE,NUMEL_DRAPE
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),
246 my_real ,
DIMENSION(NEL) :: zoffset
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
253 my_real,
dimension(mvsiz) :: fheat
254 my_real,
dimension(mvsiz) :: ssp_eq
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
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
268 TYPE(G_BUFEL_) ,
POINTER :: GBUF
270 TYPE(l_bufel_dir_) ,
POINTER :: LBUF_DIR
274 GBUF => elbuf_str%GBUF
275 idrape = elbuf_str%IDRAPE
279 actifxfem = iparg(70)
281 nlay = elbuf_str%NLAY
296 zcfac(1:mvsiz,1:2) = zero
300 npttot = npttot + elbuf_str%BUFLY(ilay)%NPTT
303 ALLOCATE(var_reg(nel,nddl))
304 IF (npt == 0) npttot = npt
305 IF (ish3n==3.AND.ish3nfram==0)
THEN
318 icsen = igeo(3,pid(1))
319 igtyp = igeo(11,pid(1))
320 igmat = igeo(98,pid(1))
324 ifailwave = iparg(79)
325 IF (ifailwave > 0)
THEN
327 offly(:) = elbuf_str%BUFLY(1)%OFF(:)
330 offly(j) =
max(offly(j), elbuf_str%BUFLY(i)%OFF(j))
335 . nel ,ixtg ,itab ,ngl ,offly )
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
346 ELSEIF (irep == 0)
THEN
349 nptt = elbuf_str%BUFLY(ilay)%NPTT
352 lbuf_dir => elbuf_str%BUFLY(ilay)%LBUF_DIR(it)
353 j1 = 1+(j-1)*l_dira*nel
355 dira(j1:j2) = lbuf_dir%DIRA(1:nel*l_dira)
357 npttot = npttot + nptt
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)
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))
372 IF (l_dira == 0)
THEN
374 ELSEIF (irep == 0)
THEN
376 j1 = 1+(j-1)*l_dira*nel
378 dira(j1:j2) = elbuf_str%BUFLY(j)%DIRA(1:nel*l_dira)
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)
390 ALLOCATE(elcrkini(nxlaymax*mvsiz))
391 ALLOCATE(dir1_crk(nxlaymax*mvsiz))
392 ALLOCATE(dir2_crk(nxlaymax*mvsiz))
396 IF (nlevset > 0)
THEN
398 . iel_crk,inod_crk,nodenr ,crkedge,xedge3n )
401 ALLOCATE(elcrkini(0))
402 ALLOCATE(dir1_crk(0))
403 ALLOCATE(dir2_crk(0))
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 )
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 ,
425 . x1g ,x2g ,x3g ,y1g ,y2g ,
426 . y3g ,z1g ,z2g ,z3g )
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 ,
435 . e1x ,e1y ,e1z ,e2x ,
436 . e2y ,e2z ,e3x ,e3y ,e3z )
439 CALL c3pxpy3(jft ,jlt ,pm ,sti ,stir,
440 2 gbuf%SMSTR,px1 ,py1 ,py2 ,mat ,
444 IF (idril > 0)
CALL c3brz3(jft ,jlt ,
area ,x2l ,x3l ,
445 . y3l ,bm0rz,b0rz,bkrz,berz)
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 )
455 CALL c3defo3(jft ,jlt ,vl1 ,vl2 ,vl3 ,
456 . ixtg ,ish3n ,px1 ,py1 ,py2 ,
457 . exx ,eyy ,exy ,eyz ,ezx ,
460 . e2y ,e2z ,e3x ,e3y ,e3z )
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 )
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 )
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 )
489 IF (ifram_old==0)
THEN
490 CALL shroto3(jft,jlt,ecos,esin,exx,
491 . eyy,exy,ezx,eyz,kxx,
495 2 mat ,
area ,exx ,eyy ,exy ,
496 3 ezx ,eyz ,kxx ,kyy ,kxy ,
497 4 geo ,pid ,nu ,shf ,gbuf%STRA,
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 )
504 IF (ifram_old==0.AND.ismstr>=10)
THEN
505 CALL shtroto3(jft,jlt,ecos,esin,gbuf%STRA,
512 l_nloc = nloc_dmg%L_NLOC
513 dnl => nloc_dmg%DNL(1:l_nloc)
520#include "vectorize.inc"
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)
530 . + dnl(ipos(3)+k-1))
542 dtinv = dt1 /
max(dt1**2,em20)
544#include "vectorize.inc"
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
551 gbuf%epsd(1:nel) = asrate * epsd_pg(1:nel) + (one - asrate) * gbuf%epsd(1:nel)
553 IF (jthe /= 0 )
CALL temp3cg(jft ,jlt ,pm ,mat ,ixtg
556 IF ((imon_mat==1).AND.itask == 0)
CALL startime(timers,35)
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 ,
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 )
590 IF ((imon_mat==1).AND.itask
CALL stoptime(timers,35)
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 ,
605 CALL c3sroto3(jft ,jlt ,ecos ,esin ,gbuf%FOR,
606 + gbuf%MOM,nfor ,nmom ,ifram_old ,nel )
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)
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 )
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,
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,
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)
660 CALL therm3c(nel ,pm(1,imat) ,thk0 ,ixtg ,
661 . px1 ,py1 ,py2 ,
area ,dtime ,
662 . temp ,tempel,die ,them ,glob_therm%THEACCFACT)
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 )
677 . f11,f12,f13,f21,f22,f23,
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 ,
687 CALL c3mzcum3(jft ,jlt ,mlz ,e3x0 ,e3y0 ,
688 . e3z0 ,m11 ,m12 ,m13 ,m21 ,
689 . m22 ,m23 ,m31 ,m32 ,m33)
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)
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)
714 IF (icsen > 0)
CALL csens3(jft ,jlt ,pid ,igeo ,epsd_pg)
718 IF (icrack3d > 0 .AND. ixfem > 0)
THEN
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 )
729 . nel ,nft ,ilay ,nxlay ,ixtg
730 . elcutc ,elcrkini ,iel_crk
731 . nodenr ,dir1_crk ,dir2_crk ,nodedge ,crknodiad ,
732 . knod2elc ,crkedge ,xedge3n ,ngl ,
area ,
733 . x2l ,x3l ,y2l ,y3l )
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 )
744 . jft ,jlt ,nft ,ir ,is ,
745 . nxlay ,iel_crk ,crkedge,xedge3n )
751 IF (ifailwave > 0)
THEN
752 crkdir => elbuf_str%BUFLY(1)%CRKDIR
755 . nel ,ixtg ,itab ,crkdir ,dir_a ,
756 . l_dira ,x2l ,x3l ,y2l ,y3l )
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)
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)