OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i10buce.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!|| i10buce ../engine/source/interfaces/intsort/i10buce.F
25!||--- called by ------------------------------------------------------
26!|| i10main_tri ../engine/source/interfaces/intsort/i10main_tri.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../engine/source/output/message/message.F
29!|| arret ../engine/source/system/arret.F
30!|| i10tri ../engine/source/interfaces/intsort/i10tri.F
31!||--- uses -----------------------------------------------------
32!|| message_mod ../engine/share/message_module/message_mod.F
33!||====================================================================
34 SUBROUTINE i10buce(
35 1 X ,IRECT ,NSV ,NMN ,NRTM ,
36 2 NSN ,NCONT ,CAND_E ,CAND_N ,GAP ,
37 3 NOINT ,II_STOK ,TZINF ,MAXBOX ,MINBOX ,
38 4 NB_N_B ,ESHIFT ,BMINMA ,MWAG ,ILD ,
39 7 NCONTACT,NSNROLD ,STFN ,NIN ,IGAP ,
40 8 GAP_S ,NSNR ,RENUM ,STF ,GAP_M ,
41 9 GAPMIN ,GAPMAX ,I_MEM ,INTHEAT, IDT_THERM, NODADT_THERM)
42C============================================================================
43C-----------------------------------------------
44C M o d u l e s
45C-----------------------------------------------
46 USE message_mod
47C-----------------------------------------------
48C I m p l i c i t T y p e s
49C-----------------------------------------------
50#include "implicit_f.inc"
51#include "comlock.inc"
52C-----------------------------------------------
53C C o m m o n B l o c k s
54C-----------------------------------------------
55#include "units_c.inc"
56#include "warn_c.inc"
57#include "com01_c.inc"
58C-----------------------------------------------
59C D u m m y A r g u m e n t s
60C-----------------------------------------------
61 INTEGER NMN, NRTM, NSN, NOINT, NIN, IGAP, NSNR, NSNROLD
62 INTEGER IRECT(4,*),NSV(*),MWAG(*)
63 INTEGER CAND_E(*),CAND_N(*),RENUM(*)
64 INTEGER ILD,NB_N_B,ESHIFT,NCONTACT,NCONT,I_MEM,II_STOK
65 INTEGER ,INTENT(IN) :: INTHEAT
66 INTEGER, INTENT(IN) :: IDT_THERM
67 INTEGER, INTENT(IN) :: NODADT_THERM
68C REAL
70 . gap,tzinf,maxbox,minbox,gapmin, gapmax, bminma(6)
72 . x(3,*),stfn(*), gap_s(*), stf(*), gap_m(*)
73C-----------------------------------------------
74C L o c a l V a r i a b l e s
75C-----------------------------------------------
76 INTEGER I_ADD_MAX
77 PARAMETER (I_ADD_MAX = 1001)
78 INTEGER I, J,I_ADD, IP0, IP1, MAXSIZ,
79 . ADD(2,I_ADD_MAX), LOC_PROC, N,
80 . NSNFIOLD(NSPMD)
81C REAL
82 my_real
83 . xyzm(6,i_add_max-1),marge
84C-----------------------------------------------
85C S o u r c e L i n e s
86C-----------------------------------------------
87C
88C----- TRI PAR BOITES DES ELEMENTS ET DES NOEUDS
89C
90C-----------------------------------------------
91C SI ON A PAS ASSEZ DE MEMOIRE POUR LES PILES ON RECOMMENCE LE TRI
92C EN INCREMENTANT LE NB_N_B (NOMBRE DE NOEUDS PAR BOITE FINIE)
93C
94C POINTEUR NOM TAILLE
95C P0........CAND_A:Adresse de N ds CAND_N NSN + 3[+ NSNROLD dans le cas SPMD]
96C P1........Elt Bas Pile NRTM
97C P2........Elt PILE 2*NRTM
98C P21.......BPN NSN
99C P22.......PN NSN
100C P31.......ADDI 2*I_ADD_MAX
101 maxsiz = 3*(nrtm+100)
102 ip0 = 1
103 ip1 = ip0 + nsn + nsnrold + 3
104C
105C
106C-----INITIALISATION DES ADRESSES ET X,Y,Z
107C
108C ADDE ADDN X Y Z
109C 1 1 XMIN YMIN ZMIN
110C 1 1 XMAX YMAX ZMAX
111C
112 add(1,1) = 0
113 add(2,1) = 0
114 add(1,2) = 0
115 add(2,2) = 0
116 i_add = 1
117 xyzm(1,i_add) = bminma(4)
118 xyzm(2,i_add) = bminma(5)
119 xyzm(3,i_add) = bminma(6)
120 xyzm(4,i_add) = bminma(1)
121 xyzm(5,i_add) = bminma(2)
122 xyzm(6,i_add) = bminma(3)
123 i_mem = 0
124C
125C
126C-----DEBUT DE LA PHASE DE TRI
127C
128C SEPARER B ET N EN TWO
129 marge = tzinf-gap ! il s agit bien de la marge
130 CALL i10tri(
131 1 add ,nsn ,renum ,nsnr ,nrtm ,
132 2 irect ,x ,xyzm ,igap ,gap ,
133 3 i_add ,nsv ,maxsiz ,ii_stok ,cand_n ,
134 4 cand_e ,ncontact,noint ,tzinf ,maxbox ,
135 5 minbox ,i_mem ,nb_n_b ,i_add_max,mwag(ip0),
136 6 eshift ,nsnrold ,stf ,stfn ,gap_s ,
137 7 gap_m ,gapmin ,gapmax ,marge ,nin ,
138 8 intheat, idt_therm, nodadt_therm)
139C---------------------------------
140C I_MEM = 1 ==> PAS ASSEZ DE MEMOIRE PILE
141C I_MEM = 2 ==> PAS ASSEZ DE MEMOIRE CANDIDATS
142C I_MEM = 3 ==> TROP NIVEAUX PILE
143 IF (i_mem == 2) RETURN
144 IF(i_mem==1)THEN
145 nb_n_b = nb_n_b + 1
146 IF ( nb_n_b > ncont) THEN
147 CALL ancmsg(msgid=85,anmode=aninfo,
148 . i1=noint)
149 CALL arret(2)
150 ENDIF
151 ild = 1
152 ELSEIF(i_mem==2) THEN
153 IF(debug(1)>=1) THEN
154 iwarn = iwarn+1
155#include "lockon.inc"
156 WRITE(istdo,*)' **WARNING INTERFACE/MEMORY'
157 WRITE(iout,*)' **WARNING INTERFACE NB:',noint
158 WRITE(iout,*)' TOO MANY POSSIBLE IMPACTS'
159 WRITE(iout,*)' SIZE OF INFLUENCE ZONE IS'
160 WRITE(iout,*)' MULTIPLIED BY 0.75'
161#include "lockoff.inc"
162 ENDIF
163 tzinf = three_over_4*tzinf
164C ne pas dimunuer la taille des boite
165C MINBOX= THREE_OVER_4*MINBOX
166C MAXBOX= THREE_OVER_4*MAXBOX
167 IF( tzinf<=gap ) THEN
168 CALL ancmsg(msgid=85,anmode=aninfo,
169 . i1=noint)
170 CALL arret(2)
171 ENDIF
172 ild = 1
173 ELSEIF(i_mem==3)THEN
174 nb_n_b = nb_n_b + 1
175 IF ( nb_n_b > ncont) THEN
176 CALL ancmsg(msgid=90,anmode=aninfo,
177 . i1=noint)
178 CALL arret(2)
179 ENDIF
180 ild = 1
181 ENDIF
182C
183 RETURN
184 END
#define my_real
Definition cppsort.cpp:32
subroutine i10buce(x, irect, nsv, nmn, nrtm, nsn, ncont, cand_e, cand_n, gap, noint, ii_stok, tzinf, maxbox, minbox, nb_n_b, eshift, bminma, mwag, ild, ncontact, nsnrold, stfn, nin, igap, gap_s, nsnr, renum, stf, gap_m, gapmin, gapmax, i_mem, intheat, idt_therm, nodadt_therm)
Definition i10buce.F:42
subroutine i10tri(add, nsn, renum, nsnr, nrtm, irect, x, xyzm, igap, gap, i_add, nsv, maxsiz, ii_stok, cand_n, cand_e, nsn4, noint, tzinf, maxbox, minbox, i_mem, nb_n_b, i_add_max, cand_a, eshift, nsnrold, stf, stfn, gap_s, gap_m, gapmin, gapmax, marge, nin, intheat, idt_therm, nodadt_therm)
Definition i10tri.F:43
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:889
subroutine arret(nn)
Definition arret.F:87