forked from truongdangqe/Unstruct2D
-
Notifications
You must be signed in to change notification settings - Fork 0
/
limiterRefvals.f90
75 lines (63 loc) · 2.31 KB
/
limiterRefvals.f90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
!> @file limiterRefvals.f90
!!
!! Initialization of limiter reference values.
!
! *****************************************************************************
!
! (c) J. Blazek, CFD Consulting & Analysis, www.cfd-ca.de
! Created February 25, 2014
! Last modification: May 28, 2014
!
! *****************************************************************************
!
! This program is free software; you can redistribute it and/or
! modify it under the terms of the GNU General Public License
! as published by the Free Software Foundation; either version 2
! of the License, or (at your option) any later version.
!
! This program is distributed in the hope that it will be useful,
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! GNU General Public License for more details.
!
! You should have received a copy of the GNU General Public License
! along with this program; if not, write to the Free Software
! Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
!
! *****************************************************************************
!> Computes reference values of limited variables (density, u, v, pressure)
!! and of the control volumes. The reference values are used to normalize
!! variables within the limiter functions (Roe's upwind scheme).
!!
subroutine LimiterRefvals
use ModDataTypes
use ModGeometry
use ModNumerics
use ModPhysics
implicit none
! local variables
real(rtype) :: gam1, rgas, temp, rho, cs, mach
! *****************************************************************************
! reference volume (= largest control volume)
volref = Maxval( vol )
! reference density, velocity and pressure
gam1 = gamma - 1.D0
rgas = gam1*cpgas/gamma
! external flow
if (kflow == "E") then
limref(1) = rhoinf
limref(2) = Sqrt(uinf*uinf+vinf*vinf)
limref(3) = limref(2)
limref(4) = pinf
! internal flow
else
temp = ttinl*(pout/ptinl)**(gam1/gamma)
rho = pout/(rgas*temp)
cs = Sqrt(gamma*pout/rho)
mach = Sqrt(2.D0*((ttinl/temp)-1.D0)/gam1)
limref(1) = rho
limref(2) = mach*cs
limref(3) = limref(2)
limref(4) = pout
endif
end subroutine LimiterRefvals