diff --git a/Cantera/cxx/demos/NASA_coeffs.cpp b/Cantera/cxx/demos/NASA_coeffs.cpp new file mode 100644 index 000000000..adce583db --- /dev/null +++ b/Cantera/cxx/demos/NASA_coeffs.cpp @@ -0,0 +1,84 @@ + +#include +#include // defines class IdealGasMix + +using namespace Cantera; + + +// The program is put into a function so that error handling code can +// be conveniently put around the whole thing. See main() below. + +void demoprog() { + + printf("\n\n**** Testing modifying NASA polynomial coefficients ****\n\n"); + + IdealGasMix gas("h2o2.cti","ohmech"); + int nsp = gas.nSpecies(); + + int type; + doublereal c[15]; + doublereal minTemp, maxTemp, refPressure; + + // get a reference to the species thermo property manager + SpeciesThermo& sp = gas.speciesThermo(); + + int n, j; + + // these constants define the location of coefficient "a6" in the + // cofficient array c. The c array contains Tmid in the first + // location, followed by the 7 low-temperature coefficients, then + // the seven high-temperature ones. + const int LOW_A6 = 6; + const int HIGH_A6 = 13; + + for (n = 0; n < nsp; n++) { + + printf("\n\n %s (original):", gas.speciesName(n).c_str()); + + // get the NASA coefficients in array c + sp.reportParams(n, type, c, minTemp, maxTemp, refPressure); + + // print the unmodified NASA coefficients + printf("\n "); + for (j = 1; j < 8; j++) printf(" A%d ", j); + printf("\n low:"); + for (j = 1; j < 8; j++) printf(" %10.4E ", c[j]); + + printf("\n high:"); + for (j = 8; j < 15; j++) printf(" %10.4E ", c[j]); + printf("\n "); + + // modify coefficient A6 of the low-temperature polynomial + // Note that since we are not modifying the high-temperature + // polynomial, a warning will be printed about a discontinuity + // in enthalpy at Tmid. + c[LOW_A6] += 1.0e4; + sp.modifyParams(n, c); + + sp.reportParams(n, type, c, minTemp, maxTemp, refPressure); + + // print the modified NASA coefficients + printf("\n\n %s (modified):", gas.speciesName(n).c_str()); + printf("\n "); + for (j = 1; j < 8; j++) printf(" A%d ", j); + printf("\n low:"); + for (j = 1; j < 8; j++) printf(" %10.4E ", c[j]); + + printf("\n high:"); + for (j = 8; j < 15; j++) printf(" %10.4E ", c[j]); + printf("\n "); + } +} + + + +int main() { + + try { + demoprog(); + } + catch (CanteraError) { + showErrors(cout); + } +} +