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,NP,NSUB,NISUB,IGTYP,IMID,
91 . ISK,IDSK,PLY_ID,IPID0,IDSUB,INTER,IS,LAMIN,IPID1,IPID2,NPT_SUB,
93 INTEGER IHBE_D,IPLA_D,ISTR_D,ITHK_D,ISHEA_D,ISST_D,
94 . ISH3N_D, ISTRA_D,NPTS_D,IDRIL_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_AVAILABLE, IS_ENCRYPTED, LFOUND
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)
153 CALL HM_GET_INTV('ip
',IRP,IS_AVAILABLE,LSUBMODEL)
159 CALL HM_GET_INTV('laminateconfig' ,lamin, 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)
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
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 IF (ismstr== 10 .AND. isrot > 0 .AND. idrot == 0) idrot = 1
245 IF (ismstr == 0) ismstr = 2
246 IF (ismstr == 3.AND. ishell /= 0 .AND. ishell /= 2)
THEN
248 CALL ancmsg(msgid=319, msgtype=msgwarning, anmode=aninfo_blind_2,
252 IF (failexp == zero) failexp = one
253 IF (iint /= 1 .AND. iint /= 2) iint = 1
255 IF (ashear == zero) ashear = five_over_6
257 IF (ishell == 4 .AND. ish3n==0 .AND. ish3n_d == 1)
THEN
258 CALL ancmsg(msgid=680, msgtype=msgwarning, anmode=aninfo_blind_1,
259 . i1=prop_id, c1=titr)
261 IF (ishell==22 .OR. 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 IF (ishell > 11 .AND. ishell < 29)
THEN
286 norm = sqrt(vx*vx+vy*vy+vz*vz)
287 IF (
norm < em10)
THEN
309 IF (sub_id > 0)
CALL subrotvect(vx,vy,vz,rtrans,sub_id,lsubmodel)
316 IF (idsk == iskn(4,i+1))
THEN
322 CALL ancmsg(msgid=184, msgtype=msgerror, anmode=aninfo,
330 IF ((irp==22.OR.irp==25).AND.isk==0)
THEN
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
412 geo(212) = geo(212) * pi / hundred80
415 ELSEIF (ishell == 1)
THEN
417 ELSEIF (ishell == 2)
THEN
419 ELSEIF (ishell >= 3 .AND. ishell < 100 .AND. ishell /= 4)
THEN
425 IF (is_encrypted)
THEN
428 WRITE(iout,1200) prop_id
430 IF (ishell > 11 .AND. 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 IF (ishell > 11 .AND. 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),
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/)