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

Go to the source code of this file.

Functions/Subroutines

subroutine ale51_upwind2 (pm, x, ixq, flux, flu1, ale_connect, itrimat, ddvol, qmv, iflg)

Function/Subroutine Documentation

◆ ale51_upwind2()

subroutine ale51_upwind2 ( pm,
x,
integer, dimension(nixq,numelq) ixq,
flux,
flu1,
type(t_ale_connectivity), intent(in) ale_connect,
integer itrimat,
ddvol,
qmv,
integer iflg )

Definition at line 33 of file ale51_upwind2.F.

35C-----------------------------------------------
36C M o d u l e s
37C-----------------------------------------------
39 use element_mod , only : nixq
40C-----------------------------------------------
41C I m p l i c i t T y p e s
42C-----------------------------------------------
43#include "implicit_f.inc"
44C-----------------------------------------------
45C G l o b a l P a r a m e t e r s
46C-----------------------------------------------
47#include "mvsiz_p.inc"
48C-----------------------------------------------
49C C o m m o n B l o c k s
50C-----------------------------------------------
51#include "com01_c.inc"
52#include "com04_c.inc"
53#include "vect01_c.inc"
54#include "param_c.inc"
55C-----------------------------------------------
56C D u m m y A r g u m e n t s
57C-----------------------------------------------
58 INTEGER IXQ(NIXQ,NUMELQ), ITRIMAT,IFLG,IAD2
59 my_real pm(npropm,nummat), flux(4,*), flu1(*),ddvol(*),qmv(8,*), x(3,numnod)
60 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECT
61C-----------------------------------------------
62C L o c a l V a r i a b l e s
63C-----------------------------------------------
64 INTEGER I,J,II,MAT(MVSIZ)
65 my_real reduc,qmv5,qmv6,qmv7,qmv8,
66 . flux1(mvsiz), flux2(mvsiz), flux3(mvsiz), flux4(mvsiz),
67 . upwl(4,mvsiz), r1, r2, r3, r4
68C-----------------------------------------------
69 DO i=lft,llt
70 flux1(i) = flux(1,i)
71 flux2(i) = flux(2,i)
72 flux3(i) = flux(3,i)
73 flux4(i) = flux(4,i)
74 ENDDO
75C-----------------------------------------------
76 DO i=lft,llt
77 ii=i+nft
78 mat(i)=ixq(1,ii)
79 ENDDO
80C-----------------------------------------------
81C UPWIND
82C-----------------------------------------------
83 DO j=1,4
84 DO i=lft,llt
85 upwl(j,i)=pm(16,mat(i))
86 ENDDO
87 ENDDO
88C
89 !======================================================!
90 ! BOUNDARY FACE : no volume flux by default !
91 ! slip wall bc !
92 !======================================================!
93 DO i=lft,llt
94 iad2 = ale_connect%ee_connect%iad_connect(i + nft)
95 reduc=pm(92,mat(i))
96 ii=ale_connect%ee_connect%connected(iad2 + 1 - 1)
97 IF(ii == 0)THEN
98 flux1(i)=flux1(i)*reduc
99 ENDIF
100C
101 ii=ale_connect%ee_connect%connected(iad2 + 2 - 1)
102 IF(ii == 0)THEN
103 flux2(i)=flux2(i)*reduc
104 ENDIF
105C
106 ii=ale_connect%ee_connect%connected(iad2 + 3 - 1)
107 IF(ii == 0)THEN
108 flux3(i)=flux3(i)*reduc
109 ENDIF
110C
111 ii=ale_connect%ee_connect%connected(iad2 + 4 - 1)
112 IF(ii == 0)THEN
113 flux4(i)=flux4(i)*reduc
114 ENDIF
115C
116 ENDDO
117C
118 IF(iflg == 1)THEN
119 IF (n2d == 1) THEN
120 !!! Planar integration of momentum when 2D axi
121 DO i=lft,llt
122 ii = i + nft
123 flux(1,i) = flux1(i)-upwl(1,i)*abs(flux1(i))
124 flux(2,i) = flux2(i)-upwl(2,i)*abs(flux2(i))
125 flux(3,i) = flux3(i)-upwl(3,i)*abs(flux3(i))
126 flux(4,i) = flux4(i)-upwl(4,i)*abs(flux4(i))
127C
128 !!! Divide by mean radius
129 qmv(5,i) = flux1(i)+upwl(1,i)*abs(flux1(i))
130 qmv(6,i) = flux2(i)+upwl(2,i)*abs(flux2(i))
131 qmv(7,i) = flux3(i)+upwl(3,i)*abs(flux3(i))
132 qmv(8,i) = flux4(i)+upwl(4,i)*abs(flux4(i))
133C
134 flu1(i) = qmv(5,i) + qmv(6,i) + qmv(7,i) + qmv(8,i)
135
136 r1 = half * (x(2, ixq(2, ii)) + x(2, ixq(3, ii)))
137 r2 = half * (x(2, ixq(3, ii)) + x(2, ixq(4, ii)))
138 r3 = half * (x(2, ixq(4, ii)) + x(2, ixq(5, ii)))
139 r4 = half * (x(2, ixq(5, ii)) + x(2, ixq(2, ii)))
140
141 !!! Beware of r=0 axis
142 IF (r1 /= zero) qmv(5,i) = qmv(5,i) / r1
143 IF (r2 /= zero) qmv(6,i) = qmv(6,i) / r2
144 IF (r3 /= zero) qmv(7,i) = qmv(7,i) / r3
145 IF (r4 /= zero) qmv(8,i) = qmv(8,i) / r4
146 ENDDO
147 ELSE
148 DO i=lft,llt
149 flux(1,i) = flux1(i)-upwl(1,i)*abs(flux1(i))
150 flux(2,i) = flux2(i)-upwl(2,i)*abs(flux2(i))
151 flux(3,i) = flux3(i)-upwl(3,i)*abs(flux3(i))
152 flux(4,i) = flux4(i)-upwl(4,i)*abs(flux4(i))
153
154 qmv(5,i) = flux1(i)+upwl(1,i)*abs(flux1(i))
155 qmv(6,i) = flux2(i)+upwl(2,i)*abs(flux2(i))
156 qmv(7,i) = flux3(i)+upwl(3,i)*abs(flux3(i))
157 qmv(8,i) = flux4(i)+upwl(4,i)*abs(flux4(i))
158
159 flu1(i) = qmv(5,i) + qmv(6,i) + qmv(7,i) + qmv(8,i)
160 ENDDO
161 ENDIF
162 ELSE
163 DO i=lft,llt
164 flux(1,i) = flux1(i)-upwl(1,i)*abs(flux1(i))
165 flux(2,i) = flux2(i)-upwl(2,i)*abs(flux2(i))
166 flux(3,i) = flux3(i)-upwl(3,i)*abs(flux3(i))
167 flux(4,i) = flux4(i)-upwl(4,i)*abs(flux4(i))
168
169 qmv5 = flux1(i)+upwl(1,i)*abs(flux1(i))
170 qmv6 = flux2(i)+upwl(2,i)*abs(flux2(i))
171 qmv7 = flux3(i)+upwl(3,i)*abs(flux3(i))
172 qmv8 = flux4(i)+upwl(4,i)*abs(flux4(i))
173
174 flu1(i) = qmv5 + qmv6 + qmv7 + qmv8
175 ENDDO
176 END IF
177C
178 IF(itrimat > 0)THEN
179 DO i=lft,llt
180 ddvol(i)=half * ( flu1(i)+flux(1,i)+flux(2,i)+flux(3,i)+flux(4,i) )
181 ENDDO
182 ENDIF
183C-----------------------------------------------
184 RETURN
#define my_real
Definition cppsort.cpp:32