185 int solveSurfProb(
int ifunc, doublereal time_scale, doublereal TKelvin,
186 doublereal PGas, doublereal reltol, doublereal abstol);
191 void print_header(
int ioflag,
int ifunc, doublereal time_scale,
192 int damping, doublereal reltol, doublereal abstol);
195 void printIteration(
int ioflag, doublereal damp,
int label_d,
int label_t,
196 doublereal inv_t, doublereal t_real,
size_t iter,
197 doublereal update_norm, doublereal resid_norm,
198 bool do_time,
bool final=
false);
227 doublereal
calc_t(doublereal netProdRateSolnSP[], doublereal XMolSolnSP[],
228 int* label,
int* label_old,
229 doublereal* label_factor,
int ioflag);
241 void calcWeights(doublereal wtSpecies[], doublereal wtResid[],
242 const Array2D& Jac,
const doublereal CSolnSP[],
243 const doublereal abstol,
const doublereal reltol);
286 void fun_eval(doublereal* resid,
const doublereal* CSolnSP,
287 const doublereal* CSolnOldSP,
const bool do_time,
const doublereal deltaT);
303 const doublereal* CSolnSPOld,
const bool do_time,
304 const doublereal deltaT);
Headers for the DenseMatrix object, which deals with dense rectangular matrices and description of th...
A class for 2D arrays stored in column-major (Fortran-compatible) form.
A class for full (non-sparse) matrices with Fortran-compatible data storage, which adds matrix operat...
Advances the surface coverages of the associated set of SurfacePhase objects in time.
Method to solve a pseudo steady state surface problem.
void fun_eval(doublereal *resid, const doublereal *CSolnSP, const doublereal *CSolnOldSP, const bool do_time, const doublereal deltaT)
Main Function evaluation.
void print_header(int ioflag, int ifunc, doublereal time_scale, int damping, doublereal reltol, doublereal abstol)
Printing routine that optionally gets called at the start of every invocation.
std::vector< size_t > m_indexKinObjSurfPhase
Mapping between the surface phases and the InterfaceKinetics objects.
size_t m_numTotSurfSpecies
Total number of surface species in all surface phases.
void updateMFSolnSP(doublereal *XMolSolnSP)
Update mole fraction vector consisting of unknowns in surface problem.
solveSP(ImplicitSurfChem *surfChemPtr, int bulkFunc=BULK_ETCH)
Constructor for the object.
std::vector< size_t > m_kinObjIndex
Index between the equation index and the index of the InterfaceKinetics object.
vector_fp m_netProductionRatesSave
Temporary vector with length equal to max m_maxTotSpecies.
void evalSurfLarge(const doublereal *CSolnSP)
Update the vector that keeps track of the largest species in each surface phase.
void resjac_eval(DenseMatrix &jac, doublereal *resid, doublereal *CSolnSP, const doublereal *CSolnSPOld, const bool do_time, const doublereal deltaT)
Main routine that calculates the current residual and Jacobian.
doublereal m_rtol
The relative error tolerance.
void calcWeights(doublereal wtSpecies[], doublereal wtResid[], const Array2D &Jac, const doublereal CSolnSP[], const doublereal abstol, const doublereal reltol)
Calculate the solution and residual weights.
void printIteration(int ioflag, doublereal damp, int label_d, int label_t, doublereal inv_t, doublereal t_real, size_t iter, doublereal update_norm, doublereal resid_norm, bool do_time, bool final=false)
Printing routine that gets called after every iteration.
doublereal m_maxstep
maximum value of the time step. units = seconds
int m_bulkFunc
This variable determines how the bulk phases are to be handled.
std::vector< SurfPhase * > m_ptrsSurfPhase
Vector of surface phase pointers.
vector_fp m_CSolnSP
Solution vector. length MAX(1, m_neq)
vector_fp m_wtResid
Weights for the residual norm calculation. length MAX(1, m_neq)
vector_fp m_resid
Residual for the surface problem.
vector_fp m_CSolnSave
Temporary vector with length equal to max m_maxTotSpecies.
vector_fp m_XMolKinSpecies
Vector of mole fractions. length m_maxTotSpecies.
std::vector< ThermoPhase * > m_bulkPhasePtrs
Vector of bulk phase pointers, length is equal to m_numBulkPhases.
std::vector< size_t > m_numBulkSpecies
Vector of number of species in the m_numBulkPhases phases.
std::vector< size_t > m_kinSpecIndex
Index between the equation index and the position in the kinetic species array for the appropriate ki...
doublereal calc_t(doublereal netProdRateSolnSP[], doublereal XMolSolnSP[], int *label, int *label_old, doublereal *label_factor, int ioflag)
Calculate a conservative delta T to use in a pseudo-steady state algorithm.
std::vector< size_t > m_nSpeciesSurfPhase
Vector of length number of surface phases containing the number of surface species in each phase.
vector_fp m_wtSpecies
Weights for the species concentrations norm calculation.
solveSP & operator=(const solveSP &right)
Unimplemented private assignment operator.
void updateMFKinSpecies(doublereal *XMolKinSp, int isp)
Update the mole fraction vector for a specific kinetic species vector corresponding to one InterfaceK...
size_t m_numTotBulkSpeciesSS
Total number of species in all bulk phases.
std::vector< size_t > m_spSurfLarge
Vector containing the indices of the largest species in each surface phase.
solveSP(const solveSP &right)
Unimplemented private copy constructor.
int solveSurfProb(int ifunc, doublereal time_scale, doublereal TKelvin, doublereal PGas, doublereal reltol, doublereal abstol)
Main routine that actually calculates the pseudo steady state of the surface problem.
vector_fp m_numEqn2
Temporary vector with length equal to max m_maxTotSpecies.
ImplicitSurfChem * m_SurfChemPtr
Pointer to the manager of the implicit surface chemistry problem.
size_t m_numSurfPhases
Number of surface phases in the surface problem.
std::vector< size_t > m_kinObjPhaseIDSurfPhase
Phase ID in the InterfaceKinetics object of the surface phase.
vector_fp m_numEqn1
Temporary vector with length equal to max m_maxTotSpecies.
DenseMatrix m_Jac
Jacobian.
size_t m_numBulkPhasesSS
Total number of volumetric condensed phases included in the steady state problem handled by this rout...
size_t m_neq
Total number of equations to solve in the implicit problem.
std::vector< size_t > m_eqnIndexStartSolnPhase
Index of the start of the unknowns for each solution phase.
std::vector< InterfaceKinetics * > & m_objects
Vector of interface kinetics objects.
void updateState(const doublereal *cSurfSpec)
Update the surface states of the surface phases.
size_t m_maxTotSpecies
Maximum number of species in any single kinetics operator -> also maxed wrt the total # of solution s...
~solveSP()
Destructor. Deletes the integrator.
vector_fp m_CSolnSPOld
Saved solution vector at the old time step. length MAX(1, m_neq)
vector_fp m_CSolnSPInit
Saved initial solution vector. length MAX(1, m_neq)
doublereal m_atol
The absolute tolerance in real units. units are (kmol/m2)
const int BULK_ETCH
Etching of a bulk phase is to be expected.
const int BULK_DEPOSITION
Deposition of a bulk phase is to be expected.
const int SFLUX_TRANSIENT
The transient calculation is performed here for an amount of time specified by "time_scale".
const int SFLUX_RESIDUAL
Need to solve the surface problem in order to calculate the surface fluxes of gas-phase species.
const int SFLUX_JACOBIAN
Calculation of the surface problem is due to the need for a numerical Jacobian for the gas-problem.
const int SFLUX_INITIALIZE
This assumes that the initial guess supplied to the routine is far from the correct one.
Namespace for the Cantera kernel.
std::vector< double > vector_fp
Turn on the use of stl vectors for the basic array type within cantera Vector of doubles.