|
板凳

楼主 |
发表于 2017-4-3 23:06:56
|
只看该作者
[Fortran] 纯文本查看 复制代码 004 | real ( 8 ) gamma , ux , delt_t , delt_x , total_t , uxp , uxm |
005 | real ( 8 ) , allocatable :: den ( : , : , : ) , u ( : , : , : ) , p ( : , : , : ) , den_u ( : , : , : ) , e ( : , : , : ) |
006 | real ( 8 ) f 1 _p ( -3 : 103 ) , f 2 _p ( -3 : 103 ) , f 3 _p ( -3 : 103 ) , f 1 _m ( -3 : 103 ) , f 2 _m ( -3 : 103 ) , f 3 _m ( -3 : 103 ) |
012 | allocate ( den ( -3 : 103 , 0 : W -1 , 3 ) , u ( -3 : 103 , 0 : W -1 , 3 ) , p ( -3 : 103 , 0 : W -1 , 3 ) , den_u ( -3 : 103 , 0 : W -1 , 3 ) , e ( -3 : 103 , 0 : W -1 , 3 ) ) |
018 | if ( j * delt_x < 0.5d0 ) then |
025 | den_u ( j , n , 3 ) = den ( j , n , 3 ) * u ( j , n , 3 ) |
026 | e ( j , n , 3 ) = p ( j , n , 3 ) / ( gamma -1 d 0 ) +0.5d0 * den ( j , n , 3 ) * u ( j , n , 3 ) * * 2 |
034 | call FVS ( i , u , p , den , n , f 1 _p , f 1 _m , f 2 _p , f 2 _m , f 3 _p , f 3 _m , W ) |
037 | ux = uxp ( f 1 _p , j ) + uxm ( f 1 _m , j ) |
038 | den ( j , n , 1 ) = den ( j , n , 3 ) - delt_t * ux |
040 | ux = uxp ( f 2 _p , j ) + uxm ( f 2 _m , j ) |
041 | den_u ( j , n , 1 ) = den_u ( j , n , 3 ) - delt_t * ux |
042 | u ( j , n , 1 ) = den_u ( j , n , 1 ) / den ( j , n , 1 ) |
044 | ux = uxp ( f 3 _p , j ) + uxm ( f 3 _m , j ) |
045 | e ( j , n , 1 ) = e ( j , n , 3 ) - delt_t * ux |
046 | p ( j , n , 1 ) = ( gamma -1 d 0 ) * ( e ( j , n , 1 ) -0.5d0 * den ( j , n , 1 ) * u ( j , n , 1 ) * * 2 ) |
051 | den ( j , n , 1 ) = den ( 0 , n , 1 ) |
056 | den ( j , n , 1 ) = den ( 100 , n , 1 ) |
062 | call FVS ( i , u , p , den , n , f 1 _p , f 1 _m , f 2 _p , f 2 _m , f 3 _p , f 3 _m , W ) |
065 | ux = uxp ( f 1 _p , j ) + uxm ( f 1 _m , j ) |
066 | den ( j , n , 2 ) = 3 d 0 / 4 d 0 * den ( j , n , 3 ) +1 d 0 / 4 d 0 * ( den ( j , n , 1 ) - delt_t * ux ) |
068 | ux = uxp ( f 2 _p , j ) + uxm ( f 2 _m , j ) |
069 | den_u ( j , n , 2 ) = 3 d 0 / 4 d 0 * den_u ( j , n , 3 ) +1 d 0 / 4 d 0 * ( den_u ( j , n , 1 ) - delt_t * ux ) |
070 | u ( j , n , 2 ) = den_u ( j , n , 2 ) / den ( j , n , 2 ) |
072 | ux = uxp ( f 3 _p , j ) + uxm ( f 3 _m , j ) |
073 | e ( j , n , 2 ) = 3 d 0 / 4 d 0 * e ( j , n , 3 ) +1 d 0 / 4 d 0 * ( e ( j , n , 1 ) - delt_t * ux ) |
074 | p ( j , n , 2 ) = ( gamma -1 d 0 ) * ( e ( j , n , 2 ) -0.5d0 * den ( j , n , 2 ) * u ( j , n , 2 ) * * 2 ) |
079 | den ( j , n , 2 ) = den ( 0 , n , 2 ) |
084 | den ( j , n , 2 ) = den ( 100 , n , 2 ) |
090 | call FVS ( i , u , p , den , n , f 1 _p , f 1 _m , f 2 _p , f 2 _m , f 3 _p , f 3 _m , W ) |
093 | ux = uxp ( f 1 _p , j ) + uxm ( f 1 _m , j ) |
094 | den ( j , n +1 , 3 ) = 1 d 0 / 3 d 0 * den ( j , n , 3 ) +2 d 0 / 3 d 0 * ( den ( j , n , 2 ) - delt_t * ux ) |
096 | ux = uxp ( f 2 _p , j ) + uxm ( f 2 _m , j ) |
097 | den_u ( j , n +1 , 3 ) = 1 d 0 / 3 d 0 * den_u ( j , n , 3 ) +2 d 0 / 3 d 0 * ( den_u ( j , n , 2 ) - delt_t * ux ) |
098 | u ( j , n +1 , 3 ) = den_u ( j , n +1 , 3 ) / den ( j , n +1 , 3 ) |
100 | ux = uxp ( f 3 _p , j ) + uxm ( f 3 _m , j ) |
101 | e ( j , n +1 , 3 ) = 1 d 0 / 3 d 0 * e ( j , n , 3 ) +2 d 0 / 3 d 0 * ( e ( j , n , 2 ) - delt_t * ux ) |
102 | p ( j , n +1 , 3 ) = ( gamma -1 d 0 ) * ( e ( j , n +1 , 3 ) -0.5d0 * den ( j , n +1 , 3 ) * u ( j , n +1 , 3 ) * * 2 ) |
106 | u ( j , n +1 , 3 ) = u ( 0 , n +1 , 3 ) |
107 | den ( j , n +1 , 3 ) = den ( 0 , n +1 , 3 ) |
108 | p ( j , n +1 , 3 ) = p ( 0 , n +1 , 3 ) |
111 | u ( j , n +1 , 3 ) = u ( 100 , n +1 , 3 ) |
112 | den ( j , n +1 , 3 ) = den ( 100 , n +1 , 3 ) |
113 | p ( j , n +1 , 3 ) = p ( 100 , n +1 , 3 ) |
119 | open ( unit = 10 , file = "FVS.txt" ) |
121 | write ( 10 , "(4E15.7)" ) j * delt_x , den ( j , W -1 , 3 ) , u ( j , W -1 , 3 ) , p ( j , W -1 , 3 ) |
127 | subroutine FVS ( i , u , p , den , n , f 1 _p , f 1 _m , f 2 _p , f 2 _m , f 3 _p , f 3 _m , W ) |
130 | real ( 8 ) gamma , epsilon , wp , wm , coe |
131 | real ( 8 ) c , lamda 1 , lamda 1 _p , lamda 1 _m , lamda 2 , lamda 2 _p , lamda 2 _m , lamda 3 , lamda 3 _p , lamda 3 _m |
132 | real ( 8 ) f 1 _p ( -3 : 103 ) , f 2 _p ( -3 : 103 ) , f 3 _p ( -3 : 103 ) , f 1 _m ( -3 : 103 ) , f 2 _m ( -3 : 103 ) , f 3 _m ( -3 : 103 ) |
133 | real ( 8 ) u ( -3 : 103 , 0 : W -1 , 3 ) , den ( -3 : 103 , 0 : W -1 , 3 ) , p ( -3 : 103 , 0 : W -1 , 3 ) |
137 | c = sqrt ( gamma * p ( j , n , i ) / den ( j , n , i ) ) |
141 | lamda 1 _p = ( lamda 1 + sqrt ( lamda 1 * * 2 + epsilon * * 2 ) ) / 2 d 0 |
142 | lamda 1 _m = ( lamda 1 - sqrt ( lamda 1 * * 2 + epsilon * * 2 ) ) / 2 d 0 |
143 | lamda 2 _p = ( lamda 2 + sqrt ( lamda 2 * * 2 + epsilon * * 2 ) ) / 2 d 0 |
144 | lamda 2 _m = ( lamda 2 - sqrt ( lamda 2 * * 2 + epsilon * * 2 ) ) / 2 d 0 |
145 | lamda 3 _p = ( lamda 3 + sqrt ( lamda 3 * * 2 + epsilon * * 2 ) ) / 2 d 0 |
146 | lamda 3 _m = ( lamda 3 - sqrt ( lamda 3 * * 2 + epsilon * * 2 ) ) / 2 d 0 |
147 | wp = ( 3 d 0 - gamma ) * ( lamda 2 _p + lamda 3 _p ) * c * * 2 / ( 2 d 0 * ( gamma -1 d 0 ) ) |
148 | wm = ( 3 d 0 - gamma ) * ( lamda 2 _m + lamda 3 _m ) * c * * 2 / ( 2 d 0 * ( gamma -1 d 0 ) ) |
149 | coe = den ( j , n , i ) / ( 2 d 0 * gamma ) |
150 | f 1 _p ( j ) = coe * ( 2 d 0 * ( gamma -1 d 0 ) * lamda 1 _p + lamda 2 _p + lamda 3 _p ) |
151 | f 1 _m ( j ) = coe * ( 2 d 0 * ( gamma -1 d 0 ) * lamda 1 _m + lamda 2 _m + lamda 3 _m ) |
152 | f 2 _p ( j ) = coe * ( 2 d 0 * ( gamma -1 d 0 ) * lamda 1 _p * lamda 1 + lamda 2 _p * lamda 2 + lamda 3 _p * lamda 3 ) |
153 | f 2 _m ( j ) = coe * ( 2 d 0 * ( gamma -1 d 0 ) * lamda 1 _m * lamda 1 + lamda 2 _m * lamda 2 + lamda 3 _m * lamda 3 ) |
154 | f 3 _p ( j ) = coe * ( ( gamma -1 d 0 ) * lamda 1 _p * lamda 1 * * 2 +0.5d0 * lamda 2 _p * lamda 2 * * 2 +0.5d0 * lamda 3 _p * lamda 3 * * 2 + wp ) |
155 | f 3 _m ( j ) = coe * ( ( gamma -1 d 0 ) * lamda 1 _m * lamda 1 * * 2 +0.5d0 * lamda 2 _m * lamda 2 * * 2 +0.5d0 * lamda 3 _m * lamda 3 * * 2 + wm ) |
165 | uxp = ( -2 d 0 * up ( j -3 ) ) +15 d 0 * up ( j -2 ) -60 d 0 * up ( j -1 ) +20 d 0 * up ( j ) +30 d 0 * up ( j +1 ) -3 d 0 * up ( j +2 ) / ( 60 d 0 * delt_x ) |
174 | uxm = ( 3 d 0 * um ( j -2 ) -30 d 0 * um ( j -1 ) -20 d 0 * um ( j ) +60 d 0 * um ( j +1 ) -15 d 0 * um ( j +2 ) +2 d 0 * um ( j +3 ) ) / ( 60 d 0 * delt_x ) |
|
|