21 double*
const sm,
double*
const ss)
26 for (
size_t i=0; i<77; i++) {
30 plogf(
" --- Subroutine elem_rearrange() called to ");
31 plogf(
"check stoich. coefficient matrix\n");
32 plogf(
" --- and to rearrange the element ordering once");
41 double test = -1.0E10;
73 if (aw[ielem] != test) {
79 if (k == m_numElemConstraints) {
81 "Shouldn't be here. Algorithm misfired.");
104 for (
size_t j = 0; j < ncomponents; ++j) {
114 for (
size_t j = 0; j < jl; ++j) {
116 for (
size_t i = 0; i < ncomponents; ++i) {
117 ss[j] += sm[i + jr*ncomponents] * sm[i + j*ncomponents];
125 for (
size_t j = 0; j < jl; ++j) {
126 for (
size_t l = 0; l < ncomponents; ++l) {
127 sm[l + jr*ncomponents] -= ss[j] * sm[l + j*ncomponents];
137 for (
size_t ml = 0; ml < ncomponents; ++ml) {
138 sa[jr] += pow(sm[ml + jr*ncomponents], 2);
143 if (sa[jr] < 1.0e-6) {
162 std::swap(aw[jr], aw[k]);
170 }
while (jr < (ncomponents-1));
180 "vcs_switch_elem_pos",
size_t nElemConstraints() const
Returns the number of element constraints.
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...
std::string int2str(const int n, const std::string &fmt)
Convert an int to a string using a format converter.
std::vector< int > m_elType
Type of the element constraint.
const size_t npos
index returned by functions to indicate "no position"
std::vector< vcs_VolPhase * > m_VolPhaseList
Array of Phase Structures. Length = number of phases.
std::vector< size_t > m_elementMapIndex
Index vector that keeps track of the rearrangement of the elements.
#define AssertThrowMsg(expr, procedure, message)
Assertion must be true or an error is thrown.
std::vector< std::string > m_elementName
Vector of strings containing the element names.
Header file for the internal object that holds the vcs equilibrium problem (see Class VCS_SOLVE and E...
Header for the object representing each phase within vcs.
std::vector< double > m_elemAbundances
Element abundances vector.
size_t m_numElemConstraints
Number of element constraints in the problem.
size_t m_numSpeciesTot
Total number of species in the problems.
Base class for exceptions thrown by Cantera classes.
int m_debug_print_lvl
Debug printing lvl.
size_t m_numComponents
Number of components calculated for the problem.
Phase information and Phase calculations for vcs.
Array2D m_formulaMatrix
Formula matrix for the problem.
std::vector< int > m_elementActive
Specifies whether an element constraint is active.
#define plogendl()
define this Cantera function to replace cout << endl;
Contains declarations for string manipulation functions within Cantera.
#define plogf
define this Cantera function to replace printf
size_t elemGlobalIndex(const size_t e) const
Returns the global index of the local element index for the phase.
size_t m_numPhases
Number of Phases in the problem.
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.
std::vector< double > m_elemAbundancesGoal
Element abundances vector Goals.
Definitions for the classes that are thrown when Cantera experiences an error condition (also contain...
void setElemGlobalIndex(const size_t eLocal, const size_t eGlobal)
sets a local phase element to a global index value