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