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

Go to the source code of this file.

Functions/Subroutines

subroutine i25buce (x, v, irect, nsv, stfn, nmn, nrtm, nsn, cand_e, cand_n, gap, noint, ii_stok, mulnsn, bminma, marge, curv_max, pmax_gap, vmaxdt, eshift, nin, stf, gap_s, nsnr, ncont, gap_m, itask, bgapsmx, i_mem, pene_old, itab, nbinflg, mbinflg, ilev, msegtyp, flagremnode, kremnod, remnod, igap, gap_s_l, gap_m_l, icodt, iskew, drad, dgapload)

Function/Subroutine Documentation

◆ i25buce()

subroutine i25buce ( x,
v,
integer, dimension(4,*) irect,
integer, dimension(*) nsv,
stfn,
integer nmn,
integer nrtm,
integer nsn,
integer, dimension(*) cand_e,
integer, dimension(*) cand_n,
gap,
integer noint,
integer ii_stok,
integer mulnsn,
bminma,
marge,
curv_max,
pmax_gap,
vmaxdt,
integer eshift,
integer nin,
stf,
gap_s,
integer nsnr,
integer ncont,
gap_m,
integer itask,
bgapsmx,
integer i_mem,
pene_old,
integer, dimension(*) itab,
integer, dimension(*) nbinflg,
integer, dimension(*) mbinflg,
integer ilev,
integer, dimension(*) msegtyp,
integer flagremnode,
integer, dimension(*) kremnod,
integer, dimension(*) remnod,
integer igap,
gap_s_l,
gap_m_l,
integer, dimension(*) icodt,
integer, dimension(*) iskew,
intent(in) drad,
intent(in) dgapload )

Definition at line 33 of file i25buce.F.

