Sutherland coefficient calculation using Lennard-Jones parameters

This commit is contained in:
Yeongdo Park 2018-11-10 05:00:01 -05:00
parent 521c1b1f69
commit 6e229d946b
2 changed files with 105 additions and 9 deletions

110
ct2foam.C
View file

@ -36,6 +36,8 @@ Description
#include <fstream> #include <fstream>
#include <cmath>
#include "cxxopts/cxxopts.hpp" #include "cxxopts/cxxopts.hpp"
#include "ofFormats.h" #include "ofFormats.h"
@ -54,6 +56,71 @@ std::string stringNASACoefs (doublereal *coef)
return arr; return arr;
} }
void calculateSutherland (Cantera::IdealGasMix *gas_, doublereal As[], doublereal C[])
{
Cantera::Transport *tr_ = Cantera::newTransportMgr("Mix", gas_);
doublereal mu0[gas_->nSpecies()];
doublereal muRatio[gas_->nSpecies()];
const doublereal T0 = gas_->minTemp();
gas_->setState_TP(T0, Cantera::OneAtm);
tr_->getSpeciesViscosities(mu0);
size_t nInterval = 100;
doublereal T[nInterval];
doublereal TRatioPower[nInterval];
doublereal dTemp = (gas_->maxTemp() - gas_->minTemp()) / doublereal(nInterval);
for (size_t i = 0; i < nInterval; i++)
{
T[i] = gas_->minTemp() + (i+1) * dTemp;
}
for (size_t i = 0; i < nInterval; i++)
{
TRatioPower[i] = pow(T[i]/T0, 3./2.);
}
for (size_t j = 0; j < gas_->nSpecies(); j++)
{
C[j] = 0.0;
}
for (size_t i = 0; i < nInterval; i++)
{
doublereal Ti = T[i];
gas_->setTemperature(Ti);
tr_->getSpeciesViscosities(muRatio);
for (size_t j = 0; j < gas_->nSpecies(); j++)
{
muRatio[j] /= mu0[j];
}
for (size_t j = 0; j < gas_->nSpecies(); j++)
{
C[j] += (muRatio[j] * Ti - TRatioPower[i] * T0) / (TRatioPower[i] - muRatio[j]);
}
}
for (size_t j = 0; j < gas_->nSpecies(); j++)
{
C[j] /= doublereal(nInterval);
}
for (size_t j = 0; j < gas_->nSpecies(); j++)
{
As[j] = mu0[j] * (T0 + C[j]) / pow(T0, 3./2.);
}
delete tr_;
return ;
}
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
@ -105,13 +172,31 @@ int main(int argc, char *argv[])
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Cantera::IdealGasMix gas_(scti, sgas); Cantera::IdealGasMix gas_(scti, sgas);
Cantera::Transport *tr_ = Cantera::newTransportMgr("Mix", &gas_);
int nCanteraSp_ = gas_.nSpecies();
fthermo.open(sthermo); fthermo.open(sthermo);
frxn.open(srxn); frxn.open(srxn);
// Thermo Part =============================================================
// Calculate Sutherland Coefficients
doublereal As[gas_.nSpecies()] ;
doublereal C[gas_.nSpecies()] ;
calculateSutherland (&gas_, As, C);
for (size_t n = 0; n < gas_.nSpecies(); n++)
{
std::cout << As[n] << std::endl;
}
std::cout << std::endl;
for (size_t n = 0; n < gas_.nSpecies(); n++)
{
std::cout << C[n] << std::endl;
}
// these constants define the location of coefficient "a6" in the // these constants define the location of coefficient "a6" in the
// cofficient array c. The c array contains Tmid in the first // cofficient array c. The c array contains Tmid in the first
// location, followed by the 7 low-temperature coefficients, then // location, followed by the 7 low-temperature coefficients, then
@ -135,11 +220,20 @@ int main(int argc, char *argv[])
maxTemp, maxTemp,
c[0], c[0],
stringNASACoefs(&c[1]), stringNASACoefs(&c[1]),
stringNASACoefs(&c[8]) stringNASACoefs(&c[8]),
As[n],
C[n]
) )
); );
} }
fthermo.close();
// End of Thermo Part ======================================================
// Reaction Part
// Write species name list // Write species name list
frxn<<("species\n"); frxn<<("species\n");
frxn<<fmt::format("{}\n", gas_.nSpecies()); frxn<<fmt::format("{}\n", gas_.nSpecies());
@ -152,7 +246,7 @@ int main(int argc, char *argv[])
frxn<<(";\n\n"); frxn<<(";\n\n");
// Write reaction list // Write reaction list
frxn<<( "reactions\n{\n"); frxn<<( "reactions\n{\n"); // begin "reactions" dictionary
for (size_t k = 0; k < gas_.nReactions(); k++) for (size_t k = 0; k < gas_.nReactions(); k++)
{ {
@ -169,7 +263,7 @@ int main(int argc, char *argv[])
double c[5] = {0}; double c[5] = {0};
// reaction name // reaction name
frxn<<( fmt::format( " un-named-reaction-{}\n", k)); frxn<<( fmt::format( " un-named-reaction-{}\n", k)); // begin a reaction dictionary
frxn<<( " {\n" ); frxn<<( " {\n" );
switch (gas_.reactionType(k)) switch (gas_.reactionType(k))
@ -306,10 +400,12 @@ int main(int argc, char *argv[])
break; break;
} }
frxn<<( " }\n" ); frxn<<( " }\n" ); // end of a reaction dictionary
} }
frxn<<( "}\n"); frxn<<( "}\n"); // end of "reactions" dictionary
frxn.close();
return 0; return 0;
} }

View file

@ -22,8 +22,8 @@ std::string thermoFormat = std::string() +
" }}\n" + " }}\n" +
" transport\n" + " transport\n" +
" {{\n" + " {{\n" +
" As 1.67212e-06;\n" + " As {};\n" + // 8 As, Sutherland Coefficient
" Ts 170.672;\n" + " Ts {};\n" + // 9 Ts, Sutherland Temperature
" }}\n" + " }}\n" +
"}}\n" "}}\n"
; ;