-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinitialization.f90
78 lines (55 loc) · 1.34 KB
/
initialization.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
76
77
78
subroutine initialization()
! initialization of test specific variables
use m_init
implicit none
integer :: i
! real( kind=dp ) :: ul, ur, pl, pr, al, ar, diaph
! real( kind=dp ) :: rhol, rhor, rhoul, rhour, rhohtl, rhohtr, rhoetl, rhoetr
real( 8 ) :: ul, ur, pl, pr, al, ar, diaph
real( 8 ) :: rhol, rhor, rhoul, rhour, rhohtl, rhohtr, rhoetl, rhoetr
u1 = 0.
u2 = 0.
u3 = 0.
f1 = 0.
f2 = 0.
f3 = 0.
u = 0.
p = 0.
a = 0.
xcell = 0.
xinit = 0.
xend = 1.0
dt = 1e-4
dx = ( xend-xinit ) / dble( ncells)
lambda = dt/dx
tinit = 0.
tend = 0.25
niter = int( (tend-tinit)/dt )
diaph = 0.5
rhol = 1.0
rhor = 0.125
ul = 0.
ur = 0.
pl = 1.0
pr = 0.1
al = sqrt( gamma * pl / rhol )
ar = sqrt( gamma * pr / rhor )
xcell = 0.0
! convert primitive to conservative variables
rhoul = rhol * ul
rhour = rhor * ur
rhoetl = 0.5 * rhoul*ul + pl/(gamma-1.)
rhoetr = 0.5 * rhour*ur + pr/(gamma-1.)
do i = 0, ncells+2
xcell (i) = i * dx
if (xcell (i) < diaph) then
u1 (i) = rhol
u2 (i) = rhoul
u3 (i) = rhoetl
elseif (xcell (i) >= diaph) then
u1 (i) = rhor
u2 (i) = rhour
u3 (i) = rhoetr
end if
end do
end subroutine initialization