60 1 ELBUF_STR, JFT, JLT, PM,
62 3 V, R, FAILWAVE, NVC,
64 5 BUFMAT, PMSAV, DT2T, NELTST,
65 6 ITYPTST, STIFN, STIFR, FSKY,
66 7 IADTG, GROUP_PARAM, EPSDOT, OFFSET,
67 8 IPARTTG, THKE, F11, F12,
72 D MAT_ELEM, NEL, ISTRAIN, IHBE,
73 E ITHK, IOFC, IPLA, NFT,
74 F ISMSTR, NPT, KFTS, IXTG1,
75 G IADTG1, IGEO, IPM, IFAILURE,
76 H IEXPAN, GRESAV, GRTH, IGRTH,
77 I MSTG, DMELTG, JSMS, TABLE,
78 J IPARG, SENSORS, PTG, JTHE,
79 K CONDN, CONDNSKY, ISUBSTACK, STACK,
80 L ITASK, DRAPE_SH3N, IPRI, NLOC_DMG,
81 M INDX_DRAPE, IGRE, JTUR, DT,
82 N NCYCLE, SNPC, STF , GLOB_THERM,
83 N NXLAYMAX, IDEL7NOK, USERL_AVAIL, MAXFUNC,
84 O SBUFMAT ,IPART ,LIPART1 )
100 use element_mod ,
only : nixtg
104#include "implicit_f.inc"
108#include "mvsiz_p.inc"
112#include "param_c.inc"
113#include "com04_c.inc"
114#include "com08_c.inc"
115#include "scr18_c.inc"
116#include "parit_c.inc"
117#include "scr14_c.inc"
121 TYPE(timer_),
INTENT(INOUT) :: TIMERS
122 INTEGER,
INTENT(IN) :: USERL_AVAIL
123 INTEGER,
INTENT(IN) :: MAXFUNC
124 INTEGER,
INTENT(INOUT) :: IDEL7NOK
125 INTEGER,
INTENT(IN) :: SBUFMAT
126 INTEGER,
INTENT(IN) :: STF
127 INTEGER,
INTENT(IN) :: SNPC
128 INTEGER,
INTENT(IN) :: NCYCLE
129 INTEGER,
INTENT(IN) :: NXLAYMAX
130 INTEGER,
INTENT(IN) :: JTUR
131 INTEGER,
INTENT(IN) :: IGRE
132 INTEGER JFT, JLT, NVC, MTN,NELTST,ITYPTST,OFFSET,
133 . NEL,ISTRAIN,IHBE ,NPT,KFTS,IUN,
134 . ITHK,IOFC,IPLA,NFT,ISMSTR,IFAILURE,IEXPAN , JSMS , JTHE,
135 . ISUBSTACK,ITASK,IPRI
136 INTEGER NPF(*),IXTG(NIXTG,*),IADTG(3,*),IXTG1(4,*),IADTG1(3,*),
137 . IPARTTG(*),IGEO(NPROPGI,*),IPM(NPROPMI,*),GRTH(*),IGRTH(*),
138 . IPARG(*),INDX_DRAPE(STDRAPE)
141 . PM(NPROPM,*), X(*), F(*), M(*), V(*), R(*),
142 . GEO(NPROPG,*), TF(*), BUFMAT(*), PMSAV(*),STIFN(*),
143 . STIFR(*),FSKY(*),EPSDOT(6,*),THKE(*),DT2T,
144 . F11(MVSIZ), F12(MVSIZ), F13(MVSIZ),
145 . F21(MVSIZ), F22(MVSIZ), F23(MVSIZ),
146 . f31(mvsiz), f32(mvsiz), f33(mvsiz),
147 . f14(mvsiz), f15(mvsiz), f16(mvsiz),
148 . f24(mvsiz), f25(mvsiz), f26(mvsiz),
149 . f34(mvsiz), f35(mvsiz), f36(mvsiz),
150 . gresav(*),mstg(*), dmeltg(*), ptg(3,*),condn(*),condnsky(*)
151 TYPE (TTABLE) TABLE(*)
152 TYPE (ELBUF_STRUCT_),
TARGET :: ELBUF_STR
154 TYPE () ,
TARGET :: FAILWAVE
155 TYPE (GROUP_PARAM_) :: GROUP_PARAM
156 TYPE (NLOCAL_STR_),
TARGET :: NLOC_DMG
157 TYPE (
drape_),
DIMENSION(NUMELTG_DRAPE) :: drape_sh3n
158 TYPE (MAT_ELEM_) ,
INTENT(INOUT) :: MAT_ELEM
159 TYPE () ,
INTENT(INOUT) :: SENSORS
160 TYPE (DT_) ,
INTENT(IN) :: DT
161 type (glob_therm_) ,
intent(inout) :: glob_therm
162 integer,
intent(in) :: LIPART1
164 INTEGER,
DIMENSION(LIPART1,NPART),
INTENT(IN) :: IPART
170 INTEGER MAT(MVSIZ),PID(MVSIZ),NGL(MVSIZ),INDX(),IVS(MVSIZ),
173 . I, J, NG,NPG,NNOD,NVS,IBID,NFAIL,
174 . IR,IS,ILAY,NLAY,IMAT,L_DIRA,L_DIRB,J1,J2,N1,N2,N3,
175 . IGTYP,IGMAT,NPTTOT,IREP,IFAILWAVE,IDRAPE,IT,NPTT,
176 . actifxfem,sedrape,numel_drape
180 . sti(mvsiz),stir(mvsiz),rho(mvsiz),
181 . ssp(mvsiz),viscmx(mvsiz),
area(mvsiz),area2(mvsiz),
182 . area4(mvsiz),area5(mvsiz),area6(mvsiz)
184 . exx(mvsiz), eyy(mvsiz), exy(mvsiz), exz(mvsiz
185 . kxx(mvsiz), kyy(mvsiz), kxy(mvsiz),
186 . px2(mvsiz),py2(mvsiz), px3(mvsiz), py3(mvsiz),
187 . pb1(mvsiz,9),pb2(mvsiz,9),pb3(mvsiz,18),
188 . off(mvsiz), sigy(mvsiz),thk0(mvsiz),
189 . nu(mvsiz) , shf(mvsiz), dt1c(mvsiz)
191 . g(mvsiz) , ym(mvsiz) , a11(mvsiz) , a12(mvsiz),
192 . vol0(mvsiz),thk02(mvsiz),zcfac(mvsiz,2), gs(mvsiz),
195 . r11(mvsiz),r12(mvsiz),r13(mvsiz),r21(mvsiz),r22(mvsiz),
196 . r23(mvsiz),r31(mvsiz),r32(mvsiz),r33(mvsiz),
197 . n4x(mvsiz),n4y(mvsiz),n4z(mvsiz),n5x(mvsiz),n5y(mvsiz),
198 . n5z(mvsiz),n6x(mvsiz),n6y(mvsiz),n6z(mvsiz),
199 . x2(mvsiz),y2(mvsiz),x3(mvsiz),y3(mvsiz),
200 . x4(mvsiz),y4(mvsiz),z4(mvsiz),
201 . x5(mvsiz),y5(mvsiz),z5(mvsiz),
202 . x6(mvsiz),y6(mvsiz),z6(mvsiz),
203 . vlx(mvsiz,2),vly(mvsiz,2),vlz(mvsiz,6),
204 . vz4(mvsiz,3),vz5(mvsiz,3),vz6(mvsiz,3),
205 . aldt(mvsiz),amu(mvsiz),vdef(mvsiz,8),die(mvsiz),
206 . tempel(mvsiz),bid,krz(mvsiz),conde(mvsiz),a11r(mvsiz)
207 my_real ,
DIMENSIOn(NEL) :: zoffset
209 .
ALLOCATABLE,
DIMENSION(:),
TARGET :: dira,dirb
211 .
DIMENSION(:) ,
POINTER :: dir_a,dir_b
213 my_real :: dtinv,asrate,eps_m2,eps_k2
214 my_real,
dimension(nel) :: epsd_pg
215 my_real,
dimension(mvsiz) :: fheat
216 my_real,
dimension(mvsiz) :: ssp_eq
219 INTEGER :: NDDL, K, INOD(3),NC1(MVSIZ), NC2(MVSIZ), NC3(MVSIZ), L_NLOC, IPOS(3),INLOC
220 my_real,
DIMENSION(:,:),
ALLOCATABLE :: VAR_REG
221 my_real,
DIMENSION(:),
POINTER :: DNL,UNL
224 TYPE(G_BUFEL_) ,
POINTER :: GBUF
226 TYPE(L_BUFEL_DIR_) ,
POINTER :: LBUF_DIR
239 gbuf => elbuf_str%GBUF
240 idrape = elbuf_str%IDRAPE
245 actifxfem = iparg(70)
247 nlay = elbuf_str%NLAY
262 npttot = npttot + elbuf_str%BUFLY(ilay)%NPTT
264 IF (npt == 0) npttot = npt
266 ALLOCATE(var_reg(nel,nddl))
270 ifailwave = iparg(79)
271 IF (ifailwave > 0 .and. failwave%WAVE_MOD == 1)
THEN
273 n1 = failwave%IDXI(ixtg(2,i))
274 n2 = failwave%IDXI(ixtg(3,i))
275 n3 = failwave%IDXI(ixtg(4,i))
276 nfail = failwave%FWAVE_NOD(1,n1,1)
277 . + failwave%FWAVE_NOD(1,n2,1)
278 . + failwave%FWAVE_NOD(1,n3,1)
279 IF (nfail > 0) fwave_el(i) = 1
283 l_dira = elbuf_str%BUFLY(1)%LY_DIRA
284 l_dirb = elbuf_str%BUFLY(1)%LY_DIRB
285 igtyp = igeo(11,ixtg(5,1))
286 IF(idrape > 0 .AND. (igtyp == 51 .OR. igtyp == 52))
THEN
287 ALLOCATE(dira(npttot*nel*l_dira))
288 ALLOCATE(dirb(npttot*nel*l_dirb))
289 IF (l_dira == 0)
THEN
291 ELSEIF (irep == 0)
THEN
294 nptt = elbuf_str%BUFLY(ilay)%NPTT
297 lbuf_dir => elbuf_str%BUFLY(ilay)%LBUF_DIR(it)
298 j1 = 1+(j-1)*l_dira*nel
300 dira(j1:j2) = lbuf_dir%DIRA(1:nel*l_dira)
302 npttot = npttot + nptt
305 sdir_a=npttot*nel*l_dira
306 sdir_b=npttot*nel*l_dirb
307 dir_a => dira(1:npttot*nel*l_dira)
308 dir_b => dirb(1:npttot*nel*l_dirb)
310 sdir_a=nlay*nel*l_dira
311 sdir_b=nlay*nel*l_dirb
312 ALLOCATE(dira(nlay*nel*l_dira))
313 ALLOCATE(dirb(nlay*nel*l_dirb))
316 IF (l_dira == 0)
THEN
318 ELSEIF (irep == 0)
THEN
320 j1 = 1+(j-1)*l_dira*nel
322 dira(j1:j2) = elbuf_str%BUFLY(j)%DIRA(1:nel*l_dira)
325 sdir_a=nlay*nel*l_dira
326 sdir_b=nlay*nel*l_dirb
327 dir_a => dira(1:nlay*nel*l_dira)
328 dir_b => dirb(1:nlay*nel*l_dirb)
335 CALL cdk6coor3(elbuf_str,jft,jlt,mat,pid,
336 . ngl,x,v,r,ixtg,gbuf%OFF,
337 . off,r11,r12,r13,r21,r22,r23,r31,r32,r33,
338 . n4x,n4y,n4z,n5x,n5y,n5z,n6x,n6y,n6z,
339 . x2,y2,x3,y3,x4,y4,z4,x5,y5,z5,x6,y6,z6,
340 . gbuf%SMSTR,
area,area2,
341 . vlx,vly,vlz,vz4,vz5,vz6,ismstr,nlay,irep,
342 . dir_a ,dir_b ,igeo ,
343 . ixtg1 ,nvs ,ivs ,area4 ,area5 ,
345 igtyp = igeo(11,pid(1))
346 igmat = igeo(98,pid(1))
348 CALL cncoef3(jft ,jlt ,pm ,mat ,geo ,
349 2 pid ,off ,
area ,shf ,thk0 ,
351 4 a11 ,a12 ,gbuf%THK,thke ,ssp ,
352 5 rho ,vol0 ,gs ,mtn ,ithk ,
353 6 npttot ,dt1c , dt1 ,ihbe ,amu
356 CALL cdk6deri3(jft ,jlt, x2,y2,x3,y3,area2,alpe,aldt,nu,thk02,
357 1 px2,py2,px3,py3,x4,y4,z4,x5,y5,z5,x6,y6,z6,
358 2 n4x,n4y,n4z,n5x,n5y,n5z,n6x,n6y,n6z,
359 3 area4,area5,area6,pb1,pb2,pb3,nvs,ivs,ixtg1)
361 CALL cdk6defo3(jft,jlt,vlx,vly,vlz,vz4,vz5,vz6,
362 1 px2,py2,px3,py3,pb1,pb2,pb3,vdef)
363 CALL cdk6stra3(jft, jlt, nft, vdef,gbuf%STRA,
364 1 exx, eyy, exy, exz, eyz,
365 2 kxx, kyy, kxy, dt1c, epsdot,
366 3 iepsdot, istrain,nel)
371 l_nloc = nloc_dmg%L_NLOC
372 dnl => nloc_dmg%DNL(1:l_nloc)
373 unl => nloc_dmg%UNL(1:l_nloc)
380#include "vectorize.inc"
382 inod(1) = nloc_dmg%IDXI(nc1(i))
383 inod(2) = nloc_dmg%IDXI(nc2(i))
384 inod(3) = nloc_dmg%IDXI(nc3(i))
385 ipos(1) = nloc_dmg%POSI(inod(1))
386 ipos(2) = nloc_dmg%POSI(inod(2))
387 ipos(3) = nloc_dmg%POSI(inod(3))
388 var_reg(i,k) = third*(dnl(ipos(1)+k-1)
390 . + dnl(ipos(3)+k-1))
401 dtinv = dt1 /
max(dt1**2,em20)
403#include "vectorize.inc"
405 eps_k2 = (kxx(i)**2+kyy(i)**2+kxx(i)*kyy(i)+fourth*kxy(i)**2)
406 . * one_over_9*gbuf%thk(i)**2
407 eps_m2 = four_over_3*(exx(i)**2+eyy(i)**2+exx(i)*eyy(i) + fourth*exy(i)**2)
408 epsd_pg(i) = sqrt(eps_k2 + eps_m2)*dtinv
410 gbuf%epsd(1:nel) = asrate * epsd_pg(1:nel) + (one - asrate) * gbuf%epsd(1:nel)
413 1 elbuf_str ,jft ,jlt ,nft ,iparg ,
414 2 nel ,mtn ,ipla ,ithk ,group_param,
415 3 pm ,geo ,npf ,tf ,bufmat ,
416 4 ssp ,rho ,viscmx ,dt1c ,sigy ,
417 5
area ,exx ,eyy ,exy ,exz ,
418 6 eyz ,kxx ,kyy ,kxy ,nu ,
419 7 off ,thk0 ,mat ,pid ,mat_elem ,
420 8 gbuf%FOR ,gbuf%MOM ,gbuf%STRA ,failwave ,fwave_el ,
421 9 gbuf%THK ,gbuf%EINT ,iofc ,
422 a g ,a11 ,a12 ,vol0 ,indx ,
423 b ngl ,zcfac ,shf ,gs ,epsd_pg ,
425 d dir_a ,dir_b ,igeo ,
426 e ipm ,ifailure ,npg ,fheat ,
427 f tempel ,die ,ibid ,ibid ,bid ,
429 h bid ,bid ,bid ,bid ,bid ,
430 i bid ,bid ,bid ,r11 ,r12 ,
431 j r13 ,r21 ,r22 ,r23 ,r31 ,
432 k r32 ,r33 ,ng ,table ,ibid ,
433 l bid ,sensors ,bid ,ibid ,
434 m bid ,bid ,aldt ,glob_therm%IDT_THERM ,glob_therm%THEACCFACT,
435 n ismstr ,ir ,is ,nlay ,npt ,
436 o ibid ,ibid ,isubstack ,stack ,
437 p bid ,itask ,drape_sh3n ,var_reg ,nloc_dmg ,
438 r indx_drape,thke ,sedrape ,numel_drape ,dt ,
439 q ncycle ,snpc ,stf ,nxlaymax ,idel7nok ,
440 r userl_avail ,maxfunc ,npttot ,sbufmat ,sdir_a ,sdir_b ,
442 x ipart ,lipart1 ,iparttg )
447 CALL cbavisc(jft ,jlt ,vdef ,amu ,off,
448 2 shf ,nu ,rho ,ssp ,
area,
449 3 thk0 ,gbuf%FOR,gbuf%MOM,iun ,mtn,
450 4 iparttg ,pmsav ,dt1 ,nel )
454 CALL cdk6fint3(jft,jlt,vol0,thk0,gbuf%FOR,gbuf%MOM,
455 1 px2,py2,px3,py3,pb1,pb2,pb3,
456 2 f11,f12,f13,f21,f22,f23,f31,f32,f33,
457 3 f14,f15,f16,f24,f25,f26,f34,f35,f36,
458 4 n4x,n4y,n4z,n5x,n5y,n5z,n6x,n6y,n6z,
464 1 r11,r12,r13,r21,r22,r23,r31,r32,r33,
465 2 f11,f12,f13,f21,f22,f23,f31,f32,f33,
466 3 f14,f15,f16,f24,f25,f26,f34,f35,f36)
471 1 jft ,jlt ,off ,dt2t ,amu ,
472 2 neltst ,ityptst,sti ,stir ,gbuf%OFF,
473 3 ssp ,viscmx , rho , vol0,thk0,thk02,
474 4 a11 ,aldt , alpe , ngl,ismstr,
475 5 iofc ,nnod ,
area ,g ,shf ,
476 6 mstg ,dmeltg ,jsms ,ptg ,igtyp ,
477 7 igmat ,a11r ,gbuf%G_DT, gbuf%DT,mtn ,
478 8 pm ,mat(jft), nel ,zoffset,ssp_eq)
483 IF (jthe /= 0 .AND. glob_therm%IDT_THERM == 1)
THEN
484 call dttherm(nel ,pm(1,imat),npropm,glob_therm,mat_elem%mat_param(imat),
485 . jtur ,tempel ,vol0 ,rho ,
486 . aldt ,off ,conde ,gbuf%re ,gbuf%rk )
493 1 nloc_dmg, var_reg, thk0, nel,
494 2 off,
area, nc1, nc2,
495 3 nc3, px2, py2, px3,
496 4 py3, elbuf_str%NLOC(1,1), ixtg
497 5 nddl, itask, dt2t, aldt,
498 6 gbuf%THK_I, gbuf%AREA, nft)
507 2 gbuf%THK, gbuf%EINT, pmsav, iparttg,
508 3 rho, vol0, ixtg, x,
509 4 r, thk02,
area, gresav,
510 5 grth, igrth, off, ibid,
511 6 ibid, ibid, ibid, ibid,
512 7 iexpan, gbuf%EINTTH,itask, mat,
513 8 gbuf%VOL, actifxfem, igre, sensors,
514 9 nel, gbuf%G_WPLA,gbuf%WPLA)
517 2 gbuf%OFF,off ,sti ,stir,stifn,
518 3 stifr ,ixtg ,ixtg1, f11 ,
519 4 f12 ,f13 ,f21 ,f22 ,f23 ,
520 5 f31 ,f32 ,f33 ,f14 ,f15 ,
521 7 f16 ,f24 ,f25 ,f26 ,f34 ,
522 8 f35 ,f36 ,nvs ,ivs )
525 2 stir ,fsky ,fsky ,iadtg ,iadtg1,
528 7 f15 ,f16 ,f24 ,f25 ,f26 ,
534 IF (ifailwave > 0 .and. failwave%WAVE_MOD == 1)
THEN
536 n1 = failwave%IDXI(ixtg(2,i))
537 n2 = failwave%IDXI(ixtg(3,i))
538 n3 = failwave%IDXI(ixtg(4,i))
539 IF (fwave_el(i) == -1)
THEN
540 failwave%FWAVE_NOD(1,n1,1) = 1
541 failwave%FWAVE_NOD(1,n2,1) = 1
542 failwave%FWAVE_NOD(1,n3,1) = 1
547 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)