Cantera  2.1.2
vcs_report.cpp
Go to the documentation of this file.
1 //! @file vcs_report.cpp
2 /*
3  * Copyright (2005) Sandia Corporation. Under the terms of
4  * Contract DE-AC04-94AL85000 with Sandia Corporation, the
5  * U.S. Government retains certain rights in this software.
6  */
7 
11 
12 namespace VCSnonideal
13 {
14 static void print_space(int num)
15 {
16  for (int j = 0; j < num; j++) {
17  plogf(" ");
18  }
19 }
20 
21 static void print_line(const std::string& schar, size_t num)
22 {
23  for (size_t j = 0; j < num; j++) {
24  plogf("%s", schar.c_str());
25  }
26  plogf("\n");
27 }
28 
29 int VCS_SOLVE::vcs_report(int iconv)
30 {
31  bool printActualMoles = true, inertYes = false;
32  size_t i, j, l, k, kspec;
33  size_t nspecies = m_numSpeciesTot;
34  double g;
35 
36  char originalUnitsState = m_unitsState;
37 
38 
39  std::vector<size_t> sortindex(nspecies,0);
40  std::vector<double> xy(nspecies,0.0);
41 
42  /* ************************************************************** */
43  /* **** SORT DEPENDENT SPECIES IN DECREASING ORDER OF MOLES ***** */
44  /* ************************************************************** */
45 
46  for (i = 0; i < nspecies; ++i) {
47  sortindex[i] = i;
48  xy[i] = m_molNumSpecies_old[i];
49  }
50  /*
51  * Sort the XY vector, the mole fraction vector,
52  * and the sort index vector, sortindex, according to
53  * the magnitude of the mole fraction vector.
54  */
55  for (l = m_numComponents; l < m_numSpeciesRdc; ++l) {
56  k = vcs_optMax(VCS_DATA_PTR(xy), 0, l, m_numSpeciesRdc);
57  if (k != l) {
58  std::swap(xy[k], xy[l]);
59  std::swap(sortindex[k], sortindex[l]);
60  }
61  }
62 
63  /*
64  * Decide whether we have to nondimensionalize the equations.
65  * -> For the printouts from this routine, we will use nondimensional
66  * representations. This may be expanded in the future.
67  */
69  vcs_nondim_TP();
70  }
71  double molScale = 1.0;
72  if (printActualMoles) {
73  molScale = m_totalMoleScale;
74  }
75 
76  vcs_setFlagsVolPhases(false, VCS_STATECALC_OLD);
78  /* ******************************************************** */
79  /* *** PRINT OUT RESULTS ********************************** */
80  /* ******************************************************** */
81 
82  plogf("\n\n\n\n");
83  print_line("-", 80);
84  print_line("-", 80);
85  plogf("\t\t VCS_TP REPORT\n");
86  print_line("-", 80);
87  print_line("-", 80);
88  if (iconv < 0) {
89  plogf(" ERROR: CONVERGENCE CRITERION NOT SATISFIED.\n");
90  } else if (iconv == 1) {
91  plogf(" RANGE SPACE ERROR: Equilibrium Found but not all Element Abundances are Satisfied\n");
92  }
93  /*
94  * Calculate some quantities that may need updating
95  */
96  vcs_tmoles();
99 
100  plogf("\t\tTemperature = %15.2g Kelvin\n", m_temperature);
101  plogf("\t\tPressure = %15.5g Pa \n", m_pressurePA);
102  plogf("\t\ttotal Volume = %15.5g m**3\n", m_totalVol * molScale);
103  if (!printActualMoles) {
104  plogf("\t\tMole Scale = %15.5g kmol (all mole numbers and volumes are scaled by this value)\n",
105  molScale);
106  }
107 
108  /*
109  * -------- TABLE OF SPECIES IN DECREASING MOLE NUMBERS --------------
110  */
111  plogf("\n\n");
112  print_line("-", 80);
113  plogf(" Species Equilibrium kmoles ");
114  plogf("Mole Fraction ChemPot/RT SpecUnkType\n");
115  print_line("-", 80);
116  for (i = 0; i < m_numComponents; ++i) {
117  plogf(" %-12.12s", m_speciesName[i].c_str());
118  print_space(13);
119  plogf("%14.7E %14.7E %12.4E", m_molNumSpecies_old[i] * molScale,
120  m_molNumSpecies_new[i] * molScale, m_feSpecies_old[i]);
121  plogf(" %3d", m_speciesUnknownType[i]);
122  plogf("\n");
123  }
124  for (i = m_numComponents; i < m_numSpeciesRdc; ++i) {
125  l = sortindex[i];
126  plogf(" %-12.12s", m_speciesName[l].c_str());
127  print_space(13);
128 
130  plogf("%14.7E %14.7E %12.4E", m_molNumSpecies_old[l] * molScale,
131  m_molNumSpecies_new[l] * molScale, m_feSpecies_old[l]);
132  plogf(" KMolNum ");
134  plogf(" NA %14.7E %12.4E", 1.0, m_feSpecies_old[l]);
135  plogf(" Voltage = %14.7E", m_molNumSpecies_old[l] * molScale);
136  } else {
137  plogf("we have a problem\n");
138  exit(EXIT_FAILURE);
139  }
140  plogf("\n");
141  }
142  for (i = 0; i < m_numPhases; i++) {
143  if (TPhInertMoles[i] > 0.0) {
144  inertYes = true;
145  if (i == 0) {
146  plogf(" Inert Gas Species ");
147  } else {
148  plogf(" Inert Species in phase %16s ",
149  (m_VolPhaseList[i])->PhaseName.c_str());
150  }
151  plogf("%14.7E %14.7E %12.4E\n", TPhInertMoles[i] * molScale,
152  TPhInertMoles[i] / m_tPhaseMoles_old[i], 0.0);
153  }
154  }
155  if (m_numSpeciesRdc != nspecies) {
156  plogf("\n SPECIES WITH LESS THAN 1.0E-32 KMOLES:\n\n");
157  for (kspec = m_numSpeciesRdc; kspec < nspecies; ++kspec) {
158  plogf(" %-12.12s", m_speciesName[kspec].c_str());
159  // Note m_deltaGRxn_new[] stores in kspec slot not irxn slot, after solve
160  plogf(" %14.7E %14.7E %12.4E",
161  m_molNumSpecies_old[kspec]*molScale,
162  m_molNumSpecies_new[kspec]*molScale, m_deltaGRxn_new[kspec]);
164  plogf(" KMol_Num");
166  plogf(" Voltage");
167  } else {
168  plogf(" Unknown");
169  }
170 
171  plogf("\n");
172  }
173  }
174  print_line("-", 80);
175  plogf("\n");
176 
177  /*
178  * ---------- TABLE OF SPECIES FORMATION REACTIONS ------------------
179  */
180  plogf("\n");
181  print_line("-", m_numComponents*10 + 45);
182  plogf(" |ComponentID|");
183  for (j = 0; j < m_numComponents; j++) {
184  plogf(" %3d", j);
185  }
186  plogf(" | |\n");
187  plogf(" | Components|");
188  for (j = 0; j < m_numComponents; j++) {
189  plogf(" %10.10s", m_speciesName[j].c_str());
190  }
191  plogf(" | |\n");
192  plogf(" NonComponent | Moles |");
193  for (j = 0; j < m_numComponents; j++) {
194  plogf(" %10.3g", m_molNumSpecies_old[j] * molScale);
195  }
196  plogf(" | DG/RT Rxn |\n");
197  print_line("-", m_numComponents*10 + 45);
198  for (size_t irxn = 0; irxn < m_numRxnTot; irxn++) {
199  size_t kspec = m_indexRxnToSpecies[irxn];
200  plogf(" %3d ", kspec);
201  plogf("%-10.10s", m_speciesName[kspec].c_str());
202  plogf("|%10.3g |", m_molNumSpecies_old[kspec]*molScale);
203  for (j = 0; j < m_numComponents; j++) {
204  plogf(" %6.2f", m_stoichCoeffRxnMatrix[irxn][j]);
205  }
206  plogf(" |%10.3g |", m_deltaGRxn_new[irxn]);
207  plogf("\n");
208  }
209  print_line("-", m_numComponents*10 + 45);
210  plogf("\n");
211 
212  /*
213  * ------------------ TABLE OF PHASE INFORMATION ---------------------
214  */
215  std::vector<double> gaPhase(m_numElemConstraints, 0.0);
216  std::vector<double> gaTPhase(m_numElemConstraints, 0.0);
217  double totalMoles = 0.0;
218  double gibbsPhase = 0.0;
219  double gibbsTotal = 0.0;
220  plogf("\n\n");
221  plogf("\n");
222  print_line("-", m_numElemConstraints*10 + 58);
223  plogf(" | ElementID |");
224  for (j = 0; j < m_numElemConstraints; j++) {
225  plogf(" %3d", j);
226  }
227  plogf(" | |\n");
228  plogf(" | Element |");
229  for (j = 0; j < m_numElemConstraints; j++) {
230  plogf(" %10.10s", (m_elementName[j]).c_str());
231  }
232  plogf(" | |\n");
233  plogf(" PhaseName |KMolTarget |");
234  for (j = 0; j < m_numElemConstraints; j++) {
235  plogf(" %10.3g", m_elemAbundancesGoal[j]);
236  }
237  plogf(" | Gibbs Total |\n");
238  print_line("-", m_numElemConstraints*10 + 58);
239  for (size_t iphase = 0; iphase < m_numPhases; iphase++) {
240  plogf(" %3d ", iphase);
241  vcs_VolPhase* VPhase = m_VolPhaseList[iphase];
242  plogf("%-12.12s |",VPhase->PhaseName.c_str());
243  plogf("%10.3e |", m_tPhaseMoles_old[iphase]*molScale);
244  totalMoles += m_tPhaseMoles_old[iphase];
245  if (m_tPhaseMoles_old[iphase] != VPhase->totalMoles()) {
246  if (! vcs_doubleEqual(m_tPhaseMoles_old[iphase], VPhase->totalMoles())) {
247  plogf("We have a problem\n");
248  exit(EXIT_FAILURE);
249  }
250  }
251  vcs_elabPhase(iphase, VCS_DATA_PTR(gaPhase));
252  for (j = 0; j < m_numElemConstraints; j++) {
253  plogf(" %10.3g", gaPhase[j]);
254  gaTPhase[j] += gaPhase[j];
255  }
256  gibbsPhase = vcs_GibbsPhase(iphase, VCS_DATA_PTR(m_molNumSpecies_old),
258  gibbsTotal += gibbsPhase;
259  plogf(" | %18.11E |\n", gibbsPhase);
260  }
261  print_line("-", m_numElemConstraints*10 + 58);
262  plogf(" TOTAL |%10.3e |", totalMoles);
263  for (j = 0; j < m_numElemConstraints; j++) {
264  plogf(" %10.3g", gaTPhase[j]);
265  }
266  plogf(" | %18.11E |\n", gibbsTotal);
267 
268  print_line("-", m_numElemConstraints*10 + 58);
269  plogf("\n");
270 
271  /*
272  * ----------- GLOBAL SATISFACTION INFORMATION -----------------------
273  */
274 
275  /*
276  * Calculate the total dimensionless Gibbs Free Energy
277  * -> Inert species are handled as if they had a standard free
278  * energy of zero
279  */
280 
283  plogf("\n\tTotal Dimensionless Gibbs Free Energy = G/RT = %15.7E\n", g);
284  if (inertYes) {
285  plogf("\t\t(Inert species have standard free energy of zero)\n");
286  }
287 
288  plogf("\nElemental Abundances (kmol): ");
289  plogf(" Actual Target Type ElActive\n");
290  for (i = 0; i < m_numElemConstraints; ++i) {
291  print_space(26);
292  plogf("%-2.2s", (m_elementName[i]).c_str());
293  plogf("%20.12E %20.12E", m_elemAbundances[i]*molScale, m_elemAbundancesGoal[i]*molScale);
294  plogf(" %3d %3d\n", m_elType[i], m_elementActive[i]);
295  }
296  plogf("\n");
297 
298  /*
299  * ------------------ TABLE OF SPECIES CHEM POTS ---------------------
300  */
301  plogf("\n");
302  print_line("-", 93);
303  plogf("Chemical Potentials of the Species: (dimensionless)\n");
304 
306  plogf("\t\t(RT = %g ", rt);
308  plogf(")\n");
309  plogf(" Name TKMoles StandStateChemPot "
310  " ln(AC) ln(X_i) | F z_i phi | ChemPot | (-lnMnaught)");
311  plogf("| (MolNum ChemPot)|");
312  plogf("\n");
313  print_line("-", 147);
314  for (i = 0; i < nspecies; ++i) {
315  l = sortindex[i];
316  size_t pid = m_phaseID[l];
317  plogf(" %-12.12s", m_speciesName[l].c_str());
318  plogf(" %14.7E ", m_molNumSpecies_old[l]*molScale);
319  plogf("%14.7E ", m_SSfeSpecies[l]);
320  plogf("%14.7E ", log(m_actCoeffSpecies_old[l]));
321  double tpmoles = m_tPhaseMoles_old[pid];
322  double phi = m_phasePhi[pid];
323  double eContrib = phi * m_chargeSpecies[l] * m_Faraday_dim;
324  double lx = 0.0;
326  lx = 0.0;
327  } else {
328  if (tpmoles > 0.0 && m_molNumSpecies_old[l] > 0.0) {
329  double tmp = std::max(VCS_DELETE_MINORSPECIES_CUTOFF, m_molNumSpecies_old[l]);
330  lx = log(tmp) - log(tpmoles);
331  } else {
332  lx = m_feSpecies_old[l] - m_SSfeSpecies[l]
334  }
335  }
336  plogf("%14.7E |", lx);
337  plogf("%14.7E | ", eContrib);
338  double tmp = m_SSfeSpecies[l] + log(m_actCoeffSpecies_old[l])
339  + lx - m_lnMnaughtSpecies[l] + eContrib;
340  if (fabs(m_feSpecies_old[l] - tmp) > 1.0E-7) {
341  plogf("\n\t\twe have a problem - doesn't add up\n");
342  exit(EXIT_FAILURE);
343  }
344  plogf(" %12.4E |", m_feSpecies_old[l]);
345  if (m_lnMnaughtSpecies[l] != 0.0) {
346  plogf("(%11.5E)", - m_lnMnaughtSpecies[l]);
347  } else {
348  plogf(" ");
349  }
350 
351  plogf("| %20.9E |", m_feSpecies_old[l] * m_molNumSpecies_old[l] * molScale);
352  plogf("\n");
353  }
354  for (i = 0; i < 125; i++) {
355  plogf(" ");
356  }
357  plogf(" %20.9E\n", g);
358  print_line("-", 147);
359 
360  /*
361  * ------------- TABLE OF SOLUTION COUNTERS --------------------------
362  */
363  plogf("\n");
364  plogf("\nCounters: Iterations Time (seconds)\n");
365  if (m_timing_print_lvl > 0) {
366  plogf(" vcs_basopt: %5d %11.5E\n",
368  plogf(" vcs_TP: %5d %11.5E\n",
370  } else {
371  plogf(" vcs_basopt: %5d %11s\n",
372  m_VCount->Basis_Opts," NA ");
373  plogf(" vcs_TP: %5d %11s\n",
374  m_VCount->Its," NA ");
375  }
376  print_line("-", 80);
377  print_line("-", 80);
378 
379  /*
380  * Set the Units state of the system back to where it was when we
381  * entered the program.
382  */
383  if (originalUnitsState != m_unitsState) {
384  if (originalUnitsState == VCS_DIMENSIONAL_G) {
385  vcs_redim_TP();
386  } else {
387  vcs_nondim_TP();
388  }
389  }
390  /*
391  * Return a successful completion flag
392  */
393  return VCS_SUCCESS;
394 }
395 
396 void VCS_SOLVE::vcs_TCounters_report(int timing_print_lvl)
397 {
398  plogf("\nTCounters: Num_Calls Total_Its Total_Time (seconds)\n");
399  if (timing_print_lvl > 0) {
400  plogf(" vcs_basopt: %5d %5d %11.5E\n",
403  plogf(" vcs_TP: %5d %5d %11.5E\n",
406  plogf(" vcs_inest: %5d %11.5E\n",
408  plogf(" vcs_TotalTime: %11.5E\n",
410  } else {
411  plogf(" vcs_basopt: %5d %5d %11s\n",
413  plogf(" vcs_TP: %5d %5d %11s\n",
415  plogf(" vcs_inest: %5d %11s\n",
416  m_VCount->T_Calls_Inest, " NA ");
417  plogf(" vcs_TotalTime: %11s\n",
418  " NA ");
419  }
420 }
421 
422 }
std::vector< double > m_SSfeSpecies
Standard state chemical potentials for species K at the current temperature and pressure.
Definition: vcs_solve.h:1581
char m_unitsState
This specifies the current state of units for the Gibbs free energy properties in the program...
Definition: vcs_solve.h:1883
size_t m_numRxnTot
Total number of non-component species in the problem.
Definition: vcs_solve.h:1509
size_t m_numComponents
Number of components calculated for the problem.
Definition: vcs_solve.h:1506
std::vector< double > m_phasePhi
electric potential of the iph phase
Definition: vcs_solve.h:1643
std::vector< double > m_actCoeffSpecies_old
Molar-based Activity Coefficients for Species based on old mole numbers.
Definition: vcs_solve.h:1928
int T_Calls_vcs_TP
Current number of calls to vcs_TP.
Definition: vcs_internal.h:77
int vcs_report(int iconv)
Print out a report on the state of the equilibrium problem to standard output.
Definition: vcs_report.cpp:29
std::string PhaseName
String name for the phase.
Definition: vcs_VolPhase.h:707
#define VCS_DATA_PTR(vvv)
Points to the data in a std::vector<> object.
Definition: vcs_internal.h:24
std::vector< size_t > m_indexRxnToSpecies
Mapping between the species index for noncomponent species and the full species index.
Definition: vcs_solve.h:1825
double m_temperature
Temperature (Kelvin)
Definition: vcs_solve.h:1738
std::vector< double > m_lnMnaughtSpecies
specifies the ln(Mnaught) used to calculate the chemical potentials
Definition: vcs_solve.h:1917
int m_timing_print_lvl
printing level of timing information
Definition: vcs_solve.h:2006
int Basis_Opts
number of optimizations of the components basis set done
Definition: vcs_internal.h:70
std::vector< double > m_feSpecies_old
Free energy vector from the start of the current iteration.
Definition: vcs_solve.h:1588
int m_VCS_UnitsFormat
Units for the chemical potential data.
Definition: vcs_solve.h:2018
double Time_vcs_TP
Current time spent in vcs_TP.
Definition: vcs_internal.h:83
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...
std::vector< double > m_deltaGRxn_new
Delta G(irxn) for the noncomponent species in the mechanism.
Definition: vcs_solve.h:1658
int T_Basis_Opts
Total number of optimizations of the components basis set done.
Definition: vcs_internal.h:67
std::vector< double > m_elemAbundancesGoal
Element abundances vector Goals.
Definition: vcs_solve.h:1699
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.
#define VCS_SPECIES_TYPE_MOLNUM
Unknown refers to mole number of a single species.
Definition: vcs_defs.h:359
std::vector< double > m_elemAbundances
Element abundances vector.
Definition: vcs_solve.h:1690
Phase information and Phase calculations for vcs.
Definition: vcs_VolPhase.h:97
double T_Time_vcs
Time spent in the vcs suite of programs.
Definition: vcs_internal.h:95
#define VCS_DELETE_MINORSPECIES_CUTOFF
Cutoff relative mole number value, below which species are deleted from the equilibrium problem...
Definition: vcs_defs.h:73
std::vector< double > m_molNumSpecies_new
Tentative value of the mole number vector.
Definition: vcs_solve.h:1648
void vcs_printChemPotUnits(int unitsFormat) const
Print the string representing the Chemical potential units.
Definition: vcs_nondim.cpp:214
Internal declarations for the VCSnonideal package.
#define VCS_SUCCESS
Definition: vcs_defs.h:37
std::vector< double > m_molNumSpecies_old
Total moles of the species.
Definition: vcs_solve.h:1616
size_t m_numSpeciesTot
Total number of species in the problems.
Definition: vcs_solve.h:1497
int T_Its
Total number of iterations in the main loop of vcs_TP() to solve for thermo equilibrium.
Definition: vcs_internal.h:60
double m_Faraday_dim
dimensionless value of Faraday's constant, F / RT (1/volt)
Definition: vcs_solve.h:1980
std::vector< std::string > m_elementName
Vector of strings containing the element names.
Definition: vcs_solve.h:1849
size_t vcs_optMax(const double *x, const double *xSize, size_t j, size_t n)
Finds the location of the maximum component in a double vector.
Definition: vcs_util.cpp:110
std::vector< int > m_elementActive
Specifies whether an element constraint is active.
Definition: vcs_solve.h:1870
int Its
Current number of iterations in the main loop of vcs_TP() to solve for thermo equilibrium.
Definition: vcs_internal.h:64
void vcs_TCounters_report(int timing_print_lvl=1)
Create a report on the plog file containing timing and its information.
Definition: vcs_report.cpp:396
double T_Time_inest
Time spent in initial estimator.
Definition: vcs_internal.h:92
size_t m_numElemConstraints
Number of element constraints in the problem.
Definition: vcs_solve.h:1503
std::vector< vcs_VolPhase * > m_VolPhaseList
Array of Phase Structures. Length = number of phases.
Definition: vcs_solve.h:1873
double vcs_Total_Gibbs(double *w, double *fe, double *tPhMoles)
Calculate the total dimensionless Gibbs free energy.
Definition: vcs_Gibbs.cpp:18
double m_totalMoleScale
Multiplier for the mole numbers within the nondimensionless formulation.
Definition: vcs_solve.h:1892
double T_Time_vcs_TP
Current time spent in vcs_TP.
Definition: vcs_internal.h:80
size_t m_numPhases
Number of Phases in the problem.
Definition: vcs_solve.h:1530
double Time_basopt
Current Time spent in basopt.
Definition: vcs_internal.h:89
#define VCS_DIMENSIONAL_G
dimensioned
Definition: vcs_defs.h:118
std::vector< size_t > m_phaseID
Mapping from the species number to the phase number.
Definition: vcs_solve.h:1836
void vcs_nondim_TP()
Nondimensionalize the problem data.
Definition: vcs_nondim.cpp:76
bool vcs_doubleEqual(double d1, double d2)
Simple routine to check whether two doubles are equal up to roundoff error.
Definition: vcs_util.cpp:645
double vcs_VolTotal(const double tkelvin, const double pres, const double w[], double volPM[])
Calculation of the total volume and the partial molar volumes.
Definition: vcs_solve.cpp:990
#define VCS_STATECALC_OLD
State Calculation based on the old or base mole numbers.
Definition: vcs_defs.h:381
std::vector< double > m_tPhaseMoles_old
Total kmols of species in each phase.
Definition: vcs_solve.h:1714
double vcs_nondimMult_TP(int mu_units, double TKelvin) const
Returns the multiplier for the nondimensionalization of the equations.
Definition: vcs_nondim.cpp:46
double vcs_tmoles()
Calculates the total number of moles of species in all phases.
void vcs_elabPhase(size_t iphase, double *const elemAbundPhase)
Definition: vcs_elem.cpp:95
DoubleStarStar m_stoichCoeffRxnMatrix
Stoichiometric coefficient matrix for the reaction mechanism expressed in Reduced Canonical Form...
Definition: vcs_solve.h:1556
void vcs_redim_TP()
Redimensionalize the problem data.
Definition: vcs_nondim.cpp:167
std::vector< double > TPhInertMoles
Total kmoles of inert to add to each phase.
Definition: vcs_solve.h:1759
std::vector< double > m_PMVolumeSpecies
Partial molar volumes of the species.
Definition: vcs_solve.h:1977
int T_Calls_Inest
Current number of times the initial thermo equilibrium estimator has been called. ...
Definition: vcs_internal.h:74
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.
Definition: vcs_Gibbs.cpp:43
double totalMoles() const
Return the total moles in the phase.
#define plogf
define this Cantera function to replace printf
Definition: vcs_internal.h:30
std::vector< int > m_elType
Type of the element constraint.
Definition: vcs_solve.h:1864
#define VCS_SPECIES_TYPE_INTERFACIALVOLTAGE
Unknown refers to the voltage level of a phase.
Definition: vcs_defs.h:368
double m_pressurePA
Pressure (units are determined by m_VCS_UnitsFormat.
Definition: vcs_solve.h:1752
std::vector< int > m_speciesUnknownType
Specifies the species unknown type.
Definition: vcs_solve.h:1629
std::vector< double > m_chargeSpecies
Charge of each species. Length = number of species.
Definition: vcs_solve.h:1949
VCS_COUNTERS * m_VCount
Timing and iteration counters for the vcs object.
Definition: vcs_solve.h:1983
double m_totalVol
Total volume of all phases. Units are m^3.
Definition: vcs_solve.h:1970
double T_Time_basopt
Total Time spent in basopt.
Definition: vcs_internal.h:86
std::vector< std::string > m_speciesName
Species string name for the kth species.
Definition: vcs_solve.h:1843
size_t m_numSpeciesRdc
Current number of species in the problems.
Definition: vcs_solve.h:1516