Go to the documentation of this file.
33 class VCS_SPECIES_THERMO;
69 int vcs(
int ipr,
int ip1,
int maxit);
95 int vcs_solve_TP(
int print_lvl,
int printDetails,
int maxit);
159 int vcs_basopt(
const bool doJustComponents,
double aw[],
double sa[],
double sm[],
160 double ss[],
double test,
bool*
const usedZeroedSpecies);
173 size_t vcs_basisOptMax(
const double*
const molNum,
const size_t j,
const size_t n);
304 void vcs_dfe(
const int stateCalc,
const int ll,
const size_t lbot,
const size_t ltop);
386 void check_tmoles()
const;
417 void vcs_deltag(
const int L,
const bool doDeleted,
const int vcsState,
418 const bool alterZeroedPhases =
true);
420 void vcs_printDeltaG(
const int stateCalc);
434 void vcs_switch_pos(
const bool ifunc,
const size_t k1,
const size_t k2);
468 int vcs_TP(
int ipr,
int ip1,
int maxit,
double T,
double pres);
480 int vcs_evalSS_TP(
int ipr,
int ip1,
double Temp,
double pres);
504 double vcs_VolTotal(
const double tkelvin,
const double pres,
505 const double w[],
double volPM[]);
574 double*
const sm,
double*
const ss);
660 void vcs_elabPhase(
size_t iphase,
double*
const elemAbundPhase);
737 const double*
const fe);
804 int delta_species(
const size_t kspec,
double*
const delta_ptr);
871 char* ANOTE=0)
const;
903 void checkDelta1(
double*
const ds,
double*
const delTPhMoles,
size_t kspec);
917 void vcs_inest(
double*
const aw,
double*
const sa,
double*
const sm,
918 double*
const ss,
double test);
947 void vcs_setFlagsVolPhases(
const bool upToDate,
const int stateCalc);
949 void vcs_setFlagsVolPhase(
const size_t iph,
const bool upToDate,
const int stateCalc);
962 int solve_tp_component_calc(
bool& allMinorZeroedSpecies);
963 void solve_tp_inner(
size_t& iti,
size_t& it1,
bool& uptodate_minors,
964 bool& allMinorZeroedSpecies,
int& forceComponentCalc,
965 int& stage,
bool printDetails,
char* ANOTE);
966 void solve_tp_equilib_check(
bool& allMinorZeroedSpecies,
bool& uptodate_minors,
967 bool& giveUpOnElemAbund,
int& solveFail,
968 size_t& iti,
size_t& it1,
int maxit,
969 int& stage,
bool& lec);
970 void solve_tp_elem_abund_check(
size_t& iti,
int& stage,
bool& lec,
971 bool& giveUpOnElemAbund,
972 int& finalElemAbundAttempts,
973 int& rangeErrorFound);
1039 size_t addElement(
const char* elNameNew,
int elType,
int elactive);
1041 void reportCSV(
const std::string& reportFile);
1453 std::vector<std::vector<size_t> > phasePopProblemLists_;
1511 friend class vcs_phaseStabilitySolve;
void addPhaseElements(vcs_VolPhase *volPhase)
Add elements to the local element list.
void vcs_elab()
Computes the current elemental abundances vector.
size_t m_nsp
Total number of species in the problems.
Array2D m_phaseParticipation
This is 1 if the phase, iphase, participates in the formation reaction irxn, and zero otherwise.
vector_fp TPhInertMoles
Total kmoles of inert to add to each phase.
vector_fp m_deltaGRxn_Deficient
Last deltag[irxn] from the previous step with additions for possible births of zeroed phases.
std::vector< size_t > m_elementMapIndex
Index vector that keeps track of the rearrangement of the elements.
size_t m_numSpeciesRdc
Current number of species in the problems.
void vcs_TCounters_report(int timing_print_lvl=1)
Create a report on the plog file containing timing and its information.
A class for 2D arrays stored in column-major (Fortran-compatible) form.
vector_fp m_TmpPhase
Temporary vector of length NPhase.
std::vector< std::unique_ptr< vcs_VolPhase > > m_VolPhaseList
Array of Phase Structures. Length = number of phases.
size_t m_numRxnMinorZeroed
Number of active species which are currently either treated as minor species.
vector_fp m_TmpPhase2
Temporary vector of length NPhase.
vector_int m_elType
Type of the element constraint.
vector_fp m_wtSpecies
Molecular weight of each species.
vector_int m_phaseActConvention
specifies the activity convention of the phase.
bool vcs_elabcheck(int ibound)
VCS_SOLVE(MultiPhase *mphase, int printLvl=0)
Initialize the sizes within the VCS_SOLVE object.
std::vector< std::string > m_speciesName
Species string name for the kth species.
void vcs_deltag(const int L, const bool doDeleted, const int vcsState, const bool alterZeroedPhases=true)
This subroutine calculates reaction free energy changes for all noncomponent formation reactions.
void vcs_elabPhase(size_t iphase, double *const elemAbundPhase)
size_t m_numPhases
Number of Phases in the problem.
size_t m_numComponents
Number of components calculated for the problem.
vector_fp m_actCoeffSpecies_new
Molar-based Activity Coefficients for Species.
bool vcs_evaluate_speciesType()
This routine evaluates the species type for all species.
size_t vcs_add_all_deleted()
Provide an estimate for the deleted species in phases that are not zeroed out.
int m_doEstimateEquil
Setting for whether to do an initial estimate.
A class for multiphase mixtures.
void vcs_updateMolNumVolPhases(const int stateCalc)
Update all underlying vcs_VolPhase objects.
vector_fp m_molNumSpecies_old
Total moles of the species.
vector_fp m_deltaMolNumSpecies
Reaction Adjustments for each species during the current step.
int delta_species(const size_t kspec, double *const delta_ptr)
Change the concentration of a species by delta moles.
Array2D m_stoichCoeffRxnMatrix
Stoichiometric coefficient matrix for the reaction mechanism expressed in Reduced Canonical Form.
std::vector< double > vector_fp
Turn on the use of stl vectors for the basic array type within cantera Vector of doubles.
size_t vcs_basisOptMax(const double *const molNum, const size_t j, const size_t n)
Choose a species to test for the next component.
vector_fp m_SSfeSpecies
Standard state chemical potentials for species K at the current temperature and pressure.
int m_timing_print_lvl
printing level of timing information
void vcs_dfe(const int stateCalc, const int ll, const size_t lbot, const size_t ltop)
Calculate the dimensionless chemical potentials of all species or of certain groups of species,...
void vcs_switch_pos(const bool ifunc, const size_t k1, const size_t k2)
Swaps the indices for all of the global data for two species, k1 and k2.
vector_int m_actConventionSpecies
specifies the activity convention of the phase containing the species
vector_fp m_elemAbundancesGoal
Element abundances vector Goals.
vector_fp m_actCoeffSpecies_old
Molar-based Activity Coefficients for Species based on old mole numbers.
int vcs_inest_TP()
Create an initial estimate of the solution to the thermodynamic equilibrium problem.
void vcs_CalcLnActCoeffJac(const double *const moleSpeciesVCS)
Recalculate all of the activity coefficients in all of the phases based on input mole numbers.
bool vcs_popPhasePossible(const size_t iphasePop) const
Utility function that evaluates whether a phase can be popped into existence.
int vcs_elcorr(double aa[], double x[])
double m_temperature
Temperature (Kelvin)
std::vector< size_t > m_speciesLocalPhaseIndex
Index that keeps track of the index of the species within the local phase.
vector_fp m_deltaGRxn_old
Last deltag[irxn] from the previous step.
vector_fp m_feSpecies_new
Dimensionless new free energy for all the species in the mechanism at the new tentative T,...
Class to keep track of time and iterations.
int m_debug_print_lvl
Debug printing lvl.
size_t vcs_RxnStepSizes(int &forceComponentCalc, size_t &kSpecial)
Calculates formation reaction step sizes.
int vcs_solve_TP(int print_lvl, int printDetails, int maxit)
Main routine that solves for equilibrium at constant T and P using a variant of the VCS method.
void vcs_prob_specifyFully()
Fully specify the problem to be solved.
vector_fp m_phasePhi
electric potential of the iph phase
size_t vcs_popPhaseID(std::vector< size_t > &phasePopPhaseIDs)
Decision as to whether a phase pops back into existence.
vector_fp m_deltaGRxn_tmp
Temporary vector of Rxn DeltaG's.
std::vector< size_t > m_phaseID
Mapping from the species number to the phase number.
int vcs_species_type(const size_t kspec) const
Evaluate the species category for the indicated species.
void vcs_reinsert_deleted(size_t kspec)
vector_int m_speciesUnknownType
Specifies the species unknown type.
double m_totalMolNum
Total number of kmoles in all phases.
int vcs(int ipr, int ip1, int maxit)
Solve an equilibrium problem.
vector_fp m_tPhaseMoles_old
Total kmols of species in each phase.
VCS_COUNTERS * m_VCount
Timing and iteration counters for the vcs object.
vector_int m_speciesStatus
Major -Minor status vector for the species in the problem.
int vcs_zero_species(const size_t kspec)
Zero out the concentration of a species.
vector_int m_elementActive
Specifies whether an element constraint is active.
vector_fp m_spSize
total size of the species
void vcs_SSPhase()
Calculate the status of single species phases.
void vcs_prob_update()
Transfer the results of the equilibrium calculation back from VCS_SOLVE.
int vcs_evalSS_TP(int ipr, int ip1, double Temp, double pres)
double vcs_Total_Gibbs(double *w, double *fe, double *tPhMoles)
Calculate the total dimensionless Gibbs free energy.
int vcs_TP(int ipr, int ip1, int maxit, double T, double pres)
Solve an equilibrium problem at a particular fixed temperature and pressure.
vector_fp m_feSpecies_old
Free energy vector from the start of the current iteration.
double vcs_GibbsPhase(size_t iphase, const double *const w, const double *const fe)
Calculate the total dimensionless Gibbs free energy of a single phase.
std::vector< size_t > m_speciesMapIndex
Index vector that keeps track of the species vector rearrangement.
double m_Faraday_dim
dimensionless value of Faraday's constant, F / RT (1/volt)
double vcs_VolTotal(const double tkelvin, const double pres, const double w[], double volPM[])
Calculation of the total volume and the partial molar volumes.
vector_fp m_PMVolumeSpecies
Partial molar volumes of the species.
size_t m_nelem
Number of element constraints in the problem.
std::vector< char > m_SSPhase
Boolean indicating whether a species belongs to a single-species phase.
vector_fp m_scSize
Absolute size of the stoichiometric coefficients.
double m_tolmaj2
Below this, major species aren't refined any more.
void vcs_updateVP(const int stateCalc)
This routine uploads the state of the system into all of the vcs_VolumePhase objects in the current p...
void vcs_switch_elem_pos(size_t ipos, size_t jpos)
Swaps the indices for all of the global data for two elements, ipos and jpos.
Array2D m_np_dLnActCoeffdMolNum
Change in the log of the activity coefficient with respect to the mole number multiplied by the phase...
bool vcs_delete_multiphase(const size_t iph)
This routine handles the bookkeeping involved with the deletion of multiphase phases from the problem...
void vcs_delete_memory()
Delete memory that isn't just resizable STL containers.
int vcs_delete_species(const size_t kspec)
Change a single species from active to inactive status.
void prob_report(int print_lvl)
Print out the problem specification in all generality as it currently exists in the VCS_SOLVE object.
int m_useActCoeffJac
Choice of Hessians.
double m_tolmin2
Below this, minor species aren't refined any more.
Array2D m_formulaMatrix
Formula matrix for the problem.
int vcs_recheck_deleted()
Recheck deleted species in multispecies phases.
double l2normdg(double dg[]) const
Calculate the norm of a deltaGibbs free energy vector.
double vcs_minor_alt_calc(size_t kspec, size_t irxn, bool *do_delete, char *ANOTE=0) const
Minor species alternative calculation.
std::vector< std::unique_ptr< VCS_SPECIES_THERMO > > m_speciesThermoList
Vector of pointers to thermo structures which identify the model and parameters for evaluating the th...
Phase information and Phase calculations for vcs.
int vcs_elem_rearrange(double *const aw, double *const sa, double *const sm, double *const ss)
Rearrange the constraint equations represented by the Formula Matrix so that the operational ones are...
vector_fp m_chargeSpecies
Charge of each species. Length = number of species.
int vcs_basopt(const bool doJustComponents, double aw[], double sa[], double sm[], double ss[], double test, bool *const usedZeroedSpecies)
Choose the optimum species basis for the calculations.
vector_fp m_tPhaseMoles_new
total kmols of species in each phase in the tentative soln vector
vector_fp m_deltaPhaseMoles
Change in the total moles in each phase.
size_t addElement(const char *elNameNew, int elType, int elactive)
This routine resizes the number of elements in the VCS_SOLVE object by adding a new element to the en...
vector_fp m_elemAbundances
Element abundances vector.
double m_tolmin
Tolerance requirements for minor species.
double vcs_phaseStabilityTest(const size_t iph)
Main program to test whether a deleted phase should be brought back into existence.
int vcs_popPhaseRxnStepSizes(const size_t iphasePop)
Calculates the deltas of the reactions due to phases popping into existence.
std::vector< int > vector_int
Vector of ints.
size_t m_numRxnRdc
Current number of non-component species in the problem.
double vcs_Hessian_actCoeff_diag(size_t irxn)
Calculates the diagonal contribution to the Hessian due to the dependence of the activity coefficient...
bool vcs_globStepDamp()
This routine optimizes the minimization of the total Gibbs free energy by making sure the slope of th...
int vcs_prep(int printLvl)
This routine is mostly concerned with changing the private data to be consistent with what's needed f...
size_t addOnePhaseSpecies(vcs_VolPhase *volPhase, size_t k, size_t kT)
This routines adds entries for the formula matrix for one species.
int m_printLvl
Print level for print routines.
double m_tolmaj
Tolerance requirement for major species.
This is the main structure used to hold the internal data used in vcs_solve_TP(), and to solve TP sys...
std::vector< size_t > m_indexRxnToSpecies
Mapping between the species index for noncomponent species and the full species index.
vector_fp m_deltaGRxn_new
Delta G(irxn) for the noncomponent species in the mechanism.
Namespace for the Cantera kernel.
std::vector< std::string > m_elementName
Vector of strings containing the element names.
int vcs_setMolesLinProg()
Estimate the initial mole numbers by constrained linear programming.
double m_totalVol
Total volume of all phases. Units are m^3.
vector_fp m_lnMnaughtSpecies
specifies the ln(Mnaught) used to calculate the chemical potentials
double vcs_Hessian_diag_adj(size_t irxn, double hessianDiag_Ideal)
Calculates the diagonal contribution to the Hessian due to the dependence of the activity coefficient...
size_t m_numRxnTot
Total number of non-component species in the problem.
void vcs_fePrep_TP()
Initialize the chemical potential of single species phases.
vector_fp m_molNumSpecies_new
Tentative value of the mole number vector.
static void disableTiming()
Disable printing of timing information.
int vcs_report(int iconv)
Print out a report on the state of the equilibrium problem to standard output.
double vcs_tmoles()
Calculates the total number of moles of species in all phases.
void vcs_counters_init(int ifunc)
Initialize the internal counters.
void vcs_inest(double *const aw, double *const sa, double *const sm, double *const ss, double test)
Estimate equilibrium compositions.
Array2D m_deltaMolNumPhase
Change in the number of moles of phase, iphase, due to the noncomponent formation reaction,...
double m_pressurePA
Pressure.