43 . IXS ,IXR ,NOM_OPT ,LSUBMODEL)
54 USE reader_old_mod ,
ONLY : line, kline, key0, kcur
58#include "implicit_f.inc"
70 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
71 INTEGER ISKN(LISKN,*),IXS(NIXS,NUMELS),IXR(NIXR,NUMELR),NOM_OPT(LNOPT1,*)
72 TYPE (CLUSTER_) ,
DIMENSION(NCLUSTER) :: CLUSTERS
75 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
76 TYPE (GROUP_) ,
DIMENSION(NGRSPRI) :: IGRSPRING
80 INTEGER I,J,K,II,JJ,KK,N,CLID,UID,ICLUS,IAD,IG,IGR,ISK,,IEL,NEL,NNOD,IFLAGUNIT,VAL,NNOD0,ITY,NELMAX
81 INTEGER NOD1(2000),NOD2(2000),SUB_INDEX,ISK_L
82 my_real bid(1),ax(4),nx(4),fmax(2),mmax(2)
83 CHARACTER(LEN=NCHARTITLE)::TITR
84 CHARACTER(LEN=NCHARFIELD) :: KEY
85 parameter(nelmax = 500)
86 LOGICAL :: IS_AVAILABLE,FOUND
88 is_available = .false.
104 . submodel_index = sub_index,
106 . option_titr = titr)
109 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,i),ltitr)
114 IF (unitab%UNIT_ID(j) == uid)
THEN
120 IF (uid / = 0 .and. iflagunit == 0)
THEN
121 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,i1=clid,i2=uid,c1=
'CLUSTER',c2=
'CLUSTER',c3=titr)
125 CALL hm_get_intv (
'group_ID' ,igr ,is_available, lsubmodel)
126 CALL hm_get_intv (
'skew_ID' ,isk ,is_available, lsubmodel
127 CALL hm_get_intv (
'ifail' ,ifail ,is_available, lsubmodel
131 CALL hm_get_floatv(
'fn_fail1' ,fmax(1) ,is_available, lsubmodel, unitab)
132 CALL hm_get_floatv(
'scalefactor_a1',ax(1) ,is_available, lsubmodel, unitab)
133 CALL hm_get_floatv(
'scalefactor_b1',nx(1) ,is_available, lsubmodel, unitab)
137 CALL hm_get_floatv(
'fs_fail' ,fmax(2) ,is_available, lsubmodel, unitab)
138 CALL hm_get_floatv(
'scalefactor_a2',ax(2) ,is_available, lsubmodel, unitab)
139 CALL hm_get_floatv(
'scalefactor_b2',nx(2) ,is_available, lsubmodel, unitab)
143 CALL hm_get_floatv(
'mt_fail' ,mmax(1) ,is_available, lsubmodel, unitab)
144 CALL hm_get_floatv(
'scalefactor_a3',ax(3) ,is_available, lsubmodel, unitab)
145 CALL hm_get_floatv(
'scalefactor_b3',nx(3) ,is_available, lsubmodel, unitab)
149 CALL hm_get_floatv(
'mb_fail' ,mmax(2) ,is_available, lsubmodel, unitab)
150 CALL hm_get_floatv(
'scalefactor_a4',ax(4) ,is_available, lsubmodel, unitab)
157 DO j=0,numskw+
min(1,nspcond)*numsph+nsubmod
158 IF (isk == iskn(4,j+1))
THEN
165 CALL ancmsg(msgid=137,anmode=aninfo,msgtype=msgerror,c1=
'CLUSTER',c2=
'CLUSTER',i2=isk,i1=clid,c3=titr)
176 IF (key(1:5) ==
'BRICK')
THEN
179 IF (igr == igrbric(ig)%ID .and. igrbric(ig)%GRTYPE == 1)
THEN
180 nel = igrbric(ig)%NENTITY
181 IF (nel > nelmax)
THEN
185 clusters(i)%ID = clid
188 clusters(i)%SKEW = isk
189 clusters(i)%NEL = nel
190 clusters(i)%IFAIL= ifail
192 clusters(i)%FAIL = one
194 ALLOCATE (clusters(i)%NG(nel) )
195 ALLOCATE (clusters(i)%ELEM(nel) )
197 jj = igrbric(ig)%ENTITY(iel)
198 clusters(i)%ELEM(iel) = jj
202 nod1(nnod) = ixs(k ,jj)
203 nod2(nnod) = ixs(k+4,jj)
211 clusters(i)%NNOD = nnod
213 ALLOCATE (clusters(i)%NOD1(nnod))
214 ALLOCATE (clusters(i)%NOD2(nnod))
216 clusters(i)%NOD1(k) = nod1(k)
217 clusters(i)%NOD2(k) = nod2(k)
220 WRITE(iout,1001) clid
226 ELSEIF (key(1:6) ==
'SPRING')
THEN
230 kk = ngrnod+ngrbric+ngrquad+ngrshel+ngrtrus+ngrbeam + 1
233 IF (igr == igrspring(ig)%ID .and. igrspring(ig)%GRTYPE == 6)
THEN
234 nel = igrspring(ig)%NENTITY
235 IF (nel > nelmax)
THEN
243 clusters(i)%ID = clid
246 clusters(i)%SKEW = isk
247 clusters(i)%NEL = nel
248 clusters(i)%IFAIL= ifail
250 clusters(i)%FAIL = one
252 ALLOCATE (clusters(i)%NG
253 ALLOCATE (clusters(i)%ELEM(nel) )
255 jj = igrspring(ig)%ENTITY(iel)
256 clusters(i)%ELEM(iel) = jj
258 nod1(nnod) = ixr(2,jj)
259 nod2(nnod) = ixr(3,jj)
266 clusters(i)%NNOD = nnod
268 ALLOCATE (clusters(i)%NOD1(nnod) )
269 ALLOCATE (clusters(i)%NOD2(nnod) )
271 clusters(i)%NOD1(k) = nod1(k)
272 clusters(i)%NOD2(k) = nod2(k)
275 WRITE(iout,1002) clid
292 IF (fmax(1) == zero) fmax(1) = infinity
293 IF (fmax(2) == zero) fmax(2) = infinity
294 IF (mmax(1) == zero) mmax(1) = infinity
295 IF (mmax(2) == zero) mmax(2) = infinity
296 ALLOCATE (clusters(i)%FMAX(2) )
297 ALLOCATE (clusters(i)%MMAX(2) )
298 clusters(i)%FMAX(1) = fmax(1)
299 clusters(i)%FMAX(2) = fmax(2)
300 clusters(i)%MMAX(1) = mmax(1)
301 clusters(i)%MMAX(2) = mmax(2)
303 ALLOCATE (clusters(i)%FMAX(0) )
304 ALLOCATE (clusters(i)%MMAX(0) )
307 ALLOCATE (clusters(i)%AX(4) )
308 ALLOCATE (clusters(i)%NX(4) )
309 IF (ax(1) == zero) ax(1) = one
310 IF (ax(2) == zero) ax(2) = one
311 IF (ax(3) == zero) ax(3) = one
312 IF (ax(4) == zero) ax(4) = one
313 IF (nx(1) == zero) nx(1) = one
314 IF (nx(2) == zero) nx(2) = one
315 IF (nx(3) == zero) nx(3) = one
316 IF (nx(4) == zero) nx(4) = one
317 clusters(i)%AX(1) = ax(1)
318 clusters(i)%AX(2) = ax(2)
319 clusters(i)%AX(3) = ax(3)
320 clusters(i)%AX(4) = ax(4)
321 clusters(i)%NX(1) = nx(1)
322 clusters(i)%NX(2) = nx(2)
323 clusters(i)%NX(3) = nx(3)
324 clusters(i)%NX(4) = nx(4)
326 ALLOCATE (clusters(i)%AX(0) )
327 ALLOCATE (clusters(i)%NX(0) )
330 WRITE(iout,2000) igr, isk_l, nel, nnod*2, ifail
331 IF (ifail > 0)
WRITE(iout,2001) fmax(1),fmax(2),mmax(1),mmax(2)
332 IF (ifail == 3)
WRITE(iout,2002) ax(1),ax(2),ax(3),ax(4),
333 . nx(1),nx(2),nx(3),nx(4)
340 & 5x,
'SPOTWELD CLUSTER OF BRICK ELEMENTS, ID=',i10)
342 & 5x,
'SPOTWELD CLUSTER OF SPRING ELEMENTS, ID=',i10)
344 & 10x,
'ELEMENT GROUP ID. . . . . . . . . . . . .=',i10/,
345 & 10x,
'SKEW ID . . . . . . . . . . . . . . . . .=',i10/,
346 & 10x,
'NUMBER OF ELEMENTS. . . . . . . . . . . .=',i10/,
347 & 10x,
'NUMBER OF NODES . . . . . . . . . . . . .=',i10/,
348 & 10x,
'FAILURE FLAG . . . . . . . . . . . . . .=',i10)
350 & 10x,
'MAX NORMAL FORCE. . . . . . . . . . . . .=',1pg20.13/,
351 & 10x,
'MAX TANGENT FORCE . . . . . . . . . . . .=',1pg20.13/,
352 & 10x,
'MAX TORSION MOMENT. . . . . . . . . . . .=',1pg20.13/,
353 & 10x,
'MAX BENDING MOMENT. . . . . . . . . . . .=',1pg20.13)
355 & 10x,
'FAILURE COEFFICIENT A1. . . . . . . . . .=',1pg20.13/,
356 & 10x,'failure coefficient a2. . . . . . . . . .=
',1PG20.13/,
357 & 10X,'failure coefficient a3. . . . . . . . . .=
',1PG20.13/,
358 & 10X,'failure coefficient a4. . . . . . . . . .=
',1PG20.13/,
359 & 10X,'failure exponent n1 . . . . . . . . . . .=
',1PG20.13/,
360 & 10X,'failure exponent n2 . . . . . . . . . . .=
',1PG20.13/,
361 & 10X,'failure exponent n3 . . . . . . . . . . .=
',1PG20.13/,
362 & 10X,'failure exponent n4 . . . . . . . . . . .=
',1PG20.13)
366 998 CALL ANCMSG(MSGID=55,ANMODE=ANINFO,MSGTYPE=MSGERROR,C1=KEY0(KCUR),C2=KLINE,C3=LINE)
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)