68 1 XFEM_STR, JFT, JLT, PM,
70 3 V, R, FAILWAVE, NVC,
72 5 BUFMAT, PMSAV, DT2T, NELTST,
73 6 ITYPTST, STIFN, STIFR, FSKY,
74 7 CRKSKY, IADTG, EPSDOT, OFFSET,
75 8 IPARTTG, THKE, F11, F12,
80 D KFTS, GROUP_PARAM, MAT_ELEM, NEL,
81 E ISTRAIN, ISH3N, ITHK, IOFC,
82 F IPLA, NFT, ISMSTR, FZERO,
83 G IGEO, IPM, IFAILURE, ITASK,
84 H JTHE, TEMP, FTHE, FTHESKY,
85 I IEXPAN, GRESAV, GRTH, IGRTH,
86 J MSTG, DMELTG, JSMS, TABLE,
87 K IPARG, SENSORS, PTG, IXFEM,
88 L INOD_CRK, IEL_CRK, IADTG_CRK, ELCUTC,
89 M IXEL, STACK, ISUBSTACK, UXINT_MEAN,
90 N UYINT_MEAN, UZINT_MEAN, NLEVXF, NODEDGE,
91 O CRKEDGE, DRAPE_SH3N, IPRI, NLOC_DMG,
92 P INDX_DRAPE, IGRE, DT, NCYCLE ,
93 R SNPC, STF, GLOB_THERM, IDEL7NOK,
94 Q USERL_AVAIL, MAXFUNC, SBUFMAT)
111#include "implicit_f.inc"
115#include "mvsiz_p.inc"
119#include "param_c.inc"
120#include "com04_c.inc"
121#include "com_xfem1.inc"
122#include "parit_c.inc"
123#include "timeri_c.inc"
127 TYPE(timer_) :: TIMERS
128 INTEGER,
INTENT(IN) :: USERL_AVAIL
129 INTEGER,
INTENT(IN) ::
130 INTEGER,
INTENT(INOUT) :: IDEL7NOK
131 INTEGER,
INTENT(IN) ::
132 INTEGER,
INTENT(IN) :: STF
133 INTEGER,
INTENT(IN) :: SNPC
134 INTEGER,
INTENT(IN) :: IGRE, NCYCLE
135 INTEGER JFT,JLT,NVC,MTN,NELTST,ITYPTST,OFFSET,
136 . NEL,ISTRAIN,ISH3N,ICSEN,
137 . ITHK,IOFC,IPLA,NFT,ISMSTR,KFTS,IFAILURE,
138 . JSMS,IXEL,,NLEVXF,IPRI
139 INTEGER NPF(*),IXTG(NIXTG,*),IADTG(3,*),IGEO(NPROPGI,*),IPM(*),
140 . IPARTTG(*),ITASK,JTHE,,GRTH(*),IGRTH(*),IPARG(*),
141 . IXFEM,INOD_CRK(*),IEL_CRK(*),IADTG_CRK(3,*),
142 . ELCUTC(2,*),NODEDGE(2,*),INDX_DRAPE(STDRAPE)
144 . PM(NPROPM,*),F(*),M(*),V(*),R(*),
145 . GEO(NPROPG,*),TF(*),BUFMAT(*),PMSAV(*),STIFN(*),
146 . STIFR(*),FSKY(*),EPSDOT(6,*),THKE(*),DT2T,
147 . F11(MVSIZ),F12(MVSIZ),F13(MVSIZ),
148 . F21(MVSIZ),F22(MVSIZ),F23(MVSIZ),
149 . F31(MVSIZ),F32(MVSIZ),F33(MVSIZ),
150 . M11(MVSIZ),M12(MVSIZ),M13(MVSIZ),
151 . M21(MVSIZ),M22(MVSIZ),M23(MVSIZ),
152 . M31(MVSIZ),M32(MVSIZ),M33(MVSIZ),
153 . FZERO(3,3,*),TEMP(*),FTHE(*),FTHESKY(*),GRESAV(*),
154 . mstg(*), dmeltg(*),ptg(3,*),
155 . uxint_mean(nlevxf,mvsiz),uyint_mean(nlevxf,mvsiz),
156 . uzint_mean(nlevxf,mvsiz)
158 REAL(kind=8), dimension(*),
INTENT(in) :: x
160 TYPE (elbuf_struct_),
TARGET :: XFEM_STR
161 TYPE (XFEM_EDGE_) ,
DIMENSION(*) :: CRKEDGE
162 TYPE (XFEM_SKY_) ,
DIMENSION(*) ::
163 TYPE (STACK_PLY) :: STACK
164 TYPE (FAILWAVE_STR_) :: FAILWAVE
165 TYPE (GROUP_PARAM_) :: GROUP_PARAM
166 TYPE (DRAPE_) :: DRAPE_SH3N(NUMELTG_DRAPE)
167 TYPE (MAT_ELEM_) ,
INTENT(INOUT) :: MAT_ELEM
168 TYPE (NLOCAL_STR_) :: NLOC_DMG
169 TYPE (SENSORS_) ,
INTENT(INOUT) :: SENSORS
170 TYPE (DT_),
INTENT(IN) :: DT
171 type (glob_therm_) ,
intent(inout) :: glob_therm
177 . I,J,J1,J2,IR,IS,IT,IPT,IFLAG,IGTYP,IXFEM2,IREP,IMAT,
178 . IUN,NPG,IBID,IDRIL,NG,IXLAY,NXLAY,NLAYER,NPTT,STEP,
179 . L_DIRA,L_DIRB,ILEV,IGMAT,IPTHK,ISH3NFR,IDRAPE,ACTIFXFEM,
180 . SEDRAPE, NUMEL_DRAPE
181 INTEGER MAT(MVSIZ),PID(MVSIZ),NGL(MVSIZ),INDX(MVSIZ),FWAVE(MVSIZ)
182 my_real STI(MVSIZ),STIR(MVSIZ),RHO(MVSIZ),
183 . SSP(MVSIZ),VISCMX(MVSIZ),AREA(MVSIZ),
184 . X21(MVSIZ), Y21(MVSIZ), Z21(MVSIZ),
185 . x31(mvsiz), y31(mvsiz), z31(mvsiz),
186 . exx(mvsiz),eyy(mvsiz),exy(mvsiz),eyz(mvsiz),ezx(mvsiz),
187 . kxx(mvsiz),kyy(mvsiz),kxy(mvsiz),
188 . px1(mvsiz),py1(mvsiz),py2(mvsiz),
189 . x2(mvsiz), x3(mvsiz), y2(mvsiz), y3(mvsiz),
190 . x21g(mvsiz), y21g(mvsiz), z21g(mvsiz),
191 . x31g(mvsiz), y31g(mvsiz), z31g(mvsiz),
192 . off(mvsiz),sigy(mvsiz),thk0(mvsiz),
193 . nu(mvsiz),shf(mvsiz),dt1c(mvsiz),
194 . g(mvsiz),ym(mvsiz),a11(mvsiz),a12(mvsiz),
197 . e1x0(mvsiz), e1y0(mvsiz), e1z0(mvsiz), e2x0(mvsiz),
199 . e1x(mvsiz),e1y(mvsiz),e1z
200 . e2y(mvsiz),e2z(mvsiz),e3x(mvsiz),e3y(mvsiz),e3z(mvsiz),
201 . vl1(mvsiz,3),vl2(mvsiz,3),vl3(mvsiz,3),
202 . vrl1(mvsiz,3),vrl2(mvsiz,3),vrl3(mvsiz,3),them(mvsiz,3),
203 . ux1(mvsiz),ux2(mvsiz),ux3(mvsiz),
204 . uy1(mvsiz),uy2(mvsiz),uy3(mvsiz),
205 . vx13(mvsiz), vx23(mvsiz),vy12(mvsiz),
206 . rlz(mvsiz,3),wxy(mvsiz),mlz(mvsiz,3),krz(mvsiz),
207 . b0rz(mvsiz,3),bkrz(mvsiz,2),berz(mvsiz,2),bm0rz(mvsiz,3,2),
208 . ecos(mvsiz),esin(mvsiz),a11r(mvsiz),thke0(mvsiz),aldt(mvsiz)
210 my_real ,
DIMENSIOn(NEL) :: zoffset
212 . bid,thkr,f_def(mvsiz,8),wkxy(mvsiz)
214 REAL(kind=8), dimension(mvsiz) ::x1g,x2g,x3g
215 REAL(kind=8), dimension(mvsiz) ::y1g,y2g,y3g
216 REAL(kind=8), dimension(mvsiz) ::z1g,z2g,z3g
218 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: ELCRKINI
220 .
ALLOCATABLE,
DIMENSION(:) :: DIRA,DIRB,DIR1_CRK,DIR2_CRK
222 .
DIMENSION(:) ,
POINTER :: DIR_A,DIR_B
225 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
226 TYPE(G_BUFEL_) ,
POINTER :: GBUF
227 TYPE(L_BUFEL_) ,
POINTER :: LBUF
230 my_real,
dimension(mvsiz) :: fheat
233 .
DIMENSION(:) ,
POINTER :: OFFG,THKG,STRAG,FORG,MOMG,
234 . EINTG,EPSDG,TEMPG,EINTTH,HOURGG
236 .
DIMENSION(:) ,
POINTER :: smstrg
238 .
DIMENSION(:,:),
ALLOCATABLE :: varnl
254 numel_drape = numeltg_drape
256 ALLOCATE(varnl(nel,1))
260 IF (ismstr>=10) ismstr=4
269 icsen = igeo(3,pid(1))
270 igtyp = igeo(11,pid(1))
273 actifxfem = iparg(70)
275 gbuf => xfem_str%GBUF
276 nxlay = xfem_str%NLAY
285 ALLOCATE(elcrkini(nxlaymax*nel))
286 ALLOCATE(dir1_crk(nxlaymax
287 ALLOCATE(dir2_crk(nxlaymax*nel))
292 l_dira = xfem_str%BUFLY(1)%LY_DIRA
293 l_dirb = xfem_str%BUFLY(1)%LY_DIRB
295 ALLOCATE(dira(nxlay*nel*l_dira))
296 ALLOCATE(dirb(nxlay*nel*l_dirb))
299 sdir_a=nxlay*nel*l_dira
300 sdir_b=nxlay*nel*l_dirb
301 dir_a => dira(1:nxlay*nel*l_dira)
302 dir_b => dirb(1:nxlay*nel*l_dirb)
305 nptt = xfem_str%BUFLY(ixlay)%NPTT
306 IF (l_dira == 0)
THEN
308 ELSEIF (irep == 0)
THEN
309 j1 = 1+(ixlay-1)*l_dira*nel
310 j2 = ixlay*l_dira*nel
311 dira(j1:j2) = xfem_str%BUFLY(ixlay)%DIRA(1:nel*l_dira)
322 ilev = nxel*(ixlay-1) + ixel
324 IF (igtyp == 1 .or. igtyp == 9)
THEN
328 ELSEIF (igtyp == 51 .OR. igtyp == 52)
THEN
330 thkr = stack%GEO(ipthk+ixlay,isubstack)
332 thke0(i) = thke(i) * thkr
337 thke0(i) = thke(i) * geo(ipthk+ixlay,ixtg(5,1))
342 lbuf => xfem_str%BUFLY(ixlay)%LBUF(ir,is,1)
343 bufly => xfem_str%BUFLY(ixlay)
353 eintth => lbuf%EINTTH
354 hourgg => bufly%HOURG
355 ELSEIF (nxlay == 1)
THEN
365 eintth => gbuf%EINTTH
370 . dt1c ,thke0 ,vl1 ,vl2 ,vl3 ,
371 . vrl1 ,vrl2 ,vrl3 ,x1g ,x2g ,
372 . x3g ,y1g ,y2g ,y3g ,z1g ,
373 . z2g ,z3g ,ilev ,iel_crk ,iadtg_crk,
377 CALL c3evec3(xfem_str ,dir_a ,dir_b ,jft ,jlt ,
378 . irep ,e1x0 ,e1y0 ,e1z0 ,e2x0 ,
379 . e2y0 ,e2z0 ,e3x0 ,e3y0 ,e3z0 ,
380 . e1x ,e1y ,e1z ,e2x ,
381 . e2y ,e2z ,e3x ,e3y ,e3z ,
382 . nxlay ,gbuf%OFF,ecos ,esin ,ish3nfr ,
383 . nel ,area ,x21g ,y21g ,z21g ,
385 . x1g ,x2g ,x3g ,y1g ,y2g ,
386 . y3g ,z1g ,z2g ,z3g )
387 IF (ismstr /= 3)
THEN
388 CALL c3deri3(jft ,jlt ,px1 ,py1 ,py2 ,
389 . smstrg ,offg ,ismstr ,alpe ,aldt ,
390 . ux1 ,ux2 ,ux3 ,uy1 ,uy2 ,
391 . uy3 ,nel ,area ,x21g ,y21g ,
392 . z21g ,x31g ,y31g ,z31g ,x2 ,
394 . e1x ,e1y ,e1z ,e2x ,
395 . e2y ,e2z ,e3x ,e3y ,e3z )
398 CALL c3pxpy3(jft ,jlt ,pm ,sti ,stir,
399 2 smstrg ,px1 ,py1 ,py2 ,mat ,
403 IF (idril > 0)
CALL c3brz3(jft ,jlt ,area ,x2 ,x3 ,
404 . y3 ,bm0rz,b0rz ,bkrz ,berz )
406 CALL c3coef3(jft ,jlt ,pm ,mat ,geo ,
407 2 pid ,off ,area ,sti ,stir ,
408 3 shf ,thk0 ,thk02 ,nu ,
409 4 g ,ym ,a11 ,a12 ,thkg ,
410 5 ssp ,rho ,vol0 ,gs ,mtn ,
411 6 ithk ,nptt ,ismstr ,vol00 ,igeo ,
412 7 a11r , isubstack, stack%PM, nel ,zoffset)
414 CALL c3defo3(jft ,jlt ,vl1 ,vl2 ,vl3 ,
415 . ixtg ,ish3n,px1 ,py1 ,py2 ,
416 . exx ,eyy ,exy ,eyz ,ezx ,
418 . e1x ,e1y ,e1z ,e2x ,
419 . e2y ,e2z ,e3x ,e3y ,e3z )
422 CALL c3defrz(jft ,jlt ,rlz ,bm0rz ,b0rz,
423 1 bkrz ,berz ,e3x0 ,e3y0 ,e3z0 ,
424 2 vrl1 ,vrl2 ,vrl3 ,exx ,eyy ,
425 3 exy ,px1 ,py1 ,py2 ,wxy ,
426 4 area ,vx13 ,vx23 ,vy12 )
427 CALL c3coefrz3(jft ,jlt ,g, krz ,area ,thke0)
430 CALL c3curv3(jft,jlt,vrl1,vrl2,vrl3,
431 . ixtg,wkxy ,ismstr,kxx,kyy,
432 . kxy ,px1 ,py1 ,py2 ,eyz ,ezx ,
433 . e1x ,e1y ,e1z ,e2x ,e2y ,
437 2 mat ,area ,exx ,eyy ,exy ,
442 7 ux1 ,ux2 ,ux3 ,uy1 ,uy2 ,
443 8 uy3 ,px1 ,py1 ,py2 ,mtn ,
444 9 f_def ,wkxy ,gbuf%STRW,nel )
447 IF (jthe > 0 )
CALL temp3cg(jft ,jlt ,pm ,mat ,ixtg,
450 IF ((itask==0).AND.(imon_mat==1))
CALL startime(timers,35)
453 1 xfem_str ,jft ,jlt ,nft ,iparg ,
454 2 nel ,mtn ,ipla ,ithk ,group_param,
455 3 pm ,geo ,npf ,tf ,bufmat ,
456 4 ssp ,rho ,viscmx ,dt1c ,sigy ,
457 5 area ,exx ,eyy ,exy ,ezx ,
458 6 eyz ,kxx ,kyy ,kxy ,nu ,
459 7 off ,thk0 ,mat ,pid ,mat_elem ,
460 8 forg ,momg ,strag ,failwave ,fwave ,
461 9 thkg ,eintg ,iofc ,
462 a g ,a11 ,a12 ,vol0 ,indx ,
463 b ngl ,zcfac ,shf ,gs ,epsdg ,
464 c kfts ,ish3n ,alpe ,
465 d dir_a ,dir_b ,igeo ,
466 e ipm ,ifailure ,npg ,fheat ,
467 f tempel ,die ,jthe ,iexpan ,tempg ,
469 h bid ,bid ,bid ,bid ,bid ,
470 i bid ,bid ,bid ,e1x ,e1y ,
471 j e1z ,e2x ,e2y ,e2z ,e3x ,
472 k e3y ,e3z ,ng ,table ,ixfem ,
473 l bid ,sensors ,bid ,elcrkini ,
474 m dir1_crk ,dir2_crk ,aldt ,glob_therm%IDT_THERM ,glob_therm%THEACCFACT,
475 p ismstr ,ir ,is ,nlayer ,nptt ,
476 q ixlay ,ixel ,isubstack ,stack ,
477 p bid ,itask ,drape_sh3n ,varnl ,nloc_dmg ,
478 r indx_drape , thke ,sedrape ,numel_drape, dt ,
479 q ncycle ,snpc , stf ,nxlaymax ,idel7nok ,
480 s userl_avail, maxfunc, npttot,bufmat ,sdir_a ,
481 t sdir_b ,gbuf%FOR_G)
484 IF ((itask==0).AND.(imon_mat==1))
CALL stoptime(timers,35)
488 IF (ismstr /= 3)
CALL c3dt3(
489 1 jft ,jlt ,pm ,off ,dt2t ,
490 2 neltst ,ityptst ,sti ,stir ,offg ,
491 3 ssp ,viscmx ,ismstr ,nft ,iofc ,
492 4 alpe ,mstg ,dmeltg ,jsms ,ptg ,
493 5 shf ,igtyp ,igmat ,g ,a11 ,
494 6 a11r ,gbuf%G_DT ,gbuf%DT ,aldt ,thk0 ,
495 7 area ,ngl ,imat ,mtn ,nel ,
505 2 thkg, eintg, pmsav, iparttg,
506 3 rho, vol00, ixtg, x,
507 4 r, thk02, area, gresav,
508 5 grth, igrth, off, ixfem2,
509 6 ilev, iel_crk, iadtg_crk,nft,
510 7 iexpan, eintth, itask, mat,
511 8 gbuf%VOL, actifxfem,igre,sensors,
512 9 nel, gbuf%G_WPLA,gbuf%WPLA)
516 CALL c3fint3(jft ,jlt ,forg ,momg ,thk0,
517 2 px1 ,py1 ,py2 ,f11 ,f12 ,
518 3 f13 ,f21 ,f22 ,f23 ,f31 ,
519 4 f32 ,f33 ,m11 ,m12 ,m13 ,
520 5 m21 ,m22 ,m23 ,nel )
523 CALL c3fintrz(jft ,jlt ,thk0 ,area ,px1 ,
524 2 py1 ,py2 ,f11 ,f12 ,f13 ,
525 3 f21 ,f22 ,f23 ,wxy ,forg ,
526 4 hourgg ,mlz ,bm0rz,b0rz ,bkrz ,
527 5 berz ,krz ,rlz ,dt1c ,eintg ,
534 IF (mat_elem%MAT_PARAM(imat)%HEAT_FLAG == 1)
THEN
535 CALL therm3c(nel ,pm(1,imat) ,thk0 ,ixtg,
536 . px1 ,py1 ,py2 ,area ,dtime ,
537 . temp ,tempel,fheat ,them ,glob_therm%THEACCFACT)
540 . px1 ,py1 ,py2 ,area ,dtime ,
541 . temp ,tempel,die ,them ,glob_therm%THEACCFACT
551 . f11,f12,f13,f21,f22,f23,
553 . e1x ,e1y ,e1z ,e2x ,e2y ,
554 . e2z ,e3x ,e3y ,e3z )
556 CALL c3mcum3(jft,jlt,m,m11,m12,
557 . m13,m21,m22,m23,m31,m32,m33,
558 . e1x ,e1y ,e1z ,e2x ,e2y ,
561 CALL c3mzcum3(jft ,jlt ,mlz ,e3x ,e3y,
562 . e3z ,m11 ,m12 ,m13 ,m21,
563 . m22 ,m23 ,m31 ,m32 ,m33)
569 . jft ,jlt ,nft ,ixtg ,off ,iadtg ,
570 . f11 ,f21 ,f31 ,f12 ,f22 ,f32 ,
572 . m11 ,m21 ,m31 ,m12 ,m22 ,m32 ,
574 . sti ,stir ,fsky ,elcutc,iadtg_crk,iel_crk,
575 . ilev ,ixlay ,offg ,crksky)
577 IF (icsen > 0)
CALL csens3(jft ,jlt ,pid ,igeo
581 IF (
ALLOCATED(dira))
DEALLOCATE(dira)
582 IF (
ALLOCATED(dirb))
DEALLOCATE(dirb)
583 IF (
ALLOCATED(elcrkini))
DEALLOCATE(elcrkini)
584 IF (
ALLOCATED(dir1_crk))
DEALLOCATE(dir1_crk)
585 IF (
ALLOCATED(dir2_crk))
DEALLOCATE(dir2_crk)
586 IF (
ALLOCATED(varnl))
DEALLOCATE(varnl)
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)