OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
eflux3.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!|| eflux3 ../engine/source/ale/euler3d/eflux3.F
25!||--- called by ------------------------------------------------------
26!|| aflux0 ../engine/source/ale/aflux0.F
27!||--- uses -----------------------------------------------------
28!|| ale_connectivity_mod ../common_source/modules/ale/ale_connectivity_mod.F
29!|| element_mod ../common_source/modules/elements/element_mod.F90
30!|| i22tri_mod ../common_source/modules/interfaces/cut-cell-search_mod.F
31!||====================================================================
32 SUBROUTINE eflux3(PM,IXS,V,FLUX,FLU1,VEUL,ALE_CONNECT,TAG22)
33C-----------------------------------------------
34C M o d u l e s
35C-----------------------------------------------
36 USE i22tri_mod
38 use element_mod , only : nixs
39C-----------------------------------------------
40C I m p l i c i t T y p e s
41C-----------------------------------------------
42#include "implicit_f.inc"
43C-----------------------------------------------
44C G l o b a l P a r a m e t e r s
45C-----------------------------------------------
46#include "mvsiz_p.inc"
47C-----------------------------------------------
48C C o m m o n B l o c k s
49C-----------------------------------------------
50#include "vect01_c.inc"
51#include "param_c.inc"
52#include "com01_c.inc"
53#include "com04_c.inc"
54#include "inter22.inc"
55#include "tabsiz_c.inc"
56C-----------------------------------------------
57C D u m m y A r g u m e n t s
58C-----------------------------------------------
59! SPMD CASE : SIXS >= NIXS*NUMELS (SIXS = NIXS*NUMELS_L+NIXS*NSVOIS_L)
60! IXQ(1:NIXS, 1:NUMELS) local elems
61! (1:NIXS, NUMELS+1:) additional elems (also on adjacent domains but connected to the boundary of the current domain)
62!
63 INTEGER IXS(NIXS,SIXS/NIXS)
64 my_real pm(npropm,nummat), v(3,numnod), flux(6,*), flu1(*), veul(lveul,*), tag22(*)
65 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
66C-----------------------------------------------
67C L o c a l V a r i a b l e s
68C-----------------------------------------------
69 INTEGER MAT(MVSIZ), NC1(MVSIZ), NC2(MVSIZ), NC3(MVSIZ), NC4(MVSIZ), NC5(MVSIZ), NC6(MVSIZ),
70 . NC7(MVSIZ), NC8(MVSIZ), I, II,J, IAD2
71 my_real n1x(mvsiz),
72 . n2x(mvsiz), n3x(mvsiz), n4x(mvsiz), n5x(mvsiz), n6x(mvsiz), n1y(mvsiz), n2y(mvsiz), n3y(mvsiz),
73 . n4y(mvsiz), n5y(mvsiz), n6y(mvsiz), n1z(mvsiz), n2z(mvsiz), n3z(mvsiz), n4z(mvsiz), n5z(mvsiz),
74 . n6z(mvsiz), flux1(mvsiz), flux2(mvsiz), flux3(mvsiz), flux4(mvsiz), flux5(mvsiz),
75 . flux6(mvsiz), vx1(mvsiz), vx2(mvsiz), vx3(mvsiz), vx4(mvsiz), vx5(mvsiz), vx6(mvsiz),
76 . vy1(mvsiz), vy2(mvsiz), vy3(mvsiz), vy4(mvsiz), vy5(mvsiz), vy6(mvsiz), vz1(mvsiz), vz2(mvsiz),
77 . vz3(mvsiz), vz4(mvsiz), vz5(mvsiz), vz6(mvsiz), vdx1(mvsiz), vdx2(mvsiz), vdx3(mvsiz),
78 . vdx4(mvsiz), vdx5(mvsiz), vdx6(mvsiz), vdx7(mvsiz), vdx8(mvsiz), vdy1(mvsiz), vdy2(mvsiz),
79 . vdy3(mvsiz), vdy4(mvsiz), vdy5(mvsiz), vdy6(mvsiz), vdy7(mvsiz), vdy8(mvsiz), vdz1(mvsiz),
80 . vdz2(mvsiz), vdz3(mvsiz), vdz4(mvsiz), vdz5(mvsiz), vdz6(mvsiz), vdz7(mvsiz), vdz8(mvsiz),
81 . reduc,upwl(6,mvsiz)
82 LOGICAL debug_outp
83C-----------------------------------------------
84C S o u r c e L i n e s
85C-----------------------------------------------
86 !======================================================!
87 ! INITIALIZATION : COORDINATES & RELATIVE VELOCITIES !
88 !======================================================!
89 DO i=lft,llt
90 ii=i+nft
91 mat(i)=ixs(1,ii)
92 nc1(i)=ixs(2,ii)
93 nc2(i)=ixs(3,ii)
94 nc3(i)=ixs(4,ii)
95 nc4(i)=ixs(5,ii)
96 nc5(i)=ixs(6,ii)
97 nc6(i)=ixs(7,ii)
98 nc7(i)=ixs(8,ii)
99 nc8(i)=ixs(9,ii)
100
101 vdx1(i)=v(1,nc1(i))
102 vdy1(i)=v(2,nc1(i))
103 vdz1(i)=v(3,nc1(i))
104
105 vdx2(i)=v(1,nc2(i))
106 vdy2(i)=v(2,nc2(i))
107 vdz2(i)=v(3,nc2(i))
108
109 vdx3(i)=v(1,nc3(i))
110 vdy3(i)=v(2,nc3(i))
111 vdz3(i)=v(3,nc3(i))
112
113 vdx4(i)=v(1,nc4(i))
114 vdy4(i)=v(2,nc4(i))
115 vdz4(i)=v(3,nc4(i))
116
117 vdx5(i)=v(1,nc5(i))
118 vdy5(i)=v(2,nc5(i))
119 vdz5(i)=v(3,nc5(i))
120
121 vdx6(i)=v(1,nc6(i))
122 vdy6(i)=v(2,nc6(i))
123 vdz6(i)=v(3,nc6(i))
124
125 vdx7(i)=v(1,nc7(i))
126 vdy7(i)=v(2,nc7(i))
127 vdz7(i)=v(3,nc7(i))
128
129 vdx8(i)=v(1,nc8(i))
130 vdy8(i)=v(2,nc8(i))
131 vdz8(i)=v(3,nc8(i))
132 ENDDO
133
134 !======================================================!
135 ! RELATIVE VELOCITIES ON EACH FACE !
136 ! [V_face] = 1/4 Sum([V_node]) !
137 ! Results are divided by 2 at this step : !
138 ! [0.5*V_face] = 1/8 Sum([V_node]) !
139 !======================================================!
140 DO i=lft,llt
141 vx1(i)=one_over_8*(vdx1(i)+vdx2(i)+vdx3(i)+vdx4(i))
142 vx2(i)=one_over_8*(vdx3(i)+vdx4(i)+vdx8(i)+vdx7(i))
143 vx3(i)=one_over_8*(vdx5(i)+vdx6(i)+vdx7(i)+vdx8(i))
144 vx4(i)=one_over_8*(vdx1(i)+vdx2(i)+vdx6(i)+vdx5(i))
145 vx5(i)=one_over_8*(vdx2(i)+vdx3(i)+vdx7(i)+vdx6(i))
146 vx6(i)=one_over_8*(vdx1(i)+vdx4(i)+vdx8(i)+vdx5(i))
147
148 vy1(i)=one_over_8*(vdy1(i)+vdy2(i)+vdy3(i)+vdy4(i))
149 vy2(i)=one_over_8*(vdy3(i)+vdy4(i)+vdy8(i)+vdy7(i))
150 vy3(i)=one_over_8*(vdy5(i)+vdy6(i)+vdy7(i)+vdy8(i))
151 vy4(i)=one_over_8*(vdy1(i)+vdy2(i)+vdy6(i)+vdy5(i))
152 vy5(i)=one_over_8*(vdy2(i)+vdy3(i)+vdy7(i)+vdy6(i))
153 vy6(i)=one_over_8*(vdy1(i)+vdy4(i)+vdy8(i)+vdy5(i))
154
155 vz1(i)=one_over_8*(vdz1(i)+vdz2(i)+vdz3(i)+vdz4(i))
156 vz2(i)=one_over_8*(vdz3(i)+vdz4(i)+vdz8(i)+vdz7(i))
157 vz3(i)=one_over_8*(vdz5(i)+vdz6(i)+vdz7(i)+vdz8(i))
158 vz4(i)=one_over_8*(vdz1(i)+vdz2(i)+vdz6(i)+vdz5(i))
159 vz5(i)=one_over_8*(vdz2(i)+vdz3(i)+vdz7(i)+vdz6(i))
160 vz6(i)=one_over_8*(vdz1(i)+vdz4(i)+vdz8(i)+vdz5(i))
161 ENDDO
162
163 !======================================================!
164 ! NORMAL VECTORS ON EACH DACE !
165 ! 2S[n] = [diag1] x [diag2] !
166 ! where !
167 ! [n] : unitary normal vector on face !
168 !======================================================!
169 DO i=lft,llt
170 ii=i+nft
171 n1x(i)=veul(14,ii)
172 n2x(i)=veul(15,ii)
173 n3x(i)=veul(16,ii)
174 n4x(i)=veul(17,ii)
175 n5x(i)=veul(18,ii)
176 n6x(i)=veul(19,ii)
177
178 n1y(i)=veul(20,ii)
179 n2y(i)=veul(21,ii)
180 n3y(i)=veul(22,ii)
181 n4y(i)=veul(23,ii)
182 n5y(i)=veul(24,ii)
183 n6y(i)=veul(25,ii)
184
185 n1z(i)=veul(26,ii)
186 n2z(i)=veul(27,ii)
187 n3z(i)=veul(28,ii)
188 n4z(i)=veul(29,ii)
189 n5z(i)=veul(30,ii)
190 n6z(i)=veul(31,ii)
191 ENDDO
192
193 !======================================================!
194 ! FLUXES CALCULATION ON EACH FACE !
195 ! FLUX_face = [V_face].[n] !
196 ! = [0.5*V_face] . [2S*n] !
197 !======================================================!
198 DO i=lft,llt
199 flux1(i)=(vx1(i)*n1x(i)+vy1(i)*n1y(i)+vz1(i)*n1z(i))
200 flux2(i)=(vx2(i)*n2x(i)+vy2(i)*n2y(i)+vz2(i)*n2z(i))
201 flux3(i)=(vx3(i)*n3x(i)+vy3(i)*n3y(i)+vz3(i)*n3z(i))
202 flux4(i)=(vx4(i)*n4x(i)+vy4(i)*n4y(i)+vz4(i)*n4z(i))
203 flux5(i)=(vx5(i)*n5x(i)+vy5(i)*n5y(i)+vz5(i)*n5z(i))
204 flux6(i)=(vx6(i)*n6x(i)+vy6(i)*n6y(i)+vz6(i)*n6z(i))
205 ENDDO
206
207
208 !INTERFACE 22 ONLY - OUTPUT---------------! OBSOLETE
209 IF(int22>0)THEN
210 debug_outp = .false.
211 if(ibug22_flux/=0)then
212 debug_outp = .false.
213 if(ibug22_flux>0)then
214 do i=lft,llt
215 if(ixs(11,i+nft) == ibug22_flux)then
216 if(tag22(i)==zero)then
217 debug_outp=.true.
218 exit
219 endif
220 endif
221 enddo
222 elseif(ibug22_flux==-1)then
223 debug_outp = .true.
224 endif
225 endif
226 !INTERFACE 22 ONLY - OUTPUT---------------!
227 if(debug_outp)then
228!#!include "lockon.inc"
229 print *, " |--------eflux3.F--------|"
230 print *, " | THREAD INFORMATION |"
231 print *, " |------------------------|"
232 print *, " NCYCLE =", ncycle
233 do i=lft,llt
234 if(ibug22_flux/=ixs(11,i+nft).and.ibug22_flux/=-1)cycle
235 if (tag22(i)==zero)print *," UNCUT"!cycle
236 print *, " brique=", ixs(11,nft+i)
237 write (*,fmt='(A,6E26.14)') " Flux(1:6)=", flux(1:6,i)
238 write (*,fmt='(A,1E26.14)') " Flu1=", flu1(i)
239 print *, " ------------------------"
240 enddo
241!#!include "lockoff.inc"
242 endif
243 ENDIF
244 !-----------------------------------------!
245
246
247 !======================================================!
248 ! TRIMATERIAL CASE INITIALIZATION (LAW51) !
249 ! -->RETURN !
250 !======================================================!
251 IF(nint(pm(19,mat(1))) == 51)THEN
252 DO i=lft,llt
253 flux(1,i)=flux1(i)
254 flux(2,i)=flux2(i)
255 flux(3,i)=flux3(i)
256 flux(4,i)=flux4(i)
257 flux(5,i)=flux5(i)
258 flux(6,i)=flux6(i)
259 ENDDO !next I
260 RETURN
261 ENDIF
262
263 !======================================================!
264 ! BOUNDARY FACE : no volume flux by default !
265 ! slip wall bc !
266 !======================================================!
267 DO j=1,6
268 DO i=lft,llt
269 upwl(j,i)=pm(16,mat(i))
270 ENDDO !next I
271 ENDDO !next J
272
273 DO i=lft,llt
274 iad2 = ale_connect%ee_connect%iad_connect(i + nft)
275 reduc=pm(92,mat(i))
276 !---face1---!
277 ii=ale_connect%ee_connect%connected(iad2 + 1 - 1)
278 IF(ii == 0)THEN
279 flux1(i)=flux1(i)*reduc
280 ENDIF
281 !---face2---!
282 ii=ale_connect%ee_connect%connected(iad2 + 2 - 1)
283 IF(ii == 0)THEN
284 flux2(i)=flux2(i)*reduc
285 ENDIF
286 !---face3---!
287 ii=ale_connect%ee_connect%connected(iad2 + 3 - 1)
288 IF(ii == 0)THEN
289 flux3(i)=flux3(i)*reduc
290 ENDIF
291 !---face4---!
292 ii=ale_connect%ee_connect%connected(iad2 + 4 - 1)
293 IF(ii == 0)THEN
294 flux4(i)=flux4(i)*reduc
295 ENDIF
296 !---face5---!
297 ii=ale_connect%ee_connect%connected(iad2 + 5 - 1)
298 IF(ii == 0)THEN
299 flux5(i)=flux5(i)*reduc
300 ENDIF
301 !---face6---!
302 ii=ale_connect%ee_connect%connected(iad2 + 6 - 1)
303 IF(ii == 0)THEN
304 flux6(i)=flux6(i)*reduc
305 ENDIF
306 ENDDO !next I
307
308 DO i=lft,llt
309 flux(1,i)=flux1(i)-upwl(1,i)*abs(flux1(i))
310 flux(2,i)=flux2(i)-upwl(2,i)*abs(flux2(i))
311 flux(3,i)=flux3(i)-upwl(3,i)*abs(flux3(i))
312 flux(4,i)=flux4(i)-upwl(4,i)*abs(flux4(i))
313 flux(5,i)=flux5(i)-upwl(5,i)*abs(flux5(i))
314 flux(6,i)=flux6(i)-upwl(6,i)*abs(flux6(i))
315
316 flu1(i) =flux1(i)+upwl(1,i)*abs(flux1(i))
317 . +flux2(i)+upwl(2,i)*abs(flux2(i))
318 . +flux3(i)+upwl(3,i)*abs(flux3(i))
319 . +flux4(i)+upwl(4,i)*abs(flux4(i))
320 . +flux5(i)+upwl(5,i)*abs(flux5(i))
321 . +flux6(i)+upwl(6,i)*abs(flux6(i))
322 ENDDO !next I
323C-----------------------------------------------
324 RETURN
325 END
#define my_real
Definition cppsort.cpp:32
subroutine eflux3(pm, ixs, v, flux, flu1, veul, ale_connect, tag22)
Definition eflux3.F:33