Professional Documents
Culture Documents
cn/~xuaoxiqi
1. Problem
i
Initial condition:
Density_left = 1.0 Density_right = 0.125
Pressure_left = 1.0 Pressure_right = 0.1
Velocity_left = 0.0 Velocity_right = 0.0
2. Numerical scheme
Where .
Splitting the flux vector F into convective component and pressure component,
( An alternative choice is )
3. Source codes:
4.
5. !!! This program solves Riemann problem for the Euler equations using AUSM first-order
upwind methods
6. !!! This work is licensed under the Creative Commons Attribution-NonCommercial 3.0
Unported License.
7. !!! Ao Xu, Profiles: <http://www.linkedin.com/pub/ao-xu/30/a72/a29>
8.
9. !!!
10. !!! Shock Tube
11. !!! -------------------------|-------------------------
12. !!! | | |
13. !!! | | |
14. !!! | | |
15. !!! -------------------------|-------------------------
16. !!! Contact Discontinuity
17. !!!
18.
19. !!! x1,x1----------------Left/Right side
20. !!! diaph----------------Initial discontinuity
21. !!! pl,pr----------------Left/Right side pressure
22. !!! rhol,rhor------------Left/Right side density
23. !!! ul,ur----------------Left/Right side velocity
24. !!! al,ar----------------Left/Right side local speed of sound
25.
26. program main
27. implicit none
28. integer, parameter :: N=1000
29. integer :: i, itert, itc
30. real(8), parameter :: gamma=1.4d0, R=287.14d0
31. real(8) :: X(0:N+2), p(0:N+2), a(0:N+2), u(0:N+2), u1(0:N+2),
u2(0:N+2), u3(0:N+2), f1(0:N+1), f2(0:N+1), f3(0:N+1)
Ao Xu Homepage: http://home.ustc.edu.cn/~xuaoxiqi
117. real(8) :: dx, diaph, rhol, rhor, rul, rur, retl, retr
118. real(8) :: X(0:N+2),u1(0:N+2), u2(0:N+2), u3(0:N+2)
119.
120. do i = 0,N+2
121. X(i) = i*dx
122. if(X(i).LT.diaph) then
123. u1(i) = rhol
124. u2(i) = rul
125. u3(i) = retl
126. elseif(X(i).GE.diaph) then
127. u1(i) = rhor
128. u2(i) = rur
129. u3(i) = retr
130. endif
131. enddo
132.
133. end subroutine initial
134.
135.
136.
137. subroutine AUSM(gamma,rl,rul,retl,rr,rur,retr,f1,f2,f3)
138. implicit none
139. real(8) :: gamma, rl, rul, retl, rr, rur, retr, f1, f2, f3
140. real(8) :: rhol, rhor, ul, ur, pl, pr, hl, hr, al, ar, Ml, Mr
141. real(8) :: Mp, pp, Mm, pm, Mpm
142.
143. !!! Convert conservative variables to primitive variables.
144. rhol = rl
145. rhor = rr
146. ul = rul/rhol
147. ur = rur/rhor
148. pl = (gamma-1.0d0)*(retl - 0.5d0*rul*rul/rhol)
149. pr = (gamma-1.0d0)*(retr - 0.5d0*rur*rur/rhor)
150. hl = (retl+pl)/rhol
151. hr = (retr+pr)/rhor
152. al = sqrt(gamma*pl/rhol)
153. ar = sqrt(gamma*pr/rhor)
154. Ml = ul/al
155. Mr = ur/ar
156.
157. !!! Compute positive splitting of M and p.
158. if(Ml.LE.-1.0d0) then
159. Mp = 0.0d0
160. pp = 0.0d0
Ao Xu Homepage: http://home.ustc.edu.cn/~xuaoxiqi