@@ -52,10 +52,17 @@ CSU2TCLib::CSU2TCLib(const CConfig* config, unsigned short val_nDim, bool viscou
5252 eve_eq.resize (nSpecies,0.0 );
5353 eve.resize (nSpecies,0.0 );
5454
55- if (viscous){
55+ if (viscous) {
5656 MolarFracWBE.resize (nSpecies,0.0 );
5757 phis.resize (nSpecies,0.0 );
5858 mus.resize (nSpecies,0.0 );
59+
60+ /* --- Reference values for Sutherland's law viscosity ---*/
61+ // Note: Can be extended with better coefficients of individual species,.
62+ k_ref.resize (1 ,0.0 );
63+ mu_ref.resize (1 ,0.0 );
64+ Sm_ref.resize (1 ,0.0 );
65+ Sk_ref.resize (1 ,0.0 );
5966 }
6067
6168 if (gas_model ==" ARGON" ){
@@ -110,6 +117,13 @@ CSU2TCLib::CSU2TCLib(const CConfig* config, unsigned short val_nDim, bool viscou
110117 ElDegeneracy (0 ,5 ) = 5 ;
111118 ElDegeneracy (0 ,6 ) = 15 ;
112119
120+ if (viscous) {
121+ mu_ref[0 ] = 2.125E-5 ;
122+ k_ref[0 ] = 0.0163 ;
123+ Sm_ref[0 ] = 114.0 ;
124+ Sk_ref[0 ] = 170 ;
125+ }
126+
113127 } else if (gas_model == " N2" ){
114128 /* --- Check for errors in the initialization ---*/
115129 if (nSpecies != 2 ) {
@@ -252,6 +266,13 @@ CSU2TCLib::CSU2TCLib(const CConfig* config, unsigned short val_nDim, bool viscou
252266 Omega11 (1 ,0 ,0 ) = -8.3493693E-03 ; Omega11 (1 ,0 ,1 ) = 1.7808911E-01 ; Omega11 (1 ,0 ,2 ) = -1.4466155E+00 ; Omega11 (1 ,0 ,3 ) = 1.9324210E+03 ;
253267 Omega11 (1 ,1 ,0 ) = -7.7439615E-03 ; Omega11 (1 ,1 ,1 ) = 1.7129007E-01 ; Omega11 (1 ,1 ,2 ) = -1.4809088E+00 ; Omega11 (1 ,1 ,3 ) = 2.1284951E+03 ;
254268
269+ if (viscous) {
270+ k_ref[0 ] = 0.0242 ;
271+ mu_ref[0 ] = 1.663E-5 ;
272+ Sm_ref[0 ] = 107.0 ;
273+ Sk_ref[0 ] = 150.0 ;
274+ }
275+
255276 } else if (gas_model == " AIR-5" ){
256277
257278 /* --- Check for errors in the initialization ---*/
@@ -598,6 +619,13 @@ CSU2TCLib::CSU2TCLib(const CConfig* config, unsigned short val_nDim, bool viscou
598619 Omega11 (4 ,3 ,0 ) = -5.0478143E-03 ; Omega11 (4 ,3 ,1 ) = 1.0236186E-01 ; Omega11 (4 ,3 ,2 ) = -9.0058935E-01 ; Omega11 (4 ,3 ,3 ) = 4.4472565E+02 ;
599620 Omega11 (4 ,4 ,0 ) = -4.2451096E-03 ; Omega11 (4 ,4 ,1 ) = 9.6820337E-02 ; Omega11 (4 ,4 ,2 ) = -9.9770795E-01 ; Omega11 (4 ,4 ,3 ) = 8.3320644E+02 ;
600621
622+ if (viscous) {
623+ k_ref[0 ] = 0.0241 ;
624+ mu_ref[0 ] = 1.716E-5 ;
625+ Sm_ref[0 ] = 111.0 ;
626+ Sk_ref[0 ] = 194.0 ;
627+ }
628+
601629 } else if (gas_model == " AIR-7" ){
602630
603631 /* --- Check for errors in the initialization ---*/
@@ -1027,6 +1055,13 @@ CSU2TCLib::CSU2TCLib(const CConfig* config, unsigned short val_nDim, bool viscou
10271055 Omega11 (4 ,2 ,0 ) = -1.0066279E-03 ; Omega11 (4 ,2 ,1 ) = 1.1029264E-02 ; Omega11 (4 ,2 ,2 ) = -2.0671266E-01 ; Omega11 (4 ,2 ,3 ) = 8.2644384E+01 ;
10281056 Omega11 (4 ,3 ,0 ) = -5.0478143E-03 ; Omega11 (4 ,3 ,1 ) = 1.0236186E-01 ; Omega11 (4 ,3 ,2 ) = -9.0058935E-01 ; Omega11 (4 ,3 ,3 ) = 4.4472565E+02 ;
10291057 Omega11 (4 ,4 ,0 ) = -4.2451096E-03 ; Omega11 (4 ,4 ,1 ) = 9.6820337E-02 ; Omega11 (4 ,4 ,2 ) = -9.9770795E-01 ; Omega11 (4 ,4 ,3 ) = 8.3320644E+02 ;
1058+
1059+ if (viscous) {
1060+ k_ref[0 ] = 0.0241 ;
1061+ mu_ref[0 ] = 1.716E-5 ;
1062+ Sm_ref[0 ] = 111.0 ;
1063+ Sk_ref[0 ] = 194.0 ;
1064+ }
10301065 }
10311066
10321067 if (ionization) { nHeavy = nSpecies-1 ; nEl = 1 ; }
@@ -1598,6 +1633,8 @@ vector<su2double>& CSU2TCLib::GetDiffusionCoeff(){
15981633 DiffusionCoeffWBE ();
15991634 if (Kind_TransCoeffModel == TRANSCOEFFMODEL::GUPTAYOS)
16001635 DiffusionCoeffGY ();
1636+ if (Kind_TransCoeffModel == TRANSCOEFFMODEL::SUTHERLAND)
1637+ DiffusionCoeffWBE ();
16011638
16021639 return DiffusionCoeff;
16031640
@@ -1609,6 +1646,8 @@ su2double CSU2TCLib::GetViscosity(){
16091646 ViscosityWBE ();
16101647 if (Kind_TransCoeffModel == TRANSCOEFFMODEL::GUPTAYOS)
16111648 ViscosityGY ();
1649+ if (Kind_TransCoeffModel == TRANSCOEFFMODEL::SUTHERLAND)
1650+ ViscositySuth ();
16121651
16131652 return Mu;
16141653
@@ -1620,6 +1659,8 @@ vector<su2double>& CSU2TCLib::GetThermalConductivities(){
16201659 ThermalConductivitiesWBE ();
16211660 if (Kind_TransCoeffModel == TRANSCOEFFMODEL::GUPTAYOS)
16221661 ThermalConductivitiesGY ();
1662+ if (Kind_TransCoeffModel == TRANSCOEFFMODEL::SUTHERLAND)
1663+ ThermalConductivitiesSuth ();
16231664
16241665 return ThermalConductivities;
16251666
@@ -1802,7 +1843,8 @@ void CSU2TCLib::DiffusionCoeffGY(){
18021843 // }
18031844
18041845 /* --- Assign species diffusion coefficient ---*/
1805- DiffusionCoeff[iSpecies] = gam_t *gam_t *Mi*(1 -Mi*gam_i) / denom;
1846+ if (denom == 0 ) { DiffusionCoeff[iSpecies] = 0.0 ; }
1847+ else { DiffusionCoeff[iSpecies] = gam_t *gam_t *Mi*(1 -Mi*gam_i) / denom; }
18061848 }
18071849 // if (ionization) {
18081850 // TODO: Update correct iElectron....
@@ -1971,18 +2013,50 @@ void CSU2TCLib::ThermalConductivitiesGY(){
19712013 }
19722014
19732015 /* --- Translational contribution to thermal conductivity ---*/
1974- ThermalCond_tr += (15.0 /4.0 )*kb*gam_i/denom_t ;
2016+ if ( denom_t != 0 ) ThermalCond_tr += (15.0 /4.0 )*kb*gam_i/denom_t ;
19752017
19762018 /* --- Translational contribution to thermal conductivity ---*/
1977- if (RotationModes[iSpecies] != 0.0 )
1978- ThermalCond_tr += kb*gam_i/denom_r;
2019+ if (RotationModes[iSpecies] != 0.0 && denom_r != 0 ) ThermalCond_tr += kb*gam_i/denom_r;
19792020
19802021 /* --- Vibrational-electronic contribution to thermal conductivity ---*/
1981- ThermalCond_ve += kb*Cvve/R*gam_i / denom_r;
2022+ if (denom_r != 0 ) ThermalCond_ve += kb*Cvve/R*gam_i / denom_r;
19822023 }
19832024
19842025 ThermalConductivities[0 ] = ThermalCond_tr;
19852026 ThermalConductivities[1 ] = ThermalCond_ve;
2027+ }
2028+
2029+ void CSU2TCLib::ViscositySuth (){
2030+
2031+ su2double T_ref = 273.15 ;
2032+ su2double T_nd = T / T_ref;
2033+
2034+ /* --- Calculate mixture laminar viscosity ---*/
2035+ Mu = mu_ref[0 ] * T_nd * sqrt (T_nd) * ((T_ref + Sm_ref[0 ]) / (T + Sm_ref[0 ]));
2036+
2037+ }
2038+
2039+ void CSU2TCLib::ThermalConductivitiesSuth (){
2040+
2041+ /* --- Compute mixture quantities ---*/
2042+ su2double mass = 0.0 , rho = 0.0 ;
2043+ for (unsigned short ii=0 ; ii<nSpecies; ii++) rho += rhos[ii];
2044+ for (unsigned short ii=0 ; ii<nSpecies; ii++) mass += rhos[ii]/rho*MolarMass[ii];
2045+
2046+ su2double Cvtr = ComputerhoCvtr ()/rho;
2047+ su2double Cvve = ComputerhoCvve ()/rho;
2048+
2049+ /* --- Compute simple Kve scaling factor ---*/
2050+ su2double scl = Cvve/Cvtr;
2051+
2052+ /* --- Compute k's using Sutherland's law ---*/
2053+ su2double T_ref = 273.15 ;
2054+ su2double T_nd = T / T_ref;
2055+ su2double k = k_ref[0 ] * T_nd * sqrt (T_nd) * ((T_ref + Sk_ref[0 ]) / (T + Sk_ref[0 ]));
2056+ su2double kve = scl*k;
2057+
2058+ ThermalConductivities[0 ] = k;
2059+ ThermalConductivities[1 ] = kve;
19862060
19872061}
19882062
0 commit comments