43 . IXS ,IXR ,NOM_OPT ,LSUBMODEL)
54 USE reader_old_mod ,
ONLY : line, kline, key0, kcur
55 use element_mod ,
only : nixs,nixr
59#include "implicit_f.inc"
71 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
72 INTEGER ISKN(LISKN,*),IXS(NIXS,NUMELS),IXR(NIXR,NUMELR),NOM_OPT(LNOPT1,*)
73 TYPE (CLUSTER_) ,
DIMENSION(NCLUSTER) :: CLUSTERS
76 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
77 TYPE (GROUP_) ,
DIMENSION(NGRSPRI) :: IGRSPRING
81 INTEGER I, J, K, II, JJ, KK, CLID, UID, IG, IGR, ISK, IFAIL, IEL, NEL, NNOD, IFLAGUNIT, NNOD0, NELMAX
82 INTEGER NOD1(2000),NOD2(2000),SUB_INDEX,ISK_L
83 my_real bid(1),ax(4),nx(4),fmax(2),mmax(2)
84 CHARACTER(LEN=NCHARTITLE)::TITR
85 CHARACTER(LEN=NCHARFIELD) :: KEY
86 parameter(nelmax = 500)
87 LOGICAL :: IS_AVAILABLE,FOUND
89 is_available = .false.
105 . submodel_index = sub_index,
107 . option_titr = titr)
110 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,i),ltitr)
115 IF (unitab%UNIT_ID(j) == uid)
THEN
121 IF (uid / = 0 .and. iflagunit == 0)
THEN
122 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,i1=clid,i2=uid,c1=
'CLUSTER',c2=
'CLUSTER',c3=titr)
126 CALL hm_get_intv (
'group_ID' ,igr ,is_available, lsubmodel)
127 CALL hm_get_intv (
'skew_ID' ,isk ,is_available, lsubmodel)
128 CALL hm_get_intv (
'ifail' ,ifail ,is_available, lsubmodel)
132 CALL hm_get_floatv(
'fn_fail1' ,fmax(1) ,is_available, lsubmodel, unitab)
133 CALL hm_get_floatv(
'scalefactor_a1',ax(1) ,is_available, lsubmodel, unitab)
134 CALL hm_get_floatv(
'scalefactor_b1',nx(1) ,is_available, lsubmodel, unitab)
138 CALL hm_get_floatv(
'fs_fail' ,fmax(2) ,is_available, lsubmodel, unitab)
139 CALL hm_get_floatv(
'scalefactor_a2',ax(2) ,is_available, lsubmodel, unitab)
140 CALL hm_get_floatv(
'scalefactor_b2',nx(2) ,is_available, lsubmodel, unitab)
144 CALL hm_get_floatv(
'mt_fail' ,mmax(1) ,is_available, lsubmodel, unitab)
145 CALL hm_get_floatv(
'scalefactor_a3',ax(3) ,is_available, lsubmodel, unitab)
146 CALL hm_get_floatv(
'scalefactor_b3',nx(3) ,is_available, lsubmodel, unitab)
150 CALL hm_get_floatv(
'mb_fail' ,mmax(2) ,is_available, lsubmodel, unitab)
151 CALL hm_get_floatv(
'scalefactor_a4',ax(4) ,is_available, lsubmodel, unitab)
152 CALL hm_get_floatv(
'scalefactor_b4',nx(4) ,is_available, lsubmodel, unitab)
158 DO j=0,numskw+
min(1,nspcond)*numsph+nsubmod
159 IF (isk == iskn(4,j+1))
THEN
166 CALL ancmsg(msgid=137,anmode=aninfo,msgtype=msgerror,c1=
'CLUSTER',c2=
'CLUSTER',i2=isk,i1=clid,c3=titr)
177 IF (key(1:5) ==
'BRICK')
THEN
180 IF (igr == igrbric(ig)%ID .and. igrbric(ig)%GRTYPE == 1)
THEN
181 nel = igrbric(ig)%NENTITY
182 IF (nel > nelmax)
THEN
183 CALL ancmsg(msgid=1055, anmode=aninfo, msgtype=msgerror, i1=clid, i2=nel)
186 clusters(i)%ID = clid
189 clusters(i)%SKEW = isk
190 clusters(i)%NEL = nel
191 clusters(i)%IFAIL= ifail
193 clusters(i)%FAIL = one
195 ALLOCATE (clusters(i)%NG(nel) )
196 ALLOCATE (clusters(i)%ELEM(nel) )
198 jj = igrbric(ig)%ENTITY(iel)
199 clusters(i)%ELEM(iel) = jj
203 nod1(nnod) = ixs(k ,jj)
204 nod2(nnod) = ixs(k+4,jj)
212 clusters(i)%NNOD = nnod
214 ALLOCATE (clusters(i)%NOD1(nnod))
215 ALLOCATE (clusters(i)%NOD2(nnod))
217 clusters(i)%NOD1(k) = nod1(k)
218 clusters(i)%NOD2(k) = nod2(k)
221 WRITE(iout,1001) clid
227 ELSEIF (key(1:6) ==
'SPRING')
THEN
231 kk = ngrnod+ngrbric+ngrquad+ngrshel+ngrtrus+ngrbeam + 1
234 IF (igr == igrspring(ig)%ID .and. igrspring(ig)%GRTYPE == 6)
THEN
235 nel = igrspring(ig)%NENTITY
236 IF (nel > nelmax)
THEN
244 clusters(i)%ID = clid
247 clusters(i)%SKEW = isk
248 clusters(i)%NEL = nel
249 clusters(i)%IFAIL= ifail
251 clusters(i)%FAIL = one
253 ALLOCATE (clusters(i)%NG(nel) )
254 ALLOCATE (clusters(i)%ELEM(nel) )
256 jj = igrspring(ig)%ENTITY(iel)
257 clusters(i)%ELEM(iel) = jj
259 nod1(nnod) = ixr(2,jj)
260 nod2(nnod) = ixr(3,jj)
267 clusters(i)%NNOD = nnod
269 ALLOCATE (clusters(i)%NOD1(nnod) )
270 ALLOCATE (clusters(i)%NOD2(nnod) )
272 clusters(i)%NOD1(k) = nod1(k)
273 clusters(i)%NOD2(k) = nod2(k)
276 WRITE(iout,1002) clid
293 IF (fmax(1) == zero) fmax(1) = infinity
294 IF (fmax(2) == zero) fmax(2) = infinity
295 IF (mmax(1) == zero) mmax(1) = infinity
296 IF (mmax(2) == zero) mmax(2) = infinity
297 ALLOCATE (clusters(i)%FMAX(2) )
298 ALLOCATE (clusters(i)%MMAX(2) )
299 clusters(i)%FMAX(1) = fmax(1)
300 clusters(i)%FMAX(2) = fmax(2)
301 clusters(i)%MMAX(1) = mmax(1)
302 clusters(i)%MMAX(2) = mmax(2)
304 ALLOCATE (clusters(i)%FMAX(0) )
305 ALLOCATE (clusters(i)%MMAX(0) )
308 ALLOCATE (clusters(i)%AX(4) )
309 ALLOCATE (clusters(i)%NX(4) )
310 IF (ax(1) == zero) ax(1) = one
311 IF (ax(2) == zero) ax(2) = one
312 IF (ax(3) == zero) ax(3) = one
313 IF (ax(4) == zero) ax(4) = one
314 IF (nx(1) == zero) nx(1) = one
315 IF (nx(2) == zero) nx(2) = one
316 IF (nx(3) == zero) nx(3) = one
317 IF (nx(4) == zero) nx(4) = one
318 clusters(i)%AX(1) = ax(1)
319 clusters(i)%AX(2) = ax(2)
320 clusters(i)%AX(3) = ax(3)
321 clusters(i)%AX(4) = ax(4)
322 clusters(i)%NX(1) = nx(1)
323 clusters(i)%NX(2) = nx(2)
324 clusters(i)%NX(3) = nx(3)
325 clusters(i)%NX(4) = nx(4)
327 ALLOCATE (clusters(i)%AX(0) )
328 ALLOCATE (clusters(i)%NX(0) )
331 WRITE(iout,2000) igr, isk_l, nel, nnod*2, ifail
332 IF (ifail > 0)
WRITE(iout,2001) fmax(1),fmax(2),mmax(1),mmax(2)
333 IF (ifail == 3)
WRITE(iout,2002) ax(1),ax(2),ax(3),ax(4),
334 . nx(1),nx(2),nx(3),nx(4)
341 & 5x,
'SPOTWELD CLUSTER OF BRICK ELEMENTS, ID=',i10)
343 & 5x,
'SPOTWELD CLUSTER OF SPRING ELEMENTS, ID=',i10)
345 & 10x,
'ELEMENT GROUP ID. . . . . . . . . . . . .=',i10/,
346 & 10x,
'SKEW ID . . . . . . . . . . . . . . . . .=',i10/,
347 & 10x,
'NUMBER OF ELEMENTS. . . . . . . . . . . .=',i10/,
348 & 10x,
'NUMBER OF NODES . . . . . . . . . . . . .=',i10/,
349 & 10x,
'FAILURE FLAG . . . . . . . . . . . . . .=',i10)
351 & 10x,
'MAX NORMAL FORCE. . . . . . . . . . . . .=',1pg20.13/,
352 & 10x,
'MAX TANGENT FORCE . . . . . . . . . . . .=',1pg20.13/,
353 & 10x,
'MAX TORSION MOMENT. . . . . . . . . . . .=',1pg20.13/,
354 & 10x,
'MAX BENDING MOMENT. . . . . . . . . . . .=',1pg20.13)
356 & 10x,
'FAILURE COEFFICIENT A1. . . . . . . . . .=',1pg20.13/,
357 & 10x,
'FAILURE COEFFICIENT A2. . . . . . . . . .=',1pg20.13/,
358 & 10x,
'FAILURE COEFFICIENT A3. . . . . . . . . .=',1pg20.13/,
359 & 10x,
'FAILURE COEFFICIENT A4. . . . . . . . . .=',1pg20.13/,
360 & 10x,
'FAILURE EXPONENT N1 . . . . . . . . . . .=',1pg20.13/,
361 & 10x,
'FAILURE EXPONENT N2 . . . . . . . . . . .=',1pg20.13/,
362 & 10x,
'FAILURE EXPONENT N3 . . . . . . . . . . .=',1pg20.13/,
363 & 10x,
'FAILURE EXPONENT N4 . . . . . . . . . . .=',1pg20.13)
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)