OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
m11vs2.F File Reference
#include "implicit_f.inc"
#include "mvsiz_p.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "com08_c.inc"
#include "vect01_c.inc"
#include "param_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine m11vs2 (pm, iparg, ixq, ale_connect, elbuf_tab, v, x, dvp, vn, w, vel, vd2, vdy, vdz, vis, mat, rhov, pv, eiv, rev, rkv, tv, ssp_eq, vxv, vyv, vzv, ialefvm_flg, vx, vy, vz, mom, rho, vol, xmomv, ymomv, zmomv, bufvois, nel)

Function/Subroutine Documentation

◆ m11vs2()

subroutine m11vs2 ( pm,
integer, dimension(nparg,*) iparg,
integer, dimension(7,*) ixq,
type(t_ale_connectivity), intent(in) ale_connect,
type (elbuf_struct_), dimension(ngroup), target elbuf_tab,
v,
x,
dvp,
vn,
w,
vel,
vd2,
vdy,
vdz,
vis,
integer, dimension(*) mat,
rhov,
pv,
eiv,
rev,
rkv,
tv,
ssp_eq,
vxv,
vyv,
vzv,
integer ialefvm_flg,
vx,
vy,
vz,
mom,
rho,
vol,
xmomv,
ymomv,
zmomv,
bufvois,
integer nel )

Definition at line 32 of file m11vs2.F.

