46 for (
size_t k = 0; k <
m_kk; k++) {
67 for (
size_t k = 0; k <
m_kk; k++) {
76 for (
size_t k = 0; k <
m_kk; k++) {
85 for (
size_t k = 0; k <
m_kk; k++) {
101 copy(
m_mu0.begin(),
m_mu0.end(), mu0.begin());
110 for (
size_t k = 0; k <
m_kk; k++) {
161 for (
size_t k = 0; k <
m_kk; k++) {
192 m_cp0.push_back(0.0);
193 m_mu0.push_back(0.0);
198 vector<double> cov{1.0};
209 "Site density must be positive. Got {}", n0);
220 for (
size_t k = 0; k <
m_kk; k++) {
221 sum += theta[k] /
size(k);
225 "Sum of Coverage fractions is zero or negative");
227 for (
size_t k = 0; k <
m_kk; k++) {
238 for (
size_t k = 0; k <
m_kk; k++) {
239 sum += theta[k] /
size(k);
244 "Sum of Coverage fractions is zero or negative");
246 for (
size_t k = 0; k <
m_kk; k++) {
247 m_work[k] = theta[k] * sum2 / (sum *
size(k));
256 double sum_X_s = 0.0;
258 for (
size_t k = 0; k <
m_kk; k++) {
260 sum_X_s += theta[k] *
size(k);
262 for (
size_t k = 0; k <
m_kk; k++) {
263 theta[k] *=
size(k) * sum_X / sum_X_s;
274 vector<double> cv(
m_kk, 0.0);
276 for (
size_t k = 0; k <
m_kk; k++) {
285 "Input coverages are all zero or negative");
291 if (state.
hasKey(
"coverages")) {
292 if (state[
"coverages"].is<string>()) {
307 for (
size_t k = 0; k <
m_kk; k++) {
319 if (
m_tlast != tnow || force) {
322 for (
size_t k = 0; k <
m_kk; k++) {
337 Units(1.0, 0, -
static_cast<double>(
m_ndim), 0, 0, 0, 1)));
344 phaseNode[
"site-density"].setQuantity(
Declarations for the EdgePhase ThermoPhase object, which models the interface between two surfaces (s...
Declaration for class Cantera::Species.
Header for a simple thermodynamics model of a surface phase derived from ThermoPhase,...
Headers for the factory class that can create known ThermoPhase objects (see Thermodynamic Properties...
A map of string keys to values whose type can vary at runtime.
bool hasKey(const string &key) const
Returns true if the map contains an item named key.
double convert(const string &key, const string &units) const
Convert the item stored by the given key to the units specified in units.
Base class for exceptions thrown by Cantera classes.
EdgePhase(const string &infile="", const string &id="")
Construct and initialize an EdgePhase directly from an input file.
virtual void update(double T, span< double > cp_R, span< double > h_RT, span< double > s_R) const
Compute the reference-state properties for all species.
void getMoleFractions(span< double > x) const
Get the species mole fraction vector.
void assignDensity(const double density_)
Set the internally stored constant density (kg/m^3) of the phase.
void setNDim(size_t ndim)
Set the number of spatial dimensions (1, 2, or 3).
size_t m_kk
Number of species in the phase.
size_t m_ndim
Dimensionality of the phase.
double temperature() const
Temperature (K).
double meanMolecularWeight() const
The mean molecular weight. Units: (kg/kmol)
virtual double concentration(const size_t k) const
Concentration of species k.
string speciesName(size_t k) const
Name of the species with index k.
double mean_X(span< const double > Q) const
Evaluate the mole-fraction-weighted mean of an array Q.
double moleFraction(size_t k) const
Return the mole fraction of a single species.
virtual void getConcentrations(span< double > c) const
Get the species concentrations (kmol/m^3).
virtual void compositionChanged()
Apply changes to the state which are needed after the composition changes.
virtual void setMoleFractions_NoNorm(span< const double > x)
Set the mole fractions to the specified values without normalizing.
virtual void setMoleFractions(span< const double > x)
Set the mole fractions to the specified values.
const vector< string > & speciesNames() const
Return a const reference to the vector of species names.
SurfPhase(const string &infile="", const string &id="")
Construct and initialize a SurfPhase ThermoPhase object directly from an input file.
double enthalpy_mole() const override
Return the Molar Enthalpy. Units: J/kmol.
void setSiteDensity(double n0)
Set the site density of the surface phase (kmol m-2)
double logStandardConc(size_t k=0) const override
Natural logarithm of the standard concentration of the kth species.
void setState(const AnyMap &state) override
Set the state using an AnyMap containing any combination of properties supported by the thermodynamic...
void getCp_R(span< double > cpr) const override
Get the nondimensional Heat Capacities at constant pressure for the species standard states at the cu...
void getStandardChemPotentials(span< double > mu0) const override
Get the array of chemical potentials at unit activity for the species at their standard states at the...
void getEntropy_R_ref(span< double > er) const override
Returns the vector of nondimensional entropies of the reference state at the current temperature of t...
void getPartialMolarEnthalpies(span< double > hbar) const override
Returns an array of partial molar enthalpies for the species in the mixture.
void setCoverages(span< const double > theta)
Set the surface site fractions to a specified state.
void getPartialMolarCp(span< double > cpbar) const override
Return an array of partial molar heat capacities for the species in the mixture.
vector< double > m_logsize
vector storing the log of the size of each species.
void getGibbs_RT(span< double > grt) const override
Get the nondimensional Gibbs functions for the species in their standard states at the current T and ...
void getCp_R_ref(span< double > cprt) const override
Returns the vector of nondimensional constant pressure heat capacities of the reference state at the ...
vector< double > m_work
Temporary work array.
void getParameters(AnyMap &phaseNode) const override
Store the parameters of a ThermoPhase object such that an identical one could be reconstructed using ...
void initThermo() override
Initialize the ThermoPhase object after all species have been set up.
double m_n0
Surface site density (kmol m-2)
double size(size_t k) const
Returns the number of sites occupied by one molecule of species k.
vector< double > m_h0
Temporary storage for the reference state enthalpies.
void getEnthalpy_RT_ref(span< double > hrt) const override
Returns the vector of nondimensional enthalpies of the reference state at the current temperature of ...
double cv_mole() const override
Molar heat capacity at constant volume and composition [J/kmol/K].
void getEnthalpy_RT(span< double > hrt) const override
Get the nondimensional Enthalpy functions for the species at their standard states at the current T a...
vector< double > m_s0
Temporary storage for the reference state entropies.
vector< double > m_cp0
Temporary storage for the reference state heat capacities.
vector< double > m_speciesSize
Vector of species sizes (number of sites occupied). length m_kk.
void getEntropy_R(span< double > sr) const override
Get the array of nondimensional Entropy functions for the standard state species at the current T and...
double intEnergy_mole() const override
Return the Molar Internal Energy. Units: J/kmol.
double entropy_mole() const override
Return the Molar Entropy. Units: J/kmol-K.
void _updateThermo(bool force=false) const
Update the species reference state thermodynamic functions.
void getGibbs_RT_ref(span< double > grt) const override
Returns the vector of nondimensional Gibbs Free Energies of the reference state at the current temper...
double cp_mole() const override
Molar heat capacity at constant pressure and composition [J/kmol/K].
void setCoveragesNoNorm(span< const double > theta)
Set the surface site fractions to a specified state.
void getPartialMolarVolumes(span< double > vbar) const override
Return an array of partial molar volumes for the species in the mixture.
void getStandardVolumes(span< double > vol) const override
Get the molar volumes of the species standard states at the current T and P of the solution.
void compositionChanged() override
Apply changes to the state which are needed after the composition changes.
void getCoverages(span< double > theta) const
Return a vector of surface coverages.
void getPartialMolarEntropies(span< double > sbar) const override
Returns an array of partial molar entropies of the species in the solution.
double standardConcentration(size_t k=0) const override
Return the standard concentration for the kth species.
vector< double > m_mu0
Temporary storage for the reference state Gibbs energies.
bool addSpecies(shared_ptr< Species > spec) override
Add a Species to this Phase.
void setCoveragesByName(const string &cov)
Set the coverages from a string of colon-separated name:value pairs.
void getChemPotentials(span< double > mu) const override
Get the species chemical potentials. Units: J/kmol.
void getActivityConcentrations(span< double > c) const override
Return a vector of activity concentrations for each species.
double m_logn0
log of the surface site density
virtual void getParameters(AnyMap &phaseNode) const
Store the parameters of a ThermoPhase object such that an identical one could be reconstructed using ...
virtual void setState(const AnyMap &state)
Set the state using an AnyMap containing any combination of properties supported by the thermodynamic...
double RT() const
Return the Gas Constant multiplied by the current temperature.
double m_tlast
last value of the temperature processed by reference state
void initThermoFile(const string &inputFile, const string &id)
Initialize a ThermoPhase object using an input file.
MultiSpeciesThermo m_spthermo
Pointer to the calculation manager for species reference-state thermodynamic properties.
bool addSpecies(shared_ptr< Species > spec) override
Add a Species to this Phase.
AnyMap m_input
Data supplied via setParameters.
A representation of the units associated with a dimensional quantity.
Composition parseCompString(const string &ss, const vector< string > &names)
Parse a composition string into a map consisting of individual key:composition pairs.
void scale(InputIter begin, InputIter end, OutputIter out, S scale_factor)
Multiply elements of an array by a scale factor.
const double GasConstant
Universal Gas Constant [J/kmol/K].
Namespace for the Cantera kernel.
const double SmallNumber
smallest number to compare to zero.
const U & getValue(const map< T, U > &m, const T &key, const U &default_val)
Const accessor for a value in a map.
map< string, double > Composition
Map from string names to doubles.
void checkArraySize(const char *procedure, size_t available, size_t required)
Wrapper for throwing ArraySizeError.
Contains declarations for string manipulation functions within Cantera.
Various templated functions that carry out common vector and polynomial operations (see Templated Arr...