Removed a layer of indirection in MultiTransport property updaters

This commit is contained in:
Ray Speth 2012-05-11 15:27:38 +00:00
parent c7af9ddf81
commit 74e9fa050b
4 changed files with 35 additions and 108 deletions

View file

@ -207,8 +207,6 @@ public:
* D_{km}' = \frac{\left( \bar{M} - X_k M_k \right)}{ \bar{\qquad M \qquad } } {\left( \sum_{j \ne k} \frac{X_j}{D_{kj}} \right) }^{-1}
* \f]
*
*
*
* @param d Output Vector of mixture diffusion coefficients, \f$ D_{km}' \f$ , for each species (m^2/s).
* length m_nsp
*/

View file

@ -221,37 +221,8 @@ public:
*/
virtual bool initGas(GasTransportParams& tr);
/**
* @name Property Updating This methods are used to update
* temperature- or concentration-dependent quantities. The
* methods of the first group (with names that do not begin
* with an underscore) invoke the 'update' method of the
* relevant property updater. These methods are the ones that
* are called by other methods of the class to update
* properties. The methods that actually perform the updates
* are the ones with names beginning with an underscore. These
* are only called by the property updaters.
*/
void updateTransport_T();
void updateTransport_C();
void updateThermal_T();
void updateViscosity_T();
void updateSpeciesViscosities_T();
void updateDiff_T();
void _update_transport_T();
void _update_transport_C();
void _update_species_visc_T();
void _update_visc_T();
void _update_diff_T();
void _update_thermal_T();
friend class TransportFactory;
//! Return a structure containing all of the pertinent parameters
//! about a species that was used to construct the Transport properties in this object
/*!
@ -259,6 +230,31 @@ public:
*/
struct GasTransportData getGasTransportData(int k);
protected:
//! Update basic temperature-dependent quantities if the temperature has changed.
void updateTransport_T();
//! Update basic concentration-dependent quantities if the concentrations have changed.
void updateTransport_C();
//! Update the temperature-dependent terms needed to compute the thermal
//! conductivity and thermal diffusion coefficients.
void updateThermal_T();
//! Update the temperature-dependent viscosity terms
void updateViscosity_T();
//! Update the temperature-dependent viscosity 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 updateSpeciesViscosities_T();
//! Update the binary diffusion coefficients.
//! These are evaluated from the polynomial fits at unit pressure (1 Pa).
void updateDiff_T();
private:
doublereal m_diff_tlast;

View file

@ -481,6 +481,7 @@ void MixTransport::getMixDiffCoeffs(doublereal* const d)
}
}
}
//===========================================================================================================
/*
* @internal This is called whenever a transport property is

View file

@ -770,23 +770,6 @@ void MultiTransport::getMixDiffCoeffs(doublereal* const d)
void MultiTransport::updateTransport_T()
{
//m_thermo->update_T(m_update_transport_T);
_update_transport_T();
}
void MultiTransport::updateTransport_C()
{
// {m_thermo->update_C(m_update_transport_C);
_update_transport_C();
}
/**
* Update temperature-dependent quantities. This method is called
* by the temperature property updater.
*/
void MultiTransport::_update_transport_T()
{
if (m_temp == m_thermo->temperature()) {
return;
@ -817,12 +800,7 @@ void MultiTransport::_update_transport_T()
m_l0000_ok = false;
}
/**
* This is called the first time any transport property
* is requested from ThermoSubstance after the concentrations
* have changed.
*/
void MultiTransport::_update_transport_C()
void MultiTransport::updateTransport_C()
{
// signal that concentration-dependent quantities will need to
// be recomputed before use, and update the local mole
@ -839,30 +817,17 @@ void MultiTransport::_update_transport_C()
}
}
/*************************************************************************
*
* methods to update temperature-dependent properties
*
*************************************************************************/
/**
* @internal
* Update the binary diffusion coefficients. These are evaluated
* from the polynomial fits at unit pressure (1 Pa).
*/
void MultiTransport::updateDiff_T()
{
if (m_diff_tlast == m_thermo->temperature()) {
return;
}
_update_diff_T();
m_diff_tlast = m_thermo->temperature();
//m_thermo->update_T(m_update_diff_T);
}
void MultiTransport::_update_diff_T()
{
updateTransport_T();
// evaluate binary diffusion coefficients at unit pressure
@ -886,29 +851,14 @@ void MultiTransport::_update_diff_T()
}
}
m_diff_ok = true;
m_diff_tlast = m_thermo->temperature();
}
/**
* @internal
* Update the temperature-dependent viscosity 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 MultiTransport::updateSpeciesViscosities_T()
{
if (m_spvisc_tlast == m_thermo->temperature()) {
return;
}
_update_species_visc_T();
//m_thermo->update_T(m_update_spvisc_T);
m_spvisc_tlast = m_thermo->temperature();
}
void MultiTransport::_update_species_visc_T()
{
updateTransport_T();
if (m_mode == CK_Mode) {
@ -925,24 +875,15 @@ void MultiTransport::_update_species_visc_T()
}
}
m_spvisc_ok = true;
m_spvisc_tlast = m_thermo->temperature();
}
/**
* @internal
*/
void MultiTransport::updateViscosity_T()
{
if (m_visc_tlast == m_thermo->temperature()) {
return;
}
_update_visc_T();
m_visc_tlast = m_thermo->temperature();
}
void MultiTransport::_update_visc_T()
{
doublereal vratiokj, wratiojk, factor1;
updateSpeciesViscosities_T();
// see Eq. (9-5.15) of Reid, Prausnitz, and Poling
@ -965,28 +906,15 @@ void MultiTransport::_update_visc_T()
}
}
m_visc_ok = true;
m_visc_tlast = m_thermo->temperature();
}
/**
* @internal
* Update the temperature-dependent terms needed to compute the
* thermal conductivity and thermal diffusion coefficients.
*/
void MultiTransport::updateThermal_T()
{
if (m_thermal_tlast == m_thermo->temperature()) {
return;
}
_update_thermal_T();
// m_thermo->update_T(m_update_thermal_T);
m_thermal_tlast = m_thermo->temperature();
}
void MultiTransport::_update_thermal_T()
{
// we need species viscosities and binary diffusion
// coefficients
// we need species viscosities and binary diffusion coefficients
updateSpeciesViscosities_T();
updateDiff_T();
@ -1046,7 +974,11 @@ void MultiTransport::_update_thermal_T()
for (size_t k = 0; k < m_nsp; k++) {
m_cinternal[k] = cp[k] - 2.5;
}
// m_thermo->update_T(m_update_thermal_T);
m_thermal_tlast = m_thermo->temperature();
}
//====================================================================================================================
/*
* This function returns a Transport data object for a given species.