Commit 7bb80f7b authored by Benjamin Faigle's avatar Benjamin Faigle
Browse files

Add functions for the heat capacity to the components air and co2, that will...

Add functions for the heat capacity to the components air and co2, that will be required by the decoupled NI-model. Enabled acess to these methods in the co2-brine-fluidsystem (only pure-phase heat capacities are used).
reviewed by Klaus

git-svn-id: svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/trunk@12462 2fb0f335-1f38-0410-981e-8018bf24f1b0
parent 9620d008
......@@ -203,6 +203,44 @@ public:
/ molarMass(); // conversion from [J/(mol K)] to [J/(kg K)]
}
/*!
* \brief Specific isobaric heat capacity \f$[J/(kg K)]\f$ of pure
* air.
*
* This methods uses the formula for "zero-pressure" heat capacity that
* is only dependent on temperature, because the pressure dependence is rather small.
* This one should be accurate for a pressure of 1 atm.
* Values taken from NASA Contractor Report 4755, Real-Gas Flow Properties for NASA
* Langley Research Center Aerothermodynamic Facilities Complex Wind Tunnels
* using data from
* Hilsenrath et al 1955, "Tables of Thermal Properties of Gases"
* \param temperature temperature of component in \f$\mathrm{[K]}\f$
* \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
*/
static const Scalar gasHeatCapacity(Scalar temperature,
Scalar pressure)
{
// scale temperature with referenence temp of 100K
Scalar phi = temperature/100;
Scalar c_p = 0.661738E+01
-0.105885E+01 * phi
+0.201650E+00 * pow(phi,2.)
-0.196930E-01 * pow(phi,3.)
+0.106460E-02 * pow(phi,4.)
-0.303284E-04 * pow(phi,5.)
+0.355861E-06 * pow(phi,6.);
c_p += -0.549169E+01 * pow(phi,-1.)
+0.585171E+01* pow(phi,-2.)
-0.372865E+01* pow(phi,-3.)
+0.133981E+01* pow(phi,-4.)
-0.233758E+00* pow(phi,-5.)
+0.125718E-01* pow(phi,-6.);
c_p *= IdealGas::R / (molarMass() * 1000); // in J/mol/K * mol / kg / 1000 = kJ/kg/K
return c_p;
}
};
} // end namespace
......
......@@ -249,11 +249,36 @@ public:
DUNE_THROW(NumericalProblem, "CO2::liquidPressure()");
}
/*!
* \brief Specific isobaric heat capacity of the component [J/kg] as a liquid.
* USE WITH CAUTION! Exploits enthalpy function with artificial increment
* of the temperature!
* Equation with which the specific heat capacity is calculated : \f$ c_p = \frac{dh}{dT}\f$
* \param temperature temperature of component in \f$\mathrm{[K]}\f$
* \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
*/
static Scalar liquidHeatCapacity(Scalar temperature, Scalar pressure)
{
//temperature difference :
Scalar dT = 1.; // 1K temperature increment
Scalar temperature2 = temperature+dT;
// enthalpy difference
Scalar hold = liquidEnthalpy(temperature, pressure);
Scalar hnew = liquidEnthalpy(temperature2, pressure);
Scalar dh = hold-hnew;
//specific heat capacity
return dh/dT ;
}
/*!
* \brief The dynamic viscosity [N/m^3*s] of CO2.
* Equations given in: - Vesovic et al., 1990
* - Fenhour et al., 1998
* \param temperature temperature of component in \f$\mathrm{[K]}\f$
* \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
*/
static Scalar gasViscosity(Scalar temperature, Scalar pressure)
{
......
......@@ -449,7 +449,7 @@ public:
}
/*!
* \brief Specific isochoric heat capacity of liquid water \f$\mathrm{[J/kg]}\f$.
* \brief Specific isochoric heat capacity of liquid water \f$\mathrm{[J/m^3]}\f$.
*
* \param temperature temperature of component in \f$\mathrm{[K]}\f$
* \param pressure pressure of component in \f$\mathrm{[Pa]}\f$
......
......@@ -560,14 +560,25 @@ public:
/*!
* \copydoc BaseFluidSystem::heatCapacity
*
* We employ the heat capacity of the pure phases.
* Todo: Include compositional effects.
*
* \param fluidState An arbitrary fluid state
* \param phaseIdx The index of the fluid phase to consider
* \tparam FluidState the fluid state class
*/
using Base::heatCapacity;
template <class FluidState>
static Scalar heatCapacity(const FluidState &fluidState,
const ParameterCache &paramCache,
int phaseIdx)
{
// TODO!
DUNE_THROW(Dune::NotImplemented, "Heat capacities");
if(phaseIdx == wPhaseIdx)
return H2O::liquidHeatCapacity(fluidState.temperature(phaseIdx),
fluidState.pressure(phaseIdx));
else
return CO2::liquidHeatCapacity(fluidState.temperature(phaseIdx),
fluidState.pressure(phaseIdx));
}
private:
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment