45 . GEO_STACK ,IGEO_STACK ,PM ,IPM ,ISKN ,
46 . PROP_ID ,RTRANS ,SUB_ID ,STACK_INFO,
47 . TITR ,UNITAB ,LSUBMODEL ,DEFAULTS_SHELL)
61#include "implicit_f.inc"
73 INTEGER,
INTENT(IN) :: PROP_ID,SUB_ID
74 INTEGER,
INTENT(INOUT) :: IGEO_STACK(NPROPGI)
75 INTEGER,
INTENT(IN) :: IPM(NPROPMI,NUMMAT)
76 INTEGER :: ISKN(LISKN,*)
77 my_real,
INTENT(INOUT) :: geo_stack(npropg)
78 my_real,
INTENT(IN) :: pm(npropm,nummat),rtrans(ntransf,*)
79 CHARACTER(LEN = NCHARTITLE) :: TITR
80 TYPE (UNIT_TYPE_),
INTENT(IN) :: UNITAB
81 TYPE (SUBMODEL_DATA),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
83 TYPE(shell_defaults_),
INTENT(IN) :: DEFAULTS_SHELL
87 INTEGER :: I,J,K,KK,M1,ISHELL,ISH3N,ISMSTR,ISROT,ISTRAIN,IINT,ITHK,
88 . IORTH,IPOS,IGMAT,ISHEAR,IPLAST,NPLY,NP,NSUB,NISUB,IGTYP,IMID,
89 . ISK,IDSK,PLY_ID,IPID0,IDSUB,INTER,IS,LAMIN,IPID1,IPID2,NPT_SUB,IRP,
91 INTEGER IHBE_D,,ISTR_D,ITHK_D,ISHEA_D,ISST_D,
92 . ISH3N_D, ISTRA_D,NPTS_D,IDRIL_D
93 my_real :: PTHK,ZSHIFT,HM,HF,HR,,DN,ASHEAR,VX,VY,VZ,FAILEXP,CVIS,
94 .
norm,ang,pos,pthkly,weight
95 LOGICAL :: IS_AVAILABLE, IS_ENCRYPTED, LFOUND
97 is_available = .false.
98 is_encrypted = .false.
106 ihbe_d = defaults_shell%ishell
107 ish3n_d= defaults_shell%ish3n
108 isst_d = defaults_shell%ismstr
109 ipla_d = defaults_shell%iplas
110 ithk_d = defaults_shell%ithick
111 idril_d= defaults_shell%idrill
125 CALL hm_get_intv(
'LAM_Ishell', ishell, is_available, lsubmodel)
127 CALL hm_get_intv(
'LAM_ISH3N' , ish3n , is_available, lsubmodel)
129 CALL hm_get_floatv(
'P_Thick_Fail', pthk, is_available, lsubmodel, unitab)
130 CALL hm_get_floatv(
'LAM_Z0' , zshift, is_available, lsubmodel, unitab)
133 CALL hm_get_floatv(
'LAM_Hm', hm, is_available, lsubmodel, unitab)
134 CALL hm_get_floatv(
'LAM_Hf', hf, is_available, lsubmodel, unitab)
135 CALL hm_get_floatv(
'LAM_Hr', hr, is_available, lsubmodel, unitab)
136 CALL hm_get_floatv(
'LAM_Dm', dm, is_available, lsubmodel, unitab)
137 CALL hm_get_floatv(
'LAM_Dn', dn, is_available, lsubmodel, unitab)
140 CALL hm_get_floatv(
'LAM_Ashear',ashear ,is_available, lsubmodel, unitab)
145 CALL hm_get_floatv(
'LAM_Vx' ,vx ,is_available, lsubmodel, unitab)
146 CALL hm_get_floatv(
'LAM_Vy' ,vy ,is_available, lsubmodel, unitab)
147 CALL hm_get_floatv(
'LAM_Vz' ,vz ,is_available, lsubmodel, unitab)
148 CALL hm_get_intv(
'LAM_SKEW_CSID' ,idsk ,is_available, lsubmodel)
149 CALL hm_get_intv(
'LAM_Iorth' ,iorth ,is_available, lsubmodel)
150 CALL hm_get_intv(
'LAM_Ipos' ,ipos ,is_available, lsubmodel)
151 CALL hm_get_intv(
'LAM_Ip',irp,is_available,lsubmodel)
157 CALL hm_get_intv(
'laminateconfig' ,lamin, is_available, lsubmodel)
163 CALL hm_get_intv(
'sublaminateidlistmax' ,nsub, is_available, lsubmodel)
164 CALL hm_get_intv(
'interfacepairsize' ,nisub, is_available, lsubmodel)
169 stack_info%SUB(2*(is-1) + 1) = idsub
170 stack_info%SUB(2*(is-1) + 2) = npt_sub
180 IF (pthkly == zero) pthkly = one
181 pthkly =
min(pthkly, one)
183 IF (weight == zero) weight = one
184 stack_info%PID(nply) = ply_id
185 stack_info%ANG(nply) = ang
186 stack_info%POS(nply) = pos
187 stack_info%THKLY(nply) = pthkly
188 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_max ,is_available ,lsubmodel)
213 IF (pthkly == zero) pthkly = one-em06
214 pthkly =
min(pthkly, one)
215 pthkly =
max(pthkly,-one)
216 IF (weight == zero) weight = one
217 stack_info%PID(nply) = ply_id
218 stack_info%ANG(nply) = ang
219 stack_info%POS(nply) = pos
220 stack_info%THKLY(nply) = pthkly
221 stack_info%WEIGHT(nply) = weight
228 IF (pthk == zero) pthk = one-em06
229 pthk =
min(pthk, one)
230 pthk =
max(pthk,-one)
231 IF (ishell == 0) ishell = ihbe_d
233 IF (ish3n == 0) ish3n = ish3n_d
234 IF (ithk == 0) ithk = ithk_d
235 IF (ithk_d==-2) ithk = -1
237 IF (ishear == 1)
THEN
239 ELSEIF (ishear==2)
THEN
243 IF (ipla_d == -2) iplast = -1
245 IF (isrot == 0) isrot = idril_d
246 IF (isrot == 2) isrot = 0
247 IF (ismstr== 10 .AND. isrot > 0 .AND. idrot == 0) idrot = 1
248 IF (ismstr == 0) ismstr = 2
249 IF (ismstr == 3.AND. ishell /= 0 .AND. ishell /= 2)
THEN
251 CALL ancmsg(msgid=319, msgtype=msgwarning, anmode=aninfo_blind_2,
255 IF (iint /= 1 .AND. iint /= 2) iint = 1
257 IF (ashear == zero) ashear = five_over_6
259 IF (ishell == 4 .AND. ish3n==0 .AND. ish3n_d == 1)
THEN
260 CALL ancmsg(msgid=680, msgtype=msgwarning, anmode=aninfo_blind_1,
261 . i1=prop_id, c1=titr)
263 IF (ishell==22 .OR. ishell==23)
THEN
264 CALL ancmsg(msgid=539, msgtype=msgwarning, anmode=aninfo_blind_1,
265 . i1=prop_id, c1=titr)
269 IF (ishell == 24)
THEN
270 IF (cvis==zero) cvis = one
271 IF (dn == zero) dn = zep015
274 IF (ishell == 3)
THEN
275 IF (hm == zero) hm = em01
276 IF (hf == zero) hf = em01
277 IF (hr == zero) hr = em02
279 IF (hm == zero) hm = em02
280 IF (hf == zero) hf = em02
281 IF (hr == zero) hr = em02
283 IF (ishell > 11 .AND. ishell < 29)
THEN
288 norm = sqrt(vx*vx+vy*vy+vz*vz)
289 IF (
norm < em10)
THEN
311 IF (sub_id > 0)
CALL subrotvect(vx,vy,vz,rtrans,sub_id,lsubmodel)
318 IF (idsk == iskn(4,i+1))
THEN
324 CALL ancmsg(msgid=184, msgtype=msgerror, anmode=aninfo,
332 IF (irp==22.AND.isk==0)
THEN
343 ipid0 = stack_info%PID(1)
345 IF (stack_info%PID(k) == ipid0)
THEN
346 CALL ancmsg(msgid=1584,msgtype=msgerror,anmode=aninfo_blind_2,
353 imid = stack_info%MID_IP(k)
355 IF (ipm(1,j) == imid)
THEN
356 stack_info%MID_IP(k) = j
360 stack_info%MID_IP(k) = 0
366 imid = stack_info%ISUB (3*(k-1) + 3)
368 IF (ipm(1,j) == imid)
THEN
369 stack_info%ISUB (3*(k-1) + 3) = j
373 stack_info%ISUB (3*(k-1) + 3) = 0
377 IF (dm == zero) igeo_stack(31) = 1
378 igeo_stack(1) = prop_id
381 igeo_stack(5) = ismstr
382 igeo_stack(6) = iorth
383 igeo_stack(10) = ishell
384 igeo_stack(11) = igtyp
385 igeo_stack(18) = ish3n
386 igeo_stack(20) = isrot
387 igeo_stack(43) = nsub
388 igeo_stack(44) = nisub
389 igeo_stack(47) = iint
391 igeo_stack(98) = igmat
392 igeo_stack(99) = ipos
395 geo_stack(3) = ismstr
400 geo_stack(11) = istrain
401 geo_stack(12) = igtyp
408 geo_stack(37) = ishear
409 geo_stack(39) = iplast
410 geo_stack(38) = ashear
413 geo_stack(199)= zshift
414 geo_stack(212) = geo_stack(212) * pi / hundred80
417 ELSEIF (ishell == 1)
THEN
419 ELSEIF (ishell == 2)
THEN
421 ELSEIF (ishell >= 3 .AND. ishell < 100 .AND. ishell /= 4)
THEN
422 geo_stack(171)=ishell-1
427 IF (is_encrypted)
THEN
430 WRITE(iout,1200) prop_id
432 IF (ishell > 11 .AND. ishell < 29)
THEN
433 WRITE(iout,2100)istrain,ismstr,ishell,ish3n,isrot,
434 . geo_stack(16),geo_stack(13),geo_stack(38),pthk,ishear,ithk,
435 . iplast,iorth,geo_stack(7),geo_stack(8),geo_stack(9),igeo_stack(47),igeo_stack(14)
437 WRITE(iout,2200)istrain,ismstr,ishell,ish3n,isrot,
438 . hm,hf,hr,dm,ashear,
439 . pthk,ishear,ithk,iplast,iorth,
440 . vx,vy,vz,iint,igeo_stack(14)
443 IF (ishell > 11 .AND. ishell < 29)
THEN
444 WRITE(iout,2300)istrain,ismstr,ishell,ish3n,isrot,
445 . geo_stack(16),geo_stack(13),geo_stack(38),pthk,ishear,ithk,
446 . iplast,iorth,idsk,igeo_stack(47),igeo_stack(14)
448 WRITE(iout,2400)istrain,ismstr,ishell,ish3n,hm,hf,hr,dm,
449 . ashear,pthk,ishear,ithk,iplast,iorth,idsk,iint,igeo_stack(14)
456 idsub = stack_info%SUB(2*(is - 1) + 1)
457 npt_sub = stack_info%SUB(2*(is - 1) + 2)
461 WRITE(iout,2800)k,stack_info%PID(m1),stack_info%ANG(m1),
462 . stack_info%THKLY(m1),stack_info%WEIGHT(m1)
463 stack_info%ANG(m1)=stack_info%ANG(m1)*pi/hundred80
469 ipid1 = stack_info%ISUB(3*(k - 1) + 1)
470 ipid2 = stack_info%ISUB(3*(k - 1) + 2)
472 WRITE(iout,3300) ipid1,ipid2
478 WRITE(iout,2800)i,stack_info%PID(i),stack_info%ANG(i),
479 . stack_info%THKLY(i),stack_info%WEIGHT(i)
480 stack_info%ANG(i) = stack_info%ANG(i)*pi/hundred80
487 & 5x,
' COMPOSITE STACK SHELL PROPERTY SET '/,
488 & 5x,
' CONFIDENTIAL DATA'//)
490 & 5x,
'COMPOSITE STACK SHELL OBJECT SET ',
491 &
'WITH VARIABLE THICKNESSES AND MATERIALS ',
492 &
'AND VARIABLE NUMBER OF INTEGRATION POINTS THROUGH EACH LAYER'/,
493 & 5x,
'STACK SET NUMBER . . . . . . . . . .=',i10/)
495 & 5x,
'POST PROCESSING STRAIN FLAG . . . . . .=',i10/,
496 & 5x,
'SMALL STRAIN FLAG . . . . . . . . . . .=',i10/,
497 & 5x,
'SHELL FORMULATION FLAG. . . . . . . . .=',i10/,
498 & 5x,'3node shell formulation flag. . . . . .=
',I10/,
499 & 5X,'drilling d.o.f. flag . . . . . . . . .=
',I10/,
500 & 5X,'shell membrane
damping. . . . . . . . .=
',1PG20.13/,
501 & 5X,'shell numerical
damping . . . . . . . .=
',1PG20.13/,
502 & 5X,'shear
area reduction factor . . . . . .=
',1PG20.13/,
503 & 5X,'element deletion
PARAMETER. . . . . . .=
',1PG20.13/,
504 & 5X,' > 0.0 : fraction of failed thickness
',/,
505 & 5X,' < 0.0 : fraction of failed layers/plys
',/,
506 & 5X,'shear formulation flag. . . . . . . . .=
',I10/,
507 & 5X,'thickness variation flag. . . . . . . .=
',I10/,
508 & 5X,'plasticity formulation flag . . . . . .=
',I10/,
509 & 5X,'local ortothropy system flag. . . . . .=
',I10/,
510 & 5X,'x component of dir 1 of orthotropy. . .=
',1PG20.13/,
511 & 5X,'y component of dir 1 of orthotropy. . .=
',1PG20.13/,
512 & 5X,'z component of dir 1 of orthotropy. . .=
',1PG20.13/,
513 & 5X,'integration formulation flag. . . . . .=
',I10/,
514 & 5X,'reference direction flag in shell plane=
',I10/)
516 & 5X,'post processing strain flag . . . . . .=
',I10/,
517 & 5X,'small strain flag . . . . . . . . . . .=
',I10/,
518 & 5X,'shell formulation flag. . . . . . . . .=
',I10/,
519 & 5X,'3node shell formulation flag. . . . . .=
',I10/,
520 & 5X,'drilling d.o.f. flag . . . . . . . . .=
',I10/,
521 & 5X,'shell hourglass membrane
',1PG20.13/,
522 & 5X,'shell hourglass flexural
damping. . . .=
',1PG20.13/,
523 & 5X,'shell hourglass rotational
damping. . .=
',1PG20.13/,
524 & 5X,'shell membrane
damping. . . . . . . . .=
',1PG20.13/,
525 & 5X,'shear
area reduction factor . . . . . .=
',1PG20.13/,
526 & 5X,'element deletion
PARAMETER. . . . . . .=
',1PG20.13/,
527 & 5X,' > 0.0 : fraction of failed thickness
',/,
528 & 5X,' < 0.0 : fraction of failed
',/,
529 & 5X,'shear formulation flag. . . . . . . . .=
',I10/,
530 & 5X,'thickness variation flag
',I10/,
531 & 5X,'plasticity formulation flag . . . . . .=
',I10/,
532 & 5X,'local ortothropy system flag. . . . . .=
',I10/,
533 & 5X,'x component of dir 1 of orthotropy. . .=
',1PG20.13/,
534 & 5X,'y component of dir 1 of orthotropy. . .=
',1PG20.13/,
535 & 5X,'z component of dir 1 of orthotropy. . .=
',1PG20.13/,
536 & 5X,'integration formulation flag. . . . . .=',i10/,
537 & 5x,
'REFERENCE DIRECTION FLAG IN SHELL PLANE=',i10/)
539 & 5x,
'POST PROCESSING STRAIN FLAG . . . . . .=',i10
540 & 5x,
'SMALL STRAIN FLAG . . . . . . . . . . .=',i10/,
541 & 5x,
'SHELL FORMULATION FLAG. . . . . . . . .=',i10/,
542 & 5x,
'3NODE SHELL FORMULATION FLAG. . . . . .=',i10/,
543 & 5x,
'DRILLING D.O.F. FLAG . . . . . . . . .=',i10/,
544 & 5x,
'SHELL MEMBRANE DAMPING. . . . . . . . .=',1pg20.13
545 & 5x,
'SHELL NUMERICAL DAMPING . . . . . . . .='
546 & 5x,
'SHEAR AREA REDUCTION FACTOR . . . . . .='
547 & 5x,
'ELEMENT DELETION PARAMETER. . . . . . .=',1pg20.13/,
548 & 5x,
' > 0.0 : FRACTION OF FAILED THICKNESS ',/,
549 & 5x,
' < 0.0 : FRACTION OF FAILED LAYERS/PLYS ',/,
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,
'SHEAR AREA REDUCTION FACTOR . . . . . .=',1pg20.13/,
570 & 5x,
'SHEAR FORMULATION FLAG. . . . . . . . .=',i10/,
571 & 5x,
'THICKNESS VARIATION FLAG. . . . . . . .=',i10/,
572 & 5x,
'PLASTICITY FORMULATION FLAG . . . . . .=',i10/,
573 & 5x,
'LOCAL ORTOTHROPY SYSTEM FLAG. . . . . .=',i10/,
574 & 5x,
'SKEW OF THE FIRST ORTHOTROPY DIRECTION.=',i10/,
575 & 5x,
'INTEGRATION FORMULATION FLAG. . . . . .=',i10/,
576 & 5x,
'REFERENCE DIRECTION FLAG IN SHELL PLANE=',i10/)
579 & 5x,
' PLY PID NUMBER . . . . . . . . .=',i10/
580 & 5x,
' ANGLE (DIR 1,PROJ(DIR 1 / SHELL).=',1pg20.13/,
581 & 5x,
' PLY FAILURE PARAMETER . . . . . .=',1pg20.13/,
582 & 5x,
' > 0.0 : FRACTION OF FAILED THICKNESS ',/,
583 & 5x,
' < 0.0 : FRACTION OF FAILED INTG. POINTS',/,
584 & 5x,
' WEIGHT FACTOR FOR PLY FAILURE . .=',1pg20.13/)
586 & 5x,
' COMPOSITE SUBSTACK SHELL NUMBER . . . =',i10/ )
588 & 5x,
' INTERFACE NUMBER BETWEEN-SUBSTACK . .:',i10
590 & 5x,
' INTER-PLY_1 PID NUMBER . . . . . =',i10/,
591 & 5x,
' INTER-PLY_2 PID NUMBER . . . . . .=',i10/)