59 1 ELBUF_STR, JFT, JLT, PM,
61 3 V, R, FAILWAVE, NVC,
63 5 BUFMAT, PMSAV, DT2T, NELTST,
64 6 ITYPTST, STIFN, STIFR, FSKY,
65 7 IADTG, GROUP_PARAM, EPSDOT, OFFSET,
66 8 IPARTTG, THKE, F11, F12,
71 D MAT_ELEM, NEL, ISTRAIN, IHBE,
72 E ITHK, IOFC, IPLA, NFT,
73 F ISMSTR, NPT, KFTS, IXTG1,
74 G IADTG1, IGEO, IPM, IFAILURE,
75 H IEXPAN, GRESAV, GRTH, IGRTH,
76 I MSTG, DMELTG, JSMS, TABLE,
77 J IPARG, SENSORS, PTG, JTHE,
78 K CONDN, CONDNSKY, ISUBSTACK, STACK,
79 L ITASK, DRAPE_SH3N, IPRI, NLOC_DMG,
80 M INDX_DRAPE, IGRE, JTUR, DT,
81 N NCYCLE, SNPC, STF , GLOB_THERM,
82 N NXLAYMAX, IDEL7NOK, USERL_AVAIL, MAXFUNC,
102#include "implicit_f.inc"
106#include "mvsiz_p.inc"
110#include "param_c.inc"
111#include "com04_c.inc"
112#include "com08_c.inc"
113#include "scr18_c.inc"
114#include "parit_c.inc"
115#include "scr14_c.inc"
119 TYPE(timer_),
INTENT(INOUT)
121 INTEGER,
INTENT(IN) :: MAXFUNC
122 INTEGER,
INTENT(INOUT) :: IDEL7NOK
123 INTEGER,
INTENT(IN) :: SBUFMAT
124 INTEGER,
INTENT(IN) :: STF
125 INTEGER,
INTENT(IN) :: SNPC
126 INTEGER,
INTENT(IN) :: NCYCLE
127 INTEGER,
INTENT(IN) :: NXLAYMAX
128 INTEGER,
INTENT(IN) :: JTUR
129 INTEGER,
INTENT(IN) :: IGRE
130 INTEGER JFT, JLT, NVC, MTN,NELTST,ITYPTST,OFFSET,
134 INTEGER NPF(*),(NIXTG,*),IADTG(3,*),IXTG1(4,*),IADTG1(3,*),
135 . IPARTTG(*),IGEO(NPROPGI,*),IPM(NPROPMI,*),GRTH(*),IGRTH(*),
136 . IPARG(*),INDX_DRAPE(STDRAPE)
139 . PM(NPROPM,*), X(*), F(*), M(*), V(*), R(*),
140 . GEO(NPROPG,*), TF(*), BUFMAT(*), PMSAV(*),STIFN(*),
141 . STIFR(*),FSKY(*),EPSDOT(6,*),THKE(*),DT2T,
142 . F11(MVSIZ), F12(MVSIZ), F13(MVSIZ),
143 . F21(MVSIZ), F22(MVSIZ), F23(MVSIZ),
144 . f31(mvsiz), f32(mvsiz), f33(mvsiz),
145 . f14(mvsiz), f15(mvsiz), f16(mvsiz),
146 . f24(mvsiz), f25(mvsiz), f26(mvsiz),
147 . f34(mvsiz), f35(mvsiz), f36(mvsiz),
148 . gresav(*),mstg(*), dmeltg(*), ptg(3,*),condn(*),condnsky(*)
150 TYPE (ELBUF_STRUCT_),
TARGET :: ELBUF_STR
151 TYPE (STACK_PLY) :: STACK
152 TYPE (FAILWAVE_STR_) ,
TARGET :: FAILWAVE
153 TYPE (GROUP_PARAM_) :: GROUP_PARAM
154 TYPE (),
TARGET :: NLOC_DMG
155 TYPE (DRAPE_),
DIMENSION(NUMELTG_DRAPE) :: DRAPE_SH3N
156 TYPE (MAT_ELEM_) ,
INTENT(INOUT) :: MAT_ELEM
157 TYPE (SENSORS_) ,
INTENT(INOUT) :: SENSORS
158 TYPE (DT_) ,
INTENT(IN) :: DT
159 type (glob_therm_) ,
intent(inout) :: glob_therm
164 INTEGER MAT(MVSIZ),PID(MVSIZ),NGL(MVSIZ),INDX(MVSIZ),IVS(),
167 . I, J, NG,NPG,NNOD,PT0,PT1,PT2,NVS,IFLAG,IBID,NFAIL,
168 . IR,IS,ILAY,NLAY,L_DIRA,L_DIRB,J1,J2,N1,N2,N3,
169 . IGTYP,IGMAT,NPTTOT,IREP,IFAILWAVE,IDRAPE,IT,NPTT,
170 . ACTIFXFEM,SEDRAPE,NUMEL_DRAPE
171 INTEGER ,
DIMENSION(:) ,
POINTER :: FWAVE_NOD
174 . sti(mvsiz),stir(mvsiz),rho(mvsiz),
175 . ssp(mvsiz),viscmx(mvsiz),
area(mvsiz),area2(mvsiz),
176 . area4(mvsiz),area5(mvsiz),area6(mvsiz)
178 . exx(mvsiz), eyy(mvsiz), exy(mvsiz), exz(mvsiz), eyz(mvsiz),
179 . kxx(mvsiz), kyy(mvsiz), kxy(mvsiz),
180 . px2(mvsiz),py2(mvsiz), px3(mvsiz), py3(mvsiz),
181 . pb1(mvsiz,9),pb2(mvsiz,9),pb3(mvsiz,18),
182 . off(mvsiz), sigy(mvsiz),thk0(mvsiz),
183 . nu(mvsiz) , shf(mvsiz), dt1c(mvsiz)
185 . g(mvsiz) , ym(mvsiz) , a11(mvsiz) , a12(mvsiz),
186 . vol0(mvsiz),thk02(mvsiz),zcfac(mvsiz,2), gs(mvsiz),
189 . r11(mvsiz),r12(mvsiz),r13(mvsiz),r21(mvsiz),r22(mvsiz),
190 . r23(mvsiz),r31(mvsiz),r32(mvsiz),r33(mvsiz),
191 . n4x(mvsiz),n4y(mvsiz),n4z(mvsiz
192 . n5z(mvsiz),n6x(mvsiz),n6y(mvsiz),n6z(mvsiz),
193 . x2(mvsiz),y2(mvsiz),x3(mvsiz),y3(mvsiz),
194 . x4(mvsiz),y4(mvsiz),z4(mvsiz),
195 . x5(mvsiz),y5(mvsiz),z5(mvsiz),
196 . x6(mvsiz),y6(mvsiz),z6(mvsiz),
197 . vlx(mvsiz,2),vly(mvsiz
200 . tempel(mvsiz),bid,krz(mvsiz),conde(mvsiz),a11r(mvsiz)
201 my_real ,
DIMENSIOn(NEL) :: zoffset
203 .
ALLOCATABLE,
DIMENSION(:),
TARGET :: dira,dirb
205 .
DIMENSION(:) ,
POINTER :: dir_a,dir_b
207 my_real :: dtinv,asrate,eps_m2,eps_k2
208 my_real,
dimension(nel) :: epsd_pg
209 my_real,
dimension(mvsiz) :: fheat
212 INTEGER :: , K, INOD(3),NC1(MVSIZ), NC2(MVSIZ), NC3(MVSIZ), L_NLOC, IPOS(3),INLOC
213 my_real,
DIMENSION(:,:),
ALLOCATABLE :: var_reg
214 my_real,
DIMENSION(:),
POINTER :: dnl,unl
216 TYPE(buf_lay_) ,
POINTER :: BUFLY
217 TYPE(G_BUFEL_) ,
POINTER :: GBUF
218 TYPE(L_BUFEL_) ,
POINTER :: LBUF
219 TYPE(L_BUFEL_DIR_) ,
POINTER :: LBUF_DIR
232 gbuf => elbuf_str%GBUF
233 idrape = elbuf_str%IDRAPE
238 actifxfem = iparg(70)
240 nlay = elbuf_str%NLAY
255 npttot = npttot + elbuf_str%BUFLY(ilay)%NPTT
257 IF (npt == 0) npttot = npt
259 ALLOCATE(var_reg(nel,nddl))
263 ifailwave = iparg(79)
264 IF (ifailwave > 0 .and. failwave%WAVE_MOD == 1)
THEN
266 n1 = failwave%IDXI(ixtg(2,i))
267 n2 = failwave%IDXI(ixtg(3,i))
268 n3 = failwave%IDXI(ixtg(4,i))
269 nfail = failwave%FWAVE_NOD(1,n1,1)
270 . + failwave%FWAVE_NOD(1,n2,1)
271 . + failwave%FWAVE_NOD(1,n3,1)
272 IF (nfail > 0) fwave_el(i) = 1
276 l_dira = elbuf_str%BUFLY(1)%LY_DIRA
277 l_dirb = elbuf_str%BUFLY(1)%LY_DIRB
278 igtyp = igeo(11,ixtg(5,1))
279 IF(idrape > 0 .AND. (igtyp == 51 .OR. igtyp == 52))
THEN
280 ALLOCATE(dira(npttot*nel*l_dira))
281 ALLOCATE(dirb(npttot*nel*l_dirb))
282 IF (l_dira == 0)
THEN
284 ELSEIF (irep == 0)
THEN
287 nptt = elbuf_str%BUFLY(ilay)%NPTT
290 lbuf_dir => elbuf_str%BUFLY(ilay)%LBUF_DIR(it)
291 j1 = 1+(j-1)*l_dira*nel
293 dira(j1:j2) = lbuf_dir%DIRA(1:nel*l_dira)
295 npttot = npttot + nptt
298 sdir_a=npttot*nel*l_dira
299 sdir_b=npttot*nel*l_dirb
300 dir_a => dira(1:npttot*nel*l_dira)
301 dir_b => dirb(1:npttot*nel*l_dirb)
303 sdir_a=nlay*nel*l_dira
304 sdir_b=nlay*nel*l_dirb
305 ALLOCATE(dira(nlay*nel*l_dira))
306 ALLOCATE(dirb(nlay*nel*l_dirb))
309 IF (l_dira == 0)
THEN
311 ELSEIF (irep == 0)
THEN
313 j1 = 1+(j-1)*l_dira*nel
315 dira(j1:j2) = elbuf_str%BUFLY(j)%DIRA(1:nel*l_dira)
318 sdir_a=nlay*nel*l_dira
319 sdir_b=nlay*nel*l_dirb
320 dir_a => dira(1:nlay*nel*l_dira)
321 dir_b => dirb(1:nlay*nel*l_dirb)
328 CALL cdk6coor3(elbuf_str,jft,jlt,mat,pid,
329 . ngl,x,v,r,ixtg,gbuf%OFF,
331 . n4x,n4y,n4z,n5x,n5y,n5z,n6x,n6y,n6z,
332 . x2,y2,x3,y3,x4,y4,z4,x5,y5,z5,x6,y6,z6,
333 . gbuf%SMSTR,
area,area2,
334 . vlx,vly,vlz,vz4,vz5,vz6,ismstr,nlay,irep,
335 . dir_a ,dir_b ,igeo ,
336 . ixtg1 ,nvs ,ivs ,area4 ,area5 ,
338 igtyp = igeo(11,pid(1))
339 igmat = igeo(98,pid(1))
341 CALL cncoef3(jft ,jlt ,pm ,mat ,geo ,
342 2 pid ,off ,
area ,shf ,thk0 ,
344 4 a11 ,a12 ,gbuf%THK,thke ,ssp ,
345 5 rho ,vol0 ,gs ,mtn ,ithk ,
346 6 npttot ,dt1c , dt1 ,ihbe ,amu ,
347 7 krz ,igeo ,a11r ,isubstack , stack%PM,
349 CALL cdk6deri3(jft ,jlt, x2,y2,x3,y3,area2,alpe,aldt,nu,thk02,
350 1 px2,py2,px3,py3,x4,y4,z4,x5,y5,z5,x6,y6,z6,
351 2 n4x,n4y,n4z,n5x,n5y,n5z,n6x,n6y,n6z,
352 3 area4,area5,area6,pb1,pb2,pb3,nvs,ivs,ixtg1)
354 CALL cdk6defo3(jft,jlt,vlx,vly,vlz,vz4,vz5,vz6,
355 1 px2,py2,px3,py3,pb1,pb2,pb3,vdef)
356 CALL cdk6stra3(jft, jlt, nft, vdef,gbuf%STRA,
357 1 exx, eyy, exy, exz, eyz,
358 2 kxx, kyy, kxy, dt1c, epsdot,
359 3 iepsdot, istrain,nel)
364 l_nloc = nloc_dmg%L_NLOC
365 dnl => nloc_dmg%DNL(1:l_nloc)
366 unl => nloc_dmg%UNL(1:l_nloc)
373#include "vectorize.inc"
375 inod(1) = nloc_dmg%IDXI(nc1(i))
376 inod(2) = nloc_dmg%IDXI(nc2(i))
377 inod(3) = nloc_dmg%IDXI(nc3(i))
378 ipos(1) = nloc_dmg%POSI(inod(1))
379 ipos(2) = nloc_dmg%POSI(inod(2))
380 ipos(3) = nloc_dmg%POSI(inod(3))
381 var_reg(i,k) = third*(dnl(ipos(1)+k-1)
383 . + dnl(ipos(3)+k-1))
393!-------------------------------------------------------------------------------
394 dtinv = dt1 /
max(dt1**2,em20)
396#include
"vectorize.inc"
398 eps_k2 = (kxx(i)**2+kyy(i)**2+kxx(i)*kyy(i)+fourth*kxy(i)**2)
399 . * one_over_9*gbuf%thk(i)**2
400 eps_m2 = four_over_3*(exx(i)**2+eyy(i)**2+exx(i)*eyy(i) + fourth*exy(i)**2)
401 epsd_pg(i) = sqrt(eps_k2 + eps_m2)*dtinv
405 1 elbuf_str ,jft ,jlt ,nft ,iparg ,
406 2 nel ,mtn ,ipla ,ithk ,group_param,
407 3 pm ,geo ,npf ,tf ,bufmat ,
408 4 ssp ,rho ,viscmx ,dt1c ,sigy ,
409 5
area ,exx ,eyy ,exy ,exz ,
410 6 eyz ,kxx ,kyy ,kxy ,nu ,
411 7 off ,thk0 ,mat ,pid ,mat_elem ,
412 8 gbuf%FOR ,gbuf%MOM ,gbuf%STRA ,failwave ,fwave_el ,
413 9 gbuf%THK ,gbuf%EINT ,iofc ,
414 a g ,a11 ,a12 ,vol0 ,indx ,
415 b ngl ,zcfac ,shf ,gs ,epsd_pg ,
417 d dir_a ,dir_b ,igeo ,
418 e ipm ,ifailure ,npg ,fheat ,
419 f tempel ,die ,ibid ,ibid ,bid ,
421 h bid ,bid ,bid ,bid ,bid ,
422 i bid ,bid ,bid ,r11 ,r12 ,
423 j r13 ,r21 ,r22 ,r23 ,r31 ,
424 k r32 ,r33 ,ng ,table ,ibid ,
425 l bid ,sensors ,bid ,ibid ,
426 m bid ,bid ,aldt ,glob_therm%IDT_THERM ,glob_therm%THEACCFACT,
427 n ismstr ,ir ,is ,nlay ,npt ,
428 o ibid ,ibid ,isubstack ,stack ,
430 r indx_drape,thke ,sedrape ,numel_drape ,dt ,
431 q ncycle ,snpc ,stf ,nxlaymax ,idel7nok ,
432 r userl_avail ,maxfunc ,npttot ,sbufmat ,sdir_a ,sdir_b ,
438 CALL cbavisc(jft ,jlt ,vdef ,amu ,off,
439 2 shf ,nu ,rho ,ssp ,
area,
440 3 thk0 ,gbuf%FOR,gbuf%MOM,iun ,mtn,
441 4 iparttg ,pmsav ,dt1 ,nel )
445 CALL cdk6fint3(jft,jlt,vol0,thk0,gbuf%FOR,gbuf%MOM,
446 1 px2,py2,px3,py3,pb1,pb2,pb3,
447 2 f11,f12,f13,f21,f22,f23,f31,f32,f33,
448 3 f14,f15,f16,f24,f25,f26,f34,f35,f36,
449 4 n4x,n4y,n4z,n5x,n5y,n5z,n6x,n6y,n6z,
455 1 r11,r12,r13,r21,r22,r23,r31,r32,r33,
456 2 f11,f12,f13,f21,f22,f23,f31,f32,f33,
457 3 f14,f15,f16,f24,f25,f26,f34,f35,f36
462 1 jft ,jlt ,off ,dt2t ,amu ,
463 2 neltst ,ityptst,sti ,stir ,gbuf%OFF,
464 3 ssp ,viscmx , rho , vol0,thk0,thk02,
465 4 a11 ,aldt , alpe , ngl,ismstr,
466 5 iofc ,nnod ,
area ,g ,shf ,
467 6 mstg ,dmeltg ,jsms ,ptg ,igtyp ,
468 7 igmat ,a11r ,gbuf%G_DT, gbuf%DT,mtn ,
469 8 pm ,mat(jft), nel ,zoffset)
473 IF (jthe /= 0 .AND. glob_therm%IDT_THERM == 1)
THEN
474 call dttherm(nel ,pm(1,mat(1)) ,npropm ,glob_therm
483 1 nloc_dmg, var_reg, thk0, nel,
484 2 off,
area, nc1, nc2,
486 4 py3, elbuf_str%NLOC(
487 5 nddl, itask, dt2t, aldt,
488 6 gbuf%THK_I, gbuf%AREA, nft)
497 2 gbuf%THK, gbuf%EINT, pmsav, iparttg,
498 3 rho, vol0, ixtg, x,
499 4 r, thk02,
area, gresav,
500 5 grth, igrth, off, ibid,
501 6 ibid, ibid, ibid, ibid,
502 7 iexpan, gbuf%EINTTH,itask, mat,
503 8 gbuf%VOL, actifxfem, igre, sensors,
504 9 nel, gbuf%G_WPLA,gbuf%WPLA)
507 2 gbuf%OFF,off ,sti ,stir,stifn,
508 3 stifr ,ixtg ,ixtg1, f11 ,
509 4 f12 ,f13 ,f21 ,f22 ,f23 ,
510 5 f31 ,f32 ,f33 ,f14 ,f15 ,
511 7 f16 ,f24 ,f25 ,f26 ,f34 ,
512 8 f35 ,f36 ,nvs ,ivs )
515 2 stir ,fsky ,fsky ,iadtg ,iadtg1,
516 4 f11 ,f12 ,f13 ,f21 ,f22 ,
517 5 f23 ,f31 ,f32 ,f33 ,f14 ,
518 7 f15 ,f16 ,f24 ,f25 ,f26 ,
524 IF (ifailwave > 0 .and. failwave%WAVE_MOD == 1)
THEN
526 n1 = failwave%IDXI(ixtg(2,i))
527 n2 = failwave%IDXI(ixtg(3,i))
528 n3 = failwave%IDXI(ixtg(4,i))
529 IF (fwave_el(i) == -1)
THEN
530 failwave%FWAVE_NOD(1,n1
531 failwave%FWAVE_NOD(1,n2,1) = 1
532 failwave%FWAVE_NOD(1,n3,1) = 1
537 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)