diff --git a/include/cantera/base/NoExitLogger.h b/include/cantera/base/NoExitLogger.h index ca8eb874708..1a758132633 100644 --- a/include/cantera/base/NoExitLogger.h +++ b/include/cantera/base/NoExitLogger.h @@ -4,23 +4,18 @@ #include #include "cantera/base/logger.h" -using namespace std; - -static std::string ss = "print \"\"\" "; - namespace Cantera { +/// Logger that doesn't exit when an error is thrown. +/// @ingroup textlogs +class NoExitLogger : public Logger { +public: + NoExitLogger() {} + virtual ~NoExitLogger() {} - /// 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; - } - }; + 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 61a4ac10315..23a91171138 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 7521f714a4e..e911e500a48 100644 --- a/src/fortran/cantera.f90 +++ b/src/fortran/cantera.f90 @@ -359,10 +359,6 @@ MODULE CANTERA MODULE PROCEDURE ctthermo_setMassFractionsByName END INTERFACE setMassFractionsByName - INTERFACE setMassFractions_NoNorm - MODULE PROCEDURE ctthermo_setMassFractions_NoNorm - END INTERFACE setMassFractions_NoNorm - INTERFACE setMoleFractions MODULE PROCEDURE ctthermo_setMoleFractions END INTERFACE setMoleFractions diff --git a/src/fortran/cantera_funcs.f90 b/src/fortran/cantera_funcs.f90 index fec93e16596..00673c2ac0c 100644 --- a/src/fortran/cantera_funcs.f90 +++ b/src/fortran/cantera_funcs.f90 @@ -86,10 +86,9 @@ subroutine ctfunc_getCanteraError(buf) ierr = ctgetCanteraError(buf) end subroutine ctfunc_getCanteraError - subroutine ctfunc_turnOffExitOnError(self) + subroutine ctfunc_turnOffExitOnError() implicit none - type(phase_t), intent(inout) :: self - self%err = ctturnOffExitOnError(self%thermo_id) + call ctturnOffExitOnError() end subroutine ctfunc_turnOffExitOnError subroutine ctfunc_addCanteraDirectory(self, buf) diff --git a/src/fortran/cantera_thermo.f90 b/src/fortran/cantera_thermo.f90 index 27178bd4b4e..31f2184cb07 100644 --- a/src/fortran/cantera_thermo.f90 +++ b/src/fortran/cantera_thermo.f90 @@ -217,13 +217,6 @@ subroutine ctthermo_setMassFractionsByName(self, y) self%err = phase_setmassfractionsbyname(self%thermo_id, y) end subroutine ctthermo_setmassfractionsbyname - subroutine ctthermo_setMassFractions_NoNorm(self, x) - implicit none - type(phase_t), intent(inout) :: self - double precision, intent(in) :: x(self%nsp) - self%err = phase_setMassFractions(self%thermo_id, x, 0) - end subroutine ctthermo_setMassFractions_NoNorm - subroutine ctthermo_getAtomicWeights(self, atw) implicit none type(phase_t), intent(inout) :: self @@ -556,7 +549,7 @@ subroutine ctthermo_getGibbs_RT(self, grt) implicit none type(phase_t), intent(inout) :: self double precision, intent(out) :: grt(self%nsp) - self%err = th_getpartialmolarenthalpies(self%thermo_id, grt) + self%err = th_getgibbs_rt(self%thermo_id, grt) end subroutine ctthermo_getGibbs_RT subroutine ctthermo_getEntropies_R(self, s_r) diff --git a/src/fortran/fct.cpp b/src/fortran/fct.cpp index a5ae01ac46a..b2ee64edaf0 100644 --- a/src/fortran/fct.cpp +++ b/src/fortran/fct.cpp @@ -89,10 +89,9 @@ extern "C" { return -1; } - status_t ctturnoffexitonerror_(integer* buflen) { + void ctturnoffexitonerror_() { Cantera::Logger* noexitlog = new Cantera::NoExitLogger; setLogger(noexitlog); - return 0; } //--------------- Phase ---------------------// @@ -131,7 +130,7 @@ extern "C" { } } - doublereal phase_temperature_(const integer* n) + double phase_temperature_(const integer* n) { try { return _fph(n)->temperature(); @@ -140,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); @@ -150,7 +149,7 @@ extern "C" { return 0; } - doublereal phase_density_(const integer* n) + double phase_density_(const integer* n) { try { return _fph(n)->density(); @@ -159,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); @@ -169,7 +168,7 @@ extern "C" { return 0; } - doublereal phase_molardensity_(const integer* n) + double phase_molardensity_(const integer* n) { try { return _fph(n)->molarDensity(); @@ -178,7 +177,7 @@ extern "C" { } } - doublereal phase_meanmolecularweight_(const integer* n) + double phase_meanmolecularweight_(const integer* n) { try { return _fph(n)->meanMolecularWeight(); @@ -207,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); @@ -217,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); @@ -227,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); @@ -238,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); @@ -273,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); @@ -299,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); @@ -311,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); @@ -353,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); @@ -395,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(); @@ -404,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(); @@ -413,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(); @@ -422,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(); @@ -431,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(); @@ -440,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(); @@ -449,7 +448,7 @@ extern "C" { } } - doublereal th_pressure_(const integer* n) + double th_pressure_(const integer* n) { try { return _fth(n)->pressure(); @@ -458,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(); @@ -467,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(); @@ -476,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(); @@ -485,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(); @@ -494,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(); @@ -503,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(); @@ -512,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); @@ -523,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); @@ -533,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); @@ -543,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); @@ -553,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); @@ -563,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); @@ -573,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); @@ -583,7 +582,7 @@ extern "C" { return 0; } - doublereal th_refpressure_(const integer* n) + double th_refpressure_(const integer* n) { try { return _fth(n)->refPressure(); @@ -592,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); @@ -601,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); @@ -610,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); @@ -621,18 +620,17 @@ extern "C" { return 0; } - status_t th_getgibbs_rt_(const integer* n, - doublereal* grt) { + status_t th_getgibbs_rt_(const integer* n, double* g_rt) { try { - thermo_t* thrm = _fth(n); - thrm->getGibbs_RT(grt); + ThermoPhase* thrm = _fth(n); + thrm->getGibbs_RT(g_rt); } catch(...) { return handleAllExceptions(-1, ERR); } return 0; } - status_t th_getentropies_r_(const integer* n, doublereal* s_r) + status_t th_getentropies_r_(const integer* n, double* s_r) { try { ThermoPhase* thrm = _fth(n); @@ -643,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); @@ -654,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); @@ -665,8 +663,7 @@ extern "C" { return 0; } - status_t th_getpartialmolarenthalpies_(const integer* n, - doublereal* hbar) { + status_t th_getpartialmolarenthalpies_(const integer* n, double* hbar) { try { thermo_t* thrm = _fth(n); thrm->getPartialMolarEnthalpies(hbar); @@ -676,8 +673,7 @@ extern "C" { return 0; } - status_t th_getpartialmolarcp_(const integer* n, - doublereal* cpbar) { + status_t th_getpartialmolarcp_(const integer* n, double* cpbar) { try { thermo_t* thrm = _fth(n); thrm->getPartialMolarCp(cpbar); @@ -816,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); @@ -825,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); @@ -843,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); @@ -854,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); @@ -874,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); @@ -885,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); @@ -896,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); @@ -907,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); @@ -918,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); @@ -927,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); @@ -954,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); @@ -964,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); @@ -1006,7 +1002,7 @@ extern "C" { } } - doublereal trans_viscosity_(const integer* n) + double trans_viscosity_(const integer* n) { try { return _ftrans(n)->viscosity(); @@ -1015,7 +1011,7 @@ extern "C" { } } - doublereal trans_electricalconductivity_(const integer* n) + double trans_electricalconductivity_(const integer* n) { try { return _ftrans(n)->electricalConductivity(); @@ -1024,7 +1020,7 @@ extern "C" { } } - doublereal trans_thermalconductivity_(const integer* n) + double trans_thermalconductivity_(const integer* n) { try { return _ftrans(n)->thermalConductivity(); @@ -1033,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); @@ -1043,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); @@ -1053,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); @@ -1063,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); @@ -1073,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); @@ -1083,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); @@ -1093,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 1822552f9b2..d161109f301 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 @@ -254,8 +254,8 @@ integer function th_getenthalpies_rt(n, h_rt) end function th_getenthalpies_rt integer function th_getgibbs_rt(n, grt) - integer, intent(in) :: n - double precision, intent(out) :: grt(*) + integer, intent(in) :: n + double precision, intent(out) :: grt(*) end function th_getgibbs_rt integer function th_getentropies_r(n, s_r) @@ -275,13 +275,13 @@ integer function th_getpartialmolarintenergies_r(n, ie) end function th_getpartialmolarintenergies_r integer function th_getpartialmolarcp(n, cpbar) - integer, intent(in) :: n - double precision, intent(out) :: 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(*) + integer, intent(in) :: n + double precision, intent(out) :: hbar(*) end function th_getpartialmolarenthalpies integer function kin_newfromfile(filename, id, reactingPhase, neighbor1, neighbor2, neighbor3, neighbor4) @@ -487,9 +487,8 @@ integer function ctgetCanteraError(buf) character*(*), intent(out) :: buf end function ctgetCanteraError - integer function ctturnOffExitOnError(id) - integer, intent(in) :: id - end function ctturnOffExitOnError + subroutine ctturnOffExitOnError() + end subroutine ctturnOffExitOnError integer function ctaddCanteraDirectory(buflen, buf) integer, intent(in) :: buflen