47 . ISKN ,IGEO_STACK ,IPM ,NPC ,PLD ,
48 . UNITAB ,RTRANS ,LSUBMODEL ,IPART ,IDRAPEID,
49 . PLY_INFO ,STACK_INFO ,NUMGEO_STACK ,NPROP_STACK,DEFAULTS)
65#include "implicit_f.inc"
76 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
77 INTEGER IX(*),ITABM1(*),ISKN(LISKN,*),
78 . IGEO_STACK(NPROPGI,NUMSTACK + NUMPLY),IPM(NPROPMI,NUMMAT),NPC(*),
79 . ipart(lipart1,*),idrapeid(*),
ply_info(3,numply),
80 . nprop_stack,numgeo_stack(numgeo+numstack)
81 my_real geo_stack(npropg,numstack+numply), x(*), pm(npropm,nummat),pld(*),rtrans(ntransf,*)
82 TYPE(
stack_info_ ) ,
DIMENSION (1:NPROP_STACK) :: STACK_INFO
83 TYPE(SUBMODEL_DATA),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
84 TYPE(defaults_) ,
INTENT(IN) :: DEFAULTS
89 CHARACTER(LEN=NCHARTITLE) :: IDTITL,TITR1
91 INTEGER I, IG, IGTYP, J, IHBE, K, IDS, IUNIT, UID, ISORTH
92 INTEGER NSTACK, ISTACK, NUMS, IFLAGUNIT, JPID, N1, SUB_ID, JPID1, JPID2, NISUB, II, IPOS
97 DATA mess/
'PID DEFINITION '/
162 DO iunit=1,unitab%NUNITS
163 IF (unitab%UNIT_ID(iunit) == uid
THEN
169 IF (uid /= 0 .AND. iflagunit == 0)
THEN
170 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
172 . c1=
'STACK', c2='stack
', C3=IDTITL)
175! Stack + ply are belong to /PROP/PCOMPP
176 IGTYP = 52 ! belong to /PROP/PCOMP - TYPE52
189 CALL FRETITL(IDTITL,IGEO_STACK(NPROPGI-LTITR+1,I),LTITR)
190 NUMS = NUMGEO_STACK(NUMGEO + I)
192 . GEO_STACK(1,I) ,IGEO_STACK(1,I) ,IPM ,ISKN ,
193 . IG ,RTRANS ,SUB_ID ,STACK_INFO(NUMS) ,
194 . IDTITL ,UNITAB ,LSUBMODEL,DEFAULTS%SHELL )
201!!! ---------------------
202 IGEO_STACK(17,I)=ISORTH
203.AND.
IF(GEO_STACK(39,I) /= ZERO IGEO_STACK(9,I) == 0) IGEO_STACK( 9,I)=NINT(GEO_STACK(39,I))
204.AND.
IF(GEO_STACK(171,I) /= ZERO IGEO_STACK(10,I) == 0) IGEO_STACK(10,I)=NINT(GEO_STACK(171,I))
212 CALL HM_OPTION_START('/ply
')
214 CALL HM_OPTION_READ_KEY(LSUBMODEL, OPTION_ID = IG, UNIT_ID = UID, OPTION_TITR = IDTITL)
217 DO IUNIT=1,UNITAB%NUNITS
218 IF (UNITAB%UNIT_ID(IUNIT) == UID) THEN
226.AND.
IF (UID /=0 IFLAGUNIT == 0) THEN
227 CALL ANCMSG(MSGID=659,ANMODE=ANINFO,MSGTYPE=MSGERROR,
229 . C1='ply
',C2='ply
',C3=IDTITL)
234 IGEO_STACK( 1,I) = IG
237 CALL FRETITL(IDTITL,IGEO_STACK(NPROPGI-LTITR+1,I),LTITR)
239 CALL LCGEO19(GEO_STACK(1,I), IGEO_STACK(1,I), PM, IPM, UNITAB, IUNIT, ISTACK,IDRAPEID, LSUBMODEL)
240 IF(IGEO_STACK(4,I) > 10) THEN
241 CALL ANCMSG(MSGID=1146,MSGTYPE=MSGERROR,ANMODE=ANINFO,I1=IG,C1=IDTITL)
245 PLY_INFO(2,II) = IGEO_STACK(4,I)
246 PLY_INFO(3,II) = IGEO_STACK(101,I)
251 NPLYMAX = MAX(NPLYMAX,NUMPLY)
254 GEO_STACK(100,I) = SQRT(GEO_STACK(38,I)) ! SHFSR
259 IGTYP=IGEO_STACK(11,I)
260 NUMS= NUMGEO_STACK(NUMGEO + I)
262 ! Initialization of stack thickness
263 GEO_STACK(1,I) = ZERO
264 !--- generalizing ZSHIFT ! keep only IPOS= 2 as before
265 IPOS =IGEO_STACK(99,I)
266 ZSHIFT = GEO_STACK(199, I)
269 ELSEIF(IPOS == 3) THEN
271 ELSEIF(IPOS == 4) THEN
274 GEO_STACK(199, I) = ZSHIFT
278 JPID = STACK_INFO(NUMS)%PID(J)
282 IF (IGEO_STACK(1,NUMSTACK + K) == JPID) THEN
283 STACK_INFO(NUMS)%PID(J) = NUMSTACK + K
285 IDS = IGEO_STACK(42,NUMSTACK + K)
286 IGEO_STACK(42 ,NUMSTACK + K) = I
287.AND.
IF(IDS > 0 IDS /= I) THEN
288 CALL FRETITL2(TITR1,IGEO_STACK(NPROPGI-LTITR+1,NUMSTACK+K),LTITR)
289 CALL ANCMSG(MSGID=1148,MSGTYPE=MSGERROR,ANMODE=ANINFO_BLIND_1,
290 . I1=IGEO_STACK(1,NUMSTACK + K), I2= IGEO_STACK(1,IDS), I3= IGEO_STACK(1,I),
291 . C1=TITR1, C2='ply
')
294 GEO_STACK(1,I) = GEO_STACK(1,I) + GEO_STACK(1,NUMSTACK + K)
300 CALL FRETITL2(TITR1,IGEO_STACK(NPROPGI-LTITR+1,I),LTITR)
301 CALL ANCMSG(MSGID=1149,MSGTYPE=MSGERROR,ANMODE=ANINFO_BLIND_1,
302 . I1=IGEO_STACK(1,I), I2=JPID,
303 . C1=TITR1, C2='stack
')
308 NISUB = IGEO_STACK(44,I)
311 JPID1 = STACK_INFO(NUMS)%ISUB( 3*(J-1) + 1 )
312 JPID2 = STACK_INFO(NUMS)%ISUB( 3*(J-1) + 2 )
313.OR.
IF (JPID1 > 0 JPID2 > 0) THEN
317 IF (IGEO_STACK(1,NUMSTACK + K) == JPID1) THEN
318 STACK_INFO(NUMS)%ISUB (3*(J-1) + 1) = NUMSTACK + K
321 ELSEIF (IGEO_STACK(1,NUMSTACK + K) == JPID2) THEN
322 STACK_INFO(NUMS)%ISUB (3*(J-1) + 2) = NUMSTACK + K
328 CALL FRETITL2(TITR1,IGEO_STACK(NPROPGI-LTITR+1,I),LTITR)
329 CALL ANCMSG(MSGID=1149,MSGTYPE=MSGERROR,ANMODE=ANINFO_BLIND_1,
330 . I1=IGEO_STACK(1,I), I2=JPID1,
331 . C1=TITR1, C2='stack
')
332 CALL FRETITL2(TITR1,IGEO_STACK(NPROPGI-LTITR+1,I),LTITR)
333 CALL ANCMSG(MSGID=1149,MSGTYPE=MSGERROR,ANMODE=ANINFO_BLIND_1,
334 . I1=IGEO_STACK(1,I), I2=JPID2,
335 . C1=TITR1, C2='stack
')
337.OR.
ENDIF ! IF (JPID1 > 0 JPID2 > 0)
339 ENDIF ! IF (NISUB > 0)
342 JPID = STACK_INFO(NUMS)%PID(J)
343 STACK_INFO(NUMS)%THK(J) = GEO_STACK(1,JPID)
344 STACK_INFO(NUMS)%DIR(J) = GEO_STACK(212,JPID) ! angle (DIR1,DIR2) - for compatibility of law58 with PID51)
345 STACK_INFO(NUMS)%MID(J) = IGEO_STACK(101,JPID)
349 ENDDO ! DO I = 1, NUMSTACK
357 CALL VDOUBLE(IGEO_STACK(1,1),NPROPGI,NUMSTACK,MESS,0,RBID)
358 CALL VDOUBLE(IGEO_STACK(1,NUMSTACK+1),NPROPGI,NUMPLY,MESS,0,RBID)
364 & 5X,' stack object
for ply-based shell element sets
'/,
365 & 5X,' ----------------------------------------------
'//)
subroutine lecstack_ply(geo_stack, x, ix, pm, itabm1, iskn, igeo_stack, ipm, npc, pld, unitab, rtrans, lsubmodel, ipart, idrapeid, ply_info, stack_info, numgeo_stack, nprop_stack, defaults)
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)