19 double*
const sm,
double*
const ss)
25 plogf(
" --- Subroutine elem_rearrange() called to ");
26 plogf(
"check stoich. coefficient matrix\n");
27 plogf(
" --- and to rearrange the element ordering once\n");
33 double test = -1.0E10;
36 for (
size_t i = 0; i <
m_nelem; ++i) {
48 while (jr < ncomponents) {
57 for (
size_t ielem = jr; ielem <
m_nelem; ielem++) {
65 "Shouldn't be here. Algorithm misfired.");
82 for (
size_t j = 0; j < ncomponents; ++j) {
89 for (
size_t j = 0; j < jl; ++j) {
91 for (
size_t i = 0; i < ncomponents; ++i) {
92 ss[j] += sm[i + jr*ncomponents] * sm[i + j*ncomponents];
99 for (
size_t j = 0; j < jl; ++j) {
100 for (
size_t i = 0; i < ncomponents; ++i) {
101 sm[i + jr*ncomponents] -= ss[j] * sm[i + j*ncomponents];
109 for (
size_t ml = 0; ml < ncomponents; ++ml) {
110 sa[jr] += pow(sm[ml + jr*ncomponents], 2);
113 if (sa[jr] > 1.0e-6) {
120 plogf(
" --- %-2.2s(%9.2g) replaces %-2.2s(%9.2g) as element %3d\n",
125 std::swap(aw[jr], aw[k]);
140 "vcs_switch_elem_pos",
141 "inappropriate args: {} {}", ipos, jpos);
161 for (
size_t j = 0; j <
m_nsp; ++j) {
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_elemAbundances
Element abundances vector.
size_t nElemConstraints() const
Returns the number of element constraints.
std::vector< size_t > m_elementMapIndex
Index vector that keeps track of the rearrangement of the elements.
std::vector< std::unique_ptr< vcs_VolPhase > > m_VolPhaseList
Array of Phase Structures. Length = number of phases.
size_t elemGlobalIndex(const size_t e) const
Returns the global index of the local element index for the phase.
vector_int m_elementActive
Specifies whether an element constraint is active.
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.
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.
vector_fp m_elemAbundancesGoal
Element abundances vector Goals.
Phase information and Phase calculations for vcs.
#define AssertThrowMsg(expr, procedure,...)
Assertion must be true or an error is thrown.
Array2D m_formulaMatrix
Formula matrix for the problem.
size_t m_nsp
Total number of species in the problems.
Contains declarations for string manipulation functions within Cantera.
#define plogf
define this Cantera function to replace printf
vector_int m_elType
Type of the element constraint.
Namespace for the Cantera kernel.
size_t m_nelem
Number of element constraints in the problem.
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.
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