Difference between revisions of "ChtMultiRegionFoam"
(→Energy conservation) |
(→Energy conservation) |
||
Line 124: | Line 124: | ||
</td><td width="5%">(3)</td></tr></table> | </td><td width="5%">(3)</td></tr></table> | ||
− | The rate of change of the internal energy <math> e </math> of a fluid element is the heat transferred to this fluid element by diffusion plus the | + | The rate of change of the internal energy <math> e </math> of a fluid element is the heat transferred to this fluid element by diffusion and turbulence <math> q_i + q_{ti} </math> plus the |
heat source term <math> r </math> plus the heat source by radiation <math> Rad </math> : | heat source term <math> r </math> plus the heat source by radiation <math> Rad </math> : | ||
Line 140: | Line 140: | ||
<center><math> | <center><math> | ||
− | \frac{ \partial (\rho e)}{\partial t} + \frac{\partial}{\partial x_j} \left( \rho {u}_j e \right) + \frac{ \partial (\rho k)}{\partial t} + \frac{\partial}{\partial x_j} \left( \rho {u}_j k \right) = - \frac{\partial q_i} {\partial{x_i} } + \rho r + Rad - \frac{\partial p u_j} {\partial{x_i} }- \rho g_j u_j + | + | \frac{ \partial (\rho e)}{\partial t} + \frac{\partial}{\partial x_j} \left( \rho {u}_j e \right) + \frac{ \partial (\rho k)}{\partial t} + \frac{\partial}{\partial x_j} \left( \rho {u}_j k \right) = - \frac{\partial ( q_i + q_{ti}) } {\partial{x_i} } + \rho r + Rad - \frac{\partial p u_j} {\partial{x_i} }- \rho g_j u_j + |
\frac{\partial}{\partial x_j}\left( \tau_{ij} u_i \right) | \frac{\partial}{\partial x_j}\left( \tau_{ij} u_i \right) | ||
Line 151: | Line 151: | ||
<center><math> | <center><math> | ||
− | \frac{ \partial (\rho h)}{\partial t} + \frac{\partial}{\partial x_j} \left( \rho {u}_j h \right) + \frac{ \partial (\rho k)}{\partial t} + \frac{\partial}{\partial x_j} \left( \rho {u}_j k \right) = - \frac{\partial q_i} {\partial{x_i} } + \rho r + Rad + \frac{\partial p} {\partial{t} }- \rho g_j u_j + | + | \frac{ \partial (\rho h)}{\partial t} + \frac{\partial}{\partial x_j} \left( \rho {u}_j h \right) + \frac{ \partial (\rho k)}{\partial t} + \frac{\partial}{\partial x_j} \left( \rho {u}_j k \right) = - \frac{\partial ( q_i + q_{ti})} {\partial{x_i} } + \rho r + Rad + \frac{\partial p} {\partial{t} }- \rho g_j u_j + |
\frac{\partial}{\partial x_j}\left( \tau_{ij} u_i \right) | \frac{\partial}{\partial x_j}\left( \tau_{ij} u_i \right) | ||
</math></center> | </math></center> | ||
</td><td width="5%">(5)</td></tr></table> | </td><td width="5%">(5)</td></tr></table> | ||
+ | |||
+ | The source code can be found in EEqn.H: | ||
+ | |||
+ | <br><cpp> | ||
+ | { | ||
+ | volScalarField& he = thermo.he(); | ||
+ | |||
+ | fvScalarMatrix EEqn | ||
+ | ( | ||
+ | fvm::ddt(rho, he) + fvm::div(phi, he) | ||
+ | + fvc::ddt(rho, K) + fvc::div(phi, K) | ||
+ | + ( | ||
+ | he.name() == "e" | ||
+ | ? fvc::div | ||
+ | ( | ||
+ | fvc::absolute(phi/fvc::interpolate(rho), U), | ||
+ | p, | ||
+ | "div(phiv,p)" | ||
+ | ) | ||
+ | : -dpdt | ||
+ | ) | ||
+ | - fvm::laplacian(turbulence.alphaEff(), he) | ||
+ | == | ||
+ | rho*(U&g) | ||
+ | + rad.Sh(thermo, he) | ||
+ | + Qdot | ||
+ | + fvOptions(rho, he) | ||
+ | ); | ||
+ | |||
+ | EEqn.relax(); | ||
+ | |||
+ | fvOptions.constrain(EEqn); | ||
+ | |||
+ | EEqn.solve(); | ||
+ | |||
+ | fvOptions.correct(he); | ||
+ | |||
+ | thermo.correct(); | ||
+ | rad.correct(); | ||
+ | |||
+ | Info<< "Min/max T:" << min(thermo.T()).value() << ' ' | ||
+ | << max(thermo.T()).value() << endl; | ||
+ | } | ||
+ | </cpp><br> | ||
===Equations Solid=== | ===Equations Solid=== | ||
==Source Code== | ==Source Code== |
Revision as of 17:54, 3 November 2018
ChtMultiRegionFoam
Solver for steady or transient fluid flow and solid heat conduction, with conjugate heat transfer between regions, buoyancy effects, turbulence, reactions and radiation modelling.
Contents
1 Equations
For each region defined as fluid, the according equation for the fluid is solved and the same is done for each solid region. The regions are coupled by a thermal boundary condition.
1.1 Equations Fluid
For each fluid region the compressible Navier Stokes equation are solved.
1.1.1 Mass conservation
The variable-density continuity equation is
| (1) |
The source code can be found in src/finiteVolume/cfdTools/compressible/rhoEqn.H:
{ fvScalarMatrix rhoEqn ( fvm::ddt(rho) + fvc::div(phi) == fvOptions(rho) ); fvOptions.constrain(rhoEqn); rhoEqn.solve(); fvOptions.correct(rho); }
1.1.2 Momentum conservation
| (2) |
represent the velocity, the gravitational acceleration, the pressure minus the hydrostatic pressure and and are the viscose and turbulent stresses.
The source code can be found in Ueqn.H:
// Solve the Momentum equation MRF.correctBoundaryVelocity(U); tmp<fvVectorMatrix> tUEqn ( fvm::ddt(rho, U) + fvm::div(phi, U) + MRF.DDt(rho, U) + turbulence.divDevRhoReff(U) == fvOptions(rho, U) ); fvVectorMatrix& UEqn = tUEqn.ref(); UEqn.relax(); fvOptions.constrain(UEqn); if (pimple.momentumPredictor()) { solve ( UEqn == fvc::reconstruct ( ( - ghf*fvc::snGrad(rho) - fvc::snGrad(p_rgh) )*mesh.magSf() ) ); fvOptions.correct(U); K = 0.5*magSqr(U); } fvOptions.correct(U);
1.1.3 Energy conservation
The energy equation can be found in: https://cfd.direct/openfoam/energy-equation/
The total energy of a fluid element can be seen as the sum of kinetic energy and internal energy . The rate of change of the kinetic energy within a fluid element is the work done on this fluid element by the viscous forces, the pressure and eternal volume forces like the gravity:
| (3) |
The rate of change of the internal energy of a fluid element is the heat transferred to this fluid element by diffusion and turbulence plus the heat source term plus the heat source by radiation :
| (4) |
The change rate of the total energy is the sum of the above two equations:
| (5) |
Instead of the internal energy there is also the option to solve the equation for the enthalpy :
| (5) |
The source code can be found in EEqn.H:
{ volScalarField& he = thermo.he(); fvScalarMatrix EEqn ( fvm::ddt(rho, he) + fvm::div(phi, he) + fvc::ddt(rho, K) + fvc::div(phi, K) + ( he.name() == "e" ? fvc::div ( fvc::absolute(phi/fvc::interpolate(rho), U), p, "div(phiv,p)" ) : -dpdt ) - fvm::laplacian(turbulence.alphaEff(), he) == rho*(U&g) + rad.Sh(thermo, he) + Qdot + fvOptions(rho, he) ); EEqn.relax(); fvOptions.constrain(EEqn); EEqn.solve(); fvOptions.correct(he); thermo.correct(); rad.correct(); Info<< "Min/max T:" << min(thermo.T()).value() << ' ' << max(thermo.T()).value() << endl; }