OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
m11vs3.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 m11vs3 (pm, iparg, ixs, ale_connect, elbuf_tab, v, x, dvp, vn, w, vel, vd2, vdx, vdy, vdz, 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

◆ m11vs3()

subroutine m11vs3 ( pm,
integer, dimension(nparg,*) iparg,
integer, dimension(nixs,*) ixs,
type(t_ale_connectivity), intent(in) ale_connect,
type (elbuf_struct_), dimension(ngroup), target elbuf_tab,
v,
x,
dvp,
vn,
w,
vel,
vd2,
vdx,
vdy,
vdz,
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 33 of file m11vs3.F.

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