OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
inimom_fvm.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "vect01_c.inc"
#include "param_c.inc"
#include "inter22.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine inimom_fvm (v, rho, vol, mom, ixs, ipm, mat, iparg1, npf, tf, pm, ssp, sig, nel)

Function/Subroutine Documentation

◆ inimom_fvm()

subroutine inimom_fvm ( v,
rho,
vol,
mom,
integer, dimension(nixs,*) ixs,
integer, dimension(npropmi,*) ipm,
integer, dimension(mvsiz) mat,
integer, dimension(nparg) iparg1,
integer, dimension(*) npf,
tf,
pm,
ssp,
sig,
integer nel )

Definition at line 31 of file inimom_fvm.F.

36C-----------------------------------------------
37C M o d u l e s
38C-----------------------------------------------
39 USE alefvm_mod
40 use element_mod , only : nixs
41C-----------------------------------------------
42C I m p l i c i t T y p e s
43C-----------------------------------------------
44#include "implicit_f.inc"
45C-----------------------------------------------
46C G l o b a l P a r a m e t e r s
47C-----------------------------------------------
48#include "mvsiz_p.inc"
49C-----------------------------------------------
50C C o m m o n B l o c k s
51C-----------------------------------------------
52#include "vect01_c.inc"
53#include "param_c.inc"
54#include "inter22.inc"
55C-----------------------------------------------
56C D u m m y A r g u m e n t s
57C-----------------------------------------------
58 INTEGER :: NEL
59 my_real :: v(3,*) , rho(*) , vol(*) , mom(nel,3) , tf(*) , pm(npropm,*) , ssp(*), sig(nel,6)
60 INTEGER :: IXS(NIXS,*), IPM(NPROPMI,*), MAT(MVSIZ), IPARG1(NPARG), NPF(*)
61C-----------------------------------------------
62C D e s c r i p t i o n
63C-----------------------------------------------
64C
65C +------------+------------+ -----> v2(1:3) => q2(1:3) = RHO*V/4 * v2(1:3)
66C | | |
67C | | V/4 |
68C | q1 | RHO |
69C | | q2(1:3) |
70C | | |
71C +------------+------------+ q_elem(1:3) = sum( qi ,i=1..4)
72C | | | ______________________________
73C | | |
74C | q4 | q3 |
75C | | |
76C | | |
77C +------------+------------+
78C
79C ACONVE()
80C Warning : rho * vel [in] ---------> rho*V * vel [out]
81C Here rho*vel are stored.
82C
83C-----------------------------------------------
84C L o c a l V a r i a b l e s
85C-----------------------------------------------
86 INTEGER :: I, J, II, IALEFVM_FLG,IALEL,IVxFUN, IVyFUN, IVzFUN, MX, MLW, ITYP
87 my_real :: subvol, vcell(3), vnod(3,8),
88 . vx1(mvsiz), vx2(mvsiz), vx3(mvsiz), vx4(mvsiz), vx5(mvsiz), vx6(mvsiz), vx7(mvsiz), vx8(mvsiz),
89 . vy1(mvsiz), vy2(mvsiz), vy3(mvsiz), vy4(mvsiz), vy5(mvsiz), vy6(mvsiz), vy7(mvsiz), vy8(mvsiz),
90 . vz1(mvsiz), vz2(mvsiz), vz3(mvsiz), vz4(mvsiz), vz5(mvsiz), vz6(mvsiz), vz7(mvsiz), vz8(mvsiz),
91 . vx0 , vy0 , vz0,
92 . vx , vy , vz ,
93 . dydx , t0
94 my_real,EXTERNAL :: finter
95C-----------------------------------------------
96C P r e - C o n d i t i o n s
97C-----------------------------------------------
98C Check activation flag for FVM momentum
99
100 ialel = iparg1(7)+iparg1(11)
101 IF(ialel == 0)RETURN
102 IF(alefvm_param%IEnabled==0)RETURN !global unplug if option not present in input file
103
104C-----------------------------------------------
105C S o u r c e L i n e s
106C-----------------------------------------------
107
108 !-----------------------------------------
109 ! IF DEFINED /ALE/SOLVER/
110 !-----------------------------------------
111 !automatic FVM SOLVER for ALE
112 IF(int22>0)THEN
113 IF(alefvm_param%ISOLVER<=1) THEN
114 alefvm_param%ISOLVER=5
115 IF(alefvm_param%IPRINT_1==0)THEN
116 !print *, "** WARNING INT22 : UNDEFINED /ALE/SOLVER CARD"
117 !print *, " ENABLING IT AUTOMATICALLY WITH IMOM_VEL=5"
118 alefvm_param%IPRINT_1 = 1
119 ENDIF
120 ELSEIF(alefvm_param%ISOLVER/=5)THEN
121 alefvm_param%ISOLVER=5
122 IF(alefvm_param%IPRINT_2==0)THEN
123 print *, "** WARNING INT22 : /ALE/SOLVER CARD"
124 print *, " RECOMMENDED VALUE IS IMOM_VEL=5"
125 alefvm_param%IPRINT_2 = 1
126 ENDIF
127 ENDIF
128 ENDIF
129
130 IF(alefvm_param%ISOLVER>0)THEN
131 ipm(251,mat(1)) = alefvm_param%ISOLVER
132 ! 0: Default = 1 expect if /ALE/MAT or /EULER/MAT has IFROM flag defined.
133 ! 1 : FEM
134 ! 2 : FVM U average
135 ! 3 : FVM rho.U average
136 ! 4 : FVM rho.c.U average
137 ! 5 : Godunov Acoustic
138 ! 6 : experimental
139 ENDIF
140
141
142 mlw = iparg1(1)
143 !-----------------------------------------
144
145 !-----------------------------------------
146 IF(mlw /= 11) THEN
147
148 DO i=lft,llt
149 ii = i+nft
150 !---nod-1
151 vx1(i) = v(1,ixs(2,ii))
152 vy1(i) = v(2,ixs(2,ii))
153 vz1(i) = v(3,ixs(2,ii))
154 !---nod-2
155 vx2(i) = v(1,ixs(3,ii))
156 vy2(i) = v(2,ixs(3,ii))
157 vz2(i) = v(3,ixs(3,ii))
158 !---nod-3
159 vx3(i) = v(1,ixs(4,ii))
160 vy3(i) = v(2,ixs(4,ii))
161 vz3(i) = v(3,ixs(4,ii))
162 !---nod-4
163 vx4(i) = v(1,ixs(5,ii))
164 vy4(i) = v(2,ixs(5,ii))
165 vz4(i) = v(3,ixs(5,ii))
166 !---nod-5
167 vx5(i) = v(1,ixs(6,ii))
168 vy5(i) = v(2,ixs(6,ii))
169 vz5(i) = v(3,ixs(6,ii))
170 !---nod-6
171 vx6(i) = v(1,ixs(7,ii))
172 vy6(i) = v(2,ixs(7,ii))
173 vz6(i) = v(3,ixs(7,ii))
174 !---nod-7
175 vx7(i) = v(1,ixs(8,ii))
176 vy7(i) = v(2,ixs(8,ii))
177 vz7(i) = v(3,ixs(8,ii))
178 !---nod-8
179 vx8(i) = v(1,ixs(9,ii))
180 vy8(i) = v(2,ixs(9,ii))
181 vz8(i) = v(3,ixs(9,ii))
182 !---cell_velocity---!
183 vcell(1) = one_over_8 * (vx1(i)+vx2(i)+vx3(i)+vx4(i)+vx5(i)+vx6(i)+vx7(i)+vx8(i))
184 vcell(2) = one_over_8 * (vy1(i)+vy2(i)+vy3(i)+vy4(i)+vy5(i)+vy6(i)+vy7(i)+vy8(i))
185 vcell(3) = one_over_8 * (vz1(i)+vz2(i)+vz3(i)+vz4(i)+vz5(i)+vz6(i)+vz7(i)+vz8(i))
186 !---momentum---!
187 !MOM(I,1:3) = RHO(I) * Vcell(1:3)
188 !rho*VOL* VEL in aconve. VEL is needed before for FLUXES
189 mom(i,1) = vcell(1)*rho(i)
190 mom(i,2) = vcell(2)*rho(i)
191 mom(i,3) = vcell(3)*rho(i)
192 ENDDO
193
194 !write(*,*) "MOMENTUM from inimom_fvm.F"
195 DO i=lft,llt
196 ii = i+nft
197 alefvm_buffer%FCELL(1,ii) = mom(i,1)
198 alefvm_buffer%FCELL(2,ii) = mom(i,2)
199 alefvm_buffer%FCELL(3,ii) = mom(i,3)
200 alefvm_buffer%FCELL(4,ii) = rho(i)
201 alefvm_buffer%FCELL(5,ii) = ssp(i)
202 alefvm_buffer%FCELL(6,ii) = -third*(sig(i,1)+sig(i,2)+sig(i,3))
203 ENDDO
204
205 !-----------------------------------------
206 ! MATERIAL BOUNDARY : IMPOSED
207 !-----------------------------------------
208 ELSE
209
210 !MLW = 11
211 mx = mat(lft)
212 ivxfun = ipm(18,mx)
213 ivyfun = ipm(19,mx)
214 ivzfun = ipm(20,mx)
215 ityp = pm(50,mx)
216 vx0 = pm(101,mx)
217 vy0 = pm(102,mx)
218 vz0 = pm(103,mx)
219
220 IF(ityp == 2)THEN
221 t0 = zero
222
223 IF(ivxfun>0)THEN
224 vx = vx0*finter(ivxfun,t0,npf,tf,dydx)
225 ELSE
226 vx = vx0
227 ENDIF
228
229 IF(ivyfun>0)THEN
230 vy = vy0*finter(ivyfun,t0,npf,tf,dydx)
231 ELSE
232 vy = vy0
233 ENDIF
234
235 IF(ivzfun>0)THEN
236 vz = vz0*finter(ivzfun,t0,npf,tf,dydx)
237 ELSE
238 vz = vz0
239 ENDIF
240
241 DO i=lft,llt
242 ii = i+nft
243 mom(i,1) = vx*rho(i)
244 mom(i,2) = vy*rho(i)
245 mom(i,3) = vz*rho(i)
246 alefvm_buffer%FCELL(1,ii) = mom(i,1)
247 alefvm_buffer%FCELL(2,ii) = mom(i,2)
248 alefvm_buffer%FCELL(3,ii) = mom(i,3)
249 alefvm_buffer%FCELL(4,ii) = rho(i)
250 alefvm_buffer%FCELL(5,ii) = ssp(i)
251 alefvm_buffer%FCELL(6,ii) = -third*(sig(i,1)+sig(i,2)+sig(i,3))
252 ENDDO
253 ELSEIF(ityp == 3)THEN
254 t0 = zero
255 vx=zero
256 vy=zero
257 vz=zero
258 DO i=lft,llt
259 ii = i+nft
260 mom(i,1) = vx*rho(i)
261 mom(i,2) = vy*rho(i)
262 mom(i,3) = vz*rho(i)
263 alefvm_buffer%FCELL(1,ii) = mom(i,1)
264 alefvm_buffer%FCELL(2,ii) = mom(i,2)
265 alefvm_buffer%FCELL(3,ii) = mom(i,3)
266 alefvm_buffer%FCELL(4,ii) = rho(i)
267 alefvm_buffer%FCELL(5,ii) = ssp(i)
268 alefvm_buffer%FCELL(6,ii) = -third*(sig(i,1)+sig(i,2)+sig(i,3))
269 ENDDO
270 ENDIF
271
272 ENDIF
273
274
275C-----------------------------------------------
276 RETURN
#define my_real
Definition cppsort.cpp:32
type(alefvm_buffer_), target alefvm_buffer
Definition alefvm_mod.F:120
type(alefvm_param_), target alefvm_param
Definition alefvm_mod.F:121