OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i7tri.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| i7tri ../starter/source/interfaces/inter3d1/i7tri.F
25!||--- called by ------------------------------------------------------
26!|| i7buc1 ../starter/source/interfaces/inter3d1/i7buc1.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| i7cmp3 ../starter/source/interfaces/inter3d1/i7cmp3.F
30!|| i7cor3 ../starter/source/interfaces/inter3d1/i7cor3.F
31!|| i7dst3 ../starter/source/interfaces/inter3d1/i7dst3.F
32!|| i7dstk ../starter/source/interfaces/inter3d1/i7dstk.F
33!|| i7pen3 ../starter/source/interfaces/inter3d1/i7pen3.F
34!||--- uses -----------------------------------------------------
35!|| message_mod ../starter/share/message_module/message_mod.F
36!||====================================================================
37 SUBROUTINE i7tri(
38 1 BPE ,PE ,BPN ,PN ,ADD ,
39 2 IRECT ,X ,NB_NC ,NB_EC ,XYZM ,
40 3 I_ADD ,NSV ,I_AMAX,XMAX ,YMAX ,
41 4 ZMAX ,MAXSIZ,I_STOK,I_MEM ,NB_N_B,
42 5 CAND_N ,CAND_E,NSN ,NOINT ,TZINF ,
43 6 MAXBOX ,MINBOX,STF ,STFN ,J_STOK,
44 7 MULTIMP,ISTF ,ITAB ,GAP ,GAP_S ,
45 8 GAP_M ,IGAP ,GAPMIN,GAPMAX,MARGE ,
46 9 GAP_S_L,GAP_M_L,ID ,TITR,
47 1 IX1 ,IX2 ,IX3,IX4 ,NSVG ,
48 2 PROV_N ,PROV_E ,N11,N12 ,N13 ,
49 3 PENE ,X1 ,X2 ,X3 ,X4 ,
50 4 Y1 ,Y2 ,Y3 ,Y4 ,Z1 ,
51 5 Z2 ,Z3 ,Z4 ,XI ,YI ,
52 6 ZI ,X0 ,Y0 ,Z0 ,NX1 ,
53 7 NY1 ,NZ1 ,NX2,NY2 ,NZ2 ,
54 8 NX3 ,NY3 ,NZ3,NX4 ,NY4 ,
55 9 NZ4 ,P1 ,P2 ,P3 ,P4 ,
56 1 LB1 ,LB2 ,LB3,LB4 ,LC1 ,
57 2 LC2 ,LC3 ,LC4,STIF)
58
59C-----------------------------------------------
60C M o d u l e s
61C-----------------------------------------------
62 USE message_mod
64C-----------------------------------------------
65C I m p l i c i t T y p e s
66C-----------------------------------------------
67#include "implicit_f.inc"
68C-----------------------------------------------
69C G l o b a l P a r a m e t e r s
70C-----------------------------------------------
71#include "mvsiz_p.inc"
72#include "param_c.inc"
73C-----------------------------------------------
74C C o m m o n B l o c k s
75C-----------------------------------------------
76#include "com04_c.inc"
77#include "vect07_c.inc"
78C-----------------------------------------------
79C D u m m y A r g u m e n t s
80C-----------------------------------------------
81 INTEGER NB_NC,NB_EC,I_ADD,MAXSIZ,I_STOK,J_STOK,I_MEM,ISTF
82 INTEGER I_BID, I_AMAX,NB_N_B, NOINT, NSN,MULTIMP, IGAP
83 INTEGER ADD(2,0:*),IRECT(4,*),BPE(*),PE(*),BPN(*),PN(*)
84 INTEGER NSV(*),CAND_N(*),CAND_E(*), ITAB(*)
85C REAL
86 my_real
87 . X(3,*),XYZM(6,*),TZINF,STF(*),STFN(*),
88 . MAXBOX,MINBOX, XMAX, YMAX, ZMAX,
89 . GAP, GAP_S(*), GAP_M(*),
90 . GAPMIN, GAPMAX, MARGE, GAPSMX, BGAPSMX,
91 . GAP_S_L(*),GAP_M_L(*)
92 INTEGER ID
93 CHARACTER(LEN=NCHARTITLE) :: TITR
94 INTEGER, DIMENSION(MVSIZ), INTENT(INOUT) :: PROV_N,PROV_E,NSVG
95 INTEGER, DIMENSION(MVSIZ), INTENT(INOUT) :: IX1,IX2,IX3,IX4
96 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: N11,N12,N13,PENE
97 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: X1,X2,X3,X4
98 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: Y1,Y2,Y3,Y4
99 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: Z1,Z2,Z3,Z4
100 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: XI,YI,ZI
101 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: x0,y0,z0
102 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: nx1,ny1,nz1
103 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: nx2,ny2,nz2
104 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: nx3,ny3,nz3
105 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: nx4,ny4,nz4
106 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: p1,p2,p3,p4
107 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: lb1,lb2,lb3,lb4
108 my_real, DIMENSION(MVSIZ), INTENT(INOUT) :: lc1,lc2,lc3,lc4,stif
109C-----------------------------------------------
110C L o c a l V a r i a b l e s
111C-----------------------------------------------
112 INTEGER NB_NCN, NB_ECN, ADDNN, ADDNE, I, J
113 INTEGER INF,SUP,DIR,N1,N2,N3,N4,NN,NE
114 my_real
115 . dx,dy,dz,dsup,seuil,xmx,xmn,
116 . gapv(mvsiz)
117C-----------------------------------------------
118C ROLE OF THE ROUTINE:
119C ===================
120C CLASSIFIES BPE ELEMENTS AND BPN NODES INTO TWO ZONES
121C > OR < TO A DETERMINED BOUNDARY HERE AND OUTPUTS EVERYTHING
122C INTO bpe,hpe, AND bpn,hpn
123C-----------------------------------------------
124C D u m m y A r g u m e n t s
125C
126C NOM DESCRIPTION E/S
127C
128C BPE ARRAY OF FACETTES TO SORT E/S
129C AND THE RESULT ON THE MAX SIDE
130C PE ARRAY OF FACETTES S
131C RESULTAT COTE MIN
132C BPN SORTED NODES ARRAY E/S
133C AND THE RESULT ON THE MAX SIDE
134C PN NODES ARRAY S
135C RESULTAT COTE MIN
136C ADD(2,*) ARRAY OF ADRESSES E/S
137C 1.......ADRESSES NODES C 2.......ADRESSES ELEMENTS
138C ZYZM(6,*) ARRAY OF XYZMIN E/S
139C 1.......XMIN BOITE
140C 2.......YMIN BOITE
141C 3.......ZMIN BOITE
142C 4.......XMAX BOITE
143C 5.......YMAX BOITE
144C 6.......ZMAX BOITE
145C IRECT(4,*) ARRAY OF CONEC FACETTES E
146C X(3,*) COORDONNEES NODALES E
147C NB_NC NUMBER OF CANDIDATE NODES E/S
148C NB_EC NUMBER OF CANDIDATE ELEMENTS E/S
149C I_ADD POSITION IN THE E/S ADDRESS TABLE
150C NSV NOS SYSTEMES DES NODES E
151C Xmax larger abcisse existing e
152C XMAX largest order.existing E
153C Xmax larger existing side E
154C MAXSIZ TAILLE MEMOIRE MAX POSSIBLE E
155C I_STOK storage level of the couples
156C CANDIDATES impact E/S
157C CAND_N boites resultats nodes C CAND_E adresses des boites resultat elements
158C MULTIMP*NSN MAX SIZE NOW ALLOWED FOR THE
159C COUPLES NODES,ELT CANDIDATES
160C NOINT INTERFACE USER NUMBER
161C TZINF TAILLE ZONE INFLUENCE
162C MAXBOX TAILLE MAX BUCKET
163C MINBOX TAILLE MIN BUCKET
164C=======================================================================
165C
166C
167C 1- TEST ARRET = BOITE VIDE
168C BOITE TROP PETITE
169C BOITE NE CONTENANT QU'ONE NODE C NOT ENOUGH MEMORY AVAILABLE
170C
171C-----------------------------------------------------------
172C
173C IF(MEMX>ADD(2,1)+NB_EC)THEN
174C WRITE(ISTDO,*)' *******MEM MAX=',MEMX
175C MEMX=-1
176C ELSEIF(MEMX/=-1)THEN
177C MEMX=ADD(2,1)+NB_EC
178C ENDIF
179C--------------------TEST ON EMPTY BOXES--------------
180C
181 IF(nb_ec==0.OR.nb_nc==0) THEN
182C write(6,*)" BOITE VIDE"
183C MUST COPY THE STACKS' BASES INTO THE CORRESPONDING BAS_DE_PILE
184C BEFORE GOING DOWN INTO THE MIDDLE BRANCH
185 CALL i7dstk(i_add,nb_nc,nb_ec,add,bpn,pn,bpe,pe)
186 RETURN
187 ENDIF
188C
189C-------------------TEST ON BRANCH END / MEMORY OVERFLOW------------
190C
191 dx = xyzm(4,i_add) - xyzm(1,i_add)
192 dy = xyzm(5,i_add) - xyzm(2,i_add)
193 dz = xyzm(6,i_add) - xyzm(3,i_add)
194 dsup= max(dx,dy,dz)
195C
196 IF(add(2,1)+nb_ec>=maxsiz) THEN
197C NO MORE SPACE IN THE ELEMENTS STACK, BOXES TOO SMALL
198 IF ( nb_n_b == numnod) THEN
199 CALL ancmsg(msgid=83,
200 . msgtype=msgerror,
201 . anmode=aninfo,
202 . i1=id,
203 . c1=titr)
204 ENDIF
205 i_mem = 1
206 RETURN
207 ENDIF
208 IF(dsup<minbox.OR.
209 . nb_nc<=nb_n_b.AND.dsup<maxbox.OR.
210 . nb_nc<=nb_n_b.AND.nb_ec==1) THEN
211C
212C write(6,*)" NOUVELLE BOITE "
213C 1- STORAGE OF THE CANDIDATE NODE AND CORRESPONDING ELEMENTS
214C REMOVE THE USELESS ONES
215 DO 20 i=1,nb_ec
216 ne = bpe(i)
217 n1=irect(1,ne)
218 n2=irect(2,ne)
219 n3=irect(3,ne)
220 n4=irect(4,ne)
221 DO 20 j=1,nb_nc
222 nn=nsv(bpn(j))
223 IF(nn/=n1.AND.nn/=n2.AND.nn/=n3.AND.nn/=n4) THEN
224 j_stok = j_stok + 1
225 prov_n(j_stok) = bpn(j)
226 prov_e(j_stok) = ne
227 IF(j_stok==nvsiz) THEN
228 lft = 1
229 llt = nvsiz
230 nft = 0
231 j_stok = 0
232 CALL i7cor3(x ,irect,nsv ,prov_e ,prov_n,
233 2 stf ,stfn ,gapv ,igap ,gap ,
234 3 gap_s,gap_m,istf ,gapmin ,gapmax,
235 4 gap_s_l,gap_m_l ,zero ,ix1 ,ix2 ,
236 5 ix3 ,ix4 ,nsvg,x1 ,x2 ,
237 6 x3 ,x4 ,y1 ,y2 ,y3 ,
238 7 y4 ,z1 ,z2 ,z3 ,z4 ,
239 8 xi ,yi ,zi ,stif ,zero ,
240 9 llt)
241 CALL i7dst3(ix3,ix4,x1 ,x2 ,x3 ,
242 1 x4 ,y1 ,y2 ,y3 ,y4 ,
243 2 z1 ,z2 ,z3 ,z4 ,xi ,
244 3 yi ,zi ,x0 ,y0 ,z0 ,
245 4 nx1,ny1,nz1,nx2,ny2,
246 5 nz2,nx3,ny3,nz3,nx4,
247 6 ny4,nz4,p1 ,p2 ,p3 ,
248 7 p4 ,lb1,lb2,lb3,lb4,
249 8 lc1,lc2,lc3,lc4,llt)
250 CALL i7pen3(marge,gapv,n11,n12,n13 ,
251 1 pene ,nx1 ,ny1,nz1,nx2,
252 2 ny2 ,nz2 ,nx3,ny3,nz3,
253 3 nx4 ,ny4 ,nz4,p1 ,p2 ,
254 4 p3 ,p4,llt)
255 IF(i_stok+nvsiz<multimp*nsn) THEN
256 CALL i7cmp3(i_stok,cand_e ,cand_n,1,pene,
257 1 prov_n,prov_e)
258 ELSE
259 i_bid = 0
260 CALL i7cmp3(i_bid,cand_e,cand_n,0,pene,
261 1 prov_n,prov_e)
262 IF(i_stok+i_bid<multimp*nsn) THEN
263 CALL i7cmp3(i_stok,cand_e,cand_n,1,pene,
264 1 prov_n,prov_e)
265 ELSE
266 i_mem = 2
267c CALL ANSTCKI(NOINT)
268c CALL ANCWARN(103,ANINFO_BLIND_2)
269 RETURN
270 ENDIF
271 ENDIF
272 ENDIF
273C write(6,*)"Node candidat",BPN(J)
274C write(6,*)"Element candidat",NE
275 ENDIF
276 20 CONTINUE
277C MUST COPY THE STACKS' BASES INTO THE CORRESPONDING BAS_DE_PILE
278C BEFORE GOING DOWN INTO THE MIDDLE BRANCH
279 CALL i7dstk(i_add,nb_nc,nb_ec,add,bpn,pn,bpe,pe)
280 RETURN
281 ENDIF
282C
283C-----------------------------------------------------------
284C
285C
286C 2- SORTING PHASE ON THE MEDIANE ACCORDING TO THE GREATEST DIRECTION
287C
288C
289C-----------------------------------------------------------
290C
291C
292C 1- DETERMINER LA DIRECTION A DIVISER X,Y OU Z
293C
294 dir = 1
295 IF(dy==dsup) THEN
296 dir = 2
297 ELSE IF(dz==dsup) THEN
298 dir = 3
299 ENDIF
300 seuil =(xyzm(dir+3,i_add)+xyzm(dir,i_add))/2
301C
302C 2- DIVISER LES NODES EN TWO ZONES
303C
304 nb_ncn= 0
305 addnn= add(1,1)
306 inf = 0
307 sup = 0
308 IF(igap==0)THEN
309 DO i=1,nb_nc
310 IF(x(dir,nsv(bpn(i)))<seuil) THEN
311C STORED AT THE BOTTOM OF THE BP STACK
312 addnn = addnn + 1
313 pn(addnn) = bpn(i)
314 inf = 1
315 ELSE
316 nb_ncn = nb_ncn + 1
317 bpn(nb_ncn) = bpn(i)
318C ON STOCKE EN ECRASANT PROGRESSIVEMENT BPN
319 sup = 1
320 ENDIF
321 END DO
322 ELSE
323 gapsmx = zero
324 bgapsmx = zero
325 DO i=1,nb_nc
326 IF(x(dir,nsv(bpn(i)))<seuil) THEN
327C STORED AT THE BOTTOM OF THE BP STACK
328 addnn = addnn + 1
329 pn(addnn) = bpn(i)
330 gapsmx = max(gapsmx,gap_s(bpn(i)))
331 inf = 1
332 ELSE
333C ON STOCKE EN ECRASANT PROGRESSIVEMENT BPN
334 nb_ncn = nb_ncn + 1
335 bpn(nb_ncn) = bpn(i)
336 bgapsmx = max(bgapsmx,gap_s(bpn(i)))
337 sup = 1
338 ENDIF
339 END DO
340 END IF
341
342CC
343CC 3- DIVISER LES ELEMENTS
344CC
345C NB_ECN= 0
346C ADDNE= ADD(2,1)
347C SEUILI = SEUIL-TZINF
348C SEUILS = SEUIL+TZINF
349C DO 85 I=1,NB_EC
350C INF = 0
351C SUP = 0
352C DO 80 J=1,4
353C IP = IRECT(J,BPE(I))
354C IF(X(DIR,IP)<SEUILS) THEN
355C INF = 1
356C IF(SUP==1) GOTO 81
357C ENDIF
358C IF(X(DIR,IP)>=SEUILI) THEN
359C SUP = 1
360C IF(INF==1) GOTO 81
361C ENDIF
362C 80 CONTINUE
363C
364C 81 CONTINUE
365C IF(INF==1) THEN
366C STORED AT THE BOTTOM OF THE BP STACK
367C ADDNE = ADDNE + 1
368C PE(ADDNE) = BPE(I)
369C ENDIF
370C IF(SUP==1) THEN
371C ON STOCKE EN ECRASANT PROGRESSIVEMENT BPE
372C NB_ECN = NB_ECN + 1
373C BPE(NB_ECN) = BPE(I)
374C ENDIF
375C 85 CONTINUE
376C
377C 3- DIVIDE THE ELEMENTS
378C
379C 2 LIGNES PROV FOR TEST
380C INF = 1
381C SUP = 1
382C
383 nb_ecn= 0
384 addne= add(2,1)
385 IF(igap==0)THEN
386 DO i=1,nb_ec
387 xmx = max(x(dir,irect(1,bpe(i))),x(dir,irect(2,bpe(i))),
388 . x(dir,irect(3,bpe(i))),x(dir,irect(4,bpe(i))))
389 . + tzinf
390 xmn = min(x(dir,irect(1,bpe(i))),x(dir,irect(2,bpe(i))),
391 . x(dir,irect(3,bpe(i))),x(dir,irect(4,bpe(i))))
392 . - tzinf
393 IF(xmn<seuil.AND.inf==1) THEN
394C STORED AT THE BOTTOM OF THE BP STACK
395 addne = addne + 1
396 pe(addne) = bpe(i)
397 ENDIF
398 IF(xmx>=seuil.AND.sup==1) THEN
399C ON STOCKE EN ECRASANT PROGRESSIVEMENT BPE
400 nb_ecn = nb_ecn + 1
401 bpe(nb_ecn) = bpe(i)
402 ENDIF
403 ENDDO
404 ELSE
405 DO i=1,nb_ec
406 xmn = min(x(dir,irect(1,bpe(i))),x(dir,irect(2,bpe(i))),
407 . x(dir,irect(3,bpe(i))),x(dir,irect(4,bpe(i))))
408 . - max(min(gapsmx+gap_m(bpe(i)),gapmax),gapmin)-marge
409 IF(xmn<seuil.AND.inf==1) THEN
410C STORED AT THE BOTTOM OF THE BP STACK
411 addne = addne + 1
412 pe(addne) = bpe(i)
413 ENDIF
414 xmx = max(x(dir,irect(1,bpe(i))),x(dir,irect(2,bpe(i))),
415 . x(dir,irect(3,bpe(i))),x(dir,irect(4,bpe(i))))
416 . + max(min(bgapsmx+gap_m(bpe(i)),gapmax),gapmin)+marge
417 IF(xmx>=seuil.AND.sup==1) THEN
418C ON STOCKE EN ECRASANT PROGRESSIVEMENT BPE
419 nb_ecn = nb_ecn + 1
420 bpe(nb_ecn) = bpe(i)
421 ENDIF
422 ENDDO
423 END IF
424C
425C 4- REMPLIR LES TABLEAUX D'ADRESSES
426C
427 add(1,2) = addnn
428 add(2,2) = addne
429C-----fill the mins of the next box and the maxes of the current one
430C (i.e. threshold is a max for the current one)
431C We're going to go down and so we define a new box
432C fill the maxes of the new box
433C initialises in i7buc1 a 1.E30 comme ca on recupere
434C either XMAX or the max of the box
435 xyzm(1,i_add+1) = xyzm(1,i_add)
436 xyzm(2,i_add+1) = xyzm(2,i_add)
437 xyzm(3,i_add+1) = xyzm(3,i_add)
438 xyzm(4,i_add+1) = xyzm(4,i_add)
439 xyzm(5,i_add+1) = xyzm(5,i_add)
440 xyzm(6,i_add+1) = xyzm(6,i_add)
441 xyzm(dir,i_add+1) = seuil
442 xyzm(dir+3,i_add) = seuil
443C
444 nb_nc = nb_ncn
445 nb_ec = nb_ecn
446C increment the descent level before exiting
447 i_add = i_add + 1
448 IF(i_add>=1000) THEN
449C TROP NIVEAUX PILE ON VAS LES PRENDRE PLUS GRANDES...
450 IF ( nb_n_b == numnod) THEN
451 CALL ancmsg(msgid=83,
452 . msgtype=msgerror,
453 . anmode=aninfo,
454 . i1=id,
455 . c1=titr)
456 ENDIF
457 i_mem = 1
458 RETURN
459 ENDIF
460C
461C this return is only reached if ok = 0
462 RETURN
463 END
subroutine i7cmp3(i_stok, cand_e, cand_n, iflag, pene, prov_n, prov_e)
Definition i7cmp3.F:82
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
integer, parameter nchartitle
subroutine i7cor3(x, irect, nsv, cand_e, cand_n, stf, stfn, gapv, igap, gap, gap_s, gap_m, istf, gapmin, gapmax, gap_s_l, gap_m_l, drad, ix1, ix2, ix3, ix4, nsvg, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, stif, dgapload, last)
Definition i7cor3.F:43
subroutine i7dst3(ix3, ix4, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, x0, y0, z0, nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4, p1, p2, p3, p4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, last)
Definition i7dst3.F:46
subroutine i7dstk(i_add, nb_nc, nb_ec, add, bpn, pn, bpe, pe)
Definition i7dstk.F:33
subroutine i7pen3(marge, gapv, n1, n2, n3, pene, nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4, p1, p2, p3, p4, last)
Definition i7pen3.F:43
subroutine i7tri(bpe, pe, bpn, pn, add, irect, x, nb_nc, nb_ec, xyzm, i_add, nsv, i_amax, xmax, ymax, zmax, maxsiz, i_stok, i_mem, nb_n_b, cand_n, cand_e, nsn, noint, tzinf, maxbox, minbox, stf, stfn, j_stok, multimp, istf, itab, gap, gap_s, gap_m, igap, gapmin, gapmax, marge, gap_s_l, gap_m_l, id, titr, ix1, ix2, ix3, ix4, nsvg, prov_n, prov_e, n11, n12, n13, pene, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, xi, yi, zi, x0, y0, z0, nx1, ny1, nz1, nx2, ny2, nz2, nx3, ny3, nz3, nx4, ny4, nz4, p1, p2, p3, p4, lb1, lb2, lb3, lb4, lc1, lc2, lc3, lc4, stif)
Definition i7tri.F:58
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)
Definition message.F:895