39C-----------------------------------------------
40C M o d u l e s
41C-----------------------------------------------
42 USE elbufdef_mod
43 USE alefvm_mod
45C-----------------------------------------------
46C I m p l i c i t T y p e s
47C-----------------------------------------------
48#include "implicit_f.inc"
49C-----------------------------------------------
50C G l o b a l P a r a m e t e r s
51C-----------------------------------------------
52#include "mvsiz_p.inc"
53C-----------------------------------------------
54C C o m m o n B l o c k s
55C-----------------------------------------------
56#include "com01_c.inc"
57#include "com04_c.inc"
58#include "com08_c.inc"
59#include "vect01_c.inc"
60#include "param_c.inc"
61C-----------------------------------------------
62C D u m m y A r g u m e n t s
63C-----------------------------------------------
64 INTEGER IPARG(NPARG,*), IXQ(7,*), MAT(*),IALEFVM_FLG,NEL
66 . pm(npropm,*), v(3,*),x(3,*),dvp(*),vn(*),w(3,*),
67 . vel(*),vd2(*),vdy(*),vdz(*),
68 . rhov(*), pv(*), eiv(*), rev(*), rkv(*),
69 . tv(*),vis(*), bufvois(6,*),ssp_eq(*), vxv(mvsiz), vyv(mvsiz), vzv(mvsiz),
70 . vx(mvsiz), vy(mvsiz), vz(mvsiz),mom(nel,3),rho(mvsiz),vol(mvsiz),
71 . xmomv(mvsiz), ymomv(mvsiz), zmomv(mvsiz)
72 TYPE (ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
73 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
74C-----------------------------------------------
75C L o c a l V a r i a b l e s
76C-----------------------------------------------
77 INTEGER :: I,II,J,JJ(3),IVOI,ML,N,KTY,KLT,MFT,IS,IX1,IX2,
78 . INOD,ICF(2,4),MV,MT,K,KK(6),IAD2
79 my_real :: yn, zn, fac, vn1, vn2, dvy, dvz, massv, mass
80 TYPE(G_BUFEL_) ,POINTER :: GBUF
81 LOGICAL :: bFOUND
82C-----------------------------------------------
83 DATA icf/1,2,2,3,3,4,4,1/
84C-----------------------------------------------
85 mt = mat(1)
86 DO i=1,nel
87 ii=i+nft
88!
89 iad2 = ale_connect%ee_connect%iad_connect(ii)
90 DO j=1,3
91 jj(j) = nel*(j-1)
92 ENDDO
93!
94 !
95 ! SEARCH ADJACENT ELEMENT (MTN /= 11). (HYPOTHESIS : THIS ADJ ELEM IS SUPPOSED TO BE UNIQUE)
96 !
97 DO j=1,4
98 ivoi=ale_connect%ee_connect%connected(iad2 + j - 1)
99 ml=11
100 IF(ivoi/=0)THEN
101 mv=ixq(1,ivoi)
102 ml=nint(pm(19,mv))
103 ENDIF
104 IF(ml/=11)EXIT
105 ENDDO
106 IF(ml/=11)THEN
107 !
108 ! ADJACENT VALUES
109 !
110 IF(ivoi<=numelq)THEN
111 !
112 ! LOCAL ADJACENT ELEM : REFER TO GBUF%
113 !
114 bfound = .false.
115 DO n=1,ngroup
116 kty = iparg(5,n)
117 klt = iparg(2,n)
118 mft = iparg(3,n)
119 IF (kty==2 .AND. ivoi<=klt+mft)THEN
120 bfound = .true.
121 EXIT
122 ENDIF
123 ENDDO
124 IF(.NOT.bfound)cycle !next I
125 gbuf => elbuf_tab(n)%GBUF
126 !PRESSURE
127 is = ivoi-mft-1
128!
129 DO k=1,6
130 kk(k) = klt*(k-1)
131 ENDDO
132!
133 pv(i) = -third*(gbuf%SIG(kk(1)+is+1)+
134 . gbuf%SIG(kk(2)+is+1)+
135 . gbuf%SIG(kk(3)+is+1))
136 !ENERGY
137 eiv(i) = gbuf%EINT(is+1)
138 !DENSITY
139 rhov(i) = gbuf%RHO(is+1)
140 IF(ml==6 .OR. ml==17)vis(i) =pm(24,mv)*rhov(i)
141 !TURBULENCY
142 IF(jtur>0)THEN
143 rkv(i) = gbuf%RK(is+1)
144 rev(i) = gbuf%RE(is+1)
145 vis(i)=vis(i)+pm(81,mv)*rkv(i)**2/rev(i)
146 ENDIF
147 IF (gbuf%G_TEMP > 0) THEN
148 tv(i) = gbuf%TEMP(is+1) ! The adjacent cell must have an allocated temperature; otherwise, TV is set to T0 as initialized.
149 END IF
150 !MOMENTUM
151 IF(alefvm_param%IEnabled == 1)THEN
152 is = ivoi-mft
153 massv = rhov(i)*gbuf%VOL(is)
154 vxv(i) = gbuf%MOM(jj(1) + is)/massv
155 vyv(i) = gbuf%MOM(jj(2) + is)/massv
156 vzv(i) = gbuf%MOM(jj(3) + is)/massv
157 xmomv(i) = gbuf%MOM(jj(1) + is)
158 ymomv(i) = gbuf%MOM(jj(2) + is)
159 zmomv(i) = gbuf%MOM(jj(3) + is)
160 ENDIF
161 ELSE
162 !
163 ! SPMD case : FOR REMOTE ADJACENT ELEM REFER TO BUFVOIS (filled in ALEMAIN)
164 !
165 is = ivoi-numelq
166 pv(i) =bufvois(1,is)
167 eiv(i) =bufvois(2,is)
168 rhov(i)=bufvois(3,is)
169 IF(ml==6.OR.ml==17) vis(i) =pm(24,mv)*rhov(i)
170 IF(jtur>0)THEN
171 rkv(i) =bufvois(4,is)
172 rev(i) =bufvois(6,is)
173 vis(i) =vis(i)+pm(81,mv)*rkv(i)**2/rev(i)
174 ENDIF
175 tv(i) = bufvois(5,is)
176 !VxV(I) = BUFVOIS(07,IS)
177 !VyV(I) = BUFVOIS(08,IS)
178 !VzV(I) = BUFVOIS(09,IS)
179 !XmomV(I) = BUFVOIS(10,IS)
180 !YmomV(I) = BUFVOIS(11,IS)
181 !ZmomV(I) = BUFVOIS(12,IS)
182 ENDIF
183
184
185 !
186 ! FACE VELOCITY
187 !
188 ix1 = ixq(icf(1,j)+1,ii)
189 ix2 = ixq(icf(2,j)+1,ii)
190 yn = (x(2,ix2)-x(2,ix1))
191 zn = (x(3,ix2)-x(3,ix1))
192 fac = one/sqrt(yn**2+zn**2)
193 inod = nint(pm(51,mt))
194 !
195 ! STANDARD FEM FOR MOMENTUM (VELOCITY ON NODES)
196 !
197 IF(ialefvm_flg <= 1)THEN
198 !
199 ! SUPG&ITG
200 !
201 vdy(i)=half*(v(2,ix1)+v(2,ix2))
202 vdz(i)=half*(v(3,ix1)+v(3,ix2))
203 IF(jale>0)THEN
204 vdy(i)=vdy(i)-half*(w(2,ix1)+w(2,ix2))
205 vdz(i)=vdz(i)-half*(w(3,ix1)+w(3,ix2))
206 ENDIF
207 vd2(i)=vdy(i)**2+vdz(i)**2
208 IF(-vdy(i)*zn+vdz(i)*yn<=zero)THEN
209 vdy(i)=zero
210 vdz(i)=zero
211 ENDIF
212 !
213 ! NON REFLECTING BOUNDARY : VN et DVP
214 !
215 IF(inod>=1)THEN
216 vn(i)=fac*(v(2,inod)*yn+v(3,inod)*zn)
217 dvp(i)=zero
218 ELSE
219 vn1=-v(2,ix1)*zn+v(3,ix1)*yn
220 vn2=-v(2,ix2)*zn+v(3,ix2)*yn
221 vel(i)=(min(vn1,vn2))**2
222 vn(i)=half*fac*(vn1+vn2)
223 IF(vn(i)>=zero)vel(i)=zero
224 dvy=v(2,ix2)-v(2,ix1)
225 dvz=v(3,ix2)-v(3,ix1)
226 dvp(i)=fac**2*(dvy*yn+dvz*zn)*dt1
227 IF(n2d==1)THEN
228 dvp(i)=dvp(i)+(v(2,ix1)+v(2,ix2))*dt1/(x(2,ix1)+x(2,ix2))
229 ENDIF
230 ENDIF
231
232 !
233 ! SWITCH TO FVM FOR MOMENTUM (VELOCITY ON CELL CENTROID)
234 !
235 ELSE ! => (IALEFVM_FLG >= 2)
236 vdy(i) = half * (vy(i) + vyv(i))
237 vdz(i) = half * (vz(i) + vzv(i))
238 vd2(i) = vdy(i)**2 + vdz(i)**2
239 IF(vdy(i)*yn + vdz(i)*zn <= zero)THEN
240 vdy(i) = zero
241 vdz(i) = zero
242 ENDIF
243 !
244 ! NON REFLECTING BOUNDARY : VN et DVP
245 !
246 inod=nint(pm(51,mt))
247 IF(inod>=1)THEN
248 vn(i) = v(2,inod)*yn+v(3,inod)*zn
249 dvp(i) = zero
250 ELSE
251 vn(i) = vdy(i)*yn + vdz(i)*zn
252 vel(i) = vn(i)**2
253 IF(vn(i)>=zero) vel(i) = zero
254 dvp(i) = zero !NOT YET CALCULATED : USUALLY NOT USED : EXPERIMENTAL FORMULATION
255 ENDIF
256 endif! IF(IALEFVM_FLG <= 1)THEN
257
258 ELSE
259 vdy(i) = zero
260 vdz(i) = zero
261 vd2(i) = zero
262 vn(i) = zero
263 dvp(i) = zero
264 pv(i) = zero
265 eiv(i) = zero
266 rhov(i) = zero
267 vis(i) = zero
268 rkv(i) = zero
269 tv(i) = zero
270 rev(i) = zero
271 vxv(i) = zero
272 vyv(i) = zero
273 vzv(i) = zero
274 xmomv(i) = zero
275 ymomv(i) = zero
276 zmomv(i) = zero
277 ENDIF
278
279 enddo!next I
280C
281 RETURN
#define my_real
Definition cppsort.cpp:32
#define min(a, b)
Definition macros.h:20
type(alefvm_param_), target alefvm_param
Definition alefvm_mod.F:121