From d0f15d4e3c5f45b6010317af6f77761d60da2c92 Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Wed, 1 Jul 2015 10:53:37 +0100 Subject: [PATCH] EEqn: Added rho*(U&g) source term Generally this term has a VERY small effect on temperature, it is only important for low-speed buoyancy-dominated flows. Resolves bug-report http://www.openfoam.org/mantisbt/view.php?id=1755 See also http://cfd.direct/openfoam/energy-equation/ --- .../solvers/combustion/reactingFoam/EEqn.H | 3 +- .../heatTransfer/buoyantPimpleFoam/EEqn.H | 3 +- .../heatTransfer/buoyantSimpleFoam/EEqn.H | 3 +- .../chtMultiRegionSimpleFoam/fluid/EEqn.H | 3 +- .../fluid/setRegionFluidFields.H | 2 ++ .../chtMultiRegionFoam/fluid/EEqn.H | 3 +- .../fluid/setRegionFluidFields.H | 2 ++ .../lagrangian/coalChemistryFoam/EEqn.H | 3 +- .../lagrangian/reactingParcelFilmFoam/EEqn.H | 3 +- .../lagrangian/reactingParcelFoam/EEqn.H | 3 +- .../simpleReactingParcelFoam/EEqn.H | 3 +- .../reactingTwoPhaseEulerFoam/EEqns.H | 30 ++++++++++--------- .../multiphase/twoPhaseEulerFoam/EEqns.H | 22 +++++++------- 13 files changed, 50 insertions(+), 33 deletions(-) diff --git a/applications/solvers/combustion/reactingFoam/EEqn.H b/applications/solvers/combustion/reactingFoam/EEqn.H index 9267c9a9be..bd47416425 100644 --- a/applications/solvers/combustion/reactingFoam/EEqn.H +++ b/applications/solvers/combustion/reactingFoam/EEqn.H @@ -17,7 +17,8 @@ ) - fvm::laplacian(turbulence->alphaEff(), he) == - reaction->Sh() + rho*(U&g) + + reaction->Sh() + fvOptions(rho, he) ); diff --git a/applications/solvers/heatTransfer/buoyantPimpleFoam/EEqn.H b/applications/solvers/heatTransfer/buoyantPimpleFoam/EEqn.H index b6cf96b5b0..ddd21254a9 100644 --- a/applications/solvers/heatTransfer/buoyantPimpleFoam/EEqn.H +++ b/applications/solvers/heatTransfer/buoyantPimpleFoam/EEqn.H @@ -17,7 +17,8 @@ ) - fvm::laplacian(turbulence->alphaEff(), he) == - radiation->Sh(thermo) + rho*(U&g) + + radiation->Sh(thermo) + fvOptions(rho, he) ); diff --git a/applications/solvers/heatTransfer/buoyantSimpleFoam/EEqn.H b/applications/solvers/heatTransfer/buoyantSimpleFoam/EEqn.H index cf7743817d..b9782d3f73 100644 --- a/applications/solvers/heatTransfer/buoyantSimpleFoam/EEqn.H +++ b/applications/solvers/heatTransfer/buoyantSimpleFoam/EEqn.H @@ -11,7 +11,8 @@ ) - fvm::laplacian(turbulence->alphaEff(), he) == - radiation->Sh(thermo) + rho*(U&g) + + radiation->Sh(thermo) + fvOptions(rho, he) ); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H index 4ebeacb5bc..b618478860 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/EEqn.H @@ -11,7 +11,8 @@ ) - fvm::laplacian(turb.alphaEff(), he) == - rad.Sh(thermo) + rho*(U&g) + + rad.Sh(thermo) + fvOptions(rho, he) ); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H index c89b99e07c..a008b0c1d4 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/setRegionFluidFields.H @@ -29,5 +29,7 @@ const bool frozenFlow = frozenFlowFluid[i]; volScalarField& p_rgh = p_rghFluid[i]; + + const dimensionedVector& g = gFluid[i]; const volScalarField& gh = ghFluid[i]; const surfaceScalarField& ghf = ghfFluid[i]; diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/EEqn.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/EEqn.H index 7f9f602121..eafea3fd4c 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/EEqn.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/EEqn.H @@ -17,7 +17,8 @@ ) - fvm::laplacian(turb.alphaEff(), he) == - rad.Sh(thermo) + rho*(U&g) + + rad.Sh(thermo) + fvOptions(rho, he) ); diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H index 61c8122900..e61f057316 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/setRegionFluidFields.H @@ -15,6 +15,8 @@ const volScalarField& psi = thermo.psi(); volScalarField& p_rgh = p_rghFluid[i]; + + const dimensionedVector& g = gFluid[i]; const volScalarField& gh = ghFluid[i]; const surfaceScalarField& ghf = ghfFluid[i]; diff --git a/applications/solvers/lagrangian/coalChemistryFoam/EEqn.H b/applications/solvers/lagrangian/coalChemistryFoam/EEqn.H index 19b7a0de0f..8d32932607 100644 --- a/applications/solvers/lagrangian/coalChemistryFoam/EEqn.H +++ b/applications/solvers/lagrangian/coalChemistryFoam/EEqn.H @@ -17,7 +17,8 @@ ) - fvm::laplacian(turbulence->alphaEff(), he) == - combustion->Sh() + rho*(U&g) + + combustion->Sh() + coalParcels.Sh(he) + limestoneParcels.Sh(he) + radiation->Sh(thermo) diff --git a/applications/solvers/lagrangian/reactingParcelFilmFoam/EEqn.H b/applications/solvers/lagrangian/reactingParcelFilmFoam/EEqn.H index 6bbd7cc788..4c2d95da9d 100644 --- a/applications/solvers/lagrangian/reactingParcelFilmFoam/EEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFilmFoam/EEqn.H @@ -17,7 +17,8 @@ ) - fvm::laplacian(turbulence->alphaEff(), he) == - parcels.Sh(he) + rho*(U&g) + + parcels.Sh(he) + surfaceFilm.Sh() + radiation->Sh(thermo) + combustion->Sh() diff --git a/applications/solvers/lagrangian/reactingParcelFoam/EEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/EEqn.H index d4f9d7f6ac..194e03c59d 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/EEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/EEqn.H @@ -17,7 +17,8 @@ ) - fvm::laplacian(turbulence->alphaEff(), he) == - parcels.Sh(he) + rho*(U&g) + + parcels.Sh(he) + radiation->Sh(thermo) + combustion->Sh() + fvOptions(rho, he) diff --git a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/EEqn.H b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/EEqn.H index d4d686e355..8239d44621 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/EEqn.H +++ b/applications/solvers/lagrangian/reactingParcelFoam/simpleReactingParcelFoam/EEqn.H @@ -11,7 +11,8 @@ ) - fvm::laplacian(turbulence->alphaEff(), he) == - parcels.Sh(he) + rho*(U&g) + + parcels.Sh(he) + radiation->Sh(thermo) + combustion->Sh() + fvOptions(rho, he) diff --git a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H index f8c6edce9d..588bd7ddf4 100644 --- a/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H +++ b/applications/solvers/multiphase/reactingTwoPhaseEulerFoam/EEqns.H @@ -6,40 +6,42 @@ heatTransfer = heatTransferPtr(); { - tmp he1Eqn(phase1.heEqn()); + tmp E1Eqn(phase1.heEqn()); - if (he1Eqn.valid()) + if (E1Eqn.valid()) { - he1Eqn = + E1Eqn = ( - he1Eqn + E1Eqn == *heatTransfer[phase1.name()] + + alpha1*rho1*(U1&g) + fvOptions(alpha1, rho1, phase1.thermo().he()) ); - he1Eqn->relax(); - fvOptions.constrain(he1Eqn()); - he1Eqn->solve(); + E1Eqn->relax(); + fvOptions.constrain(E1Eqn()); + E1Eqn->solve(); } } { - tmp he2Eqn(phase2.heEqn()); + tmp E2eqn(phase2.heEqn()); - if (he2Eqn.valid()) + if (E2eqn.valid()) { - he2Eqn = + E2eqn = ( - he2Eqn + E2eqn == *heatTransfer[phase2.name()] + + alpha2*rho2*(U2&g) + fvOptions(alpha2, rho2, phase2.thermo().he()) ); - he2Eqn->relax(); - fvOptions.constrain(he2Eqn()); - he2Eqn->solve(); + E2eqn->relax(); + fvOptions.constrain(E2eqn()); + E2eqn->solve(); } } } diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/EEqns.H b/applications/solvers/multiphase/twoPhaseEulerFoam/EEqns.H index 9d4af292b2..25b97c17a1 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/EEqns.H +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/EEqns.H @@ -7,7 +7,7 @@ volScalarField Kh(fluid.Kh()); - fvScalarMatrix he1Eqn + fvScalarMatrix E1Eqn ( fvm::ddt(alpha1, rho1, he1) + fvm::div(alphaRhoPhi1, he1) - fvm::Sp(contErr1, he1) @@ -28,17 +28,18 @@ ) ); - he1Eqn.relax(); + E1Eqn.relax(); - he1Eqn -= + E1Eqn -= ( Kh*(thermo2.T() - thermo1.T()) + Kh*he1/Cpv1 - fvm::Sp(Kh/Cpv1, he1) + + alpha1*rho1*(U1&g) + fvOptions(alpha1, rho1, he1) ); - fvScalarMatrix he2Eqn + fvScalarMatrix E2Eqn ( fvm::ddt(alpha2, rho2, he2) + fvm::div(alphaRhoPhi2, he2) - fvm::Sp(contErr2, he2) @@ -59,21 +60,22 @@ ) ); - he2Eqn.relax(); + E2Eqn.relax(); - he2Eqn -= + E2Eqn -= ( Kh*(thermo1.T() - thermo2.T()) + Kh*he2/Cpv2 - fvm::Sp(Kh/Cpv2, he2) + + alpha2*rho2*(U2&g) + fvOptions(alpha2, rho2, he2) ); - fvOptions.constrain(he1Eqn); - he1Eqn.solve(); + fvOptions.constrain(E1Eqn); + E1Eqn.solve(); - fvOptions.constrain(he2Eqn); - he2Eqn.solve(); + fvOptions.constrain(E2Eqn); + E2Eqn.solve(); thermo1.correct(); Info<< "min " << thermo1.T().name()