Incremental update to get vcs_volPhase to use setState and stateCalc

concepts.
This commit is contained in:
Harry Moffat 2008-06-17 15:45:36 +00:00
parent 0bd6ae596d
commit 7a76bf5444
5 changed files with 29 additions and 41 deletions

View file

@ -53,7 +53,7 @@ namespace VCSnonideal {
m_VCS_UnitsFormat(VCS_UNITS_MKS),
m_useCanteraCalls(false),
TP_ptr(0),
TMoles(0.0),
v_totalMoles(0.0),
m_totalVol(0.0),
m_vcsStateStatus(VCS_STATECALC_OLD),
m_phi(0.0),
@ -114,7 +114,7 @@ namespace VCSnonideal {
m_VCS_UnitsFormat(b.m_VCS_UnitsFormat),
m_useCanteraCalls(b.m_useCanteraCalls),
TP_ptr(b.TP_ptr),
TMoles(b.TMoles),
v_totalMoles(b.v_totalMoles),
m_phiVarIndex(-1),
m_totalVol(b.m_totalVol),
m_vcsStateStatus(VCS_STATECALC_OLD),
@ -217,7 +217,7 @@ namespace VCSnonideal {
* have to be looked into.
*/
TP_ptr = b.TP_ptr;
TMoles = b.TMoles;
v_totalMoles = b.v_totalMoles;
Xmol = b.Xmol;
@ -535,7 +535,7 @@ namespace VCSnonideal {
const double * molesSpeciesVCS) {
int kglob;
double tmp;
TMoles = TMolesInert;
v_totalMoles = TMolesInert;
if (molesSpeciesVCS == 0) {
#ifdef DEBUG_MODE
@ -579,12 +579,12 @@ namespace VCSnonideal {
kglob = IndSpecies[k];
tmp = MAX(0.0, molesSpeciesVCS[kglob]);
Xmol[k] = tmp;
TMoles += tmp;
v_totalMoles += tmp;
}
}
if (TMoles > 0.0) {
if (v_totalMoles > 0.0) {
for (int k = 0; k < NVolSpecies; k++) {
Xmol[k] /= TMoles;
Xmol[k] /= v_totalMoles;
}
Existence = 1;
} else {
@ -646,13 +646,13 @@ namespace VCSnonideal {
* Check for consistency with TPhMoles[]
*/
double Tcheck = TPhMoles[VP_ID];
if (Tcheck != TMoles) {
if (vcs_doubleEqual(Tcheck, TMoles)) {
Tcheck = TMoles;
if (Tcheck != v_totalMoles) {
if (vcs_doubleEqual(Tcheck, v_totalMoles)) {
Tcheck = v_totalMoles;
} else {
plogf("vcs_VolPhase::setMolesFromVCSCheck: "
"We have a consistency problem: %21.16g %21.16g\n",
Tcheck, TMoles);
Tcheck, v_totalMoles);
std::exit(-1);
}
}
@ -877,7 +877,7 @@ namespace VCSnonideal {
for (k = 0; k < NVolSpecies; k++) {
m_totalVol += PartialMolarVol[k] * Xmol[k];
}
m_totalVol *= TMoles;
m_totalVol *= v_totalMoles;
if (TMolesInert > 0.0) {
if (m_gasPhase) {
@ -911,7 +911,7 @@ namespace VCSnonideal {
// Make copies of ActCoeff and Xmol for use in taking differences
std::vector<double> ActCoeff_Base(ActCoeff);
std::vector<double> Xmol_Base(Xmol);
double TMoles_base = TMoles;
double TMoles_base = v_totalMoles;
/*
* Loop over the columns species to be deltad
@ -922,17 +922,17 @@ namespace VCSnonideal {
* -> NOte Xmol[] and Tmoles are always positive or zero
* quantities.
*/
double moles_j_base = TMoles * Xmol_Base[j];
deltaMoles_j = 1.0E-7 * moles_j_base + 1.0E-20 * TMoles + 1.0E-150;
double moles_j_base = v_totalMoles * Xmol_Base[j];
deltaMoles_j = 1.0E-7 * moles_j_base + 1.0E-20 * v_totalMoles + 1.0E-150;
/*
* Now, update the total moles in the phase and all of the
* mole fractions based on this.
*/
TMoles = TMoles_base + deltaMoles_j;
v_totalMoles = TMoles_base + deltaMoles_j;
for (k = 0; k < NVolSpecies; k++) {
Xmol[k] = Xmol_Base[k] * TMoles_base / TMoles;
Xmol[k] = Xmol_Base[k] * TMoles_base / v_totalMoles;
}
Xmol[j] = (moles_j_base + deltaMoles_j) / TMoles;
Xmol[j] = (moles_j_base + deltaMoles_j) / v_totalMoles;
/*
* Go get new values for the activity coefficients.
@ -949,9 +949,9 @@ namespace VCSnonideal {
((ActCoeff[k] + ActCoeff_Base[k]) * 0.5 * deltaMoles_j);
}
/*
* Revert to the base case Xmol, TMoles
* Revert to the base case Xmol, v_totalMoles
*/
TMoles = TMoles_base;
v_totalMoles = TMoles_base;
vcs_vdcopy(Xmol, Xmol_Base, NVolSpecies);
}
/*
@ -1068,7 +1068,7 @@ namespace VCSnonideal {
/************************************************************************************/
double vcs_VolPhase::TotalMoles() const {
return TMoles;
return v_totalMoles;
}
/************************************************************************************/
@ -1078,7 +1078,7 @@ namespace VCSnonideal {
/************************************************************************************/
void vcs_VolPhase::setTotalMoles(double tmols) {
TMoles = tmols;
v_totalMoles = tmols;
}
/************************************************************************************/

View file

@ -677,7 +677,7 @@ namespace VCSnonideal {
/*!
* units are kmol
*/
double TMoles;
double v_totalMoles;
//! Vector of the current mole fractions for species
//! in the phase

View file

@ -199,7 +199,6 @@ namespace VCSnonideal {
m_lnMnaughtSpecies.resize(nspecies0, 0.0);
m_actCoeffSpecies_new.resize(nspecies0, 1.0);
m_actCoeffSpecies_old.resize(nspecies0, 1.0);
m_phaseACAreCurrent.resize(nphase0, 0);
m_wtSpecies.resize(nspecies0, 0.0);
m_chargeSpecies.resize(nspecies0, 0.0);
m_speciesThermoList.resize(nspecies0, (VCS_SPECIES_THERMO *)0);

View file

@ -1803,10 +1803,6 @@ public:
*/
DoubleStarStar m_dLnActCoeffdMolNum;
//! This boolean indicates whether the activity coefficients for a phase
//! are current.
std::vector<int> m_phaseACAreCurrent;
//! Molecular weight of each species
/*!
* units = kg/kmol

View file

@ -4694,11 +4694,7 @@ namespace VCSnonideal {
tlogMoles[iph] = log(tPhMoles_ptr[iph]);
}
}
/*
* Zero the indicator that that tells us the activity coefficients
* are current
*/
vcs_izero(VCS_DATA_PTR(m_phaseACAreCurrent), m_numPhases);
if (ll != 0) {
l1 = lbot;
@ -4713,15 +4709,12 @@ namespace VCSnonideal {
* not current
*/
for (iphase = 0; iphase < m_numPhases; iphase++) {
if (!m_phaseACAreCurrent[iphase]) {
Vphase = m_VolPhaseList[iphase];
if (!Vphase->SingleSpecies) {
Vphase->setMolesFromVCS(stateCalc, molNum);
Vphase->sendToVCS_ActCoeff(stateCalc, VCS_DATA_PTR(actCoeff_ptr));
}
m_phasePhi[iphase] = Vphase->electricPotential();
m_phaseACAreCurrent[iphase] = 1;
Vphase = m_VolPhaseList[iphase];
if (!Vphase->SingleSpecies) {
// Vphase->setMolesFromVCS(stateCalc, molNum);
Vphase->sendToVCS_ActCoeff(stateCalc, VCS_DATA_PTR(actCoeff_ptr));
}
m_phasePhi[iphase] = Vphase->electricPotential();
}
/* ************************************************************** */
/* **** ALL SPECIES, OR COMPONENTS ****************************** */