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