48
49
50
57 USE defaults_mod
58
59
60
61#include "implicit_f.inc"
62
63
64
65#include "units_c.inc"
66#include "com01_c.inc"
67#include "com04_c.inc"
68#include "param_c.inc"
69#include "scr16_c.inc"
70#include "scr17_c.inc"
71#include "sphcom.inc"
72#include "tablen_c.inc"
73
74
75
76 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
77 INTEGER ::
78 . IGEO(NPROPGI),IPM(NPROPMI,*),SUB_ID,ISKN(LISKN,*),
79 . PROP_ID
81 . geo(npropg), pm(npropm,*),rtrans(ntransf,*)
82 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
83 CHARACTER(LEN=NCHARTITLE)::IDTITL
84 TYPE(PROP_TAG_) , DIMENSION(0:MAXPROP) :: PROP_TAG
85 TYPE(STACK_INFO_) , TARGET :: STACK_INFO
86 TYPE(SHELL_DEFAULTS_), INTENT(IN) :: DEFAULTS_SHELL
87
88
89
90 CHARACTER LAW_ID*4
91 INTEGER :: IGMAT, IHBE , ISMSTR, ISROT, ISHXFEM ,ISTRAIN, ITHK, IPLAST, IDSK,
92 . IORTH, IPOS , LAMIN , NSUB , NISUB , NN, NPLY, IDSUB , I, PLY_ID,
93 . IMID_PI,INTER ,IPID1 , IPID2 , , ISHEAR ,IHBEOUTP ,IPID0,
94 . ISK , J, ISS, N1, IMID, K, NC, KK, II, NPT_SUB, M1, IMAT,
95 . N,IPID,ISHELL,ISH3N,ID,ID1,IUN,NPLY_SUB,IGTYP,FAIL_SHELL,IS,IRP
97 . an, vx, vy, vz, thickt, dt, tmin
98 . ashear, ang, pos, hm, hf, hr, dn, dm,visc_int
99 INTEGER IHBE_D,IPLA_D,ISTR_D,ITHK_D,ISHEA_D,ISST_D,
100 . ISH3N_D, ISTRA_D,NPTS_D,IDRIL_D
101 INTEGER, DIMENSION(:),ALLOCATABLE :: IDMAT_INTP,IDMAT_SUB
102
103 CHARACTER(LEN=NCHARTITLE) :: TITR,TITR1
104 LOGICAL :: IS_AVAILABLE, IS_ENCRYPTED
105
106
107
108 DATA iun/1/
109 DATA pun/0.1/
110
111
112
113
114
115
116
117 is_available = .false.
118 is_encrypted = .false.
119
120 igtyp = 17
121 igmat = 1
122 cvis = one
123 istrain = 1
124 irp = 0
125 idsk = 0
126
127 ihbe_d = defaults_shell%ishell
128 ish3n_d= defaults_shell%ish3n
129 isst_d = defaults_shell%ismstr
130 ipla_d = defaults_shell%iplas
131 ithk_d = defaults_shell%ithick
132 idril_d= defaults_shell%idrill
133 ishea_d = 0
134 npts_d = 0
135 istra_d = 1
136
137
138
140
141
142 CALL hm_get_intv(
'Ishell',ihbe,is_available,lsubmodel)
143 CALL hm_get_intv(
'Ismstr',ismstr,is_available,lsubmodel)
144 CALL hm_get_intv(
'ISH3N',ish3n,is_available,lsubmodel)
145 CALL hm_get_intv(
'Idrill',isrot,is_available,lsubmodel)
146 CALL hm_get_intv(
'plyxfem',ishxfem,is_available,lsubmodel)
147 CALL hm_get_floatv(
'Z0',zshift,is_available,lsubmodel,unitab)
148 CALL hm_get_floatv(
'Vinterply',visc_int,is_available,lsubmodel,unitab)
149 ! card 2
150
156
157!
158 CALL hm_get_floatv('p_thick_fail
', PTHK ,IS_AVAILABLE, LSUBMODEL, UNITAB)
159 CALL HM_GET_FLOATV('thick' ,THK ,IS_AVAILABLE, LSUBMODEL, UNITAB)
160 CALL HM_GET_FLOATV('area_shear',ASHEAR ,IS_AVAILABLE, LSUBMODEL, UNITAB)
161 CALL HM_GET_INTV ('ithick' ,ITHK ,IS_AVAILABLE, LSUBMODEL)
162 CALL HM_GET_INTV ('iplas' ,IPLAST ,IS_AVAILABLE, LSUBMODEL)
163!! CALL HM_GET_FLOATV('fexp' ,FAIL_SHELL ,IS_AVAILABLE, LSUBMODEL, UNITAB) not existing
164 ! card4
165 CALL HM_GET_FLOATV('v_x' ,VX ,IS_AVAILABLE, LSUBMODEL, UNITAB)
166 CALL HM_GET_FLOATV('v_y' ,VY ,IS_AVAILABLE, LSUBMODEL, UNITAB)
167 CALL HM_GET_FLOATV('v_z' ,VZ ,IS_AVAILABLE, LSUBMODEL, UNITAB)
168 CALL HM_GET_INTV('skew_csid' ,IDSK ,IS_AVAILABLE, LSUBMODEL)
169 CALL HM_GET_INTV('iorth' ,IORTH ,IS_AVAILABLE, LSUBMODEL)
170 CALL HM_GET_INTV('ipos' ,IPOS ,IS_AVAILABLE, LSUBMODEL)
171 CALL HM_GET_INTV('ip',IRP,IS_AVAILABLE,LSUBMODEL)
172
173
174
175
176
177 CALL HM_GET_INTV('laminateconfig' ,LAMIN, IS_AVAILABLE, LSUBMODEL)
178
179 NSUB = 0
180 NISUB = 0
181 IF (LAMIN > 0) THEN
182 CALL HM_GET_INTV('sublaminateidlistmax' ,NSUB, IS_AVAILABLE, LSUBMODEL)
183 CALL HM_GET_INTV('interfacepairsize' ,NISUB, IS_AVAILABLE, LSUBMODEL)
184 NPLY = 0
185 DO IS = 1,NSUB
186 CALL HM_GET_INT_ARRAY_INDEX('plyidlistmax',NPLY_SUB,IS,IS_AVAILABLE,LSUBMODEL)
187 CALL HM_GET_INT_ARRAY_INDEX('dummy',IDSUB,IS,IS_AVAILABLE,LSUBMODEL) !
188 !!
189 STACK_INFO%SUB(2*(IS - 1) + 1) = IDSUB
190 STACK_INFO%SUB(2*(IS - 1) + 2) = NPLY_SUB
191 DO I = 1,NPLY_SUB
192 CALL HM_GET_INT_ARRAY_2INDEXES ('plyidlist',PLY_ID,IS,I,IS_AVAILABLE,LSUBMODEL)
193 CALL HM_GET_FLOAT_ARRAY_2INDEXES('prop_phi' ,ANG ,IS,I,IS_AVAILABLE,LSUBMODEL,UNITAB)
194 CALL HM_GET_FLOAT_ARRAY_2INDEXES('prop_zi' ,POS ,IS,I,IS_AVAILABLE,LSUBMODEL,UNITAB)
195 CALL HM_GET_INT_ARRAY_2INDEXES ('prop_mi' ,IMID_PI,IS,I,IS_AVAILABLE,LSUBMODEL)
196 ! stockage
197 STACK_INFO%PID(NPLY + I) = PLY_ID
198 STACK_INFO%ANG(NPLY + I) = ANG
199 STACK_INFO%POS(NPLY + I) = POS
200 STACK_INFO%MID_IP(NPLY + I) = IMID_PI
201 END DO
202 NPLY = NPLY + NPLY_SUB
203 END DO
204
205 IF (NISUB > 0) THEN
206 DO INTER = 1,NISUB
207 CALL HM_GET_INT_ARRAY_2INDEXES ('interfacepairplyids' ,IPID1 ,1 ,INTER,IS_AVAILABLE,LSUBMODEL)
208 CALL HM_GET_INT_ARRAY_2INDEXES ('interfacepairplyids' ,IPID2 ,2 ,INTER,IS_AVAILABLE,LSUBMODEL)
209 CALL HM_GET_INT_ARRAY_INDEX ('interfacepair_prop_mi' ,IMID_PI,INTER,IS_AVAILABLE,LSUBMODEL)
210 !!
211 STACK_INFO%ISUB(3*(INTER - 1) + 1) = IPID1
212 STACK_INFO%ISUB(3*(INTER - 1) + 2) = IPID2
213 STACK_INFO%ISUB(3*(INTER - 1) + 3) = IMID_PI
214 END DO
215 END IF
216 ELSE ! property defined by a list of plies
217 CALL HM_GET_INTV('plyidlistmax' ,NPLY ,IS_AVAILABLE ,LSUBMODEL)
218 DO I=1,NPLY
219 CALL HM_GET_INT_ARRAY_INDEX ('plyidlist' ,PLY_ID,I,IS_AVAILABLE,LSUBMODEL)
220 CALL HM_GET_FLOAT_ARRAY_INDEX('prop_phi',ANG,I,IS_AVAILABLE,LSUBMODEL,UNITAB)
221 CALL HM_GET_FLOAT_ARRAY_INDEX('prop_zi' ,POS,I,IS_AVAILABLE,LSUBMODEL,UNITAB)
222 CALL HM_GET_INT_ARRAY_INDEX ('prop_mi' ,IMID_PI,I,IS_AVAILABLE,LSUBMODEL) !
223 !!
224 STACK_INFO%PID(I) = PLY_ID
225 STACK_INFO%ANG(I) = ANG
226 STACK_INFO%POS(I) = POS
227 STACK_INFO%MID_IP(I) = IMID_PI
228 END DO
229 END IF
230
231 IREP = IORTH
232
233
234
235
236
237 IF (PTHK == ZERO) PTHK = ONE-EM06
238 PTHK = MIN(PTHK, ONE)
239 PTHK = MAX(PTHK,-ONE)
240
241 ISHEAR = 0
242
243 CVIS = ZERO
244
245
246 IGEO( 1)= PROP_ID
247
248
249 IF(ISHXFEM > 0) IPLYXFEM = 2
250.AND. IF(ISHXFEM > 0 ISHXFEM /= 2 ) THEN
251 CALL ANCMSG(MSGID=1607,
252 . MSGTYPE=MSGWARNING,
253 . ANMODE=ANINFO_BLIND_2,
254 . I1=PROP_ID,
255 . C1=IDTITL)
256 ENDIF
257 ISHXFEM = MIN(1,ISHXFEM)
258
259.AND. IF(IHBE /= 12 ISHXFEM >0) THEN
260 ISHXFEM = 0
261 IPLYXFEM = 0
262 CALL ANCMSG(MSGID=726,
263 . MSGTYPE=MSGWARNING,
264 . ANMODE=ANINFO_BLIND_2,
265 . I1=PROP_ID,
266 . C1=IDTITL)
267 ENDIF
268 IF(IHBE==0)IHBE=IHBE_D
269 IHBEOUTP=IHBE
270.AND..AND. IF (IHBE == 4 ISH3N==0 ISH3N_D == 1) THEN
271 CALL ANCMSG(MSGID=680,
272 . MSGTYPE=MSGWARNING,
273 . ANMODE=ANINFO_BLIND_1,
274 . I1=PROP_ID,
275 . C1=IDTITL)
276 ENDIF
277.OR. IF (IHBE==22IHBE==23) THEN
278 CALL ANCMSG(MSGID=539,
279 . MSGTYPE=MSGWARNING,
280 . ANMODE=ANINFO_BLIND_1,
281 . I1=PROP_ID,
282 . C1=IDTITL)
283 IHBE=24
284 ENDIF
285 IF(ISH3N==0) ISH3N = ISH3N_D
286 IGEO(18) = ISH3N
287 IF (DM == ZERO) IGEO(31) = 1
288
289 IF (IHBE==24) THEN
290 IF (CVIS==ZERO) CVIS = ONE
291 IF (DN == ZERO) DN = ZEP015
292 IF (DM == ZERO) THEN
293
294
295 END IF
296 ENDIF
297
298 IF(ISMSTR==0)ISMSTR=ISST_D
299 IF(IHBE==3)THEN
300 IF(HM == ZERO)HM = EM01
301 IF(HF == ZERO)HF = EM01
302 IF(HR == ZERO)HR = EM02
303 ELSE
304 IF(HM == ZERO)HM = EM02
305 IF(HF == ZERO)HF = EM02
306 IF(HR == ZERO)HR = EM02
307 ENDIF
308
309 IF(ASHEAR == ZERO) ASHEAR=FIVE_OVER_6
310
311.AND. IF (IHBE>11IHBE<29) THEN
312
313 HM = DN
314 DN = CVIS
315
316 ENDIF
317
318
319 IGEO(10)=IHBE
320 GEO(171)=IHBE
321
322 IF(ISROT==0)ISROT=IDRIL_D
323 IF(ISROT==2) ISROT = 0
324 IGEO(20)=ISROT
325
326.AND..AND. IF (ISMSTR == 10 ISROT > 0 IDROT == 0 ) IDROT = 1
327 IF(ISMSTR == 0)ISMSTR=2
328.AND. IF(ISMSTR == 3. AND.IHBE /= 0 IHBE /= 2) THEN
329 ISMSTR = 2
330 CALL ANCMSG(MSGID=319,
331 . MSGTYPE=MSGWARNING,
332 . ANMODE=ANINFO_BLIND_2,
333 . I1=PROP_ID,
334 . C1=IDTITL)
335 ENDIF
336 GEO(3) =ISMSTR
337 IGEO(5)=ISMSTR
338
339 IF (SUB_ID /= 0)
340 . CALL SUBROTVECT(VX,VY,VZ,RTRANS,SUB_ID,LSUBMODEL)
341
342 GEO(1) = THK
343 IGEO(32) = 0 ! ISLV not used (may be needed for plyxfem)
344 IF(GEO(38) == ZERO) GEO(38) = FIVE_OVER_6
345 !! IF(NLY == 1) GEO(38)= ZERO
346 FAIL_SHELL = 0
347 AN=SQRT(VX*VX+VY*VY+VZ*VZ)
348 IF(AN < EM10)THEN
349 VX=ONE
350 VY=ZERO
351 VZ=ZERO
352 IF (IRP==23) THEN
353 CALL ANCMSG(MSGID=1922,
354 . MSGTYPE=MSGERROR,
355 . ANMODE=ANINFO,
356 . C1='property',
357 . I1=PROP_ID,
358 . C2='property',
359 . C3=TITR,
360 . I2=IRP)
361 END IF
362 ELSE
363 VX=VX/AN
364 VY=VY/AN
365 VZ=VZ/AN
366 ENDIF
367 ISK = 0
368 IF (IDSK/=0) THEN
369 DO J=0,NUMSKW+MIN(IUN,NSPCOND)*NUMSPH+NSUBMOD
370 IF(IDSK == ISKN(4,J+1)) THEN
371 ISK=J+1
372 GO TO 10
373 ENDIF
374 END DO
375 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1),LTITR)
376 CALL ANCMSG(MSGID=184,
377 . MSGTYPE=MSGERROR,
378 . ANMODE=ANINFO,
379 . C1='property',
380 . I1=PROP_ID,
381 . C2='property',
382 . C3=TITR,
383 . I2=IDSK)
384 10 CONTINUE
385 ENDIF
386.OR..AND. IF ((IRP==22IRP==25)ISK==0) THEN
387 CALL ANCMSG(MSGID=1923,
388 . MSGTYPE=MSGERROR,
389 . ANMODE=ANINFO,
390 . C1='property',
391 . I1=PROP_ID,
392 . C2='property',
393 . C3=TITR,
394 . I2=IRP)
395 END IF
396
397 IPID0 = STACK_INFO%PID(1)
398 DO K=2,NPLY
399 IF (STACK_INFO%PID(K) == IPID0) THEN
400 CALL ANCMSG(MSGID=1584,MSGTYPE=MSGERROR,ANMODE=ANINFO_BLIND_2,
401 . I1=PROP_ID,
402 . I2=IPID0)
403 ENDIF
404 ENDDO
405
406 IF(ITHK == 0)ITHK=ITHK_D
407 IF(ISHEAR == 0)ISHEAR=ISHEA_D
408 IF(IPLAST == 0)IPLAST=IPLA_D
409!
410 IHBE = IGEO(10)
411 ISS = IGEO(5)
412
413 IF (DM == ZERO) IGEO(31) = 1
414 IGEO( 1) = PROP_ID
415 IGEO(2) = ISK
416 IGEO(5) = ISMSTR
417 IGEO(6) = IORTH ! IREP
418 IGEO(11) = IGTYP
419 IGEO(18) = ISH3N
420 IGEO(19) = ISHXFEM
421 IGEO(20) = ISROT
422 IGEO(14) = IRP
423!! IGEO(47) = IINT
424 !! is not necessary it done in translation : before 2017 igmat=-1
425 !! the new global mat is by default since 2017 version IGMAT IS USED GENERALLY > 0
426 IGEO(98) = IGMAT
427
428 GEO(3) = ISMSTR
429 GEO(7) = VX
430 GEO(8) = VY
431 GEO(9) = VZ
432 GEO(11) = ISTRAIN
433 GEO(12) = IGTYP
434 GEO(13) = HM
435 GEO(14) = HF
436 GEO(15) = HR
437 GEO(16) = DM
438 GEO(17) = DN
439 GEO(20) = VISC_INT ! for ply-xfem formulation
440 GEO(35) = ITHK
441 GEO(37) = ISHEAR
442 GEO(38) = ASHEAR
443 GEO(39) = IPLAST
444 GEO(42) = PTHK
445 GEO(43) = ONE
446 GEO(171)= IHBE ! double stockage
447 GEO(199)= ZSHIFT
448
449 IHBE=NINT(GEO(171))
450 IF(IHBE==0)THEN
451 GEO(171)=0
452 ELSEIF(IHBE==1)THEN
453 GEO(171)= 1
454 ELSEIF(IHBE==2)THEN
455 GEO(171)=0
456.AND..AND. ELSEIF(IHBE>=3IHBE<100IHBE/=4)THEN
457 GEO(171)=IHBE-1
458 ENDIF
459
460 ISTRAIN=NINT(GEO(11))
461 IF(ISTRAIN==0)THEN
462 GEO(11)=0
463 ELSEIF(ISTRAIN==1)THEN
464 GEO(11)=1
465 ELSEIF(ISTRAIN==2)THEN
466 GEO(11)=0
467 ENDIF
468
469 ISHEAR = GEO(37)
470 IF(ISHEAR==0)THEN
471 GEO(37)=0
472 ELSEIF(ISHEAR==1)THEN
473 GEO(37)=1
474 ELSEIF(ISHEAR==2)THEN
475 GEO(37)=0
476 ENDIF
477!! N1 it not used only with old input format
478!! IGEO(IPPID + N1) = IPOS
479 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1),LTITR)
480
481 IF(IS_ENCRYPTED)THEN
482 WRITE(IOUT,1000)PROP_ID
483 1000 FORMAT(
484 & 5X,'composite layered shell property set'/,
485 & 5X,'------------------------------------'/,
486 & 5X,'property set number . . . . . . . . . .=',I10/,
487 & 5X,'confidential data'//)
488 ELSE
489 IF(ISK==0)THEN
490.AND. IF (IHBE > 11IHBE < 29) THEN
491 WRITE(IOUT,2112)PROP_ID,ISTRAIN,GEO(1),ISS,IHBE,
492 . ISH3N,IGEO(20),
493 . GEO(16),GEO(13),GEO(38),PTHK,FAIL_SHELL,ISHEAR,ITHK,
494 . IPLAST,IREP,GEO(7),GEO(8),GEO(9),IGEO(14)
495 ELSE
496 WRITE(IOUT,2110)PROP_ID,ISTRAIN,GEO(1),ISS,IHBE, ! nly de moins
497 . ISH3N,
498 . GEO(13),GEO(14),GEO(15),GEO(16),
499 . GEO(38),PTHK,FAIL_SHELL,ISHEAR,ITHK,IPLAST,IREP,
500 . GEO(7),GEO(8),GEO(9),IGEO(14)
501 ENDIF
502 ELSE
503.AND. IF (IHBE > 11IHBE < 29) THEN
504 WRITE(IOUT,2113)PROP_ID,ISTRAIN,GEO(1),ISS,IHBE,
505 . ISH3N,IGEO(20),
506 . GEO(16),GEO(13),GEO(38),PTHK,FAIL_SHELL,ISHEAR,ITHK,
507 . IPLAST,IREP,IDSK,IGEO(14)
508 ELSE
509 WRITE(IOUT,2111)PROP_ID,ISTRAIN,GEO(1),ISS,IHBE,
510 . ISH3N,
511 . GEO(13),GEO(14),GEO(15),GEO(16),GEO(38),PTHK,
512 . FAIL_SHELL,ISHEAR,ITHK,IPLAST,IREP,IDSK,IGEO(14)
513 ENDIF
514 ENDIF
515 IF(ISHXFEM > 0) WRITE(IOUT, 2114)
516 ENDIF
517
518
519!!! IF (NLY>NLYMAX) THEN
520!! CALL ANCMSG(MSGID=28,
521!! . MSGTYPE=MSGERROR,
522!! . ANMODE=ANINFO_BLIND_1,
523!! . I1=IG,
524!! . C1=TITR,
525!! . I2=NLYMAX)
526!! ENDIF
527
528 NC = NPLY
529 ALLOCATE( IDMAT_INTP(NPLY),IDMAT_SUB(NISUB))
530 IDMAT_INTP = 0
531 IDMAT_SUB = 0
532 N1 = NPLY
533 GEO(6)=N1 + EM01
534 IGEO(4) = N1
535
536 IGEO(43) = NSUB ! number of substack
537 IGEO(44) = NISUB ! number of interface
538 DO 250 K = 1, NPLY
539 IMID = STACK_INFO%MID_IP(K)
540 IDMAT_INTP(K) = IMID
541.AND. IF( IMID == 0 ISHXFEM > 0) THEN
542 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1),LTITR)
543 CALL ANCMSG(MSGID=2019,
544 . MSGTYPE=MSGERROR,
545 . ANMODE=ANINFO_BLIND_2,
546 . I1=PROP_ID,
547 . C1=TITR,
548 . I2=IMID)
549 ENDIF
550 DO J=1,NUMMAT
551 IF(IPM(1,J) == IMID) THEN
552 STACK_INFO%MID_IP(K) = J
553 GO TO 250
554 ENDIF
555 ENDDO
556 IF(ISHXFEM > 0) THEN
557 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1),LTITR)
558 CALL ANCMSG(MSGID=2019,
559 . MSGTYPE=MSGERROR,
560 . ANMODE=ANINFO_BLIND_2,
561 . I1=PROP_ID,
562 . C1=TITR,
563 . I2=IMID)
564 ENDIF
565 STACK_INFO%MID_IP(K) = 0
566 250 CONTINUE
567
568 IF(IGEO(44) > 0) THEN
569 DO 300 K = 1, NISUB
570 IMID = STACK_INFO%ISUB (3*(K-1) + 3)
571 IDMAT_SUB(K) = IMID
572.AND. IF( IMID == 0 ISHXFEM > 0) THEN
573 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1),LTITR)
574 CALL ANCMSG(MSGID=31,
575 . MSGTYPE=MSGERROR,
576 . ANMODE=ANINFO_BLIND_2,
577 . I1=PROP_ID,
578 . C1=TITR,
579 . I2=IMID)
580 ENDIF
581 DO J=1,NUMMAT
582 IF(IPM(1,J) == IMID) THEN
583 STACK_INFO%ISUB (3*(K-1) + 3) = J
584 GO TO 300
585 ENDIF
586 ENDDO
587 IF(ISHXFEM > 0) THEN
588 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1),LTITR)
589 CALL ANCMSG(MSGID=31,
590 . MSGTYPE=MSGERROR,
591 . ANMODE=ANINFO_BLIND_2,
592 . I1=PROP_ID,
593 . C1=TITR,
594 . I2=IMID)
595 ENDIF
596 STACK_INFO%ISUB (3*(K-1) + 3) = 0
597 300 CONTINUE
598 ENDIF
599 IGEO(99) = IPOS
600 IF(NSUB > 0) THEN
601 KK = 0
602 DO II = 1,NSUB
603 IDSUB = STACK_INFO%SUB ( 2*(II - 1) + 1)
604 NPT_SUB = STACK_INFO%SUB ( 2*(II - 1) + 2)
605
606.EQV. IF(IS_ENCRYPTED .FALSE. )WRITE(IOUT,3000)IDSUB
607 DO K=1,NPT_SUB
608 M1= KK + K
609.EQV. IF(IS_ENCRYPTED .FALSE. ) THEN
610 WRITE(IOUT,2121)K,STACK_INFO%PID(M1),STACK_INFO%ANG(M1),
611 . STACK_INFO%POS(M1)
612 IF(ISHXFEM > 0) WRITE(IOUT,2122)IDMAT_INTP(M1),GEO(20)
613 ENDIF
614 STACK_INFO%ANG(M1)=STACK_INFO%ANG(M1)*PI/HUNDRED80
615 ENDDO
616 KK = KK + NPT_SUB
617 ENDDO
618 NISUB= IGEO(44)
619 DO K=1,NISUB
620 IPID1 =STACK_INFO%ISUB (3*(K - 1) + 1)
621 IPID2 =STACK_INFO%ISUB (3*(K - 1) + 2)
622 IMAT =STACK_INFO%ISUB (3*(K - 1) + 3)
623.EQV. IF( IS_ENCRYPTED .FALSE. ) THEN
624 WRITE(IOUT,3100)K
625 IF(ISHXFEM > 0) THEN
626 WRITE(IOUT,3200)IPID1,IPID2,IMAT
627 ELSE
628 WRITE(IOUT,3300)IPID1,IPID2
629 ENDIF
630 ENDIF
631 ENDDO
632 ELSE
633 DO N=1,N1
634.EQV. IF(IS_ENCRYPTED .FALSE. )THEN
635 WRITE(IOUT,2121)N,STACK_INFO%PID(N),STACK_INFO%ANG(N),
636 . STACK_INFO%POS(N)
637.AND. IF(N < N1 ISHXFEM > 0) WRITE(IOUT,2122)IDMAT_INTP(N),GEO(20)
638 ENDIF
639 STACK_INFO%ANG(N)=STACK_INFO%ANG(N)*PI/HUNDRED80
640 ENDDO
641 ENDIF
642
643 DEALLOCATE (IDMAT_INTP,IDMAT_SUB)
644
645 RETURN
646 2110 FORMAT(
647 & 5X,'composite stack shell property set ',
648 & 'with variable thicknesses and materials'/,
649 & 5X,'property set number . . . . . . . . . .=',I10/,
650!! & 5X,'number of layers. . . . . . . . . . . .=',I10/,
651 & 5X,'post processing strain flag . . . . . .=',I10/,
652 & 5X,'shell thickness . . . . . . . . . . . .=',1PG20.13/,
653 & 5X,'small strain flag . . . . . . . . . . .=',I10/,
654 & 5X,'shell formulation flag. . . . . . . . .=',I10/,
655 & 5X,'3node shell formulation flag. . . . . .=',I10/,
656 & 5X,'shell hourglass membrane
damping. . . .=
',1PG20.13/,
657 & 5X,'shell hourglass flexural
damping. . . .=
',1PG20.13/,
658 & 5X,'shell hourglass rotational
damping. . .=
',1PG20.13/,
659 & 5X,'shell membrane
damping. . . . . . . . .=
',1PG20.13/,
660 & 5X,'shear
area reduction factor . . . . . .=
',1PG20.13/,
661 & 5X,'element deletion PARAMETER. . . . . . .=',1PG20.13/,
662 & 5X,' > 0.0 : fraction of failed thickness ',/,
663 & 5X,' < 0.0 : fraction of failed layers/plys ',/,
664 & 5X,'shell failure flag. . . . . . . . . . .=',I10/,
665 & 5X,'shear formulation flag. . . . . . . . .=',I10/,
666 & 5X,'thickness variation flag. . . . . . . .=',i10/,
667 & 5x,'PLASTICITY FORMULATION FLAG . . . . . .=',i10/,
668 & 5x,'LOCAL ORTOTHROPY SYSTEM FLAG. . . . . .=',i10/,
669 & 5x,'X COMPONENT OF DIR 1 OF ORTHOTROPY. . .=',1pg20.13/,
670 & 5x,'Y COMPONENT OF DIR 1 OF ORTHOTROPY. . .=',1pg20.13/,
671 & 5x,'Z COMPONENT OF DIR 1 OF ORTHOTROPY. . .=',1pg20.13/,
672 & 5x,'REFERENCE DIRECTION FLAG IN SHELL PLANE=',i10/)
673 2111 FORMAT(
674 & 5x,'COMPOSITE STACK SHELL PROPERTY SET ',
675 & 'WITH VARIABLE THICKNESSES AND MATERIALS'/,
676 & 5x,'PROPERTY SET NUMBER . . . . . . . . . .=',i10/,
677
678 & 5x,'POST PROCESSING STRAIN FLAG . . . . . .=',i10/,
679 & 5x,'SHELL THICKNESS . . . . . . . . . . . .=',1pg20.13/,
680 & 5x,'SMALL STRAIN FLAG . . . . . . . . . . .=',i10/,
681 & 5x,'SHELL FORMULATION FLAG. . . . . . . . .=',i10/,
682 & 5x,'3NODE SHELL FORMULATION FLAG. . . . . .=',i10/,
683 & 5x,'SHELL HOURGLASS MEMBRANE DAMPING. . . .=',1pg20.13/,
684 & 5x,'SHELL HOURGLASS FLEXURAL DAMPING. . . .=',1pg20.13/,
685 & 5x,'SHELL HOURGLASS ROTATIONAL DAMPING. . .=',1pg20.13/,
686 & 5x,'SHELL MEMBRANE DAMPING. . . . . . . . .=',1pg20.13/,
687 & 5x,'SHEAR AREA REDUCTION FACTOR . . . . . .=',1pg20.13/,
688 & 5x,'ELEMENT DELETION PARAMETER. . . . . . .=',1pg20.13/,
689 & 5x,' > 0.0 : FRACTION OF FAILED THICKNESS ',/,
690 & 5x,' < 0.0 : FRACTION OF FAILED LAYERS/PLYS ',/,
691 & 5x,'SHELL FAILURE FLAG. . . . . . . . . . .=',i10/,
692 & 5x,'SHEAR FORMULATION FLAG. . . . . . . . .=',i10/,
693 & 5x,'THICKNESS VARIATION FLAG. . . . . . . .=',i10/,
694 & 5x,'PLASTICITY FORMULATION FLAG . . . . . .=',i10/,
695 & 5x,'LOCAL ORTOTHROPY SYSTEM FLAG. . . . . .=',i10/,
696 & 5x,'SKEW OF THE FIRST ORTHOTROPY DIRECTION.=',i10/,
697 & 5x,'REFERENCE DIRECTION FLAG IN SHELL PLANE=',i10/)
698 2112 FORMAT(
699 & 5x,'COMPOSITE STACK SHELL PROPERTY SET ',
700 & 'WITH VARIABLE THICKNESSES AND MATERIALS'/,
701 & 5x,'PROPERTY SET NUMBER . . . . . . . . . .=',i10/,
702
703 & 5x,'POST PROCESSING STRAIN FLAG . . . . . .=',i10/,
704 & 5x,'SHELL THICKNESS . . . . . . . . . . . .=',1pg20.13/,
705 & 5x,'SMALL STRAIN FLAG . . . . . . . . . . .=',i10/,
706 & 5x,'SHELL FORMULATION FLAG. . . . . . . . .=',i10/,
707 & 5x,'3NODE SHELL FORMULATION FLAG. . . . . .=',i10/,
708 & 5x,'DRILLING D.O.F. FLAG . . . . . . . . .=',i10/,
709 & 5x,'SHELL MEMBRANE DAMPING. . . . . . . . .=',1pg20.13/,
710 & 5x,'SHELL NUMERICAL DAMPING . . . . . . . .=',1pg20.13/,
711 & 5x,'SHEAR AREA REDUCTION FACTOR . . . . . .=',1pg20.13/,
712 & 5x,'ELEMENT DELETION PARAMETER. . . . . . .=',1pg20.13/,
713 & 5x,' > 0.0 : FRACTION OF FAILED THICKNESS ',/,
714 & 5x,' < 0.0 : FRACTION OF FAILED LAYERS/PLYS ',/,
715 & 5x,'SHELL FAILURE FLAG. . . . . . . . . . .=',i10/,
716 & 5x,'SHEAR FORMULATION FLAG. . . . . . . . .=',i10/,
717 & 5x,'THICKNESS VARIATION FLAG. . . . . . . .=',i10/,
718 & 5x,'PLASTICITY FORMULATION FLAG . . . . . .=',i10/,
719 & 5x,'LOCAL ORTOTHROPY SYSTEM FLAG. . . . . .=',i10/,
720 & 5x,'X COMPONENT OF DIR 1 OF ORTHOTROPY. . .=',1pg20.13/,
721 & 5x,'Y COMPONENT OF DIR 1 OF ORTHOTROPY. . .=',1pg20.13/,
722 & 5x,'Z COMPONENT OF DIR 1 OF ORTHOTROPY. . .=',1pg20.13/,
723 & 5x,'REFERENCE DIRECTION FLAG IN SHELL PLANE=',i10/)
724 2113 FORMAT(
725 & 5x,'COMPOSITE STACK SHELL PROPERTY SET ',
726 & 'WITH VARIABLE THICKNESSES AND MATERIALS'/,
727 & 5x,'PROPERTY SET NUMBER . . . . . . . . . .=',i10/,
728
729 & 5x,'POST PROCESSING STRAIN FLAG . . . . . .=',i10/,
730 & 5x,'SHELL THICKNESS . . . . . . . . . . . .=',1pg20.13/,
731 & 5x,'SMALL STRAIN FLAG . . . . . . . . . . .=',i10/,
732 & 5x,'SHELL FORMULATION FLAG. . . . . . . . .=',i10/,
733 & 5x,'3NODE SHELL FORMULATION FLAG. . . . . .=',i10/,
734 & 5x,'DRILLING D.O.F. FLAG . . . . . . . . .=',i10/,
735 & 5x,'SHELL MEMBRANE DAMPING. . . . . . . . .=',1pg20.13/,
736 & 5x,'SHELL NUMERICAL DAMPING . . . . . . . .=',1pg20.13/,
737 & 5x,'SHEAR AREA REDUCTION FACTOR . . . . . .=',1pg20.13/,
738 & 5x,'ELEMENT DELETION PARAMETER. . . . . . .=',1pg20.13/,
739 & 5x,' > 0.0 : FRACTION OF FAILED THICKNESS ',/,
740 & 5x,' < 0.0 : FRACTION OF FAILED LAYERS/PLYS ',/,
741 & 5x,'SHELL FAILURE FLAG. . . . . . . . . . .=',i10/,
742 & 5x,'SHEAR FORMULATION FLAG. . . . . . . . .=',i10/,
743 & 5x,'THICKNESS VARIATION FLAG. . . . . . . .=',i10/,
744 & 5x,'PLASTICITY FORMULATION FLAG . . . . . .=',i10/,
745 & 5x,'LOCAL ORTOTHROPY SYSTEM FLAG. . . . . .=',i10/,
746 & 5x,'SKEW OF THE FIRST ORTHOTROPY DIRECTION.=',i10
747 & 5x,'REFERENCE DIRECTION FLAG IN SHELL PLANE=',i10/)
748 2114 FORMAT(
749 & 5x,'PLY XFEM SHELL COMPOSITE FORMULATION IS ACTIVATED '/)
750 2121 FORMAT(
751 & 5x,' PLY ',i3/,
752 & 5x,' PLY PID NUMBER . . . . . . . . .=',i10/
753 & 5x,' ANGLE (DIR 1,PROJ(DIR 1 / SHELL).=',1pg20.13/,
754 & 5x,' POSITION. . . . . . . . . . . . .=',1pg20.13/)
755 2122 FORMAT(
756 & 5x,' INTER-PLY MID NUMBER . . . . . .=',i10/
757 & 5x,' INTER-PLY SHELL DAMPING . . . . . .=',1pg20.13/)
758 3000 FORMAT(
759 & 5x,' COMPOSITE SUBSTACK SHELL ID . . . . . . =',i10/ )
760 3100 FORMAT(
761 & 5x,' INTERFACE NUMBER BETWEEN-SUBSTACK . . .:',i10/ )
762 3200 FORMAT(
763 & 5x,' INTER-PLY_1 PID NUMBER . . . . . =',i10/,
764 & 5x,' INTER-PLY_2 PID NUMBER . . . . . .=',i10/,
765 & 5x,' INTER-PLY MID NUMBER . . . . . . =',i10/)
766 3300 FORMAT(
767 & 5x,' INTER-PLY_1 PID NUMBER . . . . . =',i10/,
768 & 5x,' INTER-PLY_2 PID NUMBER . . . . . .=',i10/)
subroutine damping(nodft, nodlt, v, vr, a, ar, damp, ms, in, igrnod, dim, itask, weight, tagslv_rby, wfext)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
subroutine area(d1, x, x2, y, y2, eint, stif0)
integer, parameter nchartitle