diff --git a/include/cantera/base/NoExitLogger.h b/include/cantera/base/NoExitLogger.h new file mode 100644 index 0000000000..a73b5b3e37 --- /dev/null +++ b/include/cantera/base/NoExitLogger.h @@ -0,0 +1,26 @@ +//! @file NoExitLogger.h + +// This file is part of Cantera. See License.txt in the top-level directory or +// at https://cantera.org/license.txt for license and copyright information. + +#ifndef NOEXITLOGGER_H +#define NOEXITLOGGER_H + +#include +#include "cantera/base/logger.h" + +namespace Cantera { +/// Logger that doesn't exit when an error is thrown. +/// @ingroup textlogs +class NoExitLogger : public Logger { +public: + NoExitLogger() {} + virtual ~NoExitLogger() {} + + virtual void error(const std::string& msg) + { + std::cerr << msg << std::endl; + } +}; +} +#endif diff --git a/samples/f90/demo.f90 b/samples/f90/demo.f90 index 61a4ac1031..23a9117113 100644 --- a/samples/f90/demo.f90 +++ b/samples/f90/demo.f90 @@ -58,6 +58,7 @@ subroutine demo(gas, MAXSP, MAXRXNS) double precision q(MAXRXNS), qf(MAXRXNS), qr(MAXRXNS) double precision diff(MAXSP) + double precision molar_cp(MAXSP), molar_h(MAXSP), g_rt(MAXSP) character*80 eq character*20 name @@ -119,6 +120,18 @@ subroutine demo(gas, MAXSP, MAXRXNS) 40 format(' ',a20,e14.5,' m2/s') end do + ! Thermodynamic properties + CALL getPartialMolarCp(gas, molar_cp) + CALL getPartialMolarEnthalpies(gas, molar_h) + CALL getGibbs_RT(gas, g_rt) + + write(*,*) 'Species molar cp, molar enthalpy, normalized Gibbs free energy' + do k = 1, nsp + call getSpeciesName(gas, k, name) + write(*,50) name, molar_cp(k), molar_h(k), g_rt(k) +50 format(' ',a20,g14.5,' J/kmol-K',g14.5,' J/kmol',g14.5,'-') + end do + return end subroutine demo diff --git a/src/fortran/cantera.f90 b/src/fortran/cantera.f90 index eba0e2c737..e911e500a4 100644 --- a/src/fortran/cantera.f90 +++ b/src/fortran/cantera.f90 @@ -111,6 +111,10 @@ MODULE CANTERA MODULE PROCEDURE ctfunc_getCanteraError END INTERFACE getCanteraError + INTERFACE turnOffExitOnError + MODULE PROCEDURE ctfunc_TurnOffExitOnError + END INTERFACE turnOffExitOnError + INTERFACE getCp_R MODULE PROCEDURE ctthermo_getCp_R END INTERFACE getCp_R @@ -131,6 +135,10 @@ MODULE CANTERA MODULE PROCEDURE ctthermo_getEnthalpies_RT END INTERFACE getEnthalpies_RT + INTERFACE getGibbs_RT + MODULE PROCEDURE ctthermo_getGibbs_RT + END INTERFACE getGibbs_RT + INTERFACE getEntropies_R MODULE PROCEDURE ctthermo_getEntropies_R END INTERFACE getEntropies_R @@ -183,6 +191,14 @@ MODULE CANTERA MODULE PROCEDURE ctthermo_getPartialMolarIntEnerg_R END INTERFACE getPartialMolarIntEnergies + INTERFACE getPartialMolarCp + MODULE PROCEDURE ctthermo_getPartialMolarCp + END INTERFACE getPartialMolarCp + + INTERFACE getPartialMolarEnthalpies + MODULE PROCEDURE ctthermo_getPartialMolarEnthalpies + END INTERFACE getPartialMolarEnthalpies + INTERFACE getReactionString MODULE PROCEDURE ctkin_getReactionString END INTERFACE getReactionString diff --git a/src/fortran/cantera_funcs.f90 b/src/fortran/cantera_funcs.f90 index 96b1f84dc4..00673c2ac0 100644 --- a/src/fortran/cantera_funcs.f90 +++ b/src/fortran/cantera_funcs.f90 @@ -86,6 +86,11 @@ subroutine ctfunc_getCanteraError(buf) ierr = ctgetCanteraError(buf) end subroutine ctfunc_getCanteraError + subroutine ctfunc_turnOffExitOnError() + implicit none + call ctturnOffExitOnError() + end subroutine ctfunc_turnOffExitOnError + subroutine ctfunc_addCanteraDirectory(self, buf) implicit none type(phase_t), intent(inout) :: self diff --git a/src/fortran/cantera_thermo.f90 b/src/fortran/cantera_thermo.f90 index 17149789c8..31f2184cb0 100644 --- a/src/fortran/cantera_thermo.f90 +++ b/src/fortran/cantera_thermo.f90 @@ -545,6 +545,13 @@ subroutine ctthermo_getEnthalpies_RT(self, h_rt) self%err = th_getenthalpies_rt(self%thermo_id, h_rt) end subroutine ctthermo_getenthalpies_rt + subroutine ctthermo_getGibbs_RT(self, grt) + implicit none + type(phase_t), intent(inout) :: self + double precision, intent(out) :: grt(self%nsp) + self%err = th_getgibbs_rt(self%thermo_id, grt) + end subroutine ctthermo_getGibbs_RT + subroutine ctthermo_getEntropies_R(self, s_r) implicit none type(phase_t), intent(inout) :: self @@ -567,4 +574,17 @@ subroutine ctthermo_getPartialMolarIntEnerg_R(self, ie) self%err = th_getpartialmolarintenergies_r(self%thermo_id, ie) end subroutine ctthermo_getPartialMolarIntEnerg_R + subroutine ctthermo_getPartialMolarCp(self, cpbar) + implicit none + type(phase_t), intent(inout) :: self + double precision, intent(out) :: cpbar(self%nsp) + self%err = th_getpartialmolarcp(self%thermo_id, cpbar) + end subroutine ctthermo_getPartialMolarCp + + subroutine ctthermo_getPartialMolarEnthalpies(self, hbar) + implicit none + type(phase_t), intent(inout) :: self + double precision, intent(out) :: hbar(self%nsp) + self%err = th_getpartialmolarenthalpies(self%thermo_id, hbar) + end subroutine ctthermo_getPartialMolarEnthalpies end module cantera_thermo diff --git a/src/fortran/fct.cpp b/src/fortran/fct.cpp index 489ade07d1..b2ee64edaf 100644 --- a/src/fortran/fct.cpp +++ b/src/fortran/fct.cpp @@ -15,6 +15,7 @@ #include "cantera/transport/TransportFactory.h" #include "cantera/thermo/ThermoFactory.h" #include "cantera/base/ctml.h" +#include "cantera/base/NoExitLogger.h" #include "cantera/base/stringUtils.h" #include "cantera/kinetics/importKinetics.h" #include "clib/Cabinet.h" @@ -88,6 +89,11 @@ extern "C" { return -1; } + void ctturnoffexitonerror_() { + Cantera::Logger* noexitlog = new Cantera::NoExitLogger; + setLogger(noexitlog); + } + //--------------- Phase ---------------------// status_t phase_getname_(const integer* n, char* nm, @@ -124,7 +130,7 @@ extern "C" { } } - doublereal phase_temperature_(const integer* n) + double phase_temperature_(const integer* n) { try { return _fph(n)->temperature(); @@ -133,7 +139,7 @@ extern "C" { } } - status_t phase_settemperature_(const integer* n, doublereal* t) + status_t phase_settemperature_(const integer* n, double* t) { try { _fph(n)->setTemperature(*t); @@ -143,7 +149,7 @@ extern "C" { return 0; } - doublereal phase_density_(const integer* n) + double phase_density_(const integer* n) { try { return _fph(n)->density(); @@ -152,7 +158,7 @@ extern "C" { } } - status_t phase_setdensity_(const integer* n, doublereal* rho) + status_t phase_setdensity_(const integer* n, double* rho) { try { _fph(n)->setDensity(*rho); @@ -162,7 +168,7 @@ extern "C" { return 0; } - doublereal phase_molardensity_(const integer* n) + double phase_molardensity_(const integer* n) { try { return _fph(n)->molarDensity(); @@ -171,7 +177,7 @@ extern "C" { } } - doublereal phase_meanmolecularweight_(const integer* n) + double phase_meanmolecularweight_(const integer* n) { try { return _fph(n)->meanMolecularWeight(); @@ -200,7 +206,7 @@ extern "C" { } } - status_t phase_getmolefractions_(const integer* n, doublereal* x) + status_t phase_getmolefractions_(const integer* n, double* x) { try { _fph(n)->getMoleFractions(x); @@ -210,7 +216,7 @@ extern "C" { return 0; } - doublereal phase_molefraction_(const integer* n, integer* k) + double phase_molefraction_(const integer* n, integer* k) { try { return _fph(n)->moleFraction(*k-1); @@ -220,7 +226,7 @@ extern "C" { } - status_t phase_getmassfractions_(const integer* n, doublereal* y) + status_t phase_getmassfractions_(const integer* n, double* y) { try { ThermoPhase* p = _fph(n); @@ -231,7 +237,7 @@ extern "C" { return 0; } - doublereal phase_massfraction_(const integer* n, integer* k) + double phase_massfraction_(const integer* n, integer* k) { try { return _fph(n)->massFraction(*k-1); @@ -266,7 +272,7 @@ extern "C" { return 0; } - status_t phase_setmassfractions_(const integer* n, doublereal* y, const integer* norm) + status_t phase_setmassfractions_(const integer* n, double* y, const integer* norm) { try { ThermoPhase* p = _fph(n); @@ -292,7 +298,7 @@ extern "C" { return 0; } - status_t phase_getatomicweights_(const integer* n, doublereal* atw) + status_t phase_getatomicweights_(const integer* n, double* atw) { try { ThermoPhase* p = _fph(n); @@ -304,7 +310,7 @@ extern "C" { return 0; } - status_t phase_getmolecularweights_(const integer* n, doublereal* mw) + status_t phase_getmolecularweights_(const integer* n, double* mw) { try { ThermoPhase* p = _fph(n); @@ -346,7 +352,7 @@ extern "C" { return 0; } - doublereal phase_natoms_(const integer* n, integer* k, integer* m) + double phase_natoms_(const integer* n, integer* k, integer* m) { try { return _fph(n)->nAtoms(*k-1,*m-1); @@ -388,7 +394,7 @@ extern "C" { } } - doublereal th_enthalpy_mole_(const integer* n) + double th_enthalpy_mole_(const integer* n) { try { return _fth(n)->enthalpy_mole(); @@ -397,7 +403,7 @@ extern "C" { } } - doublereal th_intenergy_mole_(const integer* n) + double th_intenergy_mole_(const integer* n) { try { return _fth(n)->intEnergy_mole(); @@ -406,7 +412,7 @@ extern "C" { } } - doublereal th_entropy_mole_(const integer* n) + double th_entropy_mole_(const integer* n) { try { return _fth(n)->entropy_mole(); @@ -415,7 +421,7 @@ extern "C" { } } - doublereal th_gibbs_mole_(const integer* n) + double th_gibbs_mole_(const integer* n) { try { return _fth(n)->gibbs_mole(); @@ -424,7 +430,7 @@ extern "C" { } } - doublereal th_cp_mole_(const integer* n) + double th_cp_mole_(const integer* n) { try { return _fth(n)->cp_mole(); @@ -433,7 +439,7 @@ extern "C" { } } - doublereal th_cv_mole_(const integer* n) + double th_cv_mole_(const integer* n) { try { return _fth(n)->cv_mole(); @@ -442,7 +448,7 @@ extern "C" { } } - doublereal th_pressure_(const integer* n) + double th_pressure_(const integer* n) { try { return _fth(n)->pressure(); @@ -451,7 +457,7 @@ extern "C" { } } - doublereal th_enthalpy_mass_(const integer* n) + double th_enthalpy_mass_(const integer* n) { try { return _fth(n)->enthalpy_mass(); @@ -460,7 +466,7 @@ extern "C" { } } - doublereal th_intenergy_mass_(const integer* n) + double th_intenergy_mass_(const integer* n) { try { return _fth(n)->intEnergy_mass(); @@ -469,7 +475,7 @@ extern "C" { } } - doublereal th_entropy_mass_(const integer* n) + double th_entropy_mass_(const integer* n) { try { return _fth(n)->entropy_mass(); @@ -478,7 +484,7 @@ extern "C" { } } - doublereal th_gibbs_mass_(const integer* n) + double th_gibbs_mass_(const integer* n) { try { return _fth(n)->gibbs_mass(); @@ -487,7 +493,7 @@ extern "C" { } } - doublereal th_cp_mass_(const integer* n) + double th_cp_mass_(const integer* n) { try { return _fth(n)->cp_mass(); @@ -496,7 +502,7 @@ extern "C" { } } - doublereal th_cv_mass_(const integer* n) + double th_cv_mass_(const integer* n) { try { return _fth(n)->cv_mass(); @@ -505,7 +511,7 @@ extern "C" { } } - status_t th_chempotentials_(const integer* n, doublereal* murt) + status_t th_chempotentials_(const integer* n, double* murt) { try { ThermoPhase* thrm = _fth(n); @@ -516,7 +522,7 @@ extern "C" { return 0; } - status_t th_setpressure_(const integer* n, doublereal* p) + status_t th_setpressure_(const integer* n, double* p) { try { _fth(n)->setPressure(*p); @@ -526,7 +532,7 @@ extern "C" { return 0; } - status_t th_set_hp_(const integer* n, doublereal* v1, doublereal* v2) + status_t th_set_hp_(const integer* n, double* v1, double* v2) { try { _fth(n)->setState_HP(*v1, *v2); @@ -536,7 +542,7 @@ extern "C" { return 0; } - status_t th_set_uv_(const integer* n, doublereal* v1, doublereal* v2) + status_t th_set_uv_(const integer* n, double* v1, double* v2) { try { _fth(n)->setState_UV(*v1, *v2); @@ -546,7 +552,7 @@ extern "C" { return 0; } - status_t th_set_sv_(const integer* n, doublereal* v1, doublereal* v2) + status_t th_set_sv_(const integer* n, double* v1, double* v2) { try { _fth(n)->setState_SV(*v1, *v2); @@ -556,7 +562,7 @@ extern "C" { return 0; } - status_t th_set_sp_(const integer* n, doublereal* v1, doublereal* v2) + status_t th_set_sp_(const integer* n, double* v1, double* v2) { try { _fth(n)->setState_SP(*v1, *v2); @@ -566,7 +572,7 @@ extern "C" { return 0; } - status_t th_equil_(const integer* n, char* XY, char* solver, doublereal* rtol, int* max_steps, int* max_iter, int* estimate_equil, int* log_level, ftnlen lenxy, ftnlen lensolver) + status_t th_equil_(const integer* n, char* XY, char* solver, double* rtol, int* max_steps, int* max_iter, int* estimate_equil, int* log_level, ftnlen lenxy, ftnlen lensolver) { try { _fth(n)->equilibrate(f2string(XY,lenxy), f2string(solver,lensolver), *rtol, *max_steps, *max_iter, *estimate_equil, *log_level); @@ -576,7 +582,7 @@ extern "C" { return 0; } - doublereal th_refpressure_(const integer* n) + double th_refpressure_(const integer* n) { try { return _fth(n)->refPressure(); @@ -585,7 +591,7 @@ extern "C" { } } - doublereal th_mintemp_(const integer* n, integer* k) + double th_mintemp_(const integer* n, integer* k) { try { return _fth(n)->minTemp(*k-1); @@ -594,7 +600,7 @@ extern "C" { } } - doublereal th_maxtemp_(const integer* n, integer* k) + double th_maxtemp_(const integer* n, integer* k) { try { return _fth(n)->maxTemp(*k-1); @@ -603,7 +609,7 @@ extern "C" { } } - status_t th_getenthalpies_rt_(const integer* n, doublereal* h_rt) + status_t th_getenthalpies_rt_(const integer* n, double* h_rt) { try { ThermoPhase* thrm = _fth(n); @@ -614,7 +620,17 @@ extern "C" { return 0; } - status_t th_getentropies_r_(const integer* n, doublereal* s_r) + status_t th_getgibbs_rt_(const integer* n, double* g_rt) { + try { + ThermoPhase* thrm = _fth(n); + thrm->getGibbs_RT(g_rt); + } catch(...) { + return handleAllExceptions(-1, ERR); + } + return 0; + } + + status_t th_getentropies_r_(const integer* n, double* s_r) { try { ThermoPhase* thrm = _fth(n); @@ -625,7 +641,7 @@ extern "C" { return 0; } - status_t th_getcp_r_(const integer* n, integer* lenm, doublereal* cp_r) + status_t th_getcp_r_(const integer* n, integer* lenm, double* cp_r) { try { ThermoPhase* thrm = _fth(n); @@ -636,7 +652,7 @@ extern "C" { return 0; } - status_t th_getpartialmolarintenergies_r_(const integer* n, doublereal* ie) + status_t th_getpartialmolarintenergies_r_(const integer* n, double* ie) { try { ThermoPhase* thrm = _fth(n); @@ -647,6 +663,26 @@ extern "C" { return 0; } + status_t th_getpartialmolarenthalpies_(const integer* n, double* hbar) { + try { + thermo_t* thrm = _fth(n); + thrm->getPartialMolarEnthalpies(hbar); + } catch(...) { + return handleAllExceptions(-1, ERR); + } + return 0; + } + + status_t th_getpartialmolarcp_(const integer* n, double* cpbar) { + try { + thermo_t* thrm = _fth(n); + thrm->getPartialMolarCp(cpbar); + } catch(...) { + return handleAllExceptions(-1, ERR); + } + return 0; + } + //-------------- Kinetics ------------------// integer kin_newfromfile_(const char* filename, const char* phasename, @@ -776,7 +812,7 @@ extern "C" { } } - doublereal kin_reactantstoichcoeff_(const integer* n, integer* k, integer* i) + double kin_reactantstoichcoeff_(const integer* n, integer* k, integer* i) { try { return _fkin(n)->reactantStoichCoeff(*k-1,*i-1); @@ -785,7 +821,7 @@ extern "C" { } } - doublereal kin_productstoichcoeff_(const integer* n, integer* k, integer* i) + double kin_productstoichcoeff_(const integer* n, integer* k, integer* i) { try { return _fkin(n)->productStoichCoeff(*k-1,*i-1); @@ -803,7 +839,7 @@ extern "C" { } } - status_t kin_getfwdratesofprogress_(const integer* n, doublereal* fwdROP) + status_t kin_getfwdratesofprogress_(const integer* n, double* fwdROP) { try { Kinetics* k = _fkin(n); @@ -814,7 +850,7 @@ extern "C" { return 0; } - status_t kin_getrevratesofprogress_(const integer* n, doublereal* revROP) + status_t kin_getrevratesofprogress_(const integer* n, double* revROP) { try { Kinetics* k = _fkin(n); @@ -834,7 +870,7 @@ extern "C" { } } - status_t kin_getnetratesofprogress_(const integer* n, doublereal* netROP) + status_t kin_getnetratesofprogress_(const integer* n, double* netROP) { try { Kinetics* k = _fkin(n); @@ -845,7 +881,7 @@ extern "C" { return 0; } - status_t kin_getcreationrates_(const integer* n, doublereal* cdot) + status_t kin_getcreationrates_(const integer* n, double* cdot) { try { Kinetics* k = _fkin(n); @@ -856,7 +892,7 @@ extern "C" { return 0; } - status_t kin_getdestructionrates_(const integer* n, doublereal* ddot) + status_t kin_getdestructionrates_(const integer* n, double* ddot) { try { Kinetics* k = _fkin(n); @@ -867,7 +903,7 @@ extern "C" { return 0; } - status_t kin_getnetproductionrates_(const integer* n, doublereal* wdot) + status_t kin_getnetproductionrates_(const integer* n, double* wdot) { try { Kinetics* k = _fkin(n); @@ -878,7 +914,7 @@ extern "C" { return 0; } - doublereal kin_multiplier_(const integer* n, integer* i) + double kin_multiplier_(const integer* n, integer* i) { try { return _fkin(n)->multiplier(*i); @@ -887,7 +923,7 @@ extern "C" { } } - status_t kin_getequilibriumconstants_(const integer* n, doublereal* kc) + status_t kin_getequilibriumconstants_(const integer* n, double* kc) { try { Kinetics* k = _fkin(n); @@ -914,7 +950,7 @@ extern "C" { return 0; } - status_t kin_setmultiplier_(const integer* n, integer* i, doublereal* v) + status_t kin_setmultiplier_(const integer* n, integer* i, double* v) { try { _fkin(n)->setMultiplier(*i-1,*v); @@ -924,7 +960,7 @@ extern "C" { return 0; } - status_t kin_advancecoverages_(const integer* n, doublereal* tstep) + status_t kin_advancecoverages_(const integer* n, double* tstep) { try { Kinetics* k = _fkin(n); @@ -966,7 +1002,7 @@ extern "C" { } } - doublereal trans_viscosity_(const integer* n) + double trans_viscosity_(const integer* n) { try { return _ftrans(n)->viscosity(); @@ -975,7 +1011,7 @@ extern "C" { } } - doublereal trans_electricalconductivity_(const integer* n) + double trans_electricalconductivity_(const integer* n) { try { return _ftrans(n)->electricalConductivity(); @@ -984,7 +1020,7 @@ extern "C" { } } - doublereal trans_thermalconductivity_(const integer* n) + double trans_thermalconductivity_(const integer* n) { try { return _ftrans(n)->thermalConductivity(); @@ -993,7 +1029,7 @@ extern "C" { } } - status_t trans_getthermaldiffcoeffs_(const integer* n, doublereal* dt) + status_t trans_getthermaldiffcoeffs_(const integer* n, double* dt) { try { _ftrans(n)->getThermalDiffCoeffs(dt); @@ -1003,7 +1039,7 @@ extern "C" { } } - status_t trans_getmixdiffcoeffs_(const integer* n, doublereal* d) + status_t trans_getmixdiffcoeffs_(const integer* n, double* d) { try { _ftrans(n)->getMixDiffCoeffs(d); @@ -1013,7 +1049,7 @@ extern "C" { } } - status_t trans_getmixdiffcoeffsmass_(const integer* n, doublereal* d) + status_t trans_getmixdiffcoeffsmass_(const integer* n, double* d) { try { _ftrans(n)->getMixDiffCoeffsMass(d); @@ -1023,7 +1059,7 @@ extern "C" { } } - status_t trans_getmixdiffcoeffsmole_(const integer* n, doublereal* d) + status_t trans_getmixdiffcoeffsmole_(const integer* n, double* d) { try { _ftrans(n)->getMixDiffCoeffsMole(d); @@ -1033,7 +1069,7 @@ extern "C" { } } - status_t trans_getbindiffcoeffs_(const integer* n, integer* ld, doublereal* d) + status_t trans_getbindiffcoeffs_(const integer* n, integer* ld, double* d) { try { _ftrans(n)->getBinaryDiffCoeffs(*ld,d); @@ -1043,7 +1079,7 @@ extern "C" { } } - status_t trans_getmultidiffcoeffs_(const integer* n, integer* ld, doublereal* d) + status_t trans_getmultidiffcoeffs_(const integer* n, integer* ld, double* d) { try { _ftrans(n)->getMultiDiffCoeffs(*ld,d); @@ -1053,7 +1089,7 @@ extern "C" { } } - status_t trans_setparameters_(const integer* n, integer* type, integer* k, doublereal* d) + status_t trans_setparameters_(const integer* n, integer* type, integer* k, double* d) { try { _ftrans(n)->setParameters(*type, *k, d); diff --git a/src/fortran/fct_interface.f90 b/src/fortran/fct_interface.f90 index faaf5f7597..d161109f30 100644 --- a/src/fortran/fct_interface.f90 +++ b/src/fortran/fct_interface.f90 @@ -4,14 +4,14 @@ module fct interface - subroutine cantera_error(proc, msg) - character*(*), intent(in) :: proc - character*(*), intent(in) :: msg - end subroutine cantera_error + subroutine cantera_error(proc, msg) + character*(*), intent(in) :: proc + character*(*), intent(in) :: msg + end subroutine cantera_error - integer function phase_nelements(n) - integer, intent(in) :: n - end function phase_nelements + integer function phase_nelements(n) + integer, intent(in) :: n + end function phase_nelements integer function phase_nspecies(n) integer, intent(in) :: n @@ -253,6 +253,11 @@ integer function th_getenthalpies_rt(n, h_rt) double precision, intent(out) :: h_rt(*) end function th_getenthalpies_rt + integer function th_getgibbs_rt(n, grt) + integer, intent(in) :: n + double precision, intent(out) :: grt(*) + end function th_getgibbs_rt + integer function th_getentropies_r(n, s_r) integer, intent(in) :: n double precision, intent(out) :: s_r(*) @@ -269,6 +274,16 @@ integer function th_getpartialmolarintenergies_r(n, ie) double precision, intent(out) :: ie(*) end function th_getpartialmolarintenergies_r + integer function th_getpartialmolarcp(n, cpbar) + integer, intent(in) :: n + double precision, intent(out) :: cpbar(*) + end function th_getpartialmolarcp + + integer function th_getpartialmolarenthalpies(n, hbar) + integer, intent(in) :: n + double precision, intent(out) :: hbar(*) + end function th_getpartialmolarenthalpies + integer function kin_newfromfile(filename, id, reactingPhase, neighbor1, neighbor2, neighbor3, neighbor4) character*(*), intent(in) :: filename character*(*), intent(in) :: id @@ -472,6 +487,9 @@ integer function ctgetCanteraError(buf) character*(*), intent(out) :: buf end function ctgetCanteraError + subroutine ctturnOffExitOnError() + end subroutine ctturnOffExitOnError + integer function ctaddCanteraDirectory(buflen, buf) integer, intent(in) :: buflen character*(*), intent(in) :: buf diff --git a/test_problems/fortran/f90_demo_blessed.txt b/test_problems/fortran/f90_demo_blessed.txt index 214a92fe4e..b779bb888e 100644 --- a/test_problems/fortran/f90_demo_blessed.txt +++ b/test_problems/fortran/f90_demo_blessed.txt @@ -67,3 +67,14 @@ Thermal conductivity: 0.16396 W/m/K H2O2 0.97012E-03 m2/s AR 0.75972E-03 m2/s N2 0.97802E-03 m2/s + Species molar cp, molar enthalpy, normalized Gibbs free energy + H2 36617. J/kmol-K 0.81393E+08 J/kmol -20.604 - + H 20786. J/kmol-K 0.27002E+09 J/kmol -7.8028 - + O 20896. J/kmol-K 0.30159E+09 J/kmol -12.099 - + O2 39570. J/kmol-K 0.90189E+08 J/kmol -30.018 - + OH 36680. J/kmol-K 0.12182E+09 J/kmol -25.365 - + H2O 56098. J/kmol-K -0.12540E+09 J/kmol -39.436 - + HO2 59581. J/kmol-K 0.14047E+09 J/kmol -34.100 - + H2O2 77993. J/kmol-K 0.32003E+08 J/kmol -43.168 - + AR 20786. J/kmol-K 0.52023E+08 J/kmol -21.976 - + N2 36896. J/kmol-K 0.85374E+08 J/kmol -28.119 -