OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i10buce.F File Reference
#include "implicit_f.inc"
#include "comlock.inc"
#include "units_c.inc"
#include "warn_c.inc"
#include "com01_c.inc"

Go to the source code of this file.

Functions/Subroutines

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)

Function/Subroutine Documentation

◆ i10buce()

subroutine i10buce ( x,
integer, dimension(4,*) irect,
integer, dimension(*) nsv,
integer nmn,
integer nrtm,
integer nsn,
integer ncont,
integer, dimension(*) cand_e,
integer, dimension(*) cand_n,
gap,
integer noint,
integer ii_stok,
tzinf,
maxbox,
minbox,
integer nb_n_b,
integer eshift,
bminma,
integer, dimension(*) mwag,
integer ild,
integer ncontact,
integer nsnrold,
stfn,
integer nin,
integer igap,
gap_s,
integer nsnr,
integer, dimension(*) renum,
stf,
gap_m,
gapmin,
gapmax,
integer i_mem,
integer, intent(in) intheat,
integer, intent(in) idt_therm,
integer, intent(in) nodadt_therm )

Definition at line 34 of file i10buce.F.

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_ADD, IP0, IP1, MAXSIZ,
79 . ADD(2,I_ADD_MAX)
80C REAL
82 . xyzm(6,i_add_max-1),marge
83C-----------------------------------------------
84C S o u r c e L i n e s
85C-----------------------------------------------
86C
87C----- sorting by boxes of elements and nodes
88C
89C-----------------------------------------------
90C if we don't have enough memory for the stacks we restart the sorting
91C by incrementing nb_n_b (number of nodes per finished box)
92C
93C POINTEUR NOM TAILLE
94C P0........CAND_A:address of N in CAND_N NSN + 3[+ NSNROLD in the SPMD case]
95C P1........Elt Bas Pile NRTM
96C P2........Elt PILE 2*NRTM
97C P21.......BPN NSN
98C P22.......PN NSN
99C P31.......ADDI 2*I_ADD_MAX
100 maxsiz = 3*(nrtm+100)
101 ip0 = 1
102 ip1 = ip0 + nsn + nsnrold + 3
103C
104C
105C-----initialization of addresses and x,y,z
106C
107C ADDE ADDN X Y Z
108C 1 1 XMIN YMIN ZMIN
109C 1 1 XMAX YMAX ZMAX
110C
111 add(1,1) = 0
112 add(2,1) = 0
113 add(1,2) = 0
114 add(2,2) = 0
115 i_add = 1
116 xyzm(1,i_add) = bminma(4)
117 xyzm(2,i_add) = bminma(5)
118 xyzm(3,i_add) = bminma(6)
119 xyzm(4,i_add) = bminma(1)
120 xyzm(5,i_add) = bminma(2)
121 xyzm(6,i_add) = bminma(3)
122 i_mem = 0
123C
124C
125C-----beginning of the sorting phase
126C
127C SEPARER B ET N EN TWO
128 marge = tzinf-gap ! it is indeed the margin
129 CALL i10tri(
130 1 add ,nsn ,renum ,nsnr ,nrtm ,
131 2 irect ,x ,xyzm ,igap ,gap ,
132 3 i_add ,nsv ,maxsiz ,ii_stok ,cand_n ,
133 4 cand_e ,ncontact,noint ,tzinf ,maxbox ,
134 5 minbox ,i_mem ,nb_n_b ,i_add_max,mwag(ip0),
135 6 eshift ,nsnrold ,stf ,stfn ,gap_s ,
136 7 gap_m ,gapmin ,gapmax ,marge ,nin ,
137 8 intheat, idt_therm, nodadt_therm)
138C---------------------------------
139C I_MEM = 1 ==> PAS ASSEZ DE MEMOIRE PILE
140C I_MEM = 2 ==> PAS ASSEZ DE MEMOIRE CANDIDATES
141C I_MEM = 3 ==> TROP NIVEAUX PILE
142 IF (i_mem == 2) RETURN
143 IF(i_mem==1)THEN
144 nb_n_b = nb_n_b + 1
145 IF ( nb_n_b > ncont) THEN
146 CALL ancmsg(msgid=85,anmode=aninfo,
147 . i1=noint)
148 CALL arret(2)
149 ENDIF
150 ild = 1
151 ELSEIF(i_mem==2) THEN
152 IF(debug(1)>=1) THEN
153 iwarn = iwarn+1
154#include "lockon.inc"
155 WRITE(istdo,*)' **WARNING INTERFACE/MEMORY'
156 WRITE(iout,*)' **WARNING INTERFACE NB:',noint
157 WRITE(iout,*)' TOO MANY POSSIBLE IMPACTS'
158 WRITE(iout,*)' SIZE OF INFLUENCE ZONE IS'
159 WRITE(iout,*)' MULTIPLIED BY 0.75'
160#include "lockoff.inc"
161 ENDIF
162 tzinf = three_over_4*tzinf
163C do not decrease the box size
164C MINBOX= THREE_OVER_4*MINBOX
165C MAXBOX= THREE_OVER_4*MAXBOX
166 IF( tzinf<=gap ) THEN
167 CALL ancmsg(msgid=85,anmode=aninfo,
168 . i1=noint)
169 CALL arret(2)
170 ENDIF
171 ild = 1
172 ELSEIF(i_mem==3)THEN
173 nb_n_b = nb_n_b + 1
174 IF ( nb_n_b > ncont) THEN
175 CALL ancmsg(msgid=90,anmode=aninfo,
176 . i1=noint)
177 CALL arret(2)
178 ENDIF
179 ild = 1
180 ENDIF
181C
182 RETURN
#define my_real
Definition cppsort.cpp:32
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:895
subroutine arret(nn)
Definition arret.F:86