52 2 IXTG ,X0 ,NSTRF ,ITAB ,ITABM1 ,
54 4 IPARI ,IXS10 ,IXS20 ,IXS16 ,UNITAB ,
55 5 ISKN ,XFRAME,ISOLNOD,NOM_SECT,RTRANS,
56 6 LSUBMODEL,NOM_OPT,IGRBRIC)
70#include "implicit_f.inc"
74#include "analyse_name.inc"
85 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
86 INTEGER IXC(NIXC,*), IXTG(NIXTG,*), NSTRF(*), ITAB(*),
87 . ITABM1(*),IXS(NIXS,*), IXQ(NIXQ,*), IXT(NIXT,*),
88 . IXP(NIXP,*), IXR(NIXR,*), IPARI(NPARI,*),
89 . IXS10(6,*),IXS20(12,*),IXS16(8,*),ISKN(LISKN,*),
90 . isolnod(*),nom_sect(*)
91 INTEGER NOM_OPT(LNOPT1,*)
92 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
94 . X0(3,*),SECBUF(*),XFRAME(NXFRAME,*),
97 TYPE (GROUP_) ,
DIMENSION(NGRNOD) :: IGRNOD
98 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
102 INTEGER ,
DIMENSION(NSECT) :: SECTIDS
103 INTEGER K1, I, J, L, KK, K2, K,,
104 . NNOD, NBINTER,K0,K3,K4,K5,K6,K7,K8,K9,KR0,
105 . NSEGQ,NSEGS,NSEGC,NSEGT,NSEGP,NSEGR,NSEGTG,I0,ID,
106 . IGU,IGS,IGUS,IGUQ,IGUC,IGUT,IGUP,IGUR,IGUTG,IFRAM,
107 . nnsk1,nnsk2,nnsk3,uid,iflagunit,ie,iadv,
109 . tagelem1,tagelem2,tagelem3,
112 INTEGER FLAG_FMT,FLAG_FMT_TMP,IFIX_TMP,L0,ISTYP,SUB_ID
113 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NODTAG,TAGELEMS
115 . DELTAT,ALPHA,FAC_T,A,B,C,D,E,F,POS,R
117 CHARACTER(LEN=NCHARTITLE) :: TITR
118 CHARACTER(LEN=NCHARLINE) ::CHAR8
119 CHARACTER(LEN=NCHARFIELD) :: KEY2
121 . bid, xm, ym, zm, x1, y1, z1, x2, y2, z2,
norm,
122 . x3, y3, z3, n3, pnor1, pnor2, pnorm1, det, det1, det2, det3
127 INTEGER USR2SYS,NODGRNR5,
128 EXTERNAL usr2sys,nodgrnr5,
elegror
131 DATA mess/
'SECTION DEFINITION '/
134 ALLOCATE(tagelems(1+numelc+numels+numelt+numelq+numelp+numelr+numeltg))
135 ALLOCATE(nodtag(numnod))
173 CALL hm_option_read_key(lsubmodel, option_id=id, option_titr=titr, unit_id=uid, submodel_id=sub_id, keyword2=key2)
175 CALL hm_get_intv(
'Axis_Origin_Node_N1', nstrf(k0+3), is_available, lsubmodel)
176 CALL hm_get_intv(
'Axis_Node_N2', nstrf(k0+4), is_available, lsubmodel)
177 CALL hm_get_intv(
'Axis_Node_N3', nstrf(k0+5), is_available, lsubmodel)
190 IF(key2(1:5) ==
'PARAL')
THEN
192 ELSEIF(key2(1:6) ==
'CIRCLE')
THEN
195 CALL hm_get_intv'Grnod_ID', igu, is_available, lsubmodel)
196 CALL hm_get_intv(
'System_Id', nfram, is_available, lsubmodel)
200 CALL hm_get_floatv(
'detltaT', deltat, is_available, lsubmodel, unitab)
201 CALL hm_get_floatv(
'alpha', alpha, is_available, lsubmodel, unitab)
202 CALL hm_get_intv(
'grbrick_id', igus, is_available, lsubmodel)
203 CALL hm_get_intv(
'grshel_id', iguc, is_available, lsubmodel)
204 CALL hm_get_intv(
'grtrus_id', igut, is_available, lsubmodel)
205 CALL hm_get_intv(
'grbeam_id', igup, is_available, lsubmodel)
206 CALL hm_get_intv(
'grsprg_id', igur, is_available, lsubmodel)
207 CALL hm_get_intv(
'grtria_id', igutg, is_available, lsubmodel)
209 CALL hm_get_intv(
'Iframe', ifram, is_available, lsubmodel)
211 IF (nbinter < 0 .OR. nbinter > 10)
THEN
212 CALL ancmsg(msgid=124,anmode=aninfo,msgtype=msgerror,i1=id,c1=titr)
217 IF (unitab%UNIT_ID(j) == uid)
THEN
218 fac_t = unitab%FAC_T(j)
223 IF (uid/=0.AND.iflagunit==0)
THEN
224 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,i2=uid,i1=id,c1=
'SECTION',c2=
'SECTION',c3=titr)
229 IF(igu == 0 .AND. nfram == 0 .AND. istyp == 0)
THEN
231 . msgtype=msgwarning,
232 . anmode=aninfo_blind_1,
238 nom_sect((i-1)*
ncharline+j) = ichar(char8(j:j))
246 CALL hm_get_floatv(
'XTail', xm, is_available, lsubmodel, unitab)
247 CALL hm_get_floatv(
'YTail', ym, is_available, lsubmodel, unitab)
248 CALL hm_get_floatv(
'ZTail', zm, is_available, lsubmodel, unitab)
249 IF(sub_id /= 0)
CALL subrotpoint(xm,ym,zm,rtrans,sub_id,lsubmodel)
251 CALL hm_get_floatv(
'cnode1_x', x1, is_available, lsubmodel, unitab)
252 CALL hm_get_floatv(
'cnode1_y', y1, is_available, lsubmodel, unitab)
253 CALL hm_get_floatv(
'cnode1_z', z1, is_available, lsubmodel, unitab)
254 IF(sub_id /= 0)
CALL subrotpoint(x1,y1,z1,rtrans,sub_id,lsubmodel)
256 CALL hm_get_floatv(
'cnode2_x', x2, is_available, lsubmodel, unitab)
257 CALL hm_get_floatv(
'cnode2_y', y2, is_available, lsubmodel, unitab)
258 CALL hm_get_floatv(
'cnode2_z', z2, is_available, lsubmodel, unitab)
259 IF(sub_id /= 0)
CALL subrotpoint(x2,y2,z2,rtrans,sub_id,lsubmodel)
264 a = ((y1-ym)*(z2-zm))-((y2-ym)*(z1-zm))
265 b = ((x2-xm)*(z1-zm))-((x1-xm)*(z2-zm))
266 c = ((x1-xm)*(y2-ym))-((x2-xm)*(y1-ym))
272 ELSEIF (istyp == 2)
THEN
273 CALL hm_get_floatv(
'XTail', xm, is_available, lsubmodel, unitab)
274 CALL hm_get_floatv(
'YTail', ym, is_available, lsubmodel, unitab)
275 CALL hm_get_floatv(
'ZTail', zm, is_available, lsubmodel, unitab)
276 IF(sub_id /= 0)
CALL subrotpoint(xm,ym,zm,rtrans,sub_id,lsubmodel)
278 CALL hm_get_floatv(
'Normal_x', a, is_available, lsubmodel, unitab)
279 CALL hm_get_floatv(
'Normal_y', b, is_available, lsubmodel, unitab)
280 CALL hm_get_floatv(
'Normal_z', c, is_available, lsubmodel, unitab)
281 IF(sub_id /= 0)
CALL subrotvect(a,b,c,rtrans,sub_id,lsubmodel)
283 CALL hm_get_floatv(
'Radius', r, is_available, lsubmodel, unitab)
296 IF(nstrf(k1-1+j)==ipari(15,l))
THEN
297 ipari(28,l) = ipari(28,l) + 1
308 IF (istyp >= 1 .OR. nfram > 0)
THEN
312 jj=(numskw+1)+
nsubmod+
min(iun,nspcond)*numsph+k+1
313 IF(nfram==iskn(4,jj))
THEN
321 IF (nstrf(k0+3) == 0 )
THEN
322 IF (iskn(1,jj) /= 0)
THEN
323 nstrf(k0+3) = itab(iskn(1,jj))
334 IF (nstrf(k0+4) == 0 )
THEN
335 IF (iskn(2,jj) /= 0)
THEN
336 nstrf(k0+4) = itab(iskn(2,jj))
347 IF (nstrf(k0+5) == 0 )
THEN
348 IF (iskn(3,jj) /= 0)
THEN
349 nstrf(k0+5) = itab(iskn(3,jj))
367 2 b,c,d,e,f,itab,ixs,ixs10,ixs16,ixs20,
368 3 nixs,kk,nnod,nstrf,nbinter,n1 ,k1,
369 4 cpt,nodtag,isolnod,tagelems,
370 5 x1,y1,z1,x2,y2,z2,r)
377 IF (nfram == 0 .AND. istyp == 0)
THEN
378 nnod=nodgrnr5(igu,igs,nstrf(k2),igrnod,itabm1,mess)
382 nsegs=
elegror(igus,igrbric,ngrbric,
'BRIC',nstrf(k3),2,mess,nfram,tagelems,istyp,id,titr)
403 nstrf(k0+13) = nsegtg
406 IF (nstrf(l)/=0)
THEN
407 nstrf(l)=usr2sys(nstrf(l),itabm1,mess,id)
408 CALL anodset(nstrf(l), check_used)
415 y1=x0(2,nstrf(k0+4))-x0(2,nstrf(k0+3))
416 z1=x0(3,nstrf(k0+4))-x0
417 x2=x0(1,nstrf(k0+5))-x0(1,nstrf(k0+4))
418 y2=x0(2,nstrf(k0+5))-x0(2,nstrf(k0+4))
419 z2=x0(3,nstrf(k0+5))-x0(3,nstrf(k0+4))
425 pnor1=sqrt(x1*x1+y1*y1+z1*z1)
426 IF (pnor1 < em20)
THEN
429 . anmode=aninfo_blind_1,
434 IF (pnor2 > em20)
THEN
435 pnorm1=one/(pnor1*pnor2)
436 det1=abs((y3*z1-z3*y1)*pnorm1)
437 det2=abs((z3*x1-x3*z1)*pnorm1)
438 det3=abs((x3*y1-y3*x1)*pnorm1)
439 det=
max(det1,det2,det3)
446 . anmode=aninfo_blind_1,
455 CALL secstri(nsegs,nstrf(k3),ixs,ixs10,ixs16,ixs20,nstrf(k2),nnod,itab,i,noprint)
456 IF(nstrf(k0)>=102)
THEN
457 CALL zerore(1,10+30*nnod,secbuf(kr0))
458 ELSEIF(nstrf(k0)>=101)
THEN
459 CALL zerore(1,10+24*nnod,secbuf(kr0))
460 ELSEIF(nstrf(k0)>=100)
THEN
461 CALL zerore(1,10+12*nnod,secbuf(kr0))
463 CALL zerore(1,10,secbuf(kr0))
467 secbuf(kr0+2) = alpha
470 IF(nstrf(k0)==1.OR.nstrf(k0)==2)
THEN
471 IF(secbuf(1)==zero)
THEN
473 ELSEIF(abs((secbuf(1)-deltat)/secbuf(1)) > em06
THEN
476 . anmode=aninfo_blind_2,
482 IF(nstrf(k0)>=1.AND.nstrf(k0)<=10)
THEN
484 ELSEIF(nstrf(k0)>=100.AND.nstrf(k0)<=200)
THEN
487 nstrf(15+j)=nstrf(k0+14+j)
492 ELSEIF(nstrf(k0)==2)
THEN
497 nstrf(k0+24) = k9+2*nsegtg
498 nstrf(k0+25) = kr0+10
499 IF(nstrf(k0)>=100)nstrf(k0+25) = nstrf(k0+25)+12*nnod
500 IF(nstrf(k0)>=101)nstrf(k0+25) = nstrf(k0+25)+12*nnod
501 IF(nstrf(k0)>=102)nstrf(k0+25) = nstrf(k0+25)+6*nnod
509 CALL udouble(sectids,1,nsect,mess,0,bid)
515 2900
FORMAT(/
' SECTION',i10,
' ID',i10/
516 +
' ---------------'/
517 +
' TYPE . . . . . . . . . . . . . . .',i10/
518 +
' FILENAME . . . . . . . . . . . . .',a/
519 +
' DELTAT . . . . . . . . . . . . . .',1pg20.13/
520 +
' ALPHA. . . . . . . . . . . . . . .',1pg20.13/
521 +
' FRAME TYPE . . . . . . . . . . . .',i10/
522 +
' NUMBER OF INTERFACES . . . . . . .',i10/
524 2901
FORMAT(/
' SECTION',i10,
' ID',i10/
525 +
' ---------------'/
526 +
' TYPE . . . . . . . . . . . . . . .',i8/
527 +
' FRAME TYPE . . . . . . . . . . . .',i8/)
529 +
' NUMBER OF NODES. . . . . . . . . .',i10/
532 +
' NUMBER OF SHELL ELEMENTS . . . . .',i10/
533 +
' SHELL N1 N2 N3 N4')
535 +
' NUMBER OF 3 NODES SHELL ELEMENTS .',i10/
538 +
' NUMBER OF BRICK ELEMENTS . . . . .',i10/
539 +
' BRICK N1 N2 N3 N4',
542 +
' NUMBER OF QUAD ELEMENTS . . . . .',i10/
543 +
' QUAD N1 N2 N3 N4')
545 +
' NUMBER OF TRUSS ELEMENTS . . . . .',i10/
548 +
' NUMBER OF BEAM ELEMENTS . . . . .',i10/
551 +
' NUMBER OF SPRING ELEMENTS . . . . .',i8/