67
68
69
70 use extend_array_mod
79 use element_mod , only : nixs,nixq,nixc,nixp,nixt,nixr,nixtg
80
81
82
83#include "implicit_f.inc"
84
85
86
87#include "analyse_name.inc"
88
89
90
91#include "units_c.inc"
92#include "com04_c.inc"
93#include "scr17_c.inc"
94#include "param_c.inc"
95#include "sphcom.inc"
96#include "r2r_c.inc"
97
98
99
100 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
101 INTEGER IXC(NIXC,NUMELC), IXTG(NIXTG,NUMELTG), ITAB(NUMNOD),
102 . ITABM1(*),IXS(NIXS,NUMELS), IXQ(NIXQ,NUMELQ), IXT(NIXT,NUMELT),
103 . IXP(NIXP,NUMELP), IXR(NIXR,NUMELR), IPARI(NPARI,NINTER),
104 . IXS10(6,*),IXS20(12,*),IXS16(8,*),ISKN(LISKN,*),
105 . ISOLNOD(*),NOM_SECT(*)
106 INTEGER NOM_OPT(LNOPT1,*)
107 TYPE(SUBMODEL_DATA) LSUBMODEL(NSUBMOD)
108 my_real x0(3,*),secbuf(*),xframe(nxframe,numfram+1), rtrans(ntransf,nrtrans)
109 INTEGER,INTENT(IN):: NB_SEATBELT_SHELLS
110 INTEGER,INTENT(IN)::SEATBELT_SHELL_TO_SPRING(NUMELC,2)
111
112 TYPE (GROUP_) ,DIMENSION(NGRNOD) :: IGRNOD
113 TYPE (GROUP_) ,DIMENSION(NGRBRIC) :: IGRBRIC
114 TYPE (GROUP_) ,DIMENSION(NGRQUAD) :: IGRQUAD
115 TYPE (GROUP_) ,DIMENSION(NGRSHEL) :: IGRSH4N
116 TYPE (GROUP_) ,DIMENSION(NGRTRUS) :: IGRTRUSS
117 TYPE (GROUP_) ,DIMENSION(NGRBEAM) :: IGRBEAM
118 TYPE (GROUP_) ,DIMENSION(NGRSPRI) :: IGRSPRING
119 TYPE (GROUP_) ,DIMENSION(NGRSH3N) :: IGRSH3N
120
121
122
123 INTEGER ,DIMENSION(NSECT) :: SECTIDS
124 INTEGER K1, I, J, L, KK, K2, K,LREC,
125 . NNOD, NBINTER,K0,K3,K4,K5,K6,K7,K8,K9,KR0,
126 . NSEGQ,NSEGS,NSEGC,NSEGT,NSEGP,NSEGR,NSEGTG,ID,
127 . IGU,IGS,IGUS,IGUQ,IGUC,IGUT,IGUP,IGUR,IGUTG,IFRAM,
128 . UID,IFLAGUNIT,
129 . NFRAM,JJ,IUN,
130 . N1,CPT,
131 . NG,NOPRINT
132 INTEGER L0,ISTYP,SUB_ID,ILEN
134 INTEGER, DIMENSION(:), ALLOCATABLE :: TAGNODES
135 INTEGER, DIMENSION(:), ALLOCATABLE :: TAGNDOUBL
136 INTEGER, DIMENSION(:), ALLOCATABLE :: TAGELEMS
137 INTEGER, DIMENSION(:), ALLOCATABLE :: NODTAG
138
139 CHARACTER MESS*40
140 CHARACTER(LEN=NCHARTITLE) :: TITR
141 CHARACTER(LEN=NCHARLINE) ::CHAR8
142 CHARACTER(LEN=NCHARFIELD) :: KEY2
143 my_real bid, xm, ym, zm, x1, y1, z1, x2, y2, z2,
norm
144 my_real x3, y3, z3, n3, pnor1, pnor2, pnorm1, det, det1, det2, det3
145 LOGICAL :: IS_AVAILABLE
146 INTEGER :: SNSTRF1
147 integer :: max_extension
148
149
150
151 INTEGER USR2SYS,NODGRNR5,ELEGROR,ELEGROR_SEATBELT,GRSIZE_ELE_TRANS,GRSIZE_ELE
153
154
155 DATA mess/'SECTION DEFINITION '/
156 DATA iun/1/
157
158
159
160 ALLOCATE(tagnodes( numnod*2+npart))
161 ALLOCATE(tagndoubl(numnod))
162 ALLOCATE(tagelems(1+numelc+numels+numelt+numelq+numelp+numelr+numeltg))
163 ALLOCATE(nodtag(numnod))
164 snstrf1 = 0
165 noprint = 0
166 nfram = 0
167 nodtag = 0
168 tagelems = 0
169
171
173
175
177
179
180 lrec=0
181
182
184 k0 = 31
185 kr0= 11
188 l0 = 7
189 ng = 0
190
191
193
194 DO i=1,nsect
195
196 istyp = 0
197 ng=ng+1
198 igu=0
199 nfram=0
200 xm=zero
201 ym=zero
202 zm=zero
203 x1=zero
204 y1=zero
205 x2=zero
206 y2=zero
207 z2=zero
208 a=zero
209 b=zero
210 c=zero
211 r=zero
212 igus=0
213 iguq=0
214 iguc=0
215 igut=0
216 igup=0
217 igur=0
218 igutg=0
219 nbinter=0
220 ifram=0
221
222 IF(nsubdom > 0) THEN
224 ENDIF
225
226
227 lrec = lrec+3
228 k1 = k0+30
231
234
235 CALL hm_get_intv(
'Axis_Origin_Node_N1',
nstrf(k0+3), is_available, lsubmodel)
239
240 IF (sub_id > 0) THEN
241
242 IF ((
nstrf(k0) == 1).OR.(
nstrf(k0) == 2))
THEN
243 CALL ancmsg(msgid=1743, msgtype=msgwarning, anmode=aninfo_blind_1, i1=
id, c1=titr)
244 ELSEIF ((
nstrf(k0) == 100).OR.(
nstrf(k0) == 101))
THEN
245 CALL ancmsg(msgid=1744, msgtype=msgwarning, anmode=aninfo_blind_1, i1=
id, c1=titr)
246 ENDIF
247 ENDIF
248
250 ilen=len_trim(char8)
254 char8(k:k)=' '
255 ENDDO
256 ENDIF
257
258 IF(key2(1:5) == 'PARAL') THEN
259 istyp = 1
260 ELSEIF(key2(1:6) == 'CIRCLE') THEN
261 istyp = 2
262 ELSE
263 istyp = 0
264 CALL hm_get_intv(
'Grnod_ID', igu, is_available, lsubmodel)
265 CALL hm_get_intv(
'System_Id', nfram, is_available, lsubmodel)
266 ENDIF
267
268 iflagunit = 0
270 IF (
unitab%UNIT_ID(j) == uid)
THEN
272 iflagunit = 1
273 EXIT
274 ENDIF
275 ENDDO
276 IF (uid /= 0.AND.iflagunit == 0) THEN
277 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
278 . i2=uid,i1=
id,c1=
'SECTION',
279 . c2='SECTION',
280 . c3=titr)
281 ENDIF
282
284
287
288 IF(igu == 0 .AND. nfram == 0 .AND. istyp == 0) THEN
289 CALL ancmsg(msgid=507, msgtype=msgwarning, anmode=aninfo_blind_1, i1=
id, c1=titr)
290 ENDIF
291
294 ENDDO
295
296 iguq = 0
297 CALL hm_get_intv(
'grbrick_id', igus, is_available, lsubmodel)
298 CALL hm_get_intv(
'grshel_id', iguc, is_available, lsubmodel)
299 CALL hm_get_intv(
'grtrus_id', igut, is_available, lsubmodel)
300 CALL hm_get_intv(
'grbeam_id', igup, is_available, lsubmodel)
301 CALL hm_get_intv(
'grsprg_id', igur, is_available, lsubmodel)
302 CALL hm_get_intv(
'grtria_id', igutg, is_available, lsubmodel)
303 CALL hm_get_intv(
'Niter', nbinter, is_available, lsubmodel)
304 CALL hm_get_intv(
'Iframe', ifram, is_available, lsubmodel)
305
306 IF (nbinter < 0 .OR. nbinter > 10) THEN
307 CALL ancmsg(msgid=124,anmode=aninfo,msgtype=msgerror,i1=
id,c1=titr)
308 ENDIF
309
310 IF((igus == 0).AND.(iguq == 0).AND.(iguc == 0).AND.(igut == 0).
311 . and.(igup == 0).AND.(igur == 0).AND.(igutg == 0).AND.
312 . (nbinter == 0))THEN
314 . msgtype=msgwarning,
315 . anmode=aninfo_blind_1,
317 . c1=titr)
318 END IF
319
320 call extend_array(
nstrf,
SIZE(
nstrf),k1-1+nbinter)
321 DO j=1,nbinter
323 ENDDO
324
325 IF (istyp == 1) THEN
329 IF(sub_id /= 0)
CALL subrotpoint(xm,ym,zm,rtrans,sub_id,lsubmodel)
330
334 IF(sub_id /= 0)
CALL subrotpoint(x1,y1,z1,rtrans,sub_id,lsubmodel)
335
339 IF(sub_id /= 0)
CALL subrotpoint(x2,y2,z2,rtrans,sub_id,lsubmodel)
340 d = xm
341 e = ym
342 f = zm
343 a = ((y1-ym)*(z2-zm))-((y2-ym)*(z1-zm))
344 b = ((x2-xm)*(z1-zm))-((x1-xm)*(z2-zm))
345 c = ((x1-xm)*(y2-ym))-((x2-xm)*(y1-ym))
350 ELSEIF (istyp == 2) THEN
354 IF(sub_id /= 0)
CALL subrotpoint(xm,ym,zm,rtrans,sub_id,lsubmodel)
355
359 IF(sub_id /= 0)
CALL subrotvect(a,b,c,rtrans,sub_id,lsubmodel)
360
362
363 d = xm
364 e = ym
365 f = zm
370 ENDIF
371
372 WRITE (iout,2900)i,
id,trim(titr),
nstrf(k0),char8(1:ilen),deltat,
alpha,ifram,nbinter
373 WRITE (iout,
'(10I10)')(
nstrf(k1-1+j),j=1,
max(0,
min(10,nbinter)))
374 DO j=1,nbinter
375 DO l=1,ninter
378
379 ENDIF
380 ENDDO
381 ENDDO
382
383
384
385
386
387 IF (istyp >= 1 .OR. nfram > 0) THEN
388 IF(istyp == 0) THEN
389 DO k=1,numfram
390 j=k+1
391 jj=(numskw+1)+
nsubmod+
min(iun,nspcond)*numsph+k+1
392 IF(nfram == iskn(4,jj)) THEN
393 a = xframe(7,j)
394 b = xframe(8,j)
395 c = xframe(9,j)
396 d = xframe(10,j)
397 e = xframe(11,j)
398 f = xframe(12,j)
399 n1 = iskn(1,jj)
400 IF (
nstrf(k0+3) =
THEN
401 IF (iskn(1,jj) /= 0) THEN
403 ELSE
404 CALL ancmsg(msgid=742, msgtype=msgerror, anmode=aninfo
406 . c1=titr,
407 . c2='N1',
408 . i2=nfram)
409 ENDIF
410 ENDIF
411 IF (
nstrf(k0+4) == 0 )
THEN
412 IF (iskn(2,jj) /= 0) THEN
414 ELSE
415 CALL ancmsg(msgid=742, msgtype=msgerror,
417 . c1=titr,
418 . c2='N2',
419 . i2=nfram)
420 ENDIF
421 ENDIF
422 IF (
nstrf(k0+5) == 0 )
THEN
423 IF (iskn(3,jj) /= 0) THEN
425 ELSE
426 CALL ancmsg(msgid=742, msgtype=msgerror, anmode=aninfo,
428 . c1=titr,
429 . c2='N3',
430 . i2=nfram)
431 ENDIF
432 ENDIF
433 ENDIF
434 ENDDO
435 ENDIF
436 kk=1+ngrnod
437 nnod = 0
438 cpt = 1
439 max_extension = 22 *
grsize_ele(igus,igrbric,ngrbric)
440 call extend_array(
nstrf,
size(
nstrf),k0 + max_extension)
442 2 b,c,d,e,f,
ixs,ixs10,ixs16,ixs20,
443 3 nixs,nnod,
nstrf,nbinter,k1,
444 4 cpt,nodtag,isolnod,tagelems,
445 5 x1,y1,z1,x2,y2,z2,r)
446
447 kk=kk+ngrbric
448 max_extension = 6 *
grsize_ele(iguq,igrquad,ngrquad)
449 call extend_array(
nstrf,
size(
nstrf),cpt + max_extension)
450 CALL sec_nodes(iguq,istyp,ngrquad,igrquad,x0,a,
452 3 nbinter,k1,4,cpt,nodtag,tagelems(1+numels),
453 4 x1,y1,z1,x2,y2,z2,r)
454
455 kk=kk+ngrquad
456 max_extension = 6 *
grsize_ele(iguc,igrsh4n,ngrshel)
457 call extend_array(
nstrf,
size(
nstrf),cpt + max_extension)
458 CALL sec_nodes(iguc,istyp,ngrshel,igrsh4n,x0,a,
460 3 nbinter,k1,4,cpt,nodtag,tagelems(1+numels
461 . +numelq),
462 4 x1,y1,z1,x2,y2,z2,r)
463 kk=kk+ngrshel
464
465 max_extension = 4 *
grsize_ele(igut,igrtruss,ngrtrus)
466 call extend_array(
nstrf,
size(
nstrf),cpt + max_extension)
467 CALL sec_nodes(igut,istyp,ngrtrus,igrtruss,x0,a,
469 3 nbinter,k1,2,cpt,nodtag,tagelems(1+numels
470 . +numelq+numelc),
471 4 x1,y1,z1,x2,y2,z2,r)
472 kk=kk+ngrtrus
473
474
475 max_extension = 4 *
grsize_ele(igup,igrbeam,ngrbeam)
476 call extend_array(
nstrf,
size(
nstrf),cpt + max_extension)
477 CALL sec_nodes(igup,istyp,ngrbeam,igrbeam,x0,a,
479 3 nbinter,k1,2,cpt,nodtag,tagelems(1+numels
480 . +numelq+numelc+numelt),
481 4 x1,y1,z1,x2,y2,z2,r)
482 kk=kk+ngrbeam
483
484 max_extension = 4 *
grsize_ele(igur,igrspring,ngrspri)
485 call extend_array(
nstrf,
size(
nstrf),cpt + max_extension)
486 CALL sec_nodes(igur,istyp,ngrspri,igrspring,x0,a,
488 3 nbinter,k1,2,cpt,nodtag,tagelems(1+numels
489 . +numelq+numelc+numelt+numelp),
490 4 x1,y1,z1,x2,y2,z2,r)
491 kk=kk+ngrspri
492
493 max_extension = 6 *
grsize_ele(igutg,igrsh3n,ngrsh3n)
494 call extend_array(
nstrf,
size(
nstrf),cpt + max_extension)
495 CALL sec_nodes(igutg,istyp,ngrsh3n,igrsh3n,x0,a,
497 3 nbinter,k1,3,cpt,nodtag,tagelems(1+numels
498 . +numelq+numelc+numelt+numelp+numelr),
499 4 x1,y1,z1,x2,y2,z2,r)
500 ENDIF
501
502 k2=k1+nbinter
503 call extend_array(
nstrf,
size(
nstrf),k2+numnod)
504 IF (nfram == 0 .AND. istyp == 0) THEN
506 ENDIF
507
508 WRITE (iout,3000)nnod
509 WRITE (iout,
'(10I10)')(
itab(
nstrf(k2+j-1)),j=1,nnod)
510 IF (nnod == 0)
512 . msgtype=msgwarning,
513 . anmode=aninfo_blind_1,
515 . c1=titr)
516
517
518 k3=k2+nnod
520 nsegs=
elegror(igus,igrbric,ngrbric,
'BRIC',
521 .
nstrf(k3),2,mess,nfram,tagelems,istyp,
523 k4=k3+2*nsegs
525 nsegq=
elegror(iguq,igrquad,ngrquad,
'QUAD',
526 .
nstrf(k4),2,mess,nfram,tagelems(1+numels),istyp,
528 k5=k4+2*nsegq
530 nsegc=
elegror(iguc,igrsh4n,ngrshel,
'SHEL',
531 .
nstrf(k5),2,mess,nfram,tagelems(1+numels
532 . +numelq),istyp,
534 k6=k5+2*nsegc
536 nsegt=
elegror(igut,igrtruss,ngrtrus,
'TRUS',
537 .
nstrf(k6),2,mess,nfram,tagelems(1+numels
538 . +numelq+numelc),istyp,
540 k7=k6+2*nsegt
542 nsegp=
elegror(igup,igrbeam,ngrbeam,
'BEAM',
543 .
nstrf(k7),2,mess,nfram,tagelems(1+numels
544 . +numelq+numelc+numelt),istyp,
546 k8=k7+2*nsegp
548 nsegr=
elegror(igur,igrspring,ngrspri,
'SPRI',
549 .
nstrf(k8),2,mess,nfram,tagelems(1+numels
550 . +numelq+numelc+numelt+numelp),istyp,
552
553 IF (nb_seatbelt_shells /=0) THEN
555 call extend_array(
nstrf,
SIZE(
nstrf),k8+2*nsegr+2*snstrf1)
557 .
nstrf(k8),2,snstrf1,nfram,tagelems(1+numels
558 . +numelq),istyp,
559 . seatbelt_shell_to_spring)
560 ENDIF
561
562 k9=k8+2*nsegr
564 nsegtg=
elegror(igutg,igrsh3n,ngrsh3n,
'SH3N',
565 .
nstrf(k9),2,mess,nfram,tagelems(1+numels
566 . +numelq+numelc+numelt+numelp+numelr),istyp,
568
569 IF(nsegs+nsegq+nsegc+nsegt+nsegp+nsegr+nsegtg==0)THEN
570 CALL ancmsg(msgid=1813, msgtype=msgwarning, anmode=aninfo,
572 . c1= titr)
573 END IF
574
575
576
577
588 DO l=k0+3,k0+5
589 IF (
nstrf(l) /= 0)
THEN
592 ENDIF
593 ENDDO
594
595
596
604 x3=y1*z2-z1*y2
605 y3=z1*x2-z2*x1
606 z3=x1*y2-x2*y1
607 n3=x3*x3+y3*y3+z3*z3
608 pnor1=sqrt(x1*x1+y1*y1+z1*z1)
609 IF (pnor1 < em20) THEN
610 CALL ancmsg(msgid=508,msgtype=msgerror,anmode=aninfo_blind_1,i1=
id,c1=titr)
611 ELSE
612 pnor2=sqrt(n3)
613 IF (pnor2 > em20) THEN
614 pnorm1=one/(pnor1*pnor2)
615 det1=abs((y3*z1-z3*y1)*pnorm1)
616 det2=abs((z3*x1-x3*z1)*pnorm1)
617 det3=abs((x3*y1-y3*x1)*pnorm1)
618 det=
max(det1,det2,det3)
619 ELSE
620 det=zero
621 ENDIF
622 IF (det < em5) THEN
623 CALL ancmsg(msgid=508,msgtype=msgerror,anmode=aninfo_blind_1,i1=
id,c1=titr)
624 ENDIF
625 ENDIF
626 ENDIF
627
628
629
630
631 WRITE (iout,3300) nsegs
633 .
nstrf(k2),nnod,noprint)
634
635
636
637 WRITE (iout,3400) nsegq
639 . nnod)
640
641
642
643 WRITE (iout,3100) nsegc
645 . nnod)
646
647
648
649 WRITE (iout,3500) nsegt
651 . nnod)
652
653
654
655 WRITE (iout,3600) nsegp
657 . nnod)
658
659
660
661 WRITE (iout,3700) nsegr
663 . nnod)
664
665
666
667 WRITE (iout,3200) nsegtg
669 . nnod)
670
671
672
673 IF(
nstrf(k0) >= 102)
THEN
674 CALL zerore(1,10+30*nnod,secbuf(kr0))
675 ELSEIF(
nstrf(k0) >= 101)
THEN
676 CALL zerore(1,10+24*nnod,secbuf(kr0))
677 ELSEIF(
nstrf(k0) >= 100)
THEN
678 CALL zerore(1,10+12*nnod,secbuf(kr0))
679 ELSE
680 CALL zerore(1,10,secbuf(kr0))
681 ENDIF
682 secbuf(kr0) = deltat
683 secbuf(kr0+1) = zero
684 secbuf(kr0+2) =
alpha
685 secbuf(kr0+3) = zero
686
688 IF(secbuf(1) == zero)THEN
689 secbuf(1) = deltat
690 ELSE
691 maxdt=
max(secbuf(1),deltat)
692 IF(abs((secbuf(1)-deltat)/secbuf(1)) > em06 )THEN
694 . msgtype=msgerror,
695 . anmode=aninfo_blind_2,
697 . c1=titr)
698 ENDIF
699 ENDIF
700 ENDIF
701
704 ELSEIF(
nstrf(k0) >= 100.AND.
nstrf(k0) <= 200)
THEN
706 DO j=1,8
708 ENDDO
709 ENDIF
710 IF(
nstrf(k0) == 1)
THEN
711 lrec = lrec+6*nnod
712 ELSEIF(
nstrf(k0) == 2)
THEN
713 lrec = lrec+12*nnod
714 ENDIF
715
717 nstrf(k0+24) = k9+2*nsegtg
718 nstrf(k0+25) = kr0+10
722
725
726 nodtag = 0
727 tagelems = 0
728 ENDDO
729 CALL udouble(sectids,1,nsect,mess,0,bid)
730
731
733 DEALLOCATE(tagnodes)
734 DEALLOCATE(tagndoubl)
735 DEALLOCATE(tagelems)
736 DEALLOCATE(nodtag)
737
738
739
740 2900 FORMAT(/' SECTION',i10,' ID',i10/
741 + ' ---------------'/
742 + ,a/,
743 + ' TYPE . . . . . . . . . . . . . . .',i10/
744 + ' FILENAME . . . . . . . . . . . . .',a/
745 + ' DELTAT . . . . . . . . . . . . . .',1pg20.13/
746 + ' ALPHA. . . . . . . . . . . . . . .',1pg20.13/
747 + ' FRAME TYPE . . . . . . . . . . . .',i10/
748 + ' NUMBER OF INTERFACES . . . . . . .',i10/
749 + ' INTERFACES:')
750 3000 FORMAT(/
751 + ' NUMBER OF NODES. . . . . . . . . .',i10/
752 + ' NODES:')
753 3100 FORMAT(/
754 + ' NUMBER OF SHELL ELEMENTS . . . . .',i10/
755 + ' SHELL N1 N2 N3 N4')
756 3200 FORMAT(/
757 + ' NUMBER OF 3 NODES SHELL ELEMENTS .',i10/
758 + ' SHELL N1 N2 N3')
759 3300 FORMAT(/
760 + ' NUMBER OF BRICK ELEMENTS . . . . .',i10/
761 + ' BRICK N1 N2 N3 N4',
762 + ' N5 N6 N7 N8')
763 3400 FORMAT(/
764 + ' NUMBER OF QUAD ELEMENTS . . . . .',i10/
765 + ' QUAD N1 N2 N3 N4')
766 3500 FORMAT(/
767 + ' NUMBER OF TRUSS ELEMENTS . . . . .',i10/
768 + ' TRUSS N1 N2')
769 3600 FORMAT(/
770 + ' NUMBER OF BEAM ELEMENTS . . . . .',i10/
771 + ' BEAM N1 N2')
772 3700 FORMAT(/
773 + ' NUMBER OF SPRING ELEMENTS . . . . .',i8/
774 + ' SPRING N1 N2')
775
776 RETURN
void anodset(int *id, int *type)
norm(diag(diag(diag(inv(mat))) -id.SOL), 2) % destroy mumps instance id.JOB
integer function elegror(igu, igrele, ngrele, mot, ibuf, nib, mess, nfram, tagelems, istyp, id, titr)
integer function elegror_seatbelt(igu, igrele, ngrele, ibuf, nib, sibuf, nfram, tagelems, istyp, seatbelt_shell_to_spring)
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_string(name, sval, size, is_available)
subroutine sec_nodes_sol(igu1, istyp, igrbric, x0, a, b, c, d, e, f, ixs, ixs10, ixs16, ixs20, nix, nnod, nstrf, nbinter, k1, j, nodtag, isolnod, tagelems, x1, y1, z1, x2, y2, z2, r)
subroutine sec_tri(nseg, isecbuf, ix, nix, nne, nod, nnod)
subroutine secstri(nseg, isecbuf, ixs, ixs10, ixs16, ixs20, nod, nnod, noprint)
subroutine sec_nodes(igu1, istyp, ngrele, igrele, x0, a, b, c, d, e, f, ix, nix, nnod, nstrf, nbinter, k1, nbnodes, j, nodtag, tagelems, x1, y1, z1, x2, y2, z2, r)
integer, parameter nchartitle
integer, parameter ncharfield
integer, dimension(:), allocatable tagsec
integer, dimension(:), allocatable, target ixs
integer, dimension(:), allocatable, target ipari
integer, dimension(:), allocatable ixt
integer, dimension(:), allocatable ixr
integer, dimension(:), allocatable, target ixtg
integer, dimension(:), allocatable, target itabm1
integer, dimension(:), allocatable itab
integer, dimension(:), allocatable ixp
integer, dimension(:), allocatable, target nom_opt
integer, dimension(:), allocatable nstrf
integer, dimension(:), allocatable ixq
integer, dimension(:), allocatable nom_sect
integer, dimension(:), allocatable ixc
integer function grsize_ele(igu, igrelem, ngrelem)
integer function grsize_ele_trans(igu, igrelem, ngrelem, seatbelt_shell_to_spring)
subroutine hm_sz_r2r(tag, val, lsubmodel)
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)
integer function usr2sys(iu, itabm1, mess, id)
subroutine udouble(list, ilist, nlist, mess, ir, rlist)
subroutine subrotvect(x, y, z, rtrans, sub_id, lsubmodel)
subroutine subrotpoint(x, y, z, rtrans, sub_id, lsubmodel)
subroutine zerore(n1, n2, am)