OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i25buce.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!|| i25buce ../engine/source/interfaces/intsort/i25buce.F
25!||--- called by ------------------------------------------------------
26!|| i25main_tri ../engine/source/interfaces/intsort/i25main_tri.F
27!||--- calls -----------------------------------------------------
28!|| i25trivox ../engine/source/interfaces/intsort/i25trivox.F
29!||--- uses -----------------------------------------------------
30!|| message_mod ../engine/share/message_module/message_mod.F
31!|| tri7box ../engine/share/modules/tri7box.F
32!||====================================================================
33 SUBROUTINE i25buce(
34 1 X ,V ,IRECT ,NSV ,STFN ,
35 2 NMN ,NRTM ,NSN ,CAND_E ,CAND_N ,
36 3 GAP ,NOINT ,II_STOK ,MULNSN ,BMINMA ,
37 4 MARGE ,CURV_MAX,PMAX_GAP,VMAXDT ,
38 5 ESHIFT ,NIN ,STF ,GAP_S ,
39 6 NSNR ,NCONT ,GAP_M ,ITASK ,BGAPSMX ,
40 7 I_MEM ,PENE_OLD,ITAB ,NBINFLG ,MBINFLG ,
41 8 ILEV ,MSEGTYP ,
42 9 FLAGREMNODE,KREMNOD,REMNOD ,
43 A IGAP ,GAP_S_L ,GAP_M_L ,ICODT ,ISKEW ,
44 B DRAD ,DGAPLOAD)
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,IDT,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
70 my_real
71 . GAP,PMAX_GAP,VMAXDT,
72 . BMINMA(6),CURV_MAX(NRTM),BGAPSMX, MARGE
73 my_real
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, J, IP0, IP1, MAXSIZ,
80 . loc_proc, n, isznsnr,
81 . nsnfiold(nspmd)
82C REAL
83 my_real
84 . xyzm(6), aaa
85 INTEGER NBX,NBY,NBZ
86 INTEGER (KIND=8) :: NBX8,NBY8,NBZ8,RES8,LVOXEL8
87 INTEGER :: INIVOXEL_L
88
89C-----------------------------------------------
90C S o u r c e L i n e s
91C-----------------------------------------------
92C
93C----- TRI DES ELEMENTS ET DES NOEUDS
94C
95C-----------------------------------------------
96C
97C----- BORNES DU DOMAINE DEJA CALCULEES
98C
99 xyzm(1) = bminma(4)
100 xyzm(2) = bminma(5)
101 xyzm(3) = bminma(6)
102 xyzm(4) = bminma(1)
103 xyzm(5) = bminma(2)
104 xyzm(6) = bminma(3)
105 i_mem = 0
106C
107 isznsnr = nsnr
108C=============================================================================
109c
110c Si MARGE - DELTA_PMAX_GAP - SOMME(Vrel*dt) < ZERO => RETRI
111c DELTA_PMAX_GAP = MAX((PENEmax(i)-GAP)-(PENEmax_Tri(i)-GAP)
112c
113C=============================================================================
114
115
116 IF( nmn /= 0) THEN
117 aaa = sqrt(nmn /
118 . ((bminma(1)-bminma(4))*(bminma(2)-bminma(5))
119 . +(bminma(2)-bminma(5))*(bminma(3)-bminma(6))
120 . +(bminma(3)-bminma(6))*(bminma(1)-bminma(4))))
121 ELSE
122 aaa = 0
123 ENDIF
124
125 aaa = 0.75*aaa
126
127 nbx = nint(aaa*(bminma(1)-bminma(4)))
128 nby = nint(aaa*(bminma(2)-bminma(5)))
129 nbz = nint(aaa*(bminma(3)-bminma(6)))
130 nbx = max(nbx,1)
131 nby = max(nby,1)
132 nbz = max(nbz,1)
133
134 nbx8=nbx
135 nby8=nby
136 nbz8=nbz
137 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
138 lvoxel8 = lvoxel
139
140 IF(res8 > lvoxel8) THEN
141 aaa = lvoxel
142 aaa = aaa/((nbx8+2)*(nby8+2)*(nbz8+2))
143 aaa = aaa**(third)
144 nbx = int((nbx+2)*aaa)-2
145 nby = int((nby+2)*aaa)-2
146 nbz = int((nbz+2)*aaa)-2
147 nbx = max(nbx,1)
148 nby = max(nby,1)
149 nbz = max(nbz,1)
150 ENDIF
151
152 nbx8=nbx
153 nby8=nby
154 nbz8=nbz
155 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
156
157 IF(res8 > lvoxel8) THEN
158 nbx = min(100,max(nbx8,1))
159 nby = min(100,max(nby8,1))
160 nbz = min(100,max(nbz8,1))
161 ENDIF
162
163!$OMP SINGLE
164 DO i=1,(nbx+2)*(nby+2)*(nbz+2)
165 voxel1(i)=0
166 ENDDO
167 inivoxel = max(inivoxel,(nbx+2)*(nby+2)*(nbz+2)+1)
168 ! wait not necessary, because there is a barrier at the start of I25TRIVOX
169!$OMP END SINGLE NOWAIT
170
171 CALL i25trivox(
172 1 nsn ,nsnr ,isznsnr ,i_mem ,vmaxdt ,
173 2 irect ,x ,stf ,stfn ,xyzm ,
174 3 nsv ,ii_stok ,cand_n ,eshift ,cand_e ,
175 4 mulnsn ,noint ,v ,bgapsmx ,
176 5 voxel1 ,nbx ,nby ,nbz ,pmax_gap ,
177 6 nrtm ,gap_s ,gap_m ,marge ,curv_max ,
178 7 nin ,itask ,pene_old,itab ,nbinflg ,
179 8 mbinflg ,ilev ,msegtyp ,
180 9 flagremnode,kremnod,remnod ,
181 a igap ,gap_s_l ,gap_m_l ,icodt ,iskew ,
182 b drad ,dgapload )
183C
184C I_MEM = 2 ==> PAS ASSEZ DE MEMOIRE CANDIDATS
185C
186 RETURN
187 END
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)
Definition i25buce.F:45
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