48 . ISKN ,IGEO_STACK ,IPM ,NPC ,PLD ,
49 . UNITAB ,RTRANS ,LSUBMODEL ,IPART ,IDRAPEID,
50 . PLY_INFO ,STACK_INFO ,NUMGEO_STACK ,NPROP_STACK,DEFAULTS)
66#include "implicit_f.inc"
77 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
78 INTEGER IX(*),ITABM1(*),ISKN(LISKN,*),
79 . IGEO_STACK(NPROPGI, + NUMPLY),IPM(NPROPMI,NUMMAT),NPC(*),
80 . ipart(lipart1,*),idrapeid(*),
ply_info(3,numply),
81 . nprop_stack,numgeo_stack(numgeo+numstack)
82 my_real geo_stack(npropg,numstack+numply), x(*), pm(npropm,nummat),pld(*),rtrans(ntransf,*)
83 TYPE(
stack_info_ ) ,
DIMENSION (1:NPROP_STACK) :: STACK_INFO
84 TYPE(SUBMODEL_DATA),
DIMENSION(NSUBMOD),
INTENT(IN) :: LSUBMODEL
85 TYPE(defaults_) ,
INTENT(IN) :: DEFAULTS
90 CHARACTER(LEN=NCHARTITLE) :: IDTITL,TITR1
92 INTEGER I, IG,IGTYP,J,IP,ISTRAIN,I8PT,ISK,ITU,IRB,IHON,IHBE,IPLAST,ITHK,K,N,IDS, IUNIT,UID,ISORTH
93 INTEGER NSTACK,ISTACK,NUMS,IFLAGUNIT,JPID,N1,SUB_ID,PID1,JPID1,JPID2,NISUB,II,IPOS
99 DATA MESS/
'PID DEFINITION '
164 DO iunit=1,unitab%NUNITS
165 IF (unitab%UNIT_ID(iunit) == uid)
THEN
171 IF (uid /= 0 .AND. iflagunit == 0)
THEN
172 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
174 . c1=
'STACK', c2=
'STACK', c3=idtitl)
191 CALL fretitl(idtitl,igeo_stack(npropgi-ltitr+1,i),ltitr)
192 nums = numgeo_stack(numgeo + i)
194 . geo_stack(1,i) ,igeo_stack(1,i) ,pm ,ipm ,iskn ,
195 . ig ,rtrans ,sub_id ,stack_info(nums) ,
196 . idtitl ,unitab ,lsubmodel,defaults%SHELL )
204 igeo_stack(17,i)=isorth
205 IF(geo_stack(39,i) /= zero .AND. igeo_stack(9,i) == 0) igeo_stack( 9,i)=nint(geo_stack
206 IF(geo_stack(171,i) /= zero .AND. igeo_stack(10,i) == 0) igeo_stack(10,i)=nint(geo_stack(171,i))
216 CALL hm_option_read_key(lsubmodel, option_id = ig, unit_id = uid, option_titr = idtitl)
219 DO iunit=1,unitab%NUNITS
220 IF (unitab%UNIT_ID(iunit) == uid)
THEN
228 IF (uid /=0 .AND. iflagunit == 0)
THEN
229 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
231 . c1=
'PLY',c2=
'PLY',c3
236 igeo_stack( 1,i) = ig
239 CALL fretitl(idtitl,igeo_stack(npropgi-ltitr+1,i),ltitr)
241 CALL lcgeo19(geo_stack(1,i), igeo_stack(1,i), pm, ipm, unitab, iunit, istack,idrapeid, lsubmodel)
242 IF(igeo_stack(4,i) > 10)
THEN
243 CALL ancmsg(msgid=1146,msgtype=msgerror,anmode=aninfo
247 ply_info(2,ii) = igeo_stack(4,i)
248 ply_info(3,ii) = igeo_stack(101,i)
253 nplymax =
max(nplymax,numply)
256 geo_stack(100,i) = sqrt(geo_stack(38,i))
261 igtyp=igeo_stack(11,i)
262 nums= numgeo_stack(numgeo + i)
264 ! initialization of stack thickness
265 geo_stack(1,i) = zero
267 ipos =igeo_stack(99,i)
268 zshift = geo_stack(199, i)
271 ELSEIF(ipos == 3)
THEN
273 ELSEIF(ipos == 4)
THEN
276 geo_stack(199, i) = zshift
280 jpid = stack_info(nums)%PID(j)
284 IF (igeo_stack(1,numstack + k) == jpid)
THEN
285 stack_info(nums)%PID(j) = numstack + k
287 ids = igeo_stack(42,numstack + k)
288 igeo_stack(42 ,numstack + k) = i
289 IF(ids > 0 .AND. ids /= i)
THEN
290 CALL fretitl2(titr1,igeo_stack(npropgi-ltitr+1,numstack+k),ltitr)
291 CALL ancmsg(msgid=1148,msgtype=msgerror,anmode=aninfo_blind_1,
292 . i1=igeo_stack(1,numstack + k), i2= igeo_stack(1,ids), i3= igeo_stack(1,i),
293 . c1=titr1, c2=
'PLY')
296 geo_stack(1,i) = geo_stack(1,i) + geo_stack(1,numstack + k)
302 CALL fretitl2(titr1,igeo_stack(npropgi-ltitr+1,i),ltitr)
303 CALL ancmsg(msgid=1149,msgtype=msgerror,anmode=aninfo_blind_1,
304 . i1=igeo_stack(1,i), i2=jpid,
305 . c1=titr1, c2=
'STACK')
310 nisub = igeo_stack(44,i)
313 jpid1 = stack_info(nums)%ISUB( 3*(j-1) + 1 )
314 jpid2 = stack_info(nums)%ISUB( 3*(j-1) + 2 )
315 IF (jpid1 > 0 .OR. jpid2 > 0)
THEN
319 IF (igeo_stack(1,numstack + k) == jpid1)
THEN
320 stack_info(nums)%ISUB (3*(j-1) + 1) = numstack + k
323 ELSEIF (igeo_stack(1,numstack + k) == jpid2)
THEN
324 stack_info(nums)%ISUB (3*(j-1) + 2) = numstack + k
330 CALL fretitl2(titr1,igeo_stack(npropgi-ltitr+1,i),ltitr)
331 CALL ancmsg(msgid=1149,msgtype=msgerror,anmode=aninfo_blind_1,
332 . i1=igeo_stack(1,i), i2=jpid1,
333 . c1=titr1, c2=
'STACK')
334 CALL fretitl2(titr1,igeo_stack(npropgi-ltitr+1,i),ltitr)
335 CALL ancmsg(msgid=1149,msgtype=msgerror,anmode=aninfo_blind_1,
336 . i1=igeo_stack(1,i), i2=jpid2,
337 . c1=titr1, c2=
'STACK')
344 jpid = stack_info(nums)%PID(j)
345 stack_info(nums)%THK(j) = geo_stack(1,jpid)
346 stack_info(nums)%DIR(j) = geo_stack(212,jpid)
347 stack_info(nums)%MID(j) = igeo_stack(101,jpid)
359 CALL vdouble(igeo_stack(1,1),npropgi,numstack,mess,0,rbid)
360 CALL vdouble(igeo_stack(1,numstack+1),npropgi,numply,mess,0,rbid)
366 & 5x,
' STACK OBJECT FOR PLY-BASED SHELL ELEMENT SETS'/,
367 & 5x,
' ----------------------------------------------'//)
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)