mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Thermo: move the he BC set functions into basicThermo
This commit is contained in:
@ -1,4 +1,3 @@
|
|||||||
derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C
|
|
||||||
compressibleInterFoam.C
|
compressibleInterFoam.C
|
||||||
|
|
||||||
EXE = $(FOAM_APPBIN)/compressibleInterFoam
|
EXE = $(FOAM_APPBIN)/compressibleInterFoam
|
||||||
|
|||||||
@ -1,16 +1,19 @@
|
|||||||
EXE_INC = \
|
EXE_INC = \
|
||||||
|
-ItwoPhaseThermo \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||||
-I$(LIB_SRC)/transportModels \
|
-I$(LIB_SRC)/transportModels \
|
||||||
-I$(LIB_SRC)/transportModels/incompressible/lnInclude \
|
-I$(LIB_SRC)/transportModels/incompressible/lnInclude \
|
||||||
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
|
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
|
||||||
-IphaseEquationsOfState/lnInclude \
|
|
||||||
-I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
|
-I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
|
||||||
-I$(LIB_SRC)/finiteVolume/lnInclude
|
-I$(LIB_SRC)/finiteVolume/lnInclude
|
||||||
|
|
||||||
EXE_LIBS = \
|
EXE_LIBS = \
|
||||||
|
-ltwoPhaseThermo \
|
||||||
|
-lfluidThermophysicalModels \
|
||||||
|
-lspecie \
|
||||||
-linterfaceProperties \
|
-linterfaceProperties \
|
||||||
-ltwoPhaseInterfaceProperties \
|
-ltwoPhaseInterfaceProperties \
|
||||||
-lincompressibleTransportModels \
|
-lincompressibleTransportModels \
|
||||||
-lphaseEquationsOfState \
|
|
||||||
-lincompressibleTurbulenceModel \
|
-lincompressibleTurbulenceModel \
|
||||||
-lincompressibleRASModels \
|
-lincompressibleRASModels \
|
||||||
-lincompressibleLESModels \
|
-lincompressibleLESModels \
|
||||||
|
|||||||
@ -1,20 +1,14 @@
|
|||||||
{
|
{
|
||||||
volScalarField kByCv
|
|
||||||
(
|
|
||||||
"kByCv",
|
|
||||||
(alpha1*k1/Cv1 + alpha2*k2/Cv2)
|
|
||||||
+ (alpha1*rho1 + alpha2*rho2)*turbulence->nut()
|
|
||||||
);
|
|
||||||
|
|
||||||
solve
|
solve
|
||||||
(
|
(
|
||||||
fvm::ddt(rho, T)
|
fvm::ddt(rho, T)
|
||||||
+ fvm::div(rhoPhi, T)
|
+ fvm::div(rhoPhi, T)
|
||||||
- fvm::laplacian(kByCv, T)
|
- fvm::laplacian(thermo.alphaEff(rho*turbulence->nut()), T)
|
||||||
+ p*fvc::div(phi)*(alpha1/Cv1 + alpha2/Cv2)
|
+ (
|
||||||
|
p*fvc::div(phi)
|
||||||
|
+ fvc::ddt(rho, K) + fvc::div(rhoPhi, K)
|
||||||
|
)*(alpha1/thermo.thermo1().Cv() + alpha2/thermo.thermo2().Cv())
|
||||||
);
|
);
|
||||||
|
|
||||||
// Update compressibilities
|
thermo.correct();
|
||||||
psi1 = eos1->psi(p, T);
|
|
||||||
psi2 = eos2->psi(p, T);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,4 +22,6 @@
|
|||||||
) * mesh.magSf()
|
) * mesh.magSf()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
K = 0.5*magSqr(U);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
EXE_INC = \
|
EXE_INC = \
|
||||||
-I.. \
|
-I.. \
|
||||||
|
-I../twoPhaseThermo \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||||
-I$(LIB_SRC)/transportModels \
|
-I$(LIB_SRC)/transportModels \
|
||||||
-I$(LIB_SRC)/transportModels/incompressible/lnInclude \
|
-I$(LIB_SRC)/transportModels/incompressible/lnInclude \
|
||||||
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
|
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
|
||||||
@ -11,6 +13,9 @@ EXE_INC = \
|
|||||||
-I$(LIB_SRC)/dynamicFvMesh/lnInclude
|
-I$(LIB_SRC)/dynamicFvMesh/lnInclude
|
||||||
|
|
||||||
EXE_LIBS = \
|
EXE_LIBS = \
|
||||||
|
-ltwoPhaseThermo \
|
||||||
|
-lfluidThermophysicalModels \
|
||||||
|
-lspecie \
|
||||||
-linterfaceProperties \
|
-linterfaceProperties \
|
||||||
-ltwoPhaseInterfaceProperties \
|
-ltwoPhaseInterfaceProperties \
|
||||||
-lincompressibleTransportModels \
|
-lincompressibleTransportModels \
|
||||||
|
|||||||
@ -43,7 +43,7 @@ Description
|
|||||||
#include "subCycle.H"
|
#include "subCycle.H"
|
||||||
#include "interfaceProperties.H"
|
#include "interfaceProperties.H"
|
||||||
#include "twoPhaseMixture.H"
|
#include "twoPhaseMixture.H"
|
||||||
#include "phaseEquationOfState.H"
|
#include "twoPhaseThermo.H"
|
||||||
#include "turbulenceModel.H"
|
#include "turbulenceModel.H"
|
||||||
#include "pimpleControl.H"
|
#include "pimpleControl.H"
|
||||||
|
|
||||||
|
|||||||
@ -38,9 +38,10 @@ Description
|
|||||||
#include "fvCFD.H"
|
#include "fvCFD.H"
|
||||||
#include "MULES.H"
|
#include "MULES.H"
|
||||||
#include "subCycle.H"
|
#include "subCycle.H"
|
||||||
|
#include "rhoThermo.H"
|
||||||
#include "interfaceProperties.H"
|
#include "interfaceProperties.H"
|
||||||
#include "twoPhaseMixture.H"
|
#include "twoPhaseMixture.H"
|
||||||
#include "phaseEquationOfState.H"
|
#include "twoPhaseThermo.H"
|
||||||
#include "turbulenceModel.H"
|
#include "turbulenceModel.H"
|
||||||
#include "pimpleControl.H"
|
#include "pimpleControl.H"
|
||||||
|
|
||||||
|
|||||||
@ -28,34 +28,6 @@
|
|||||||
|
|
||||||
#include "createPhi.H"
|
#include "createPhi.H"
|
||||||
|
|
||||||
Info<< "Reading field T\n" << endl;
|
|
||||||
volScalarField T
|
|
||||||
(
|
|
||||||
IOobject
|
|
||||||
(
|
|
||||||
"T",
|
|
||||||
runTime.timeName(),
|
|
||||||
mesh,
|
|
||||||
IOobject::MUST_READ,
|
|
||||||
IOobject::AUTO_WRITE
|
|
||||||
),
|
|
||||||
mesh
|
|
||||||
);
|
|
||||||
|
|
||||||
volScalarField p
|
|
||||||
(
|
|
||||||
IOobject
|
|
||||||
(
|
|
||||||
"p",
|
|
||||||
runTime.timeName(),
|
|
||||||
mesh,
|
|
||||||
IOobject::READ_IF_PRESENT,
|
|
||||||
IOobject::AUTO_WRITE
|
|
||||||
),
|
|
||||||
p_rgh
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
Info<< "Reading transportProperties\n" << endl;
|
Info<< "Reading transportProperties\n" << endl;
|
||||||
twoPhaseMixture twoPhaseProperties(U, phi);
|
twoPhaseMixture twoPhaseProperties(U, phi);
|
||||||
|
|
||||||
@ -69,91 +41,31 @@
|
|||||||
scalar(1) - alpha1
|
scalar(1) - alpha1
|
||||||
);
|
);
|
||||||
|
|
||||||
dimensionedScalar k1
|
Info<< "Reading thermophysical properties\n" << endl;
|
||||||
(
|
|
||||||
"k",
|
|
||||||
dimensionSet(1, 1, -3, -1, 0),
|
|
||||||
twoPhaseProperties.subDict
|
|
||||||
(
|
|
||||||
twoPhaseProperties.phase1Name()
|
|
||||||
).lookup("k")
|
|
||||||
);
|
|
||||||
|
|
||||||
dimensionedScalar k2
|
twoPhaseThermo thermo(mesh, alpha1, alpha2);
|
||||||
(
|
|
||||||
"k",
|
|
||||||
dimensionSet(1, 1, -3, -1, 0),
|
|
||||||
twoPhaseProperties.subDict
|
|
||||||
(
|
|
||||||
twoPhaseProperties.phase2Name()
|
|
||||||
).lookup("k")
|
|
||||||
);
|
|
||||||
|
|
||||||
dimensionedScalar Cv1
|
volScalarField& rho = thermo.rho();
|
||||||
(
|
volScalarField& p = thermo.p();
|
||||||
"Cv",
|
volScalarField& T = thermo.T();
|
||||||
dimensionSet(0, 2, -2, -1, 0),
|
const volScalarField& rho1 = thermo.thermo1().rho();
|
||||||
twoPhaseProperties.subDict
|
const volScalarField& psi1 = thermo.thermo1().psi();
|
||||||
(
|
const volScalarField& rho2 = thermo.thermo2().rho();
|
||||||
twoPhaseProperties.phase1Name()
|
const volScalarField& psi2 = thermo.thermo2().psi();
|
||||||
).lookup("Cv")
|
|
||||||
);
|
|
||||||
|
|
||||||
dimensionedScalar Cv2
|
// volScalarField rho
|
||||||
(
|
// (
|
||||||
"Cv",
|
// IOobject
|
||||||
dimensionSet(0, 2, -2, -1, 0),
|
// (
|
||||||
twoPhaseProperties.subDict
|
// "rho",
|
||||||
(
|
// runTime.timeName(),
|
||||||
twoPhaseProperties.phase2Name()
|
// mesh,
|
||||||
).lookup("Cv")
|
// IOobject::READ_IF_PRESENT,
|
||||||
);
|
// IOobject::AUTO_WRITE
|
||||||
|
// ),
|
||||||
|
// alpha1*rho1 + alpha2*rho2
|
||||||
|
// );
|
||||||
|
|
||||||
autoPtr<phaseEquationOfState> eos1
|
|
||||||
(
|
|
||||||
phaseEquationOfState::New
|
|
||||||
(
|
|
||||||
twoPhaseProperties.subDict
|
|
||||||
(
|
|
||||||
twoPhaseProperties.phase1Name()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
autoPtr<phaseEquationOfState> eos2
|
|
||||||
(
|
|
||||||
phaseEquationOfState::New
|
|
||||||
(
|
|
||||||
twoPhaseProperties.subDict
|
|
||||||
(
|
|
||||||
twoPhaseProperties.phase2Name()
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
volScalarField psi1
|
|
||||||
(
|
|
||||||
IOobject
|
|
||||||
(
|
|
||||||
"psi1",
|
|
||||||
runTime.timeName(),
|
|
||||||
mesh
|
|
||||||
),
|
|
||||||
eos1->psi(p, T)
|
|
||||||
);
|
|
||||||
psi1.oldTime();
|
|
||||||
|
|
||||||
volScalarField psi2
|
|
||||||
(
|
|
||||||
IOobject
|
|
||||||
(
|
|
||||||
"psi2",
|
|
||||||
runTime.timeName(),
|
|
||||||
mesh
|
|
||||||
),
|
|
||||||
eos2->psi(p, T)
|
|
||||||
);
|
|
||||||
psi2.oldTime();
|
|
||||||
|
|
||||||
dimensionedScalar pMin(twoPhaseProperties.lookup("pMin"));
|
dimensionedScalar pMin(twoPhaseProperties.lookup("pMin"));
|
||||||
|
|
||||||
@ -161,23 +73,6 @@
|
|||||||
volScalarField gh("gh", g & mesh.C());
|
volScalarField gh("gh", g & mesh.C());
|
||||||
surfaceScalarField ghf("ghf", g & mesh.Cf());
|
surfaceScalarField ghf("ghf", g & mesh.Cf());
|
||||||
|
|
||||||
volScalarField rho1("rho1", eos1->rho(p, T));
|
|
||||||
volScalarField rho2("rho2", eos2->rho(p, T));
|
|
||||||
|
|
||||||
volScalarField rho
|
|
||||||
(
|
|
||||||
IOobject
|
|
||||||
(
|
|
||||||
"rho",
|
|
||||||
runTime.timeName(),
|
|
||||||
mesh,
|
|
||||||
IOobject::READ_IF_PRESENT,
|
|
||||||
IOobject::AUTO_WRITE
|
|
||||||
),
|
|
||||||
alpha1*rho1 + alpha2*rho2
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// Mass flux
|
// Mass flux
|
||||||
// Initialisation does not matter because rhoPhi is reset after the
|
// Initialisation does not matter because rhoPhi is reset after the
|
||||||
// alpha1 solution before it is used in the U equation.
|
// alpha1 solution before it is used in the U equation.
|
||||||
@ -207,3 +102,19 @@
|
|||||||
(
|
(
|
||||||
incompressible::turbulenceModel::New(U, phi, twoPhaseProperties)
|
incompressible::turbulenceModel::New(U, phi, twoPhaseProperties)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Info<< "Creating field dpdt\n" << endl;
|
||||||
|
volScalarField dpdt
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"dpdt",
|
||||||
|
runTime.timeName(),
|
||||||
|
mesh
|
||||||
|
),
|
||||||
|
mesh,
|
||||||
|
dimensionedScalar("dpdt", p.dimensions()/dimTime, 0)
|
||||||
|
);
|
||||||
|
|
||||||
|
Info<< "Creating field kinetic energy K\n" << endl;
|
||||||
|
volScalarField K("K", 0.5*magSqr(U));
|
||||||
|
|||||||
@ -1,7 +1,4 @@
|
|||||||
{
|
{
|
||||||
rho1 = eos1->rho(p, T);
|
|
||||||
rho2 = eos2->rho(p, T);
|
|
||||||
|
|
||||||
volScalarField rAU("rAU", 1.0/UEqn.A());
|
volScalarField rAU("rAU", 1.0/UEqn.A());
|
||||||
surfaceScalarField rAUf("Dp", fvc::interpolate(rAU));
|
surfaceScalarField rAUf("Dp", fvc::interpolate(rAU));
|
||||||
|
|
||||||
@ -91,9 +88,15 @@
|
|||||||
|
|
||||||
p = max(p_rgh + (alpha1*rho1 + alpha2*rho2)*gh, pMin);
|
p = max(p_rgh + (alpha1*rho1 + alpha2*rho2)*gh, pMin);
|
||||||
|
|
||||||
rho1 = eos1->rho(p, T);
|
// thermo.correct();
|
||||||
rho2 = eos2->rho(p, T);
|
|
||||||
|
|
||||||
Info<< "max(U) " << max(mag(U)).value() << endl;
|
Info<< "max(U) " << max(mag(U)).value() << endl;
|
||||||
Info<< "min(p_rgh) " << min(p_rgh).value() << endl;
|
Info<< "min(p_rgh) " << min(p_rgh).value() << endl;
|
||||||
|
|
||||||
|
K = 0.5*magSqr(U);
|
||||||
|
|
||||||
|
if (thermo.dpdt())
|
||||||
|
{
|
||||||
|
dpdt = fvc::ddt(p);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,3 @@
|
|||||||
|
twoPhaseThermo.C
|
||||||
|
|
||||||
|
LIB = $(FOAM_LIBBIN)/libtwoPhaseThermo
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
EXE_INC = \
|
||||||
|
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||||
|
-I$(LIB_SRC)/finiteVolume/lnInclude
|
||||||
|
|
||||||
|
LIB_LIBS = \
|
||||||
|
-lfluidThermophysicalModels \
|
||||||
|
-lspecie \
|
||||||
|
-lfiniteVolume
|
||||||
@ -0,0 +1,365 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "twoPhaseThermo.H"
|
||||||
|
#include "gradientEnergyFvPatchScalarField.H"
|
||||||
|
#include "mixedEnergyFvPatchScalarField.H"
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(twoPhaseThermo, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::twoPhaseThermo::twoPhaseThermo
|
||||||
|
(
|
||||||
|
const fvMesh& mesh,
|
||||||
|
const volScalarField& alpha1,
|
||||||
|
const volScalarField& alpha2,
|
||||||
|
const word& phaseName
|
||||||
|
)
|
||||||
|
:
|
||||||
|
rhoThermo(mesh, phaseName),
|
||||||
|
phaseName1_("1"),
|
||||||
|
phaseName2_("2"),
|
||||||
|
alpha1_(alpha1),
|
||||||
|
alpha2_(alpha2),
|
||||||
|
thermo1_(rhoThermo::New(mesh, phaseName1_)),
|
||||||
|
thermo2_(rhoThermo::New(mesh, phaseName2_)),
|
||||||
|
he_
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
phasePropertyName
|
||||||
|
(
|
||||||
|
"he"
|
||||||
|
),
|
||||||
|
mesh.time().timeName(),
|
||||||
|
mesh,
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::NO_WRITE
|
||||||
|
),
|
||||||
|
mesh,
|
||||||
|
dimEnergy/dimMass,
|
||||||
|
heBoundaryTypes(),
|
||||||
|
heBoundaryBaseTypes()
|
||||||
|
)
|
||||||
|
{
|
||||||
|
thermo1_->validate("phaseModel 1", "e");
|
||||||
|
thermo2_->validate("phaseModel 2", "e");
|
||||||
|
|
||||||
|
rho_ = alpha1_*thermo1_->rho() + alpha2_*thermo2_->rho();
|
||||||
|
|
||||||
|
he_ =
|
||||||
|
(
|
||||||
|
alpha1_*thermo1_->rho()*thermo1_->he()
|
||||||
|
+ alpha2_*thermo2_->rho()*thermo2_->he()
|
||||||
|
)/rho_;
|
||||||
|
|
||||||
|
volScalarField::GeometricBoundaryField& hbf = he_.boundaryField();
|
||||||
|
|
||||||
|
forAll(hbf, patchi)
|
||||||
|
{
|
||||||
|
if (isA<gradientEnergyFvPatchScalarField>(hbf[patchi]))
|
||||||
|
{
|
||||||
|
refCast<gradientEnergyFvPatchScalarField>(hbf[patchi]).gradient()
|
||||||
|
= hbf[patchi].fvPatchField::snGrad();
|
||||||
|
}
|
||||||
|
else if (isA<mixedEnergyFvPatchScalarField>(hbf[patchi]))
|
||||||
|
{
|
||||||
|
refCast<mixedEnergyFvPatchScalarField>(hbf[patchi]).refGrad()
|
||||||
|
= hbf[patchi].fvPatchField::snGrad();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
correct();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::twoPhaseThermo::~twoPhaseThermo()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
void Foam::twoPhaseThermo::correct()
|
||||||
|
{
|
||||||
|
thermo1_->he() = thermo1_->he(p_, T_);
|
||||||
|
thermo1_->correct();
|
||||||
|
|
||||||
|
thermo2_->he() = thermo2_->he(p_, T_);
|
||||||
|
thermo2_->correct();
|
||||||
|
|
||||||
|
psi_ = alpha1_*thermo1_->psi() + alpha2_*thermo2_->psi();
|
||||||
|
mu_ = alpha1_*thermo1_->mu() + alpha2_*thermo2_->mu();
|
||||||
|
alpha_ = alpha1_*thermo1_->alpha() + alpha2_*thermo2_->alpha();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Foam::twoPhaseThermo::incompressible() const
|
||||||
|
{
|
||||||
|
return thermo1_->incompressible() && thermo2_->incompressible();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Foam::twoPhaseThermo::isochoric() const
|
||||||
|
{
|
||||||
|
return thermo1_->isochoric() && thermo2_->isochoric();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::volScalarField> Foam::twoPhaseThermo::he
|
||||||
|
(
|
||||||
|
const volScalarField& p,
|
||||||
|
const volScalarField& T
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return alpha1_*thermo1_->he(p, T) + alpha2_*thermo2_->he(p, T);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField> Foam::twoPhaseThermo::he
|
||||||
|
(
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T,
|
||||||
|
const labelList& cells
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
scalarField(alpha1_, cells)*thermo1_->he(p, T, cells)
|
||||||
|
+ scalarField(alpha2_, cells)*thermo2_->he(p, T, cells);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField> Foam::twoPhaseThermo::he
|
||||||
|
(
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T,
|
||||||
|
const label patchi
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
alpha1_.boundaryField()[patchi]*thermo1_->he(p, T, patchi)
|
||||||
|
+ alpha2_.boundaryField()[patchi]*thermo2_->he(p, T, patchi);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::volScalarField> Foam::twoPhaseThermo::hc() const
|
||||||
|
{
|
||||||
|
return alpha1_*thermo1_->hc() + alpha2_*thermo2_->hc();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField> Foam::twoPhaseThermo::THE
|
||||||
|
(
|
||||||
|
const scalarField& h,
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T0,
|
||||||
|
const labelList& cells
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
notImplemented("Foam::twoPhaseThermo::THE");
|
||||||
|
return T0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField> Foam::twoPhaseThermo::THE
|
||||||
|
(
|
||||||
|
const scalarField& h,
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T0,
|
||||||
|
const label patchi
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
notImplemented("Foam::twoPhaseThermo::THE");
|
||||||
|
return T0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::volScalarField> Foam::twoPhaseThermo::Cp() const
|
||||||
|
{
|
||||||
|
return alpha1_*thermo1_->Cp() + alpha2_*thermo2_->Cp();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField> Foam::twoPhaseThermo::Cp
|
||||||
|
(
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T,
|
||||||
|
const label patchi
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
alpha1_.boundaryField()[patchi]*thermo1_->Cp(p, T, patchi)
|
||||||
|
+ alpha2_.boundaryField()[patchi]*thermo2_->Cp(p, T, patchi);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::volScalarField> Foam::twoPhaseThermo::Cv() const
|
||||||
|
{
|
||||||
|
return alpha1_*thermo1_->Cv() + alpha2_*thermo2_->Cv();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField> Foam::twoPhaseThermo::Cv
|
||||||
|
(
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T,
|
||||||
|
const label patchi
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
alpha1_.boundaryField()[patchi]*thermo1_->Cv(p, T, patchi)
|
||||||
|
+ alpha2_.boundaryField()[patchi]*thermo2_->Cv(p, T, patchi);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::volScalarField> Foam::twoPhaseThermo::gamma() const
|
||||||
|
{
|
||||||
|
return alpha1_*thermo1_->gamma() + alpha2_*thermo2_->gamma();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField> Foam::twoPhaseThermo::gamma
|
||||||
|
(
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T,
|
||||||
|
const label patchi
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
alpha1_.boundaryField()[patchi]*thermo1_->gamma(p, T, patchi)
|
||||||
|
+ alpha2_.boundaryField()[patchi]*thermo2_->gamma(p, T, patchi);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::volScalarField> Foam::twoPhaseThermo::Cpv() const
|
||||||
|
{
|
||||||
|
return alpha1_*thermo1_->Cpv() + alpha2_*thermo2_->Cpv();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField> Foam::twoPhaseThermo::Cpv
|
||||||
|
(
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T,
|
||||||
|
const label patchi
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
alpha1_.boundaryField()[patchi]*thermo1_->Cpv(p, T, patchi)
|
||||||
|
+ alpha2_.boundaryField()[patchi]*thermo2_->Cpv(p, T, patchi);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::volScalarField> Foam::twoPhaseThermo::CpByCpv() const
|
||||||
|
{
|
||||||
|
return alpha1_*thermo1_->CpByCpv() + alpha2_*thermo2_->CpByCpv();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField> Foam::twoPhaseThermo::CpByCpv
|
||||||
|
(
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T,
|
||||||
|
const label patchi
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
alpha1_.boundaryField()[patchi]*thermo1_->CpByCpv(p, T, patchi)
|
||||||
|
+ alpha2_.boundaryField()[patchi]*thermo2_->CpByCpv(p, T, patchi);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::volScalarField> Foam::twoPhaseThermo::kappa() const
|
||||||
|
{
|
||||||
|
return alpha1_*thermo1_->kappa() + alpha2_*thermo2_->kappa();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField> Foam::twoPhaseThermo::kappa
|
||||||
|
(
|
||||||
|
const label patchi
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
alpha1_.boundaryField()[patchi]*thermo1_->kappa(patchi)
|
||||||
|
+ alpha2_.boundaryField()[patchi]*thermo2_->kappa(patchi);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::volScalarField> Foam::twoPhaseThermo::kappaEff
|
||||||
|
(
|
||||||
|
const volScalarField& alphat
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
alpha1_*thermo1_->kappaEff(alphat)
|
||||||
|
+ alpha2_*thermo2_->kappaEff(alphat);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField> Foam::twoPhaseThermo::kappaEff
|
||||||
|
(
|
||||||
|
const scalarField& alphat,
|
||||||
|
const label patchi
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
alpha1_.boundaryField()[patchi]*thermo1_->kappaEff(alphat, patchi)
|
||||||
|
+ alpha2_.boundaryField()[patchi]*thermo2_->kappaEff(alphat, patchi);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::volScalarField> Foam::twoPhaseThermo::alphaEff
|
||||||
|
(
|
||||||
|
const volScalarField& alphat
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
alpha1_*thermo1_->alphaEff(alphat)
|
||||||
|
+ alpha2_*thermo2_->alphaEff(alphat);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField> Foam::twoPhaseThermo::alphaEff
|
||||||
|
(
|
||||||
|
const scalarField& alphat,
|
||||||
|
const label patchi
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
alpha1_.boundaryField()[patchi]*thermo1_->alphaEff(alphat, patchi)
|
||||||
|
+ alpha2_.boundaryField()[patchi]*thermo2_->alphaEff(alphat, patchi);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,290 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::twoPhaseThermo
|
||||||
|
|
||||||
|
Description
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
twoPhaseThermoI.H
|
||||||
|
twoPhaseThermo.C
|
||||||
|
twoPhaseThermoIO.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef twoPhaseThermo_H
|
||||||
|
#define twoPhaseThermo_H
|
||||||
|
|
||||||
|
#include "rhoThermo.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class twoPhaseThermo Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class twoPhaseThermo
|
||||||
|
:
|
||||||
|
public rhoThermo
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Name of phase 1
|
||||||
|
word phaseName1_;
|
||||||
|
|
||||||
|
//- Name of phase 2
|
||||||
|
word phaseName2_;
|
||||||
|
|
||||||
|
//- Phase-fraction of phase 1
|
||||||
|
const volScalarField& alpha1_;
|
||||||
|
|
||||||
|
//- Phase-fraction of phase2
|
||||||
|
const volScalarField& alpha2_;
|
||||||
|
|
||||||
|
//- Thermo-package of phase 1
|
||||||
|
autoPtr<rhoThermo> thermo1_;
|
||||||
|
|
||||||
|
//- Thermo-package of phase 2
|
||||||
|
autoPtr<rhoThermo> thermo2_;
|
||||||
|
|
||||||
|
//- Energy field
|
||||||
|
volScalarField he_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("twoPhaseThermo");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from mesh and phase fractions
|
||||||
|
twoPhaseThermo
|
||||||
|
(
|
||||||
|
const fvMesh&,
|
||||||
|
const volScalarField& alpha1,
|
||||||
|
const volScalarField& alpha2,
|
||||||
|
const word& phaseName=word::null
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~twoPhaseThermo();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
const rhoThermo& thermo1() const
|
||||||
|
{
|
||||||
|
return thermo1_();
|
||||||
|
}
|
||||||
|
|
||||||
|
const rhoThermo& thermo2() const
|
||||||
|
{
|
||||||
|
return thermo2_();
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Update properties
|
||||||
|
virtual void correct();
|
||||||
|
|
||||||
|
//- Return true if the equation of state is incompressible
|
||||||
|
// i.e. rho != f(p)
|
||||||
|
virtual bool incompressible() const;
|
||||||
|
|
||||||
|
//- Return true if the equation of state is isochoric
|
||||||
|
// i.e. rho = const
|
||||||
|
virtual bool isochoric() const;
|
||||||
|
|
||||||
|
|
||||||
|
// Access to thermodynamic state variables
|
||||||
|
|
||||||
|
//- Enthalpy/Internal energy [J/kg]
|
||||||
|
// Non-const access allowed for transport equations
|
||||||
|
virtual volScalarField& he()
|
||||||
|
{
|
||||||
|
return he_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Enthalpy/Internal energy [J/kg]
|
||||||
|
virtual const volScalarField& he() const
|
||||||
|
{
|
||||||
|
return he_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Enthalpy/Internal energy
|
||||||
|
// for given pressure and temperature [J/kg]
|
||||||
|
virtual tmp<volScalarField> he
|
||||||
|
(
|
||||||
|
const volScalarField& p,
|
||||||
|
const volScalarField& T
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Enthalpy/Internal energy for cell-set [J/kg]
|
||||||
|
virtual tmp<scalarField> he
|
||||||
|
(
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T,
|
||||||
|
const labelList& cells
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Enthalpy/Internal energy for patch [J/kg]
|
||||||
|
virtual tmp<scalarField> he
|
||||||
|
(
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T,
|
||||||
|
const label patchi
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Chemical enthalpy [J/kg]
|
||||||
|
virtual tmp<volScalarField> hc() const;
|
||||||
|
|
||||||
|
//- Temperature from enthalpy/internal energy for cell-set
|
||||||
|
virtual tmp<scalarField> THE
|
||||||
|
(
|
||||||
|
const scalarField& h,
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T0, // starting temperature
|
||||||
|
const labelList& cells
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Temperature from enthalpy/internal energy for patch
|
||||||
|
virtual tmp<scalarField> THE
|
||||||
|
(
|
||||||
|
const scalarField& h,
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T0, // starting temperature
|
||||||
|
const label patchi
|
||||||
|
) const;
|
||||||
|
|
||||||
|
|
||||||
|
// Fields derived from thermodynamic state variables
|
||||||
|
|
||||||
|
//- Heat capacity at constant pressure [J/kg/K]
|
||||||
|
virtual tmp<volScalarField> Cp() const;
|
||||||
|
|
||||||
|
//- Heat capacity at constant pressure for patch [J/kg/K]
|
||||||
|
virtual tmp<scalarField> Cp
|
||||||
|
(
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T,
|
||||||
|
const label patchi
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Heat capacity at constant volume [J/kg/K]
|
||||||
|
virtual tmp<volScalarField> Cv() const;
|
||||||
|
|
||||||
|
//- Heat capacity at constant volume for patch [J/kg/K]
|
||||||
|
virtual tmp<scalarField> Cv
|
||||||
|
(
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T,
|
||||||
|
const label patchi
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- gamma = Cp/Cv []
|
||||||
|
virtual tmp<volScalarField> gamma() const;
|
||||||
|
|
||||||
|
//- gamma = Cp/Cv for patch []
|
||||||
|
virtual tmp<scalarField> gamma
|
||||||
|
(
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T,
|
||||||
|
const label patchi
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Heat capacity at constant pressure/volume [J/kg/K]
|
||||||
|
virtual tmp<volScalarField> Cpv() const;
|
||||||
|
|
||||||
|
//- Heat capacity at constant pressure/volume for patch [J/kg/K]
|
||||||
|
virtual tmp<scalarField> Cpv
|
||||||
|
(
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T,
|
||||||
|
const label patchi
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Heat capacity ratio []
|
||||||
|
virtual tmp<volScalarField> CpByCpv() const;
|
||||||
|
|
||||||
|
//- Heat capacity ratio for patch []
|
||||||
|
virtual tmp<scalarField> CpByCpv
|
||||||
|
(
|
||||||
|
const scalarField& p,
|
||||||
|
const scalarField& T,
|
||||||
|
const label patchi
|
||||||
|
) const;
|
||||||
|
|
||||||
|
|
||||||
|
// Fields derived from transport state variables
|
||||||
|
|
||||||
|
//- Thermal diffusivity for temperature of mixture [J/m/s/K]
|
||||||
|
virtual tmp<volScalarField> kappa() const;
|
||||||
|
|
||||||
|
//- Thermal diffusivity of mixture for patch [J/m/s/K]
|
||||||
|
virtual tmp<scalarField> kappa
|
||||||
|
(
|
||||||
|
const label patchi
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Effective thermal diffusivity of mixture [J/m/s/K]
|
||||||
|
virtual tmp<volScalarField> kappaEff
|
||||||
|
(
|
||||||
|
const volScalarField& alphat
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Effective thermal diffusivity of mixture for patch [J/m/s/K]
|
||||||
|
virtual tmp<scalarField> kappaEff
|
||||||
|
(
|
||||||
|
const scalarField& alphat,
|
||||||
|
const label patchi
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Effective thermal diffusivity of mixture [J/m/s/K]
|
||||||
|
virtual tmp<volScalarField> alphaEff
|
||||||
|
(
|
||||||
|
const volScalarField& alphat
|
||||||
|
) const;
|
||||||
|
|
||||||
|
//- Effective thermal diffusivity of mixture for patch [J/m/s/K]
|
||||||
|
virtual tmp<scalarField> alphaEff
|
||||||
|
(
|
||||||
|
const scalarField& alphat,
|
||||||
|
const label patchi
|
||||||
|
) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: dev |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "constant";
|
||||||
|
object thermophysicalProperties;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,53 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: dev |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "constant";
|
||||||
|
object thermophysicalProperties;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
thermoType
|
||||||
|
{
|
||||||
|
type heRhoThermo;
|
||||||
|
mixture pureMixture;
|
||||||
|
transport const;
|
||||||
|
thermo hConst;
|
||||||
|
equationOfState perfectFluid;
|
||||||
|
specie specie;
|
||||||
|
energy sensibleInternalEnergy;
|
||||||
|
}
|
||||||
|
|
||||||
|
mixture
|
||||||
|
{
|
||||||
|
specie
|
||||||
|
{
|
||||||
|
nMoles 1;
|
||||||
|
molWeight 28.9; //2.77;
|
||||||
|
}
|
||||||
|
equationOfState
|
||||||
|
{
|
||||||
|
rho0 1027;
|
||||||
|
}
|
||||||
|
thermodynamics
|
||||||
|
{
|
||||||
|
Cp 4195;
|
||||||
|
Hf 0;
|
||||||
|
}
|
||||||
|
transport
|
||||||
|
{
|
||||||
|
mu 3.645e-4;
|
||||||
|
Pr 2.289;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,49 @@
|
|||||||
|
/*--------------------------------*- C++ -*----------------------------------*\
|
||||||
|
| ========= | |
|
||||||
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||||
|
| \\ / O peration | Version: dev |
|
||||||
|
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||||
|
| \\/ M anipulation | |
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
FoamFile
|
||||||
|
{
|
||||||
|
version 2.0;
|
||||||
|
format ascii;
|
||||||
|
class dictionary;
|
||||||
|
location "constant";
|
||||||
|
object thermophysicalProperties;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
thermoType
|
||||||
|
{
|
||||||
|
type heRhoThermo;
|
||||||
|
mixture pureMixture;
|
||||||
|
transport const;
|
||||||
|
thermo hConst;
|
||||||
|
equationOfState perfectGas;
|
||||||
|
specie specie;
|
||||||
|
energy sensibleInternalEnergy;
|
||||||
|
}
|
||||||
|
|
||||||
|
mixture
|
||||||
|
{
|
||||||
|
specie
|
||||||
|
{
|
||||||
|
nMoles 1;
|
||||||
|
molWeight 28.9;
|
||||||
|
}
|
||||||
|
thermodynamics
|
||||||
|
{
|
||||||
|
Cp 1007;
|
||||||
|
Hf 0;
|
||||||
|
}
|
||||||
|
transport
|
||||||
|
{
|
||||||
|
mu 1.84e-05;
|
||||||
|
Pr 0.7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -22,16 +22,6 @@ water
|
|||||||
transportModel Newtonian;
|
transportModel Newtonian;
|
||||||
nu 1e-06;
|
nu 1e-06;
|
||||||
rho 1000;
|
rho 1000;
|
||||||
k 0; // 0.613;
|
|
||||||
Cv 4179;
|
|
||||||
|
|
||||||
equationOfState
|
|
||||||
{
|
|
||||||
type perfectFluid;
|
|
||||||
|
|
||||||
rho0 1000;
|
|
||||||
R 3000;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
air
|
air
|
||||||
@ -39,16 +29,6 @@ air
|
|||||||
transportModel Newtonian;
|
transportModel Newtonian;
|
||||||
nu 1.589e-05;
|
nu 1.589e-05;
|
||||||
rho 1;
|
rho 1;
|
||||||
k 0; // 2.63e-2;
|
|
||||||
Cv 721;
|
|
||||||
|
|
||||||
equationOfState
|
|
||||||
{
|
|
||||||
type perfectFluid;
|
|
||||||
|
|
||||||
rho0 0;
|
|
||||||
R 287;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pMin pMin [ 1 -1 -2 0 0 0 0 ] 10000;
|
pMin pMin [ 1 -1 -2 0 0 0 0 ] 10000;
|
||||||
|
|||||||
@ -33,6 +33,7 @@ divSchemes
|
|||||||
div(phid1,p_rgh) Gauss upwind;
|
div(phid1,p_rgh) Gauss upwind;
|
||||||
div(phid2,p_rgh) Gauss upwind;
|
div(phid2,p_rgh) Gauss upwind;
|
||||||
div(rho*phi,T) Gauss upwind;
|
div(rho*phi,T) Gauss upwind;
|
||||||
|
div(rho*phi,K) Gauss upwind;
|
||||||
div(phi,k) Gauss vanLeer;
|
div(phi,k) Gauss vanLeer;
|
||||||
div((muEff*dev(T(grad(U))))) Gauss linear;
|
div((muEff*dev(T(grad(U))))) Gauss linear;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,7 +39,7 @@ solvers
|
|||||||
maxIter 100;
|
maxIter 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
"(rho|rhoFinal)"
|
".*(rho|rhoFinal)"
|
||||||
{
|
{
|
||||||
solver diagonal;
|
solver diagonal;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user