LiquidTransport.h LiquidTransport.cpp

Added methods 
 void getSpeciesHydrodynamicRadius() -- similar to getSpeciesViscosities()
 void updateHydrodynamicRadius_T() -- similar to updateViscosities_T()
 void updateHydrodynamicRadius_C()
Added private members
 bool m_radi_temp_ok;
 bool m_radi_conc_ok;
This commit is contained in:
John Hewson 2009-10-23 22:34:08 +00:00
parent 60c9446340
commit 45c2e077d1
2 changed files with 101 additions and 5 deletions

View file

@ -46,6 +46,8 @@ namespace Cantera {
m_visc_mix_ok(false),
m_visc_temp_ok(false),
m_visc_conc_ok(false),
m_radi_temp_ok(false),
m_radi_conc_ok(false),
m_diff_mix_ok(false),
m_diff_temp_ok(false),
m_cond_temp_ok(false),
@ -71,6 +73,8 @@ namespace Cantera {
m_visc_mix_ok(false),
m_visc_temp_ok(false),
m_visc_conc_ok(false),
m_radi_temp_ok(false),
m_radi_conc_ok(false),
m_diff_mix_ok(false),
m_diff_temp_ok(false),
m_cond_temp_ok(false),
@ -112,6 +116,7 @@ namespace Cantera {
m_bdiff = right.m_bdiff;
m_viscSpecies = right.m_viscSpecies;
m_logViscSpecies = right.m_logViscSpecies;
m_hydrodynamic_radius = right.m_hydrodynamic_radius;
m_lambdaSpecies = right.m_lambdaSpecies;
m_iStateMF = -1;
m_molefracs = right.m_molefracs;
@ -131,6 +136,8 @@ namespace Cantera {
m_visc_mix_ok = false;
m_visc_temp_ok = false;
m_visc_conc_ok = false;
m_radi_temp_ok = false;
m_radi_conc_ok = false;
m_diff_mix_ok = false;
m_diff_temp_ok = false;
m_cond_temp_ok = false;
@ -378,7 +385,8 @@ namespace Cantera {
m_visc_mix_ok = false;
m_visc_temp_ok = false;
m_visc_conc_ok = false;
m_radi_temp_ok = false;
m_radi_conc_ok = false;
m_cond_temp_ok = false;
m_cond_mix_ok = false;
m_diff_temp_ok = false;
@ -457,15 +465,23 @@ namespace Cantera {
}
copy(m_viscSpecies.begin(), m_viscSpecies.end(), visc);
}
//====================================================================================================================
//===============================================================
// Returns the hydrodynamic radius for all species
/*
* The pure species viscosities are to be given in an Arrhenius
* form in accordance with activated-jump-process dominated transport.
*/
void LiquidTransport::getSpeciesHydrodynamicRadius(doublereal* const radius) {
update_T();
if (!m_radi_temp_ok) {
updateHydrodynamicRadius_T();
}
copy(m_hydrodynamic_radius.begin(), m_hydrodynamic_radius.end(), radius);
}
//====================================================================================================================
//================================================================
/******************* binary diffusion coefficients **************/
@ -746,6 +762,7 @@ namespace Cantera {
// temperature has changed so temp flags are flipped
m_visc_temp_ok = false;
m_radi_temp_ok = false;
m_diff_temp_ok = false;
// temperature has changed, so polynomial temperature
@ -1002,6 +1019,59 @@ namespace Cantera {
}
//! Update the pure-species viscosities functional dependence on concentration.
void LiquidTransport::updateHydrodynamicRadius_C() {
m_visc_conc_ok = true;
}
/**
* Update the temperature-dependent hydrodynamic radius terms.
* Updates the array of pure species viscosities, and the
* weighting functions in the viscosity mixture rule.
* The flag m_visc_ok is set to true.
*/
void LiquidTransport::updateHydrodynamicRadius_T() {
int k;
for (k = 0; k < m_nsp; k++) {
vector_fp &coeffk = m_coeffRadius_Ns[k];
if ( m_radiusTempDepType_Ns[k] == LTR_MODEL_CONSTANT ) {
m_hydrodynamic_radius[k] = coeffk[0] ;
} else if ( m_radiusTempDepType_Ns[k] == LTR_MODEL_ARRHENIUS ) {
//m_coeffRadius_Ns[k][0] holds A
//m_coeffRadius_Ns[k][1] holds n
//m_coeffRadius_Ns[k][2] holds Tact
//m_coeffRadius_Ns[k][3] holds log(A)
m_hydrodynamic_radius[k] = coeffk[0] * exp( coeffk[1] * m_logt
- coeffk[2] / m_temp );
} else if ( m_radiusTempDepType_Ns[k] == LTR_MODEL_POLY ) {
m_hydrodynamic_radius[k] = coeffk[0]
+ coeffk[1] * m_temp
+ coeffk[2] * m_temp * m_temp
+ coeffk[3] * m_temp * m_temp * m_temp
+ coeffk[4] * m_temp * m_temp * m_temp * m_temp;
} else if ( m_radiusTempDepType_Ns[k] == LTR_MODEL_NOTSET ) {
throw CanteraError("LiquidTransport::updateHydrodynamicRadius_T",
"Hydrodynamic Radius Model is not set for species "
+ m_thermo->speciesName(k)
+ " in the input file");
} else {
throw CanteraError("LiquidTransport::updateHydrodynamicRadius_T",
"Hydrodynamic Radius Model for species "
+ m_thermo->speciesName(k)
+ " is not handled by this object");
}
m_radi_temp_ok = true;
m_diff_mix_ok = false;
}
}
/*
*
* Solve for the diffusional velocities in the Stefan-Maxwell equations

View file

@ -446,6 +446,13 @@ namespace Cantera {
*/
void updateViscosity_T();
//! Update the temperature-dependent hydrodynamic radius terms
//! for each species
/*!
* The flag m_radi_temp_ok is set to true.
*/
void updateHydrodynamicRadius_T();
//! Update the temperature-dependent parts of the mixture-averaged
//! thermal conductivity.
void updateCond_T();
@ -453,13 +460,23 @@ namespace Cantera {
//! Update the concentration parts of the viscosities
/*!
* Internal routine is run whenever the update_boolean
* m_visc_conc_ok is false. This routine will calculate
* internal values for the species viscosities.
* m_visc_conc_ok is false. Currently there is no concentration
* dependence for the pure species viscosities.
*
* @internal
*/
void updateViscosities_C();
//! Update the concentration dependence of the hydrodynamic radius
/*!
* Internal routine is run whenever the update_boolean
* m_radi_conc_ok is false. Currently there is no concentration
* dependence for the hydrodynamic radius.
*
* @internal
*/
void updateHydrodynamicRadius_C();
//! Update the binary diffusion coefficients wrt T.
/*!
* These are evaluated
@ -535,6 +552,7 @@ namespace Cantera {
vector<LiquidTR_Model> m_diffTempDepType_Ns;
//! Pure species diffusvities in temperature-dependent form.
//! Not currently used since we get diffusivity from hydrodynamic radius.
std::vector<Coeff_T_> m_coeffDiff_Ns;
@ -829,6 +847,14 @@ namespace Cantera {
//! are current wrt the concentration
bool m_visc_conc_ok;
//! Boolean indicating that temperature dependence of
//! hydrodynamic radius is current
bool m_radi_temp_ok;
//! Flag to indicate that the hydrodynamic radius is current
//! is current wrt the concentration
bool m_radi_conc_ok;
//! Boolean indicating that mixture diffusion coeffs are current
bool m_diff_mix_ok;