45 . GEO ,IGEO ,PM ,IPM ,ISKN ,
46 . PROP_ID ,PROP_TAG ,RTRANS ,SUB_ID ,STACK_INFO,
47 . TITR ,UNITAB ,LSUBMODEL,DEFAULTS_SHELL)
61#include
"implicit_f.inc"
69#include "tablen_c.inc"
74 INTEGER,
INTENT(IN) :: PROP_ID,SUB_ID
75 INTEGER,
INTENT(INOUT) :: IGEO(NPROPGI)
76 INTEGER,
INTENT(IN) :: IPM(NPROPMI,*)
77 INTEGER :: ISKN(LISKN,*)
78 my_real,
INTENT(INOUT) :: geo(npropg)
79 my_real,
INTENT(IN) :: pm(npropm,*),rtrans(ntransf,*)
80 CHARACTER(LEN = NCHARTITLE) :: TITR
81 TYPE (PROP_TAG_) ,
DIMENSION(0:MAXPROP) :: PROP_TAG
82 TYPE (UNIT_TYPE_),
INTENT(IN) :: UNITAB
83 TYPE (SUBMODEL_DATA),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
85 TYPE(shell_defaults_),
INTENT(IN) :: DEFAULTS_SHELL
89 INTEGER :: I,J,K,KK,M1,ISHELL,ISH3N,ISMSTR,ISROT,ISTRAIN,IINT,ITHK,
90 . IORTH,IPOS,IGMAT,ISHEAR,IPLAST,NPLY,NSUB,NISUB,IGTYP,IMID,
91 . ISK,IDSK,PLY_ID,IPID0,IDSUB,IS,LAMIN,IPID1,IPID2,NPT_SUB,
93 INTEGER IHBE_D,IPLA_D,ITHK_D,ISHEA_D,ISST_D,
94 . ISH3N_D, ISTRA_D,NPTS_D,
95 my_real :: PTHK,ZSHIFT,HM,HF,HR,DM,DN,ASHEAR,VX,VY,VZ,FAILEXP,CVIS,
96 .
norm,ang,pos,pthkly,weight
97 LOGICAL :: , IS_ENCRYPTED
99 is_available = .false.
100 is_encrypted = .false.
109 ihbe_d = defaults_shell%ishell
110 ish3n_d= defaults_shell%ish3n
111 isst_d = defaults_shell%ismstr
112 ipla_d = defaults_shell%iplas
113 ithk_d = defaults_shell%ithick
114 idril_d= defaults_shell%idrill
128 CALL hm_get_intv(
'Ishell', ishell, is_available, lsubmodel)
129 CALL hm_get_intv(
'Ismstr', ismstr, is_available, lsubmodel)
130 CALL hm_get_intv(
'ISH3N' , ish3n , is_available, lsubmodel)
131 CALL hm_get_intv(
'Idrill', isrot , is_available, lsubmodel)
132 CALL hm_get_floatv(
'P_Thick_Fail', pthk, is_available, lsubmodel, unitab)
133 CALL hm_get_floatv(
'Z0' , zshift, is_available, lsubmodel, unitab)
135 CALL hm_get_floatv(
'Hm', hm, is_available, lsubmodel, unitab)
136 CALL hm_get_floatv(
'Hf', hf, is_available, lsubmodel, unitab)
137 CALL hm_get_floatv(
'Hr', hr, is_available, lsubmodel, unitab)
138 CALL hm_get_floatv(
'Dm', dm, is_available, lsubmodel, unitab)
139 CALL hm_get_floatv(
'Dn', dn, is_available, lsubmodel, unitab)
142 CALL hm_get_floatv(
'AREA_SHEAR',ashear ,is_available, lsubmodel, unitab)
143 CALL hm_get_intv (
'Iint' ,iint ,is_available, lsubmodel)
144 CALL hm_get_intv (
'Ithick' ,ithk ,is_available, lsubmodel)
145 CALL hm_get_floatv(
'Fexp' ,failexp ,is_available, lsubmodel, unitab)
147 CALL hm_get_floatv(
'V_X' ,vx ,is_available, lsubmodel, unitab)
148 CALL hm_get_floatv(
'V_Y' ,vy ,is_available, lsubmodel, unitab)
149 CALL hm_get_floatv(
'V_Z' ,vz ,is_available, lsubmodel, unitab)
150 CALL hm_get_intv(
'SKEW_CSID' ,idsk ,is_available, lsubmodel)
151 CALL hm_get_intv(
'Iorth' ,iorth ,is_available, lsubmodel)
152 CALL hm_get_intv(
'Ipos' ,ipos ,is_available, lsubmodel)
159 CALL hm_get_intv(
'laminateconfig' ,lamin, is_available, lsubmodel)
165 CALL hm_get_intv(
'sublaminateidlistmax' ,nsub, is_available, lsubmodel)
166 CALL hm_get_intv(
'interfacepairsize' ,nisub, is_available, lsubmodel)
171 stack_info%SUB(2*(is-1) + 1) = idsub
172 stack_info%SUB(2*(is-1) + 2) = npt_sub
181 IF (pthkly == zero) pthkly = one-em06
182 pthkly =
min(pthkly, one)
183 pthkly =
max(pthkly,-one)
184 IF (weight == zero) weight = one
185 stack_info%PID(nply) = ply_id
186 stack_info%ANG(nply) = ang
187 stack_info%POS(nply) = pos
188 stack_info%THKLY(nply) = pthkly
189 stack_info%WEIGHT(nply) = weight
197 stack_info%ISUB(3*(i-1) + 1) = ipid1
198 stack_info%ISUB(3*(i-1) + 2) = ipid2
202 CALL hm_get_intv(
'plyidlistmax' ,nply ,is_available ,lsubmodel)
205 CALL HM_GET_FLOAT_ARRAY_INDEX('prop_phi
',ANG,I,IS_AVAILABLE,LSUBMODEL,UNITAB)
206 CALL HM_GET_FLOAT_ARRAY_INDEX('prop_zi
' ,POS,I,IS_AVAILABLE,LSUBMODEL,UNITAB)
207 CALL HM_GET_FLOAT_ARRAY_INDEX('p_thick_fail_lam
' ,PTHKLY,I,IS_AVAILABLE,LSUBMODEL,UNITAB)
208 CALL HM_GET_FLOAT_ARRAY_INDEX('f_weight_i
' ,WEIGHT,I,IS_AVAILABLE,LSUBMODEL,UNITAB)
210 IF (PTHKLY == ZERO) PTHKLY = ONE-EM06
211 PTHKLY = MIN(PTHKLY, ONE)
212 PTHKLY = MAX(PTHKLY,-ONE)
213 IF (WEIGHT == ZERO) WEIGHT = ONE
214 STACK_INFO%PID(I) = PLY_ID
215 STACK_INFO%ANG(I) = ANG
216 STACK_INFO%POS(I) = POS
217 STACK_INFO%THKLY(I) = PTHKLY
218 STACK_INFO%WEIGHT(I) = WEIGHT
219 ! old format of interply not supported
225 IF (PTHK == ZERO) PTHK = ONE-EM06
226 PTHK = MIN(PTHK, ONE)
227 PTHK = MAX(PTHK,-ONE)
228 IF (ISHELL == 0) ISHELL = IHBE_D
230 IF (ISH3N == 0) ISH3N = ISH3N_D
231 IF (ITHK == 0) ITHK = ITHK_D
232 IF (ITHK_D==-2) ITHK = -1
234 IF (ISHEAR == 1) THEN
236 ELSEIF (ISHEAR==2) THEN
240 IF (IPLA_D == -2) IPLAST = -1
242 IF (ISROT == 0) ISROT = IDRIL_D
243 IF (ISROT == 2) ISROT = 0
244.AND..AND.
IF (ISMSTR== 10 ISROT > 0 IDROT == 0) IDROT = 1 ! rotational dofs
245 IF (ISMSTR == 0) ISMSTR = 2
246.AND..AND.
IF (ISMSTR == 3 ISHELL /= 0 ISHELL /= 2) THEN
248 CALL ANCMSG(MSGID=319, MSGTYPE=MSGWARNING, ANMODE=ANINFO_BLIND_2,
252 IF (FAILEXP == ZERO) FAILEXP = ONE
253.AND.
IF (IINT /= 1 IINT /= 2) IINT = 1 ! by default - uniform distribution (integration)
255 IF (ASHEAR == ZERO) ASHEAR = FIVE_OVER_6
257.AND..AND.
IF (ISHELL == 4 ISH3N==0 ISH3N_D == 1) THEN
258 CALL ANCMSG(MSGID=680, MSGTYPE=MSGWARNING, ANMODE=ANINFO_BLIND_1,
259 . I1=PROP_ID, C1=TITR)
261.OR.
IF (ISHELL==22 ISHELL==23) THEN
262 CALL ANCMSG(MSGID=539, MSGTYPE=MSGWARNING, ANMODE=ANINFO_BLIND_1,
263 . I1=PROP_ID, C1=TITR)
267 IF (ISHELL == 24) THEN
268 IF (CVIS==ZERO) CVIS = ONE
269 IF (DN == ZERO) DN = ZEP015
272 IF (ISHELL == 3) THEN
273 IF (HM == ZERO) HM = EM01
274 IF (HF == ZERO) HF = EM01
275 IF (HR == ZERO) HR = EM02
277 IF (HM == ZERO) HM = EM02
278 IF (HF == ZERO) HF = EM02
279 IF (HR == ZERO) HR = EM02
281.AND.
IF (ISHELL > 11 ISHELL < 29) THEN
286 NORM = SQRT(VX*VX+VY*VY+VZ*VZ)
287 IF (NORM < EM10) THEN
292 CALL ANCMSG(MSGID=1922,
309 IF (SUB_ID > 0) CALL SUBROTVECT(VX,VY,VZ,RTRANS,SUB_ID,LSUBMODEL)
315 DO I=0,NUMSKW+MIN(1,NSPCOND)*NUMSPH+NSUBMOD
316 IF (IDSK == ISKN(4,I+1)) THEN
322 CALL ANCMSG(MSGID=184, MSGTYPE=MSGERROR, ANMODE=ANINFO,
330.OR..AND.
IF ((IRP==22IRP==25)ISK==0) THEN
331 CALL ANCMSG(MSGID=1923,
341 IPID0 = STACK_INFO%PID(1)
343 IF (STACK_INFO%PID(K) == IPID0) THEN
344 CALL ANCMSG(MSGID=1584,MSGTYPE=MSGERROR,ANMODE=ANINFO_BLIND_2,
351 IMID = STACK_INFO%MID_IP(K)
353 IF (IPM(1,J) == IMID) THEN
354 STACK_INFO%MID_IP(K) = J
358 STACK_INFO%MID_IP(K) = 0
364 IMID = STACK_INFO%ISUB (3*(K-1) + 3)
366 IF (IPM(1,J) == IMID) THEN
367 STACK_INFO%ISUB (3*(K-1) + 3) = J
371 STACK_INFO%ISUB (3*(K-1) + 3) = 0
375 IF (DM == ZERO) IGEO(31) = 1
380 IGEO(6) = IORTH ! IREP
385 IGEO(43) = NSUB ! number of substack
386 IGEO(44) = NISUB ! number of interface
394 GEO(6) = NPLY ! double stockage
412 GEO(212) = GEO(212) * PI / HUNDRED80
415 ELSEIF (ISHELL == 1) THEN
417 ELSEIF (ISHELL == 2) THEN
419.AND..AND.
ELSEIF (ISHELL >= 3 ISHELL < 100 ISHELL /= 4) THEN
425 IF (IS_ENCRYPTED) THEN
428 WRITE(IOUT,1200) PROP_ID
430.AND.
IF (ISHELL > 11 ISHELL < 29) THEN
431 WRITE(IOUT,2100)ISTRAIN,ISMSTR,ISHELL,ISH3N,ISROT,
432 . GEO(16),GEO(13),GEO(38),PTHK,FAILEXP,ISHEAR,ITHK,
433 . IPLAST,IORTH,GEO(7),GEO(8),GEO(9),IGEO(47),IGEO(14)
435 WRITE(IOUT,2200)ISTRAIN,ISMSTR,ISHELL,ISH3N,
436 . HM,HF,HR,DM,ASHEAR,
437 . PTHK,FAILEXP,ISHEAR,ITHK,IPLAST,IORTH,
438 . VX,VY,VZ,IINT,IGEO(14)
441.AND.
IF (ISHELL > 11 ISHELL < 29) THEN
442 WRITE(IOUT,2300)ISTRAIN,ISMSTR,ISHELL,ISH3N,ISROT,
443 . GEO(16),GEO(13),GEO(38),PTHK,FAILEXP,ISHEAR,ITHK,
444 . IPLAST,IORTH,IDSK,IGEO(47),IGEO(14)
446 WRITE(IOUT,2400)ISTRAIN,ISMSTR,ISHELL,ISH3N,HM,HF,HR,DM,ASHEAR,
447 . PTHK,FAILEXP,ISHEAR,ITHK,IPLAST,IORTH,IDSK,IINT,IGEO(14)
454 IDSUB = STACK_INFO%SUB(2*(IS - 1) + 1)
455 NPT_SUB = STACK_INFO%SUB(2*(IS - 1) + 2)
459 WRITE(IOUT,2800)K,STACK_INFO%PID(M1),STACK_INFO%ANG(M1),!STACK_INFO%POS(M1),
460 . STACK_INFO%THKLY(M1),STACK_INFO%WEIGHT(M1)
461 STACK_INFO%ANG(M1)=STACK_INFO%ANG(M1)*PI/HUNDRED80
467 IPID1 = STACK_INFO%ISUB(3*(K - 1) + 1)
468 IPID2 = STACK_INFO%ISUB(3*(K - 1) + 2)
470 WRITE(IOUT,3300) IPID1,IPID2
476 WRITE(IOUT,2800)I,STACK_INFO%PID(I),STACK_INFO%ANG(I),
477 . STACK_INFO%THKLY(I),STACK_INFO%WEIGHT(I)
478 STACK_INFO%ANG(I) = STACK_INFO%ANG(I)*PI/HUNDRED80
485 & 5X,' composite stack shell property set
'/,
486 & 5X,' confidential data
'//)
488 & 5X,'composite stack shell property
TYPE 51
'/,
489 & 5X,'with variable thicknesses and materials
'/,
490 & 5X,'and variable number of integration points through each layer
'/,
491 & 5X,'property set number . . . . . . . . . .=
',I10/)
493 & 5X,'post processing strain flag . . . . . .=
',I10/,
494 & 5X,'small strain flag . . . . . . . . . . .=
',I10/,
495 & 5X,'shell formulation flag. . . . . . . . .=
',I10/,
496 & 5X,'3node shell formulation flag. . . . . .=
',I10/,
497 & 5X,'drilling d.o.f. flag . . . . . . . . .=
',I10/,
498 & 5X,'shell membrane
damping. . . . . . . . .=
',1PG20.13/,
499 & 5X,'shell numerical
damping . . . . . . . .=
',1PG20.13/,
500 & 5X,'shear
area reduction factor . . . . . .=
',1PG20.13/,
501 & 5X,'element deletion
PARAMETER. . . . . . .=
',1PG20.13/,
502 & 5X,' > 0.0 : fraction of failed thickness
',/,
503 & 5X,' < 0.0 : fraction of failed layers/plys
',/,
504 & 5X,'composite failure exponent. . . . . . .=
',1PG20.13/,
505 & 5X,'shear formulation flag. . . . . . . . .=
',I10/,
506 & 5X,'thickness variation flag. . . . . . . .=
',I10/,
507 & 5X,'plasticity formulation flag . . . . . .=
',I10/,
508 & 5X,'local ortothropy system flag. . . . . .=
',I10/,
509 & 5X,'x component of dir 1 of orthotropy. . .=
',1PG20.13/,
510 & 5X,'y component of dir 1 of orthotropy. . .=
',1PG20.13/,
511 & 5X,'z component of dir 1 of orthotropy. . .=
',1PG20.13/,
512 & 5X,'integration formulation flag. . . . . .=
',I10/,
513 & 5X,'reference direction flag in shell plane=
',I10/)
515 & 5X,'post processing strain flag . . . . . .=
',I10/,
516 & 5X,'small strain flag . . . . . . . . . . .=
',I10/,
517 & 5X,'shell formulation flag. . . . . . . . .=
',I10/,
518 & 5X,'3node shell formulation flag. . . . . .=
',I10/,
519 & 5X,'shell hourglass membrane
damping. . . .=
',1PG20.13/,
520 & 5X,'shell hourglass flexural
damping. . . .=
',1PG20.13/,
521 & 5X,'shell hourglass rotational
damping. . .=
',1PG20.13/,
522 & 5X,'shell membrane
damping. . . . . . . . .=
',1PG20.13/,
523 & 5X,'shear
area reduction factor . . . . . .=
',1PG20.13/,
524 & 5X,'element deletion
PARAMETER. . . . . . .=
',1PG20.13/,
525 & 5X,' > 0.0 : fraction of failed thickness
',/,
526 & 5X,' < 0.0 : fraction of failed layers/plys
',/,
527 & 5X,'composite failure exponent. . . . . . .=
',1PG20.13/,
528 & 5X,'shear formulation flag. . . . . . . . .=
',I10/,
529 & 5X,'thickness variation flag. . . . . . . .=
',I10/,
530 & 5X,'plasticity formulation flag . . . . . .=
',I10/,
531 & 5X,'local ortothropy system flag. . . . . .=
',I10/,
532 & 5X,'x component of dir 1 of orthotropy. . .=
',1PG20.13/,
533 & 5X,'y component of dir 1 of orthotropy. . .=
',1PG20.13/,
534 & 5X,'z component of dir 1 of orthotropy. . .=
',1PG20.13/,
535 & 5X,'integration formulation flag. . . . . .=
',I10/,
536 & 5X,'reference direction flag in shell plane=
',I10/)
538 & 5X,'post processing strain flag . . . . . .=
',I10/,
539 & 5X,'small strain flag
',I10/,
540 & 5X,'shell formulation flag. . . . . . . . .=
',I10/,
541 & 5X,'3node shell formulation flag. . . . . .=
',I10/,
542 & 5X,'drilling d.o.f. flag . . . . . . . . .=
',I10/,
543 & 5X,'shell membrane
damping. . . . . . . . .=
',1PG20.13/,
544 & 5X,'shell numerical
damping . . . . . . . .=
',1PG20.13/,
545 & 5X,'shear
area reduction factor . . . . . .=
',1PG20.13/,
546 & 5X,'element deletion
PARAMETER. . . . . . .=
',1PG20.13/,
547 & 5X,' > 0.0 : fraction of failed thickness
',/,
548 & 5X,' < 0.0 : fraction of failed layers/plys
',/,
549 & 5X,'composite failure exponent. . . . . . .=
',1PG20.13/,
550 & 5X,'shear formulation flag. . . . . . . . .=
',I10/,
551 & 5X,'thickness variation flag. . . . . . . .=
',I10/,
552 & 5X,'plasticity formulation flag . . . . . .=
',I10/,
553 & 5X,'local ortothropy system flag. . . . . .=
',I10/,
554 & 5X,'skew of
the first orthotropy direction.=
',I10/,
555 & 5X,'integration formulation flag. . . . . .=
',I10/,
556 & 5X,'reference direction flag in shell plane=
',I10/)
558 & 5X,'post processing strain flag . . . . . .=
',I10/,
559 & 5X,'small strain flag . . . . . . . . . . .=
',I10/,
560 & 5X,'shell formulation flag. . . . . . . . .=
',I10/,
561 & 5X,'3node shell formulation flag. . . . . .=
',I10/,
562 & 5X,'shell hourglass membrane
damping. . . .=
',1PG20.13/,
563 & 5X,'shell hourglass flexural
damping. . . .=
',1PG20.13/,
564 & 5X,'shell hourglass rotational
damping. . .=
',1PG20.13/,
565 & 5X,'shell membrane
damping. . . . . . . . .=
',1PG20.13/,
566 & 5X,'element deletion
PARAMETER. . . . . . .=
',1PG20.13/,
567 & 5X,' > 0.0 : fraction of failed thickness
',/,
568 & 5X,' < 0.0 : fraction of failed layers/plys
',/,
569 & 5X,'composite failure exponent. . . . . . .=
',1PG20.13/,
570 & 5X,'shear
area reduction factor . . . . . .=
',1PG20.13/,
571 & 5X,'shear formulation flag. . . . . . . . .=
',I10/,
572 & 5X,'thickness variation flag. . . . . . . .=
',I10/,
573 & 5X,'plasticity formulation flag . . . . . .=
',I10/,
574 & 5X,'local ortothropy system flag. . . . . .=
',I10/,
575 & 5X,'skew of
the first orthotropy direction.=
',I10/,
576 & 5X,'integration formulation flag. . . . . .=
',I10/,
577 & 5X,'reference direction flag in shell plane=
',I10/)
580 & 5X,' ply pid number . . . . . . . . .=
',I10/
581 & 5X,' angle(dir 1,proj(dir 1 / shell).=
',1PG20.13/,
582 & 5X,' ply failure
PARAMETER . . . . . .=
',1PG20.13/,
583 & 5X,' > 0.0 : fraction of failed thickness
',/,
584 & 5X,' < 0.0 : fraction of failed intg. points
',/,
585 & 5X,' weight factor
for ply failure . .=
',1PG20.13/)
587 & 5X,' composite substack shell number . . . =
',I10/ )
589 & 5X,' INTERFACE number between-substack . .:',i10/ )
591 & 5x,
' INTER-PLY_1 PID NUMBER . . . . . =',i10/,
592 & 5x,
' INTER-PLY_2 PID NUMBER . . . . . .=',i10/)