81
82
83
84 USE my_alloc_mod
85 USE mat_elem_mod
90 USE group_param_mod
92 USE random_walk_def_mod
93 USE fractal_dmg_init_mod
95 use brokmann_random_def_mod
96 use glob_therm_mod
97 use initemp_shell_mod
98
99
100
101#include "implicit_f.inc"
102
103
104
105#include "mvsiz_p.inc"
106
107
108
109#include "param_c.inc"
110#include "com01_c.inc"
111#include "com04_c.inc"
112#include "com_xfem1.inc"
113#include "vect01_c.inc"
114#include "scr03_c.inc"
115#include "scry_c.inc"
116#include "scr17_c.inc"
117
118
119
120 INTEGER NVC,NEL,ITHK,IHBE,ISIGSH,IXFEM,NSIGSH,,IYLDINI,
121 . ISUBSTACK,NG,IDRAPE
122 INTEGER IXC(NIXC,*),IPART(*),PTSHEL(*),ITAG(*),ITAGEL(*),
123 . IGEO(NPROPGI,*), IPM(NPROPMI,*), NSHNOD(*),NPF(*),
124 . SH4TREE(*),IPARG(*),CPT_ELTENS,ITAGN(*),ITAGE(*),
125 . IGEO_STACK(*),PERTURB(NPERTURB)
126 INTEGER ,INTENT(IN) :: IDDLEVEL
127 INTEGER *8 I8MI(6,*)
129 . pm(npropm,*), x(3,*), geo(npropg,*), xmas(*), in(*),
130 . dtelem(*), xrefc(4,3,*),thke(*), sigsh(nsigsh,*),
131 . stifn(*),stifr(*),partsav(20,*), v(*) ,msc(*) ,inc(*),
132 . skew(lskew,*), etnod(*), stc(*),bufmat(*),mcp(*),mcps(*),
133 . temp(*),ms_layer(*),zi_layer(*),ms_layerc(*),zi_layerc(*),
134 . part_area(*),msz2c(*),zply(*),tf(*),rnoise(*),
135 . sh4ang(*),geo_stack(*),strc(*),ele_area(*)
136 TYPE (elbuf_struct_), TARGET :: elbuf_str
137 TYPE (ELBUF_STRUCT_), TARGET ,DIMENSION(NGROUP,*):: XFEM_STR
138
139 TYPE (STACK_PLY) :: STACK
140 TYPE (NLOCAL_STR_) :: NLOC_DMG
141 TYPE (GROUP_PARAM_) :: GROUP_PARAM
142 TYPE (DRAPE_) :: DRAPE(NUMELC_DRAPE + NUMELTG_DRAPE)
143 TYPE (DRAPEG_) ::
144 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MAT_PARAM
145 TYPE (FAIL_FRACTAL_) ,INTENT(IN) :: FAIL_FRACTAL
146 TYPE (FAIL_BROKMANN_) ,INTENT(IN) :: FAIL_BROKMANN
147 TYPE(glob_therm_) ,intent(in) :: glob_therm
148
149 TYPE (GROUP_) , DIMENSION(NGRSHEL) :: IGRSH4N
150 TYPE (GROUP_) , DIMENSION(NGRSH3N) :: IGRSH3N
151
152
153
154 INTEGER I,J,K,N,II,IUN,NDEPAR,IGTYP,IGMAT,NUVAR,IMAT,IPROP,PROPID,
155 . IPG,NPG,PTF,PTM,PTS,IXEL,IREP,NLAY,NPTR,NPTS,NPTT,IFAIL,
156 . IL,IR,IS,IT,LENF,LENM,LENS,
157 . LENFP,LENMP,LENEPINCHXZ,LENEPINCHYZ,LENEPINCHZZ,
158 . IPANG,IPTHK,IPPOS, ILAY,I4,MPT,LAYNPT_MAX,LAY_MAX,NPT_ALL
159 INTEGER JJ(9)
160 INTEGER , DIMENSION(MVSIZ) :: IX1,IX2,IX3,IX4,IORTHLOC,MAT,PID,NGL
161
163 . x1,x2,x3,x4,y1,y2,y3,y4,z1,z2,z3,z4,
164 . e1x,e2x,e3x,e1y,e2y,e3y,e1z,e2z,e3z,
165 . x2s,y2s,x3s,y3s,x4s,y4s,
166 . x2l,x3l,x4l,y2l,y3l,y4l
167 CHARACTER(LEN=NCHARTITLE)::TITR
168
169 my_real,
ALLOCATABLE,
DIMENSION(:) :: dir_a,dir_b
170 my_real ,
DIMENSION(:) ,
POINTER :: uvar
171 parameter(laynpt_max = 10)
172 parameter(lay_max = 100)
173 INTEGER, DIMENSION(:),ALLOCATABLE::MATLY
174 my_real,
DIMENSION(:,:),
ALLOCATABLE :: posly
175
176 TYPE(BUF_LAY_) ,POINTER :: BUFLY
177 TYPE(L_BUFEL_) ,POINTER :: LBUF
178 TYPE(G_BUFEL_) ,POINTER :: GBUF
179
180
181 CALL my_alloc(matly,mvsiz*lay_max)
182 CALL my_alloc(posly,mvsiz,lay_max*laynpt_max)
183
184 gbuf => elbuf_str%GBUF
185
186 imat = ixc(1,1+nft)
187 iprop = ixc(nixc-1,1+nft)
188 propid= igeo(1 ,iprop)
189 igtyp = igeo(11,iprop)
190 igmat = igeo(98,iprop)
191 irep = iparg(35)
192 ifail = iparg(43)
193
194 DO i=lft,llt
195 n = i+nft
196 mat(i) = ixc(1,n)
197 pid(i) = ixc(6,n)
198 ENDDO
199
200 CALL fretitl2(titr,igeo(npropgi-ltitr+1,iprop),ltitr)
201 iorthloc = 0
202
203 nlay = elbuf_str%NLAY
204 nptr = elbuf_str%NPTR
205 npts = elbuf_str%NPTS
206 nptt = elbuf_str%NPTT
207 nxel = elbuf_str%NXEL
208 npg = nptr*npts
209 lenf = nel*gbuf%G_FORPG/npg
210 lenm = nel*gbuf%G_MOMPG/npg
211
212 lenfp = nel*gbuf%G_FORPGPINCH/npg
213 lenmp = nel*gbuf%G_MOMPGPINCH/npg
214 lenepinchxz = nel*gbuf%G_EPGPINCHXZ/npg
215 lenepinchyz = nel*gbuf%G_EPGPINCHYZ/npg
216 lenepinchzz = nel*gbuf%G_EPGPINCHZZ/npg
217
218 lens = nel*gbuf%G_STRPG/npg
219
220 npt_all = 0
221 DO il=1,nlay
222 npt_all = npt_all + elbuf_str%BUFLY(il)%NPTT
223 ENDDO
225 IF(npt_all == 0 ) npt_all = nlay
226 IF (iparg(6) == 0.OR.npt==0) mpt=0
227 IF((igtyp == 51 .OR. igtyp == 52) .AND. idrape > 0) THEN
228 ALLOCATE(dir_a(npt_all*nel*2))
229 ALLOCATE(dir_b(npt_all*nel*2))
230 dir_a = zero
231 dir_b = zero
232 ELSE
233 ALLOCATE(dir_a(nlay*nel*2))
234 ALLOCATE(dir_b(nlay*nel*2))
235 dir_a = zero
236 dir_b = zero
237 npt_all = nlay
238 ENDIF
239
240 DO i=1,9
241 jj(i) = nel*(i-1)
242 ENDDO
243 npt_all =
max(nlay, npt_all)
244
245
246 IF (ishxfem_ply > 0) THEN
247 DO i=lft,llt
248 n = i+nft
249 itag(ixc(2,n)) =1
250 itag(ixc(3,n)) =1
251 itag(ixc(4,n)) =1
252 itag(ixc(5,n)) =1
253 itagel(n) = 1
254 ENDDO
255 ENDIF
256
257 IF (ixfem > 0) THEN
258 DO i=lft,llt
259 n = i+nft
260 itagn(ixc(2,n)) =1
261 itagn(ixc(3,n)) =1
262 itagn(ixc(4,n)) =1
263 itagn(ixc(5,n)) =1
264 itage(n) = 1
265 ENDDO
266 ENDIF
267
268 CALL ccoori(x,xrefc(1,1,nft+1),ixc(1,nft+1),
269 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
270 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
271 . ix1 ,ix2 ,ix3 ,ix4 ,ngl )
272
273 CALL cveok3(nvc,4,ix1,ix2,ix3,ix4)
274
276 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
277 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
278 . e1x, e2x, e3x, e1y, e2y, e3y ,e1z
279
280
281
282 IF ((imasadd > 0).OR.(nloc_dmg%IMOD > 0)) THEN
283 DO i=lft,llt
284 j = ipart(i+nft)
285
286 ele_area(i+nft) =
area(i)
287 IF (gbuf%G_AREA > 0) gbuf%AREA(i) =
area(i)
288 ENDDO
289 ENDIF
290
291
292
293
294 IF (jthe == 0 .and. glob_therm%NINTEMP > 0) THEN
295 CALL initemp_shell(elbuf_str,temp,nel,numnod,numelc,4,nixc,ixc)
296 END IF
297
298 CALL cinmas(x,xrefc(1,1,nft+1),ixc,geo,pm,
299 . xmas,in,thke,ihbe,partsav,
300 . v,ipart(nft+1),msc(nft+1),inc(nft+1),
area ,
301 . i8mi ,igeo ,etnod ,imat ,iprop,nshnod ,stc(nft+1),
302 . sh4tree ,mcp , mcps(nft+1) ,temp ,
303 . ms_layer, zi_layer,ms_layerc,zi_layerc,
304 . msz2c,zply,isubstack,nlay,elbuf_str,stack,
305 . gbuf%THK_I,rnoise ,drape ,glob_therm%NINTEMP,
306 . perturb,ix1 ,ix2 ,ix3 ,ix4 ,
307 . idrape ,drapeg%INDX)
308
309 IF (mtn == 1 .OR. mtn == 3 .OR. mtn == 23 .OR. mtn == 91) npt = 0
310
311 CALL cderii(px1g,px2g,py1g,py2g,
312 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
313 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
314 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
315 . x2l ,x3l ,x4l ,y2l ,y3l ,y4l )
316 CALL cndleni(pm ,geo ,stifn ,stifr ,ixc(1,nft+1),
317 . thke ,ihbe ,igeo ,sh4tree ,aldt ,
318 . bufmat ,ipm ,nlay ,stack%PM,isubstack,
319 . strc(nft+1),
area ,imat ,iprop ,
dtel ,
320 . x2l ,x3l ,x4l ,y2l ,y3l ,y4l ,
321 . stack%IGEO ,group_param)
322 CALL c1buf3(geo,gbuf%THK,gbuf%OFF,thke,ksh4tree,sh4tree)
323
324 IF (ixfem > 0) THEN
325 DO ixel=1,nxel
326 CALL c1buf3(geo,xfem_str(ng,ixel)%GBUF%THK,
327 . xfem_str(ng,ixel)%GBUF%OFF,thke,ksh4tree,sh4tree)
328 DO i=lft,llt
329 xfem_str(ng,ixel)%GBUF%THK(i) = thke(i)
330 xfem_str(ng,ixel)%GBUF%OFF(i) = -one
331 END DO
332 ENDDO
333 ENDIF
334
335 IF (mtn == 35) THEN
337 . nptr,npts,nptt,igtyp)
338 ENDIF
339
340 IF (( isigsh/=0 .OR. ithkshel == 2) .and. mpt>0) THEN
342 . elbuf_str ,lft ,llt ,geo ,igeo ,
343 . mat ,pid ,matly ,posly ,igtyp ,
344 . nlay ,mpt ,isubstack ,stack ,drape ,
345 . nft ,gbuf%THK ,nel ,idrape ,
scdrape ,
346 . drapeg%INDX)
347 END IF
348
349
350
351 DO is = 1,npts
352 DO ir = 1,nptr
353 ipg = nptr*(is-1) + ir
354 ptf = (ipg-1)*lenf
355 ptm = (ipg-1)*lenm
356 pts = (ipg-1)*lens
357
358
359 CALL cmaini3(elbuf_str,pm ,geo ,nel ,nlay ,
360 . skew ,igeo ,ixc(1,nft+1),nixc ,numelc ,
361 . nsigsh ,sigsh ,ptshel ,igtyp ,iorthloc ,
362 . ipm ,propid ,aldt ,mat_param,
363 . ir ,is ,isubstack,stack ,irep ,
364 . drape ,sh4ang(nft+1),geo_stack,igeo_stack,
365 . igmat ,imat ,iprop ,nummat,
366 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
367 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
368 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,x ,
369 . npt_all,idrape ,
scdrape , drapeg%INDX)
370
371 IF (( isigsh/=0 .OR. ithkshel == 2) .and. ihbe == 11) THEN
372 IF (mpt>0)
373 .
CALL corth3(elbuf_str,dir_a ,dir_b ,lft ,llt ,
374 . nlay ,irep ,nel ,
375 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
376 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
377 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
378 . idrape, igtyp)
380 1 lft ,llt ,nft ,mpt ,istrain,
381 2 gbuf%THK ,gbuf%EINT,gbuf%STRPG(pts+1),gbuf%HOURG,
382 3 gbuf%FORPG(ptf+1),gbuf%MOMPG(ptm+1),sigsh ,nsigsh ,numelc ,
383 4 ixc ,nixc ,numshel ,ptshel ,igeo ,
384 5 ir ,is ,ipg ,npg ,gbuf%G_PLA,
385 6 gbuf%PLA,thke ,igtyp ,nel ,isigsh ,
386 7 e1x ,e2x ,e3x ,e1y ,e2y ,e3y,
387 8 e1z ,e2z ,e3z ,dir_a ,dir_b,posly )
388 IF (ithkshel == 2) THEN
389 DO i=lft,llt
390 gbuf%STRA(i+jj(1:8))=gbuf%STRA(i+jj(1:8))+
391 . fourth*gbuf%STRPG(pts+i+jj(1:8))
392 END DO
393 END IF
394 ELSEIF ( ithkshel == 1 .AND. ihbe == 11 ) THEN
395 CALL thickini(lft ,llt ,nft ,ptshel,numelc,
396 2 gbuf%THK,thke ,ixc ,nixc ,nsigsh,
397 3 sigsh )
398 ENDIF
399
400 IF (iuser == 1. and. mtn>=28 .AND. ihbe == 11) THEN
401 npg = 4
403 1 lft ,llt ,nft ,nel ,istrain ,
404 2 sigsh ,nsigsh ,numelc,ixc ,nixc ,
405 3 numshel ,ptshel ,ir ,is ,npt ,
406 4 igtyp ,igeo ,nlay ,npg ,ipg )
407 ENDIF
408
409 IF (iyldini == 1 .AND. (mtn== 36.OR. mtn==87).AND. ihbe == 11) THEN
410 npg = 4
412 1 lft ,llt ,nft ,nel ,istrain ,
413 2 sigsh ,nsigsh ,numelc,ixc ,nixc ,
414 3 numshel ,ptshel ,ir ,is ,npt ,
415 4 igtyp ,igeo ,nlay ,npg ,ipg )
416 ENDIF
417
418 ENDDO
419 ENDDO
420
421
422
423
424 IF (fail_fractal%NFAIL > 0) THEN
425 CALL fractal_dmg_init(elbuf_str,mat_param,fail_fractal,
426 . nummat ,numelc ,nel ,nft ,ngl ,ity )
427 ENDIF
428
429 IF (ifail > 0 .and. iddlevel == 1) THEN
431 . nel ,nft ,ity ,igrsh4n ,igrsh3n ,
432 . aldt ,thke ,ngl )
433 ENDIF
434
435 IF (ihbe == 11) THEN
436
437 CALL cfailini4(elbuf_str,nptr ,npts ,nptt ,nlay ,
438 . sigsh ,nsigsh ,ptshel ,rnoise ,perturb ,
439 . mat_param,aldt ,thke )
440 ELSEIF (ihbe > 20 .AND. ihbe < 29) THEN
441
443 . nptt ,nlay ,sigsh ,nsigsh ,ptshel ,
444 . rnoise ,perturb ,aldt ,thke )
445 ENDIF
446
447
448
449
450 IF (ihbe > 20 .AND. ihbe < 29) THEN
451
452 ir = 1
453 is = 1
454 npg = 1
455
456 IF (istrain == 1 .AND. nxref > 0) THEN
457
458
459 uvar => elbuf_str%BUFLY(1)%MAT(1,1,1)%VAR
460 CALL cnepsini(elbuf_str,mat_param(imat),
461 . lft ,llt ,ismstr ,mtn ,ithk ,
462 .
463 . nlay ,gbuf%FOR ,gbuf%THK,gbuf%EINT ,gbuf%STRA,
464 . px1g ,px2g ,py1g ,py2g ,x2s ,
465 . y2s ,x3s ,y3s ,x4s ,y4s ,
466 . gbuf%OFF ,uvar ,ipm ,imat ,
467 . igeo ,nel ,dir_a ,dir_b ,gbuf%SIGI,
468 . npf ,tf ,irep )
469
470 CALL cepschk(lft, llt,nft, pm, geo,ixc(1,nft+1),
471 . gbuf%STRA,thke,nel ,cpt_eltens)
472 IF (ismstr == 1 .AND. mtn==19) iparg(9)=11
473 IF (mtn==58 .AND. npt_all==1) THEN
474
475 iparg(36)=1
476 DO i=lft,llt
477 ii = nft + i
478 elbuf_str%GBUF%HOURG(jj(1)+i) = xrefc(2,1,ii)-xrefc(1,1,ii)
479 elbuf_str%GBUF%HOURG(jj(2)+i) = xrefc(2,2,ii)-xrefc(1,2,ii)
480 elbuf_str%GBUF%HOURG(jj(3)+i) = xrefc(2,3,ii)-xrefc(1,3,ii)
481 elbuf_str%GBUF%HOURG(jj(4)+i) = xrefc(3,1,ii)-xrefc(1,1,ii)
482 elbuf_str%GBUF%HOURG(jj(5)+i) = xrefc(3,2,ii)-xrefc(1,2,ii)
483 elbuf_str%GBUF%HOURG(jj(6)+i) = xrefc(3,3,ii)-xrefc(1,3,ii)
484 elbuf_str%GBUF%HOURG(jj(7)+i) = xrefc(4,1,ii)-xrefc(1,1,ii)
485 elbuf_str%GBUF%HOURG(jj(8)+i) = xrefc(4,2,ii)-xrefc(1,2,ii)
486 elbuf_str%GBUF%HOURG(jj(9)+i) = xrefc(4,3,ii)-xrefc(1,3,ii)
487 ENDDO
488 END IF
489
490 ELSEIF (ismstr == 11 .OR. (ismstr==1 .AND. mtn==19) ) THEN
491
493 . lft ,llt ,ixc(1,nft+1),x ,
494 . x2s,y2s,x3s,y3s,x4s,y4s)
495 ENDIF
496
497 IF (ismstr == 10 ) THEN
498 DO i=lft,llt
499 ii = nft + i
500 elbuf_str%GBUF%SMSTR(jj(1)+i) = x(1,ixc(3,ii))-x(1,ixc(2,ii))
501 elbuf_str%GBUF%SMSTR(jj(2)+i) = x(2,ixc(3,ii))-x(2,ixc(2,ii))
502 elbuf_str%GBUF%SMSTR(jj(3)+i) = x(3,ixc(3,ii))-x(3,ixc(2,ii))
503 elbuf_str%GBUF%SMSTR(jj(4)+i) = x(1,ixc(4,ii))-x(1,ixc(2,ii))
504 elbuf_str%GBUF%SMSTR(jj(5)+i) = x(2,ixc(4,ii))-x(2,ixc(2,ii))
505 elbuf_str%GBUF%SMSTR(jj(6)+i) = x(3,ixc(4,ii))-x(3,ixc(2,ii))
506 elbuf_str%GBUF%SMSTR(jj(7)+i) = x(1,ixc(5,ii))-x(1,ixc(2,ii))
507 elbuf_str%GBUF%SMSTR(jj(8)+i) = x(2,ixc(5,ii))-x(2,ixc(2,ii))
508 elbuf_str%GBUF%SMSTR(jj(9)+i) = x(3,ixc(5,ii))-x(3,ixc(2,ii))
509 ENDDO
510 ELSEIF (ismstr == 11 .OR. (ismstr==1 .AND. mtn==19) ) THEN
511 DO i=lft,llt
512 elbuf_str%GBUF%SMSTR(jj(1)+i) = x2s(i)
513 elbuf_str%GBUF%SMSTR(jj(2)+i) = y2s(i)
514 elbuf_str%GBUF%SMSTR(jj(3)+i) = x3s(i)
515 elbuf_str%GBUF%SMSTR(jj(4)+i) = y3s(i)
516 elbuf_str%GBUF%SMSTR(jj(5)+i) = x4s(i)
517 elbuf_str%GBUF%SMSTR(jj(6)+i) = y4s(i)
518 ENDDO
519 ENDIF
520
521 IF (isigsh/=0 .OR. ithkshel == 2) THEN
522 ipg = 0
523 IF (mpt>0)
524 .
CALL corth3(elbuf_str,dir_a ,dir_b ,lft ,llt ,
525 . nlay ,irep ,nel ,
526 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
527 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
528 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z ,
529 . idrape, igtyp)
531 1 lft ,llt ,nft ,mpt ,istrain,
532 2 gbuf%THK,gbuf%EINT,gbuf%STRA,gbuf%HOURG,
533 3 gbuf%FOR,gbuf%MOM,sigsh ,nsigsh ,numelc ,
534 4 ixc ,nixc ,numshel ,ptshel ,igeo ,
535 5 ir ,is ,ipg ,npg ,gbuf%G_PLA,
536 6 gbuf%PLA,thke ,igtyp ,nel ,isigsh ,
537 7 e1x ,e2x ,e3x ,e1y ,e2y ,e3y,
538 8 e1z ,e2z ,e3z ,dir_a ,dir_b,posly )
539
540 IF (ithkshel == 2.AND.gbuf%G_STRPG>gbuf%G_STRA)
541 1
CALL cstraini4(lft ,llt ,nft ,nel ,numshel,
542 2 istrain,gbuf%STRPG,sigsh ,nsigsh ,numelc ,
543 4 ixc ,nixc ,ptshel ,thke ,gbuf%STRA,
544 7 e1x ,e2x ,e3x ,e1y ,e2y ,e3y,
545 8 e1z ,e2z ,e3z )
546 ELSEIF ( ithkshel == 1 ) THEN
547 CALL thickini(lft ,llt ,nft ,ptshel,numelc,
548 2 gbuf%THK,thke ,ixc ,nixc ,nsigsh,
549 3 sigsh )
550 ENDIF
551 IF (iuser == 1 .AND. mtn >= 29) THEN
553 1 lft ,llt ,nft ,nel , npt ,
554 2 istrain,sigsh ,numelc ,ixc ,nixc ,
555 3 nsigsh ,numshel,ptshel ,ir ,is ,
556 4 nlay )
557 ENDIF
558
559 IF (iyldini == 1 .AND. (mtn== 36.OR. mtn==87)) THEN
561 1 lft ,llt ,nft ,nel , npt ,
562 2 istrain,sigsh ,numelc ,ixc ,nixc ,
563 3 nsigsh ,numshel,ptshel ,ir ,is ,
564 4 nlay )
565 ENDIF
566
567
568 ELSEIF (ihbe == 11) THEN
569
570
571 IF (istrain == 1 .AND. nxref > 0) THEN
572
573
574 ir = 1
575 is = 1
576
577 uvar => elbuf_str%BUFLY(1)%MAT(1,1,1)%VAR
578
579 CALL cnepsini(elbuf_str,mat_param(imat),
580 . lft ,llt ,ismstr ,mtn ,ithk ,
581 . pm ,geo ,ixc(1,nft+1),x ,xrefc(1,1,nft+1),
582 . nlay ,gbuf%FOR ,gbuf%THK ,gbuf%EINT,gbuf%STRA ,
583 . px1g ,px2g ,py1g ,py2g ,x2s ,
584 . y2s ,x3s ,y3s ,x4s ,y4s ,
585 . gbuf%OFF,uvar ,ipm ,imat ,
586 . igeo ,nel ,dir_a ,dir_b ,gbuf%SIGI ,
587 . npf ,tf ,irep )
588
589 IF (ismstr /= 4) THEN
590 DO i=lft,llt
591 elbuf_str%GBUF%SMSTR(jj(1)+i) = x2s(i)
592 elbuf_str%GBUF%SMSTR(jj(2)+i) = y2s(i)
593 elbuf_str%GBUF%SMSTR(jj(3)+i) = x3s(i)
594 elbuf_str%GBUF%SMSTR(jj(4)+i) = y3s(i)
595 elbuf_str%GBUF%SMSTR(jj(5)+i) = x4s(i)
596 elbuf_str%GBUF%SMSTR(jj(6)+i) = y4s(i)
597 ENDDO
598 ENDIF
599
600 CALL cepschk(lft, llt,nft, pm, geo,ixc(1,nft+1),
601 . gbuf%STRA,thke,nel
602 IF (ismstr == 1 .AND. mtn==19) iparg(9)=11
603
604 DO is =1,npts
605 DO ir =1,nptr
606 ipg = nptr*(is-1) + ir
607 ptf = (ipg-1)*lenf
608 ptm = (ipg-1)*lenm
609 pts = (ipg-1)*lens
610 DO i=lft,llt
611 gbuf%FORPG(ptf+jj(1)+i) = gbuf%FOR(jj(1)+i)
612 gbuf%FORPG(ptf+jj(2)+i) = gbuf%FOR(jj(2)+i)
613 gbuf%FORPG(ptf+jj(3)+i) = gbuf%FOR(jj(3)+i)
614
615 gbuf%MOMPG(ptm+jj(1)+i) = gbuf%MOM(jj(1)+i)
616 gbuf%MOMPG(ptm+jj(2)+i) = gbuf%MOM(jj(2)+i)
617 gbuf%MOMPG(ptm+jj(3)+i) = gbuf%MOM(jj(3)+i)
618
619 gbuf%STRPG(pts+jj(1)+i) = gbuf%STRA(jj(1)+i)
620 gbuf%STRPG(pts+jj(2)+i) = gbuf%STRA(jj(2)+i)
621 gbuf%STRPG(pts+jj(3)+i) = gbuf%STRA(jj(3)+i)
622 ENDDO
623 DO j=1,nlay
624 IF (elbuf_str%BUFLY(j)%ILAW == 58) THEN
625 DO k = 1,elbuf_str%BUFLY(j)%NPTT
626 uvar => elbuf_str%BUFLY(j)%MAT(ir
627 nuvar = elbuf_str%BUFLY(j)%NVAR_MAT
628 DO i=1,nel*nuvar
629 uvar(i) = elbuf_str%BUFLY(1)%MAT(1,1,1)%VAR(i)
630 ENDDO
631 ENDDO
632 END IF
633 ENDDO
634 ENDDO
635 ENDDO
636
637
638 ELSEIF (ismstr == 10 ) THEN
639 DO i=lft,llt
640 ii = nft + i
641 elbuf_str%GBUF%SMSTR(jj(1)+i) = x(1,ixc(3,ii))-x(1,ixc(2,ii))
642 elbuf_str%GBUF%SMSTR(jj(2)+i) = x(2,ixc(3,ii))-x(2,ixc(2,ii))
643 elbuf_str%GBUF%SMSTR(jj(3)+i) = x(3,ixc(3,ii))-x(3,ixc(2,ii))
644 elbuf_str%GBUF%SMSTR(jj(4)+i) = x(1,ixc(4,ii))-x(1,ixc(2,ii
645 elbuf_str%GBUF%SMSTR(jj(5)+i) = x
646 elbuf_str%GBUF%SMSTR(jj(6)+i) = x(3,ixc(4,ii))-x(3,ixc(2,ii))
647 elbuf_str%GBUF%SMSTR(jj(7)+i) = x(1,ixc(5,ii))-x(1,ixc(2,ii))
648 elbuf_str%GBUF%SMSTR(jj(8)+i) = x(2,ixc(5,ii))-x(2,ixc(2,ii))
649 elbuf_str%GBUF%SMSTR(jj(9)+i) = x(3,ixc(5,ii))-x(3,ixc(2,ii))
650 ENDDO
651 ELSEIF (ismstr == 11 .OR. (ismstr==1 .AND. mtn==19) ) THEN
652
654 . lft ,llt ,ixc(1,nft+1),x ,x2s ,
655 . y2s ,x3s ,y3s ,x4s ,y4s )
656 DO i=lft,llt
657 elbuf_str%GBUF%SMSTR(jj(1)+i) = x2s(i)
658 elbuf_str%GBUF%SMSTR(jj(2)+i) = y2s(i)
659 elbuf_str%GBUF%SMSTR(jj(3)+i) = x3s(i)
660 elbuf_str%GBUF%SMSTR(jj(4)+i) = y3s(i)
661 elbuf_str%GBUF%SMSTR(jj(5)+i) = x4s(i)
662 elbuf_str%GBUF%SMSTR(jj(6)+i) = y4s(i)
663 ENDDO
664 ENDIF
665
666 ENDIF
667
668
669
670 IF (igtyp /= 1 .AND. igtyp /= 7 .AND.
671 . igtyp /= 9 .AND. igtyp /= 10 .AND.
672 . igtyp /= 11 .AND. igtyp /= 0 .AND.
673 . igtyp /= 16 .AND. igtyp /= 17 .AND.
674 . igtyp /= 51 .AND. igtyp /= 52 ) THEN
676 . anmode=aninfo,
677 . msgtype=msgerror,
678 . i1=propid,
679 . c1=titr,
680 . i2=iprop)
681 ENDIF
682 ndepar=numels+nft
683 DO i=lft,llt
684
685 dtelem(ndepar+i) =
dtel(i)
686 END DO
687
688 IF (ixfem > 0) THEN
689 CALL cbufxfe(elbuf_str,xfem_str ,isubstack,stack ,
690 . igeo ,geo ,lft ,llt ,mat ,
691 . pid ,npt ,nptt ,nlay ,ir ,
692 . is ,ixfem ,mtn ,ng)
693 ENDIF
694
695
696 DO i=lft,llt
697 IF (gbuf%G_VOL > 0) gbuf%VOL(i) =
area(i)*gbuf%THK(i)
698 ENDDO
699 IF (ixfem > 0) THEN
700 DO ixel=1,nxel
701 DO i=lft,llt
702 IF (xfem_str(ng,ixel)%GBUF%G_VOL > 0)
703 . xfem_str(ng,ixel)%GBUF%VOL(i) =
area(i)*gbuf%THK(i)
704 END DO
705 ENDDO
706 ENDIF
707
708 DEALLOCATE(dir_a)
709 DEALLOCATE(dir_b)
710 DEALLOCATE(matly)
711 DEALLOCATE(posly)
712
713 RETURN
subroutine c1buf3(geo, thk, off, thke, kshtree, shtree)
subroutine cbufxfe(elbuf_str, xfem_str, isubstack, stack, igeo, geo, lft, llt, mat, pid, npt, nptt, nlay, ir, is, ixfem, mtn, ng)
subroutine ccoori(x, xrefc, ixc, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, ix1, ix2, ix3, ix4, ngl)
subroutine cderii(px1, px2, py1, py2, x1g, x2g, x3g, x4g, y1g, y2g, y3g, y4g, z1g, z2g, z3g, z4g, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, x2l, x3l, x4l, y2l, y3l, y4l)
subroutine cepschk(jft, jlt, nft, pm, geo, ixc, gstr, thk, nel, cpt_eltens)
subroutine cfailini(elbuf_str, mat_param, nptt, nlay, sigsh, nsigsh, ptsh, rnoise, perturb, aldt, thk)
subroutine cfailini4(elbuf_str, nptr, npts, nptt, nlay, sigsh, nsigsh, ptsh, rnoise, perturb, mat_param, aldt, thk)
subroutine csms11_ini(jft, jlt, ixc, x, x2s, y2s, x3s, y3s, x4s, y4s)
subroutine cinmas(x, xrefc, ix, geo, pm, ms, tiner, thke, ihbe, partsav, v, ipart, msc, inc, area, i8mi, igeo, etnod, imid, iprop, nshnod, stc, sh4tree, mcp, mcps, temp, ms_layer, zi_layer, ms_layerc, zi_layerc, msz2c, zply, isubstack, nlay, elbuf_str, stack, thki, rnoise, drape, nintemp, perturb, ix1, ix2, ix3, ix4, idrape, indx)
subroutine cm35in3(elbuf_str, thk, area, nel, nlay, nptr, npts, nptt, igtyp)
subroutine cmaini3(elbuf_str, pm, geo, nel, nlay, skew, igeo, ix, nix, numel, nsigsh, sigsh, ptsh, igtyp, iorthloc, ipm, propid, aldt, mat_param, ir, is, isubstack, stack, irep, drape, shang, geo_stack, igeo_stack, igmat, imat, iprop, nummat, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, x, npt_all, idrape, numel_drape, indx)
subroutine cmatini4(elbuf_str, jft, jlt, nft, nel, istrain, sigsh, nsigsh, numel, ix, nix, numsh, ptsh, ir, is, npt, igtyp, igeo, nlay, npg, ipg)
subroutine cmatini(elbuf_str, jft, jlt, nft, nel, npt, istrain, sigsh, numel, ix, nix, nsigsh, numsh, ptsh, ir, is, nlay)
subroutine cndleni(pm, geo, stifn, stifr, ixc, thk, ihbe, igeo, sh4tree, aldt, uparam, ipm, nlay, pm_stack, isubstack, strc, area, imat, iprop, dtel, x2l, x3l, x4l, y2l, y3l, y4l, igeo_stack, group_param)
subroutine cnepsini(elbuf_str, mat_param, jft, jlt, ismstr, mtn, ithk, pm, geo, ixc, x, xrefc, nlay, for, thk, eint, gstr, px1g, px2g, py1g, py2g, x2s, y2s, x3s, y3s, x4s, y4s, off, uvar, ipm, imat, igeo, nel, dir_a, dir_b, sigi, npf, tf, irep)
subroutine cneveci(jft, jlt, area, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
subroutine corth3(elbuf_str, dir_a, dir_b, jft, jlt, nlay, irep, nel, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, idrape, igtyp)
subroutine cstraini4(jft, jlt, nft, nel, numshel, istrain, gstr, sigsh, nsigsh, numel, ix, nix, ptsh, thke, gstrm, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
subroutine cuserini4(elbuf_str, jft, jlt, nft, nel, istrain, sigsh, nsigsh, numel, ix, nix, numsh, ptsh, ir, is, npt, igtyp, igeo, nlay, npg, ipg)
subroutine cuserini(elbuf_str, jft, jlt, nft, nel, npt, istrain, sigsh, numel, ix, nix, nsigsh, numsh, ptsh, ir, is, nlay)
subroutine cveok3(nvc, nod, ix1, ix2, ix3, ix4)
subroutine dtel(ssp, pm, geo, pid, mat, rho0, vis, deltax, aire, vol, dtx)
subroutine fail_windshield_init(elbuf_str, mat_param, fail_brokmann, nel, nft, ity, igrsh4n, igrsh3n, aldt, thk, ngl)
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine layini1(elbuf_str, jft, jlt, geo, igeo, mat, pid, matly, posly, igtyp, nlay, npt, isubstack, stack, drape, nft, thk, nel, idrape, numel_drape, indx)
integer, parameter nchartitle
subroutine csigini4(elbuf_str, ihbe, jft, jlt, nft, npt, istrain, thk, eint, gstr, hh, for, mom, sigsh, nsigsh, numel, ix, nix, numsh, ptsh, igeo, ir, is, ipg, npg, g_pla, epsp, thke, igtyp, nel, isigsh, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, dir_a, dir_b, posly)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
subroutine thickini(jft, jlt, nft, ptsh, numel, thk, thke, ix, nix, nsigsh, sigsh)