45C============================================================================
46C M o d u l e s
47C-----------------------------------------------
48 USE tri7box
49 USE message_mod
50C-----------------------------------------------
51C I m p l i c i t T y p e s
52C-----------------------------------------------
53#include "implicit_f.inc"
54#include "comlock.inc"
55C-----------------------------------------------
56C C o m m o n B l o c k s
57C-----------------------------------------------
58#include "com01_c.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 INTEGER NMN, NRTM, NSN, NOINT, NIN, NSNR
63 INTEGER IRECT(4,*),NSV(*),ITASK,ILEV, IGAP
64 INTEGER CAND_E(*),CAND_N(*),MSEGTYP(*)
65 INTEGER MULNSN,ESHIFT,NCONT,I_MEM,
66 . II_STOK,ITAB(*),NBINFLG(*),MBINFLG(*),
67 . FLAGREMNODE,KREMNOD(*),REMNOD(*),ICODT(*),ISKEW(*)
68C REAL
69 my_real , INTENT(IN) :: dgapload ,drad
71 . gap,pmax_gap,vmaxdt,
72 . bminma(6),curv_max(nrtm),bgapsmx, marge
74 . x(3,*), v(3,*), stfn(*),pene_old(5,nsn),
75 . stf(*), gap_s(*), gap_m(*), gap_s_l(*), gap_m_l(*)
76C-----------------------------------------------
77C L o c a l V a r i a b l e s
78C-----------------------------------------------
79 INTEGER I,
80 . ISZNSNR
81C REAL
83 . xyzm(6), aaa
84 INTEGER NBX,NBY,NBZ
85 INTEGER (KIND=8) :: NBX8,NBY8,NBZ8,RES8,LVOXEL8
86
87
88C-----------------------------------------------
89C S o u r c e L i n e s
90C-----------------------------------------------
91C
92C----- sorting of elements and nodes
93C
94C-----------------------------------------------
95C
96C----- BORNES DU DOMAINE DEJA CALCULEES
97C
98 xyzm(1) = bminma(4)
99 xyzm(2) = bminma(5)
100 xyzm(3) = bminma(6)
101 xyzm(4) = bminma(1)
102 xyzm(5) = bminma(2)
103 xyzm(6) = bminma(3)
104 i_mem = 0
105C
106 isznsnr = nsnr
107C=============================================================================
108c
109c Si MARGE - DELTA_PMAX_GAP - SOMME(Vrel*dt) < ZERO => RETRI
110c DELTA_PMAX_GAP = MAX((PENEmax(i)-GAP)-(PENEmax_Tri(i)-GAP)
111c
112C=============================================================================
113
114
115 IF( nmn /= 0) THEN
116 aaa = sqrt(nmn /
117 . ((bminma(1)-bminma(4))*(bminma(2)-bminma(5))
118 . +(bminma(2)-bminma(5))*(bminma(3)-bminma(6))
119 . +(bminma(3)-bminma(6))*(bminma(1)-bminma(4))))
120 ELSE
121 aaa = 0
122 ENDIF
123
124 aaa = 0.75*aaa
125
126 nbx = nint(aaa*(bminma(1)-bminma(4)))
127 nby = nint(aaa*(bminma(2)-bminma(5)))
128 nbz = nint(aaa*(bminma(3)-bminma(6)))
129 nbx = max(nbx,1)
130 nby = max(nby,1)
131 nbz = max(nbz,1)
132
133 nbx8=nbx
134 nby8=nby
135 nbz8=nbz
136 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
137 lvoxel8 = lvoxel
138
139 IF(res8 > lvoxel8) THEN
140 aaa = lvoxel
141 aaa = aaa/((nbx8+2)*(nby8+2)*(nbz8+2))
142 aaa = aaa**(third)
143 nbx = int((nbx+2)*aaa)-2
144 nby = int((nby+2)*aaa)-2
145 nbz = int((nbz+2)*aaa)-2
146 nbx = max(nbx,1)
147 nby = max(nby,1)
148 nbz = max(nbz,1)
149 ENDIF
150
151 nbx8=nbx
152 nby8=nby
153 nbz8=nbz
154 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
155
156 IF(res8 > lvoxel8) THEN
157 nbx = min(100,max(nbx8,1))
158 nby = min(100,max(nby8,1))
159 nbz = min(100,max(nbz8,1))
160 ENDIF
161
162!$omp single
163 DO i=1,(nbx+2)*(nby+2)*(nbz+2)
164 voxel1(i)=0
165 ENDDO
166 inivoxel = max(inivoxel,(nbx+2)*(nby+2)*(nbz+2)+1)
167 ! wait not necessary, because there is a barrier at the start of I25TRIVOX
168!$OMP END SINGLE NOWAIT
169
170 CALL i25trivox(
171 1 nsn ,nsnr ,isznsnr ,i_mem ,vmaxdt ,
172 2 irect ,x ,stf ,stfn ,xyzm ,
173 3 nsv ,ii_stok ,cand_n ,eshift ,cand_e ,
174 4 mulnsn ,noint ,v ,bgapsmx ,
175 5 voxel1 ,nbx ,nby ,nbz ,pmax_gap ,
176 6 nrtm ,gap_s ,gap_m ,marge ,curv_max ,
177 7 nin ,itask ,pene_old,itab ,nbinflg ,
178 8 mbinflg ,ilev ,msegtyp ,
179 9 flagremnode,kremnod,remnod ,
180 a igap ,gap_s_l ,gap_m_l ,icodt ,iskew ,
181 b drad ,dgapload )
182C
183C I_MEM = 2 ==> PAS ASSEZ DE MEMOIRE CANDIDATES
184C
185 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine i25trivox(nsn, nsnr, isznsnr, i_mem, vmaxdt, irect, x, stf, stfn, xyzm, nsv, ii_stok, cand_n, eshift, cand_e, mulnsn, noint, v, bgapsmx, voxel, nbx, nby, nbz, pmax_gap, nrtm, gap_s, gap_m, marge, curv_max, nin, itask, pene_old, itab, nbinflg, mbinflg, ilev, msegtyp, flagremnode, kremnod, remnod, igap, gap_s_l, gap_m_l, icodt, iskew, drad, dgapload)
Definition i25trivox.F:46
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
integer, dimension(lvoxel) voxel1
Definition tri7box.F:53
integer inivoxel
Definition tri7box.F:53
integer lvoxel
Definition tri7box.F:51