|
[Fortran] 纯文本查看 复制代码 004 | Real ( 8 ) , Parameter :: lendom = 10.0 , Tini = 300.0 |
005 | Real ( 8 ) , Parameter :: PiniL = 10.0 , PiniR = 1.0 |
006 | Real ( 8 ) , Parameter :: uini = 0.0 , gamma = 1.4 , R = 287.0 |
007 | Real ( 8 ) , Parameter :: CFL = 0.98 , timeOut = 0.006 |
008 | Integer , Parameter :: nnod = 101 |
010 | Real ( 8 ) :: dx , DiniL , DiniR , Hini , aini , dt , Eini , time , comp 1 , comp 2 |
012 | Real ( 8 ) :: Den ( nnod ) , Tem ( nnod ) , Pre ( nnod ) , Vel ( nnod ) |
013 | Real ( 8 ) :: M ( nnod ) , Ene ( nnod ) , Ent ( nnod ) , a ( nnod ) |
014 | Real ( 8 ) :: U ( 3 , nnod ) , F ( 3 , nnod ) , Un ( 3 , nnod ) |
017 | Open ( Unit = 10 , File = "TwostepLaxUn1.TXT" ) |
018 | Open ( Unit = 11 , File = "TwostepLaxF11.TXT" ) |
019 | Open ( Unit = 12 , File = "TwostepLaxF12.TXT" ) |
020 | Open ( Unit = 13 , File = "TwostepLaxF13.TXT" ) |
021 | Open ( Unit = 14 , File = "TwostepLaxF21.TXT" ) |
022 | Open ( Unit = 15 , File = "TwostepLaxF22.TXT" ) |
023 | Open ( Unit = 16 , File = "TwostepLaxF23.TXT" ) |
024 | Open ( Unit = 17 , File = "TwostepLaxUn2.TXT" ) |
025 | Open ( Unit = 19 , File = "TwostepLaxDen.TXT" ) |
026 | Open ( Unit = 20 , File = "TwostepLaxVel.TXT" ) |
027 | Open ( Unit = 21 , File = "TwostepLaxPre.TXT" ) |
028 | Open ( Unit = 22 , File = "TwostepLaxM.TXT" ) |
032 | DiniL = 100000.0 * PiniL / ( R * Tini ) |
033 | DiniR = 100000.0 * PiniR / ( R * Tini ) |
034 | Eini = R * Tini / ( gamma -1.0 ) |
036 | aini = ( gamma * R * Tini ) * * 0.5 |
054 | U ( 3 , 51 : nnod ) = DiniR * Eini |
064 | Un ( 1 : 3 , nnod ) = U ( 1 : 3 , nnod ) |
068 | Do While ( time < timeOut ) |
073 | Un ( i , j ) = ( U ( i , j +1 ) + U ( i , j ) ) * 0.5 - dt / dx * ( F ( i , j +1 ) - F ( i , j ) ) * 0.5 |
074 | Write ( 10 , "('Un(',I1,',',I3,')',E17.10)" ) i , j , Un ( i , j ) |
080 | Vel ( j ) = Un ( 2 , j ) / Den ( j ) |
081 | Ene ( j ) = Un ( 3 , j ) / Den ( j ) |
082 | Tem ( j ) = ( Ene ( j ) -0.5 * Vel ( j ) * * 2 ) * ( gamma -1.0 ) / R |
083 | Pre ( j ) = R * Den ( j ) * Tem ( j ) |
084 | Ent ( j ) = Ene ( j ) + R * Tem ( j ) |
085 | a ( j ) = ( gamma * R * Tem ( j ) ) * * 0.5 |
089 | F ( 2 , j ) = Den ( j ) * Vel ( j ) * * 2 + Pre ( j ) |
090 | F ( 3 , j ) = Den ( j ) * Vel ( j ) * Ent ( j ) |
098 | Un ( i , j ) = U ( i , j ) - dt / dx * ( F ( i , j ) - F ( i , j -1 ) ) |
099 | Write ( 17 , "('Un(',I1,',',I3,')',E17.10)" ) i , j , Un ( i , j ) |
105 | Vel ( j ) = Un ( 2 , j ) / Den ( j ) |
106 | Ene ( j ) = Un ( 3 , j ) / Den ( j ) |
107 | Tem ( j ) = ( Ene ( j ) -0.5 * Vel ( j ) * * 2 ) * ( gamma -1.0 ) / R |
108 | Pre ( j ) = R * Den ( j ) * Tem ( j ) |
109 | Ent ( j ) = Ene ( j ) + R * Tem ( j ) |
110 | a ( j ) = ( gamma * R * Tem ( j ) ) * * 0.5 |
114 | F ( 2 , j ) = Den ( j ) * Vel ( j ) * * 2 + Pre ( j ) |
115 | F ( 3 , j ) = Den ( j ) * Vel ( j ) * Ent ( j ) |
124 | If ( comp 2 > comp 1 ) comp 1 = comp 2 |
128 | U ( 1 : 3 , 1 : nnod ) = Un ( 1 : 3 , 1 : nnod ) |
|
|