Cantera  2.4.0
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
solveSP Class Reference

Method to solve a pseudo steady state surface problem. More...

#include <solveSP.h>

Collaboration diagram for solveSP:
[legend]

Public Member Functions

 solveSP (ImplicitSurfChem *surfChemPtr, int bulkFunc=BULK_ETCH)
 Constructor for the object. More...
 
 ~solveSP ()
 Destructor. Deletes the integrator. More...
 
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. More...
 

Public Attributes

int m_ioflag
 

Private Member Functions

 solveSP (const solveSP &right)
 Unimplemented private copy constructor. More...
 
solveSPoperator= (const solveSP &right)
 Unimplemented private assignment operator. More...
 
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. More...
 
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. More...
 
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. More...
 
void calcWeights (doublereal wtSpecies[], doublereal wtResid[], const Array2D &Jac, const doublereal CSolnSP[], const doublereal abstol, const doublereal reltol)
 Calculate the solution and residual weights. More...
 
void updateState (const doublereal *cSurfSpec)
 Update the surface states of the surface phases. More...
 
void updateMFSolnSP (doublereal *XMolSolnSP)
 Update mole fraction vector consisting of unknowns in surface problem. More...
 
void updateMFKinSpecies (doublereal *XMolKinSp, int isp)
 Update the mole fraction vector for a specific kinetic species vector corresponding to one InterfaceKinetics object. More...
 
void evalSurfLarge (const doublereal *CSolnSP)
 Update the vector that keeps track of the largest species in each surface phase. More...
 
void fun_eval (doublereal *resid, const doublereal *CSolnSP, const doublereal *CSolnOldSP, const bool do_time, const doublereal deltaT)
 Main Function evaluation. More...
 
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. More...
 

Private Attributes

ImplicitSurfChemm_SurfChemPtr
 Pointer to the manager of the implicit surface chemistry problem. More...
 
std::vector< InterfaceKinetics * > & m_objects
 Vector of interface kinetics objects. More...
 
size_t m_neq
 Total number of equations to solve in the implicit problem. More...
 
int m_bulkFunc
 This variable determines how the bulk phases are to be handled. More...
 
size_t m_numSurfPhases
 Number of surface phases in the surface problem. More...
 
size_t m_numTotSurfSpecies
 Total number of surface species in all surface phases. More...
 
std::vector< size_t > m_indexKinObjSurfPhase
 Mapping between the surface phases and the InterfaceKinetics objects. More...
 
std::vector< size_t > m_nSpeciesSurfPhase
 Vector of length number of surface phases containing the number of surface species in each phase. More...
 
std::vector< SurfPhase * > m_ptrsSurfPhase
 Vector of surface phase pointers. More...
 
std::vector< size_t > m_eqnIndexStartSolnPhase
 Index of the start of the unknowns for each solution phase. More...
 
std::vector< size_t > m_kinObjPhaseIDSurfPhase
 Phase ID in the InterfaceKinetics object of the surface phase. More...
 
size_t m_numBulkPhasesSS
 Total number of volumetric condensed phases included in the steady state problem handled by this routine. More...
 
std::vector< size_t > m_numBulkSpecies
 Vector of number of species in the m_numBulkPhases phases. More...
 
size_t m_numTotBulkSpeciesSS
 Total number of species in all bulk phases. More...
 
std::vector< ThermoPhase * > m_bulkPhasePtrs
 Vector of bulk phase pointers, length is equal to m_numBulkPhases. More...
 
std::vector< size_t > m_kinSpecIndex
 Index between the equation index and the position in the kinetic species array for the appropriate kinetics operator. More...
 
std::vector< size_t > m_kinObjIndex
 Index between the equation index and the index of the InterfaceKinetics object. More...
 
std::vector< size_t > m_spSurfLarge
 Vector containing the indices of the largest species in each surface phase. More...
 
doublereal m_atol
 The absolute tolerance in real units. units are (kmol/m2) More...
 
doublereal m_rtol
 The relative error tolerance. More...
 
doublereal m_maxstep
 maximum value of the time step. units = seconds More...
 
size_t m_maxTotSpecies
 Maximum number of species in any single kinetics operator -> also maxed wrt the total # of solution species. More...
 
vector_fp m_netProductionRatesSave
 Temporary vector with length equal to max m_maxTotSpecies. More...
 
vector_fp m_numEqn1
 Temporary vector with length equal to max m_maxTotSpecies. More...
 
vector_fp m_numEqn2
 Temporary vector with length equal to max m_maxTotSpecies. More...
 
vector_fp m_CSolnSave
 Temporary vector with length equal to max m_maxTotSpecies. More...
 
vector_fp m_CSolnSP
 Solution vector. length MAX(1, m_neq) More...
 
vector_fp m_CSolnSPInit
 Saved initial solution vector. length MAX(1, m_neq) More...
 
vector_fp m_CSolnSPOld
 Saved solution vector at the old time step. length MAX(1, m_neq) More...
 
vector_fp m_wtResid
 Weights for the residual norm calculation. length MAX(1, m_neq) More...
 
vector_fp m_wtSpecies
 Weights for the species concentrations norm calculation. More...
 
vector_fp m_resid
 Residual for the surface problem. More...
 
vector_fp m_XMolKinSpecies
 Vector of mole fractions. length m_maxTotSpecies. More...
 
DenseMatrix m_Jac
 Jacobian. More...
 

Detailed Description

Method to solve a pseudo steady state surface problem.

The following class handles solving the surface problem. The calculation uses Newton's method to obtain the surface fractions of the surface and bulk species by requiring that the surface species production rate = 0 and that the either the bulk fractions are proportional to their production rates or they are constants.

Currently, the bulk mole fractions are treated as constants. Implementation of their being added to the unknown solution vector is delayed.

Lets introduce the unknown vector for the "surface problem". The surface problem is defined as the evaluation of the surface site fractions for multiple surface phases. The unknown vector will consist of the vector of surface concentrations for each species in each surface vector. Species are grouped first by their surface phases

The unknown solution vector is defined as follows:

C_i_j kindexSP
C_0_0 0
C_1_0 1
C_2_0 2
. . . ...
C_N0-1_0 N0-1
C_0_1 N0
C_1_1 N0+1
C_2_1 N0+2
. . . ...
C_N1-1_1 NO+N1-1

Note there are a couple of different types of species indices floating around in the formulation of this object.

kindexSP: This is the species index in the contiguous vector of unknowns for the surface problem.

Note, in the future, BULK_DEPOSITION systems will be added, and the solveSP unknown vector will get more complicated. It will include the mole fraction and growth rates of specified bulk phases

Indices which relate to individual kinetics objects use the suffix KSI (kinetics species index).

Solution Method

This routine is typically used within a residual calculation in a large code. It's typically invoked millions of times for large calculations, and it must work every time. Therefore, requirements demand that it be robust but also efficient.

The solution methodology is largely determined by the ifunc parameter, that is input to the solution object. This parameter may have one of the values defined in Surface Problem Solver Methods.

Pseudo time stepping algorithm:

The time step is determined from sdot[], so that the time step doesn't ever change the value of a variable by more than 100%.

This algorithm does use a damped Newton's method to relax the equations. Damping is based on a "delta damping" technique. The solution unknowns are not allowed to vary too much between iterations.

EXTRA_ACCURACY: A constant that is the ratio of the required update norm in this Newton iteration compared to that in the nonlinear solver. A value of 0.1 is used so surface species are safely overconverged.

Functions called:

Definition at line 138 of file solveSP.h.

Constructor & Destructor Documentation

◆ solveSP() [1/2]

solveSP ( ImplicitSurfChem surfChemPtr,
int  bulkFunc = BULK_ETCH 
)

Constructor for the object.

Parameters
surfChemPtrPointer to the ImplicitSurfChem object that defines the surface problem to be solved.
bulkFuncInteger representing how the bulk phases should be handled. See Surface Problem Bulk Phase Mode. Currently, only the default value of BULK_ETCH is supported.

Definition at line 23 of file solveSP.cpp.

◆ ~solveSP()

~solveSP ( )
inline

Destructor. Deletes the integrator.

Definition at line 152 of file solveSP.h.

◆ solveSP() [2/2]

solveSP ( const solveSP right)
private

Unimplemented private copy constructor.

Member Function Documentation

◆ operator=()

solveSP& operator= ( const solveSP right)
private

Unimplemented private assignment operator.

◆ solveSurfProb()

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.

The actual converged solution is returned as part of the internal state of the InterfaceKinetics objects.

Uses Newton's method to get the surface fractions of the surface and bulk species by requiring that the surface species production rate = 0 and that the bulk fractions are proportional to their production rates.

Parameters
ifuncDetermines the type of solution algorithm to be used. See Surface Problem Solver Methods for possible values.
time_scaleTime over which to integrate the surface equations, where applicable
TKelvinTemperature (kelvin)
PGasPressure (pascals)
reltolRelative tolerance to use
abstolabsolute tolerance.
Returns
1 if the surface problem is successfully solved. -1 if the surface problem wasn't solved successfully. Note the actual converged solution is returned as part of the internal state of the InterfaceKinetics objects.

Definition at line 113 of file solveSP.cpp.

References solveSP::calc_t(), solveSP::calcWeights(), solveSP::evalSurfLarge(), solveSP::fun_eval(), solveSP::m_CSolnSP, solveSP::m_CSolnSPInit, solveSP::m_CSolnSPOld, solveSP::m_Jac, solveSP::m_neq, solveSP::m_netProductionRatesSave, solveSP::m_nSpeciesSurfPhase, solveSP::m_numEqn1, solveSP::m_numSurfPhases, solveSP::m_ptrsSurfPhase, solveSP::m_resid, solveSP::m_wtResid, solveSP::m_wtSpecies, solveSP::m_XMolKinSpecies, solveSP::print_header(), solveSP::printIteration(), solveSP::resjac_eval(), SFLUX_INITIALIZE, SFLUX_JACOBIAN, SFLUX_TRANSIENT, Cantera::solve(), solveSP::updateState(), Cantera::writelog(), and Cantera::writelogf().

◆ print_header()

void print_header ( int  ioflag,
int  ifunc,
doublereal  time_scale,
int  damping,
doublereal  reltol,
doublereal  abstol 
)
private

Printing routine that optionally gets called at the start of every invocation.

Definition at line 637 of file solveSP.cpp.

References BULK_DEPOSITION, BULK_ETCH, solveSP::m_bulkFunc, SFLUX_INITIALIZE, SFLUX_JACOBIAN, SFLUX_RESIDUAL, SFLUX_TRANSIENT, Cantera::writelog(), and Cantera::writelogf().

Referenced by solveSP::solveSurfProb().

◆ printIteration()

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 
)
private

Printing routine that gets called after every iteration.

Definition at line 686 of file solveSP.cpp.

References solveSP::m_kinObjIndex, solveSP::m_kinSpecIndex, solveSP::m_objects, Cantera::writelog(), and Cantera::writelogf().

Referenced by solveSP::solveSurfProb().

◆ calc_t()

doublereal calc_t ( doublereal  netProdRateSolnSP[],
doublereal  XMolSolnSP[],
int *  label,
int *  label_old,
doublereal *  label_factor,
int  ioflag 
)
private

Calculate a conservative delta T to use in a pseudo-steady state algorithm.

This routine calculates a pretty conservative 1/del_t based on MAX_i(sdot_i/(X_i*SDen0)). This probably guarantees diagonal dominance.

Small surface fractions are allowed to intervene in the del_t determination, no matter how small. This may be changed. Now minimum changed to 1.0e-12,

Maximum time step set to time_scale.

Parameters
netProdRateSolnSPOutput variable. Net production rate of all of the species in the solution vector.
XMolSolnSPoutput variable. Mole fraction of all of the species in the solution vector
labelOutput variable. Pointer to the value of the species index (kindexSP) that is controlling the time step
label_oldOutput variable. Pointer to the value of the species index (kindexSP) that controlled the time step at the previous iteration
label_factorOutput variable. Pointer to the current factor that is used to indicate the same species is controlling the time step.
ioflagLevel of the output requested.
Returns
the 1. / delta T to be used on the next step

Definition at line 591 of file solveSP.cpp.

References Kinetics::getNetProductionRates(), Kinetics::kineticsSpeciesIndex(), solveSP::m_nSpeciesSurfPhase, solveSP::m_numEqn1, solveSP::m_numSurfPhases, solveSP::m_objects, Phase::molarDensity(), Kinetics::surfacePhaseIndex(), Kinetics::thermo(), and solveSP::updateMFSolnSP().

Referenced by solveSP::solveSurfProb().

◆ calcWeights()

void calcWeights ( doublereal  wtSpecies[],
doublereal  wtResid[],
const Array2D Jac,
const doublereal  CSolnSP[],
const doublereal  abstol,
const doublereal  reltol 
)
private

Calculate the solution and residual weights.

Parameters
wtSpeciesWeights to use for the soln unknowns. These are in concentration units
wtResidWeights to sue for the residual unknowns.
JacJacobian. Row sum scaling is used for the Jacobian
CSolnSPSolution vector for the surface problem
abstolAbsolute error tolerance
reltolRelative error tolerance

Definition at line 558 of file solveSP.cpp.

References BULK_DEPOSITION, solveSP::m_bulkFunc, solveSP::m_bulkPhasePtrs, solveSP::m_neq, solveSP::m_nSpeciesSurfPhase, solveSP::m_numBulkPhasesSS, solveSP::m_numBulkSpecies, solveSP::m_numSurfPhases, and solveSP::m_ptrsSurfPhase.

Referenced by solveSP::solveSurfProb().

◆ updateState()

void updateState ( const doublereal *  cSurfSpec)
private

Update the surface states of the surface phases.

Definition at line 296 of file solveSP.cpp.

References solveSP::m_nSpeciesSurfPhase, solveSP::m_numSurfPhases, and solveSP::m_ptrsSurfPhase.

Referenced by solveSP::fun_eval(), and solveSP::solveSurfProb().

◆ updateMFSolnSP()

void updateMFSolnSP ( doublereal *  XMolSolnSP)
private

Update mole fraction vector consisting of unknowns in surface problem.

Parameters
XMolSolnSPVector of mole fractions for the unknowns in the surface problem.

Definition at line 305 of file solveSP.cpp.

References solveSP::m_eqnIndexStartSolnPhase, solveSP::m_numSurfPhases, and solveSP::m_ptrsSurfPhase.

Referenced by solveSP::calc_t().

◆ updateMFKinSpecies()

void updateMFKinSpecies ( doublereal *  XMolKinSp,
int  isp 
)
private

Update the mole fraction vector for a specific kinetic species vector corresponding to one InterfaceKinetics object.

Parameters
XMolKinSpMole fraction vector corresponding to a particular kinetic species for a single InterfaceKinetics Object This is a vector over all the species in all of the phases in the InterfaceKinetics object
ispID of the InterfaceKinetics Object.

Definition at line 313 of file solveSP.cpp.

References Phase::getMoleFractions(), Kinetics::kineticsSpeciesIndex(), solveSP::m_objects, Kinetics::nPhases(), and Kinetics::thermo().

◆ evalSurfLarge()

void evalSurfLarge ( const doublereal *  CSolnSP)
private

Update the vector that keeps track of the largest species in each surface phase.

Parameters
CSolnSPVector of the current values of the surface concentrations in all of the surface species.

Definition at line 322 of file solveSP.cpp.

References solveSP::m_nSpeciesSurfPhase, solveSP::m_numSurfPhases, and solveSP::m_spSurfLarge.

Referenced by solveSP::solveSurfProb().

◆ fun_eval()

void fun_eval ( doublereal *  resid,
const doublereal *  CSolnSP,
const doublereal *  CSolnOldSP,
const bool  do_time,
const doublereal  deltaT 
)
private

Main Function evaluation.

Parameters
residoutput Vector of residuals, length = m_neq
CSolnSPVector of species concentrations, unknowns in the problem, length = m_neq
CSolnOldSPOld Vector of species concentrations, unknowns in the problem, length = m_neq
do_timeCalculate a time dependent residual
deltaTDelta time for time dependent problem.

Definition at line 338 of file solveSP.cpp.

References BULK_DEPOSITION, Kinetics::getNetProductionRates(), Kinetics::kineticsSpeciesIndex(), solveSP::m_bulkFunc, solveSP::m_bulkPhasePtrs, solveSP::m_indexKinObjSurfPhase, solveSP::m_netProductionRatesSave, solveSP::m_nSpeciesSurfPhase, solveSP::m_numBulkPhasesSS, solveSP::m_numEqn1, solveSP::m_numSurfPhases, solveSP::m_numTotSurfSpecies, solveSP::m_objects, solveSP::m_ptrsSurfPhase, solveSP::m_spSurfLarge, Kinetics::surfacePhaseIndex(), and solveSP::updateState().

Referenced by solveSP::resjac_eval(), and solveSP::solveSurfProb().

◆ resjac_eval()

void resjac_eval ( DenseMatrix jac,
doublereal *  resid,
doublereal *  CSolnSP,
const doublereal *  CSolnSPOld,
const bool  do_time,
const doublereal  deltaT 
)
private

Main routine that calculates the current residual and Jacobian.

Parameters
jacJacobian to be evaluated.
residoutput Vector of residuals, length = m_neq
CSolnSPVector of species concentrations, unknowns in the problem, length = m_neq. These are tweaked in order to derive the columns of the Jacobian.
CSolnSPOldOld Vector of species concentrations, unknowns in the problem, length = m_neq
do_timeCalculate a time dependent residual
deltaTDelta time for time dependent problem.

Definition at line 445 of file solveSP.cpp.

References solveSP::fun_eval(), solveSP::m_nSpeciesSurfPhase, solveSP::m_numSurfPhases, and solveSP::m_ptrsSurfPhase.

Referenced by solveSP::solveSurfProb().

Member Data Documentation

◆ m_SurfChemPtr

ImplicitSurfChem* m_SurfChemPtr
private

Pointer to the manager of the implicit surface chemistry problem.

This object actually calls the current object. Thus, we are providing a loop-back functionality here.

Definition at line 311 of file solveSP.h.

◆ m_objects

std::vector<InterfaceKinetics*>& m_objects
private

Vector of interface kinetics objects.

Each of these is associated with one and only one surface phase.

Definition at line 317 of file solveSP.h.

Referenced by solveSP::calc_t(), solveSP::fun_eval(), solveSP::printIteration(), and solveSP::updateMFKinSpecies().

◆ m_neq

size_t m_neq
private

Total number of equations to solve in the implicit problem.

Note, this can be zero, and frequently is

Definition at line 323 of file solveSP.h.

Referenced by solveSP::calcWeights(), and solveSP::solveSurfProb().

◆ m_bulkFunc

int m_bulkFunc
private

This variable determines how the bulk phases are to be handled.

Possible values are given in Surface Problem Bulk Phase Mode.

Definition at line 329 of file solveSP.h.

Referenced by solveSP::calcWeights(), solveSP::fun_eval(), and solveSP::print_header().

◆ m_numSurfPhases

size_t m_numSurfPhases
private

Number of surface phases in the surface problem.

This number is equal to the number of InterfaceKinetics objects in the problem. (until further noted)

Definition at line 336 of file solveSP.h.

Referenced by solveSP::calc_t(), solveSP::calcWeights(), solveSP::evalSurfLarge(), solveSP::fun_eval(), solveSP::resjac_eval(), solveSP::solveSurfProb(), solveSP::updateMFSolnSP(), and solveSP::updateState().

◆ m_numTotSurfSpecies

size_t m_numTotSurfSpecies
private

Total number of surface species in all surface phases.

This is also the number of equations to solve for m_mode=0 system It's equal to the sum of the number of species in each of the m_numSurfPhases.

Definition at line 344 of file solveSP.h.

Referenced by solveSP::fun_eval().

◆ m_indexKinObjSurfPhase

std::vector<size_t> m_indexKinObjSurfPhase
private

Mapping between the surface phases and the InterfaceKinetics objects.

Currently this is defined to be a 1-1 mapping (and probably assumed in some places) m_surfKinObjID[i] = i

Definition at line 352 of file solveSP.h.

Referenced by solveSP::fun_eval().

◆ m_nSpeciesSurfPhase

std::vector<size_t> m_nSpeciesSurfPhase
private

Vector of length number of surface phases containing the number of surface species in each phase.

Length is equal to the number of surface phases, m_numSurfPhases

Definition at line 359 of file solveSP.h.

Referenced by solveSP::calc_t(), solveSP::calcWeights(), solveSP::evalSurfLarge(), solveSP::fun_eval(), solveSP::resjac_eval(), solveSP::solveSurfProb(), and solveSP::updateState().

◆ m_ptrsSurfPhase

std::vector<SurfPhase*> m_ptrsSurfPhase
private

Vector of surface phase pointers.

This is created during the constructor Length is equal to the number of surface phases, m_numSurfPhases

Definition at line 366 of file solveSP.h.

Referenced by solveSP::calcWeights(), solveSP::fun_eval(), solveSP::resjac_eval(), solveSP::solveSurfProb(), solveSP::updateMFSolnSP(), and solveSP::updateState().

◆ m_eqnIndexStartSolnPhase

std::vector<size_t> m_eqnIndexStartSolnPhase
private

Index of the start of the unknowns for each solution phase.

i_eqn = m_eqnIndexStartPhase[isp]

isp is the phase id in the list of phases solved by the surface problem.

i_eqn is the equation number of the first unknown in the solution vector corresponding to isp'th phase.

Definition at line 378 of file solveSP.h.

Referenced by solveSP::updateMFSolnSP().

◆ m_kinObjPhaseIDSurfPhase

std::vector<size_t> m_kinObjPhaseIDSurfPhase
private

Phase ID in the InterfaceKinetics object of the surface phase.

For each surface phase, this lists the PhaseId of the surface phase in the corresponding InterfaceKinetics object

Length is equal to m_numSurfPhases

Definition at line 387 of file solveSP.h.

◆ m_numBulkPhasesSS

size_t m_numBulkPhasesSS
private

Total number of volumetric condensed phases included in the steady state problem handled by this routine.

This is equal to or less than the total number of volumetric phases in all of the InterfaceKinetics objects. We usually do not include bulk phases. Bulk phases are only included in the calculation when their domain isn't included in the underlying continuum model conservation equation system.

This is equal to 0, for the time being

Definition at line 400 of file solveSP.h.

Referenced by solveSP::calcWeights(), and solveSP::fun_eval().

◆ m_numBulkSpecies

std::vector<size_t> m_numBulkSpecies
private

Vector of number of species in the m_numBulkPhases phases.

Length is number of bulk phases

Definition at line 406 of file solveSP.h.

Referenced by solveSP::calcWeights().

◆ m_numTotBulkSpeciesSS

size_t m_numTotBulkSpeciesSS
private

Total number of species in all bulk phases.

This is also the number of bulk equations to solve when bulk equation solving is turned on.

Definition at line 413 of file solveSP.h.

◆ m_bulkPhasePtrs

std::vector<ThermoPhase*> m_bulkPhasePtrs
private

Vector of bulk phase pointers, length is equal to m_numBulkPhases.

Definition at line 416 of file solveSP.h.

Referenced by solveSP::calcWeights(), and solveSP::fun_eval().

◆ m_kinSpecIndex

std::vector<size_t> m_kinSpecIndex
private

Index between the equation index and the position in the kinetic species array for the appropriate kinetics operator.

Length = m_neq.

ksp = m_kinSpecIndex[ieq] ksp is the kinetic species index for the ieq'th equation.

Definition at line 426 of file solveSP.h.

Referenced by solveSP::printIteration().

◆ m_kinObjIndex

std::vector<size_t> m_kinObjIndex
private

Index between the equation index and the index of the InterfaceKinetics object.

Length m_neq

Definition at line 433 of file solveSP.h.

Referenced by solveSP::printIteration().

◆ m_spSurfLarge

std::vector<size_t> m_spSurfLarge
private

Vector containing the indices of the largest species in each surface phase.

k = m_spSurfLarge[i] where k is the local species index, i.e., it varies from 0 to (num species in phase - 1) and i is the surface phase index in the problem. Length is equal to m_numSurfPhases.

Definition at line 442 of file solveSP.h.

Referenced by solveSP::evalSurfLarge(), and solveSP::fun_eval().

◆ m_atol

doublereal m_atol
private

The absolute tolerance in real units. units are (kmol/m2)

Definition at line 445 of file solveSP.h.

◆ m_rtol

doublereal m_rtol
private

The relative error tolerance.

Definition at line 448 of file solveSP.h.

◆ m_maxstep

doublereal m_maxstep
private

maximum value of the time step. units = seconds

Definition at line 451 of file solveSP.h.

◆ m_maxTotSpecies

size_t m_maxTotSpecies
private

Maximum number of species in any single kinetics operator -> also maxed wrt the total # of solution species.

Definition at line 455 of file solveSP.h.

◆ m_netProductionRatesSave

vector_fp m_netProductionRatesSave
private

Temporary vector with length equal to max m_maxTotSpecies.

Definition at line 458 of file solveSP.h.

Referenced by solveSP::fun_eval(), and solveSP::solveSurfProb().

◆ m_numEqn1

vector_fp m_numEqn1
private

Temporary vector with length equal to max m_maxTotSpecies.

Definition at line 461 of file solveSP.h.

Referenced by solveSP::calc_t(), solveSP::fun_eval(), and solveSP::solveSurfProb().

◆ m_numEqn2

vector_fp m_numEqn2
private

Temporary vector with length equal to max m_maxTotSpecies.

Definition at line 464 of file solveSP.h.

◆ m_CSolnSave

vector_fp m_CSolnSave
private

Temporary vector with length equal to max m_maxTotSpecies.

Definition at line 467 of file solveSP.h.

◆ m_CSolnSP

vector_fp m_CSolnSP
private

Solution vector. length MAX(1, m_neq)

Definition at line 470 of file solveSP.h.

Referenced by solveSP::solveSurfProb().

◆ m_CSolnSPInit

vector_fp m_CSolnSPInit
private

Saved initial solution vector. length MAX(1, m_neq)

Definition at line 473 of file solveSP.h.

Referenced by solveSP::solveSurfProb().

◆ m_CSolnSPOld

vector_fp m_CSolnSPOld
private

Saved solution vector at the old time step. length MAX(1, m_neq)

Definition at line 476 of file solveSP.h.

Referenced by solveSP::solveSurfProb().

◆ m_wtResid

vector_fp m_wtResid
private

Weights for the residual norm calculation. length MAX(1, m_neq)

Definition at line 479 of file solveSP.h.

Referenced by solveSP::solveSurfProb().

◆ m_wtSpecies

vector_fp m_wtSpecies
private

Weights for the species concentrations norm calculation.

length MAX(1, m_neq)

Definition at line 485 of file solveSP.h.

Referenced by solveSP::solveSurfProb().

◆ m_resid

vector_fp m_resid
private

Residual for the surface problem.

The residual vector of length "dim" that, that has the value of "sdot" for surface species. The residuals for the bulk species are a function of the sdots for all species in the bulk phase. The last residual of each phase enforces {Sum(fractions) = 1}. After linear solve (dgetrf_ & dgetrs_), resid holds the update vector.

length MAX(1, m_neq)

Definition at line 497 of file solveSP.h.

Referenced by solveSP::solveSurfProb().

◆ m_XMolKinSpecies

vector_fp m_XMolKinSpecies
private

Vector of mole fractions. length m_maxTotSpecies.

Definition at line 500 of file solveSP.h.

Referenced by solveSP::solveSurfProb().

◆ m_Jac

DenseMatrix m_Jac
private

Jacobian.

m_neq by m_neq computed Jacobian matrix for the local Newton's method.

Definition at line 504 of file solveSP.h.

Referenced by solveSP::solveSurfProb().


The documentation for this class was generated from the following files: