Exposing getDeltaEnthalpies to Matlab interface.

The general intent here was to enable calculating reaction enthalpies in the
Matlab toolbox, as part of the li-ion battery simulations in PR #563.

This required several changes:

- Create getDeltaEnthalpies.m in Matlab toolbox/@Kinetics, as well as similar
methods for Gibbs free energy and entropy of reaction
- Add kin_getDelta to kineticsmethods.cpp.
- Add getPartialMolarEnthalpies to metalPhase class (it returns all zeros).

Note that similar methods are not enabled for the corresponding
'Standard State' methods, for the time being.  Mainly because it is
difficult for me to envision a significant use case, but also because of
some lingering confusion between 'standard' and 'reference' states in
Cantera's codebase.
This commit is contained in:
Steven DeCaluwe 2019-06-25 06:45:33 -06:00 committed by Ray Speth
parent 8502d18ff7
commit 2d2004da7e
5 changed files with 50 additions and 0 deletions

View file

@ -85,6 +85,11 @@ public:
c[n] = 1.0;
}
}
virtual void getPartialMolarEnthalpies(doublereal *h) const {
for (size_t n = 0; n < nSpecies(); n++) {
h[n] = 0.0;
}
}
virtual Units standardConcentrationUnits() const {
return Units(1.0);

View file

@ -0,0 +1,14 @@
function dH = getDeltaEnthalpies(a)
% GETDELTAENTHALPIES Get the enthalpy of reaction for each reaction.
% dH = getDeltaEnthalpies(a)
%
% :param a:
% Instance of class :mat:func:`Kinetics` (or another
% object deriving from Kinetics) for which the enthalpies of
% reaction are desired.
% :return:
% Returns a vector of the enthalpy of reaction for each
% reaction. Units: J/kmol
%
dH = kinetics_get(a.id, 17, 0);

View file

@ -0,0 +1,14 @@
function dS = getDeltaEntropies(a)
% GETDELTAENTROPIES Get the entropy of reaction for each reaction.
% dS = getDeltaEntropies(a)
%
% :param a:
% Instance of class :mat:func:`Kinetics` (or another
% object deriving from Kinetics) for which the entropies of
% reaction are desired.
% :return:
% Returns a vector of the entropy of reaction for each
% reaction. Units: J/kmol-K
%
dS = kinetics_get(a.id, 17, 2);

View file

@ -0,0 +1,14 @@
function dG = getDeltaGibbs(a)
% GETDELTAGIBBS Get the Gibbs free energy of reaction for each reaction.
% dG = getDeltaGibbs(a)
%
% :param a:
% Instance of class :mat:func:`Kinetics` (or another
% object deriving from Kinetics) for which the Gibbs free
% energies of reaction are desired.
% :return:
% Returns a vector of the Gibbs free energy of reaction
% for each reaction. Units: J/kmol
%
dG = kinetics_get(a.id, 17, 1);

View file

@ -103,6 +103,9 @@ void kineticsmethods(int nlhs, mxArray* plhs[],
case 16:
ok = kin_getRevRateConstants(kin,1,nr,h);
break;
case 17:
ok = kin_getDelta(kin,getInt(prhs[3]),nr,h);
break;
default:
;
}