Heat transfer for general heat capacities.

This commit is contained in:
tlichtenegger
2020-10-20 11:56:59 +02:00
parent e02edc3569
commit 0fa1f023d6
4 changed files with 40 additions and 11 deletions

View File

@ -20,21 +20,23 @@
Cpv = he.name() == "e" ? thermo.Cv() : thermo.Cp();
// correct source for the thermodynamic reference temperature
dimensionedScalar Tref("Tref", dimTemperature, T[0]-he[0]/(Cpv[0]+SMALL));
Qsource += QCoeff*Tref;
// For implict T terms in the energy/enthalpy transport equation, use
// (he_n+1 - he_n) / (T_n+1 - T_n) = Cpv to eliminate T_n+1 with he_n+1.
// This formula is valid for ideal gases with e=e(T) and h=h(T). For
// incompressible fluids, e=e(T) holds, too, but enthalpy would need correction
// terms accounting for pressure variations.
fvScalarMatrix EEqn
(
fvm::ddt(rhoeps, he) + fvm::div(phi, he)
+ addSource
// net heat transfer from particles to fluid
- Qsource
- QCoeff*T
- fvm::Sp(QCoeff/Cpv, he)
// thermal conduction of the fluid with effective conductivity
+ QCoeff/Cpv*he
- fvc::laplacian(voidfraction*thCond,T)
- fvm::laplacian(voidfraction*thCond/Cpv,he)
// + particle-fluid energy transfer due to work
// + fluid energy dissipation due to shearing
+ fvc::laplacian(voidfraction*thCond/Cpv,he)
==
fvOptions(rho, he)
);

View File

@ -10,6 +10,7 @@
// main contribution due to gas expansion, not due to transport of kinetic energy
// fvc::ddt(rhoeps, K) + fvc::div(phiRec, K)
// assuming constant Cv such that e = Cv * T
fvScalarMatrix TEqn =
(
fvm::ddt(rhoeps, T)

View File

@ -22,19 +22,33 @@
Cpv = he.name() == "e" ? thermo.Cv() : thermo.Cp();
// For implict T terms in the energy/enthalpy transport equation, use
// (he_n+1 - he_n) / (T_n+1 - T_n) = Cpv to eliminate T_n+1 with he_n+1.
// This formula is valid for ideal gases with e=e(T) and h=h(T). For
// incompressible fluids, e=e(T) holds, too, but enthalpy would need correction
// terms accounting for pressure variations.
fvScalarMatrix EEqn
(
fvm::div(phi, he)
+ addSource
- Qsource
- QCoeff*T
- fvm::Sp(QCoeff/Cpv, he)
// - fvm::laplacian(voidfractionRec*kf/Cpv,he)
+ QCoeff/Cpv*he
- fvc::laplacian(voidfractionRec*thCond,T)
- fvm::laplacian(voidfractionRec*thCond/Cpv,he)
+ fvc::laplacian(voidfractionRec*thCond/Cpv,he)
==
fvOptions(rho, he)
);
if (transientEEqn)
{
EEqn += fvm::ddt(rho,voidfractionRec,he);
}
EEqn.relax();
fvOptions.constrain(EEqn);

View File

@ -22,20 +22,32 @@
Cpv = he.name() == "e" ? thermo.Cv() : thermo.Cp();
// For implict T terms in the energy/enthalpy transport equation, use
// (he_n+1 - he_n) / (T_n+1 - T_n) = Cpv to eliminate T_n+1 with he_n+1.
// This formula is valid for ideal gases with e=e(T) and h=h(T). For
// incompressible fluids, e=e(T) holds, too, but enthalpy would need correction
// terms accounting for pressure variations.
fvScalarMatrix EEqn
(
fvm::div(phi, he)
fvm::div(phi, he)
+ addSource
// net heat transfer from particles to fluid
- Qsource
- QCoeff*T
- fvm::Sp(QCoeff/Cpv, he)
// - fvm::laplacian(voidfractionRec*kf/Cpv,he)
+ QCoeff/Cpv*he
- fvc::laplacian(voidfractionRec*thCond,T)
- fvm::laplacian(voidfractionRec*thCond/Cpv,he)
+ fvc::laplacian(voidfractionRec*thCond/Cpv,he)
==
fvOptions(rho, he)
);
if (transientEEqn)
{
EEqn += fvm::ddt(rho,voidfractionRec,he);
}
EEqn.relax();
fvOptions.constrain(EEqn);