mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
compressibleInterFoam: Added thermal support
This commit is contained in:
@ -1,3 +1,4 @@
|
|||||||
|
derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.C
|
||||||
compressibleInterFoam.C
|
compressibleInterFoam.C
|
||||||
|
|
||||||
EXE = $(FOAM_APPBIN)/compressibleInterFoam
|
EXE = $(FOAM_APPBIN)/compressibleInterFoam
|
||||||
|
|||||||
20
applications/solvers/multiphase/compressibleInterFoam/TEqn.H
Normal file
20
applications/solvers/multiphase/compressibleInterFoam/TEqn.H
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
volScalarField kByCv
|
||||||
|
(
|
||||||
|
"kByCv",
|
||||||
|
(alpha1*k1/Cv1 + alpha2*k2/Cv2)
|
||||||
|
+ (alpha1*rho1 + alpha2*rho2)*turbulence->nut()
|
||||||
|
);
|
||||||
|
|
||||||
|
solve
|
||||||
|
(
|
||||||
|
fvm::ddt(rho, T)
|
||||||
|
+ fvm::div(rhoPhi, T)
|
||||||
|
- fvm::laplacian(kByCv, T)
|
||||||
|
+ p*fvc::div(phi)*(alpha1/Cv1 + alpha2/Cv2)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Update compressibilities
|
||||||
|
psi1 = 1.0/(R1*T);
|
||||||
|
psi2 = 1.0/(R2*T);
|
||||||
|
}
|
||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -25,7 +25,7 @@ Application
|
|||||||
compressibleInterDyMFoam
|
compressibleInterDyMFoam
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Solver for 2 compressible, isothermal immiscible fluids using a VOF
|
Solver for 2 compressible, non-isothermal immiscible fluids using a VOF
|
||||||
(volume of fluid) phase-fraction based interface capturing approach,
|
(volume of fluid) phase-fraction based interface capturing approach,
|
||||||
with optional mesh motion and mesh topology changes including adaptive
|
with optional mesh motion and mesh topology changes including adaptive
|
||||||
re-meshing.
|
re-meshing.
|
||||||
@ -124,11 +124,15 @@ int main(int argc, char *argv[])
|
|||||||
solve(fvm::ddt(rho) + fvc::div(rhoPhi));
|
solve(fvm::ddt(rho) + fvc::div(rhoPhi));
|
||||||
|
|
||||||
#include "UEqn.H"
|
#include "UEqn.H"
|
||||||
|
#include "TEqn.H"
|
||||||
|
|
||||||
// --- Pressure corrector loop
|
// --- Pressure corrector loop
|
||||||
while (pimple.correct())
|
while (pimple.correct())
|
||||||
{
|
{
|
||||||
#include "pEqn.H"
|
#include "pEqn.H"
|
||||||
|
|
||||||
|
// Make the fluxes relative to the mesh motion
|
||||||
|
fvc::makeRelative(phi, U);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,88 +0,0 @@
|
|||||||
{
|
|
||||||
volScalarField rAU(1.0/UEqn.A());
|
|
||||||
surfaceScalarField rAUf(fvc::interpolate(rAU));
|
|
||||||
|
|
||||||
tmp<fvScalarMatrix> p_rghEqnComp;
|
|
||||||
|
|
||||||
if (pimple.transonic())
|
|
||||||
{
|
|
||||||
p_rghEqnComp =
|
|
||||||
(
|
|
||||||
fvm::ddt(p_rgh)
|
|
||||||
+ fvm::div(phi, p_rgh)
|
|
||||||
- fvm::Sp(fvc::div(phi), p_rgh)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
p_rghEqnComp =
|
|
||||||
(
|
|
||||||
fvm::ddt(p_rgh)
|
|
||||||
+ fvc::div(phi, p_rgh)
|
|
||||||
- fvc::Sp(fvc::div(phi), p_rgh)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
U = rAU*UEqn.H();
|
|
||||||
|
|
||||||
surfaceScalarField phiU
|
|
||||||
(
|
|
||||||
"phiU",
|
|
||||||
(fvc::interpolate(U) & mesh.Sf())
|
|
||||||
+ fvc::ddtPhiCorr(rAU, rho, U, phi)
|
|
||||||
);
|
|
||||||
|
|
||||||
phi = phiU +
|
|
||||||
(
|
|
||||||
fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
|
|
||||||
- ghf*fvc::snGrad(rho)
|
|
||||||
)*rAUf*mesh.magSf();
|
|
||||||
|
|
||||||
while (pimple.correctNonOrthogonal())
|
|
||||||
{
|
|
||||||
fvScalarMatrix p_rghEqnIncomp
|
|
||||||
(
|
|
||||||
fvc::div(phi)
|
|
||||||
- fvm::laplacian(rAUf, p_rgh)
|
|
||||||
);
|
|
||||||
|
|
||||||
solve
|
|
||||||
(
|
|
||||||
(
|
|
||||||
max(alpha1, scalar(0))*(psi1/rho1)
|
|
||||||
+ max(alpha2, scalar(0))*(psi2/rho2)
|
|
||||||
)
|
|
||||||
*p_rghEqnComp()
|
|
||||||
+ p_rghEqnIncomp,
|
|
||||||
mesh.solver(p_rgh.select(pimple.finalInnerIter()))
|
|
||||||
);
|
|
||||||
|
|
||||||
if (pimple.finalNonOrthogonalIter())
|
|
||||||
{
|
|
||||||
dgdt =
|
|
||||||
(pos(alpha2)*(psi2/rho2) - pos(alpha1)*(psi1/rho1))
|
|
||||||
*(p_rghEqnComp & p_rgh);
|
|
||||||
phi += p_rghEqnIncomp.flux();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
U += rAU*fvc::reconstruct((phi - phiU)/rAUf);
|
|
||||||
U.correctBoundaryConditions();
|
|
||||||
|
|
||||||
p = max
|
|
||||||
(
|
|
||||||
(p_rgh + gh*(alpha1*rho10 + alpha2*rho20))
|
|
||||||
/(1.0 - gh*(alpha1*psi1 + alpha2*psi2)),
|
|
||||||
pMin
|
|
||||||
);
|
|
||||||
|
|
||||||
rho1 = rho10 + psi1*p;
|
|
||||||
rho2 = rho20 + psi2*p;
|
|
||||||
|
|
||||||
Info<< "max(U) " << max(mag(U)).value() << endl;
|
|
||||||
Info<< "min(p_rgh) " << min(p_rgh).value() << endl;
|
|
||||||
|
|
||||||
// Make the fluxes relative to the mesh motion
|
|
||||||
fvc::makeRelative(phi, U);
|
|
||||||
}
|
|
||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -25,7 +25,7 @@ Application
|
|||||||
compressibleInterFoam
|
compressibleInterFoam
|
||||||
|
|
||||||
Description
|
Description
|
||||||
Solver for 2 compressible, isothermal immiscible fluids using a VOF
|
Solver for 2 compressible, non-isothermal immiscible fluids using a VOF
|
||||||
(volume of fluid) phase-fraction based interface capturing approach.
|
(volume of fluid) phase-fraction based interface capturing approach.
|
||||||
|
|
||||||
The momentum and other fluid properties are of the "mixture" and a single
|
The momentum and other fluid properties are of the "mixture" and a single
|
||||||
@ -82,6 +82,7 @@ int main(int argc, char *argv[])
|
|||||||
solve(fvm::ddt(rho) + fvc::div(rhoPhi));
|
solve(fvm::ddt(rho) + fvc::div(rhoPhi));
|
||||||
|
|
||||||
#include "UEqn.H"
|
#include "UEqn.H"
|
||||||
|
#include "TEqn.H"
|
||||||
|
|
||||||
// --- Pressure corrector loop
|
// --- Pressure corrector loop
|
||||||
while (pimple.correct())
|
while (pimple.correct())
|
||||||
|
|||||||
@ -12,23 +12,6 @@
|
|||||||
mesh
|
mesh
|
||||||
);
|
);
|
||||||
|
|
||||||
Info<< "Reading field alpha1\n" << endl;
|
|
||||||
volScalarField alpha1
|
|
||||||
(
|
|
||||||
IOobject
|
|
||||||
(
|
|
||||||
"alpha1",
|
|
||||||
runTime.timeName(),
|
|
||||||
mesh,
|
|
||||||
IOobject::MUST_READ,
|
|
||||||
IOobject::AUTO_WRITE
|
|
||||||
),
|
|
||||||
mesh
|
|
||||||
);
|
|
||||||
|
|
||||||
Info<< "Calculating field alpha1\n" << endl;
|
|
||||||
volScalarField alpha2("alpha2", scalar(1) - alpha1);
|
|
||||||
|
|
||||||
Info<< "Reading field U\n" << endl;
|
Info<< "Reading field U\n" << endl;
|
||||||
volVectorField U
|
volVectorField U
|
||||||
(
|
(
|
||||||
@ -45,10 +28,19 @@
|
|||||||
|
|
||||||
#include "createPhi.H"
|
#include "createPhi.H"
|
||||||
|
|
||||||
|
|
||||||
Info<< "Reading transportProperties\n" << endl;
|
Info<< "Reading transportProperties\n" << endl;
|
||||||
twoPhaseMixture twoPhaseProperties(U, phi);
|
twoPhaseMixture twoPhaseProperties(U, phi);
|
||||||
|
|
||||||
|
volScalarField& alpha1(twoPhaseProperties.alpha1());
|
||||||
|
|
||||||
|
Info<< "Calculating phase-fraction alpha" << twoPhaseProperties.phase2Name()
|
||||||
|
<< nl << endl;
|
||||||
|
volScalarField alpha2
|
||||||
|
(
|
||||||
|
"alpha" + twoPhaseProperties.phase2Name(),
|
||||||
|
scalar(1) - alpha1
|
||||||
|
);
|
||||||
|
|
||||||
dimensionedScalar rho10
|
dimensionedScalar rho10
|
||||||
(
|
(
|
||||||
twoPhaseProperties.subDict
|
twoPhaseProperties.subDict
|
||||||
@ -65,22 +57,91 @@
|
|||||||
).lookup("rho0")
|
).lookup("rho0")
|
||||||
);
|
);
|
||||||
|
|
||||||
dimensionedScalar psi1
|
dimensionedScalar k1
|
||||||
(
|
(
|
||||||
twoPhaseProperties.subDict
|
twoPhaseProperties.subDict
|
||||||
(
|
(
|
||||||
twoPhaseProperties.phase1Name()
|
twoPhaseProperties.phase1Name()
|
||||||
).lookup("psi")
|
).lookup("k")
|
||||||
);
|
);
|
||||||
|
|
||||||
dimensionedScalar psi2
|
dimensionedScalar k2
|
||||||
(
|
(
|
||||||
twoPhaseProperties.subDict
|
twoPhaseProperties.subDict
|
||||||
(
|
(
|
||||||
twoPhaseProperties.phase2Name()
|
twoPhaseProperties.phase2Name()
|
||||||
).lookup("psi")
|
).lookup("k")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
dimensionedScalar Cv1
|
||||||
|
(
|
||||||
|
twoPhaseProperties.subDict
|
||||||
|
(
|
||||||
|
twoPhaseProperties.phase1Name()
|
||||||
|
).lookup("Cv")
|
||||||
|
);
|
||||||
|
|
||||||
|
dimensionedScalar Cv2
|
||||||
|
(
|
||||||
|
twoPhaseProperties.subDict
|
||||||
|
(
|
||||||
|
twoPhaseProperties.phase2Name()
|
||||||
|
).lookup("Cv")
|
||||||
|
);
|
||||||
|
|
||||||
|
dimensionedScalar R1
|
||||||
|
(
|
||||||
|
twoPhaseProperties.subDict
|
||||||
|
(
|
||||||
|
twoPhaseProperties.phase1Name()
|
||||||
|
).lookup("R")
|
||||||
|
);
|
||||||
|
|
||||||
|
dimensionedScalar R2
|
||||||
|
(
|
||||||
|
twoPhaseProperties.subDict
|
||||||
|
(
|
||||||
|
twoPhaseProperties.phase2Name()
|
||||||
|
).lookup("R")
|
||||||
|
);
|
||||||
|
|
||||||
|
Info<< "Reading field T\n" << endl;
|
||||||
|
volScalarField T
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"T",
|
||||||
|
runTime.timeName(),
|
||||||
|
mesh,
|
||||||
|
IOobject::MUST_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
mesh
|
||||||
|
);
|
||||||
|
|
||||||
|
volScalarField psi1
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"psi1",
|
||||||
|
runTime.timeName(),
|
||||||
|
mesh
|
||||||
|
),
|
||||||
|
1.0/(R1*T)
|
||||||
|
);
|
||||||
|
|
||||||
|
volScalarField psi2
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"psi2",
|
||||||
|
runTime.timeName(),
|
||||||
|
mesh
|
||||||
|
),
|
||||||
|
1.0/(R2*T)
|
||||||
|
);
|
||||||
|
psi2.oldTime();
|
||||||
|
|
||||||
dimensionedScalar pMin(twoPhaseProperties.lookup("pMin"));
|
dimensionedScalar pMin(twoPhaseProperties.lookup("pMin"));
|
||||||
|
|
||||||
Info<< "Calculating field g.h\n" << endl;
|
Info<< "Calculating field g.h\n" << endl;
|
||||||
|
|||||||
@ -0,0 +1,184 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2012 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 "wallHeatTransferFvPatchScalarField.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
#include "fvPatchFieldMapper.H"
|
||||||
|
#include "volFields.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mixedFvPatchScalarField(p, iF),
|
||||||
|
Tinf_(p.size(), 0.0),
|
||||||
|
alphaWall_(p.size(), 0.0)
|
||||||
|
{
|
||||||
|
refValue() = 0.0;
|
||||||
|
refGrad() = 0.0;
|
||||||
|
valueFraction() = 0.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
|
||||||
|
(
|
||||||
|
const wallHeatTransferFvPatchScalarField& ptf,
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
|
const fvPatchFieldMapper& mapper
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mixedFvPatchScalarField(ptf, p, iF, mapper),
|
||||||
|
Tinf_(ptf.Tinf_, mapper),
|
||||||
|
alphaWall_(ptf.alphaWall_, mapper)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch& p,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF,
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mixedFvPatchScalarField(p, iF),
|
||||||
|
Tinf_("Tinf", dict, p.size()),
|
||||||
|
alphaWall_("alphaWall", dict, p.size())
|
||||||
|
{
|
||||||
|
refValue() = Tinf_;
|
||||||
|
refGrad() = 0.0;
|
||||||
|
valueFraction() = 0.0;
|
||||||
|
|
||||||
|
if (dict.found("value"))
|
||||||
|
{
|
||||||
|
fvPatchField<scalar>::operator=
|
||||||
|
(
|
||||||
|
scalarField("value", dict, p.size())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
evaluate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
|
||||||
|
(
|
||||||
|
const wallHeatTransferFvPatchScalarField& tppsf
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mixedFvPatchScalarField(tppsf),
|
||||||
|
Tinf_(tppsf.Tinf_),
|
||||||
|
alphaWall_(tppsf.alphaWall_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
Foam::wallHeatTransferFvPatchScalarField::wallHeatTransferFvPatchScalarField
|
||||||
|
(
|
||||||
|
const wallHeatTransferFvPatchScalarField& tppsf,
|
||||||
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
|
)
|
||||||
|
:
|
||||||
|
mixedFvPatchScalarField(tppsf, iF),
|
||||||
|
Tinf_(tppsf.Tinf_),
|
||||||
|
alphaWall_(tppsf.alphaWall_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
void Foam::wallHeatTransferFvPatchScalarField::autoMap
|
||||||
|
(
|
||||||
|
const fvPatchFieldMapper& m
|
||||||
|
)
|
||||||
|
{
|
||||||
|
scalarField::autoMap(m);
|
||||||
|
Tinf_.autoMap(m);
|
||||||
|
alphaWall_.autoMap(m);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::wallHeatTransferFvPatchScalarField::rmap
|
||||||
|
(
|
||||||
|
const fvPatchScalarField& ptf,
|
||||||
|
const labelList& addr
|
||||||
|
)
|
||||||
|
{
|
||||||
|
mixedFvPatchScalarField::rmap(ptf, addr);
|
||||||
|
|
||||||
|
const wallHeatTransferFvPatchScalarField& tiptf =
|
||||||
|
refCast<const wallHeatTransferFvPatchScalarField>(ptf);
|
||||||
|
|
||||||
|
Tinf_.rmap(tiptf.Tinf_, addr);
|
||||||
|
alphaWall_.rmap(tiptf.alphaWall_, addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::wallHeatTransferFvPatchScalarField::updateCoeffs()
|
||||||
|
{
|
||||||
|
if (updated())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const fvPatchScalarField& Cpw =
|
||||||
|
patch().lookupPatchField<volScalarField, scalar>("Cp");
|
||||||
|
|
||||||
|
const fvPatchScalarField& kByCpw =
|
||||||
|
patch().lookupPatchField<volScalarField, scalar>("kByCp");
|
||||||
|
|
||||||
|
valueFraction() =
|
||||||
|
1.0/
|
||||||
|
(
|
||||||
|
1.0
|
||||||
|
+ Cpw*kByCpw*patch().deltaCoeffs()/alphaWall_
|
||||||
|
);
|
||||||
|
|
||||||
|
mixedFvPatchScalarField::updateCoeffs();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::wallHeatTransferFvPatchScalarField::write(Ostream& os) const
|
||||||
|
{
|
||||||
|
fvPatchScalarField::write(os);
|
||||||
|
Tinf_.writeEntry("Tinf", os);
|
||||||
|
alphaWall_.writeEntry("alphaWall", os);
|
||||||
|
writeEntry("value", os);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
makePatchTypeField(fvPatchScalarField, wallHeatTransferFvPatchScalarField);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,194 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2012 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::wallHeatTransferFvPatchScalarField
|
||||||
|
|
||||||
|
Description
|
||||||
|
Enthalpy boundary conditions for wall heat transfer
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
wallHeatTransferFvPatchScalarField.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef wallHeatTransferFvPatchScalarField_H
|
||||||
|
#define wallHeatTransferFvPatchScalarField_H
|
||||||
|
|
||||||
|
#include "mixedFvPatchFields.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class wallHeatTransferFvPatch Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class wallHeatTransferFvPatchScalarField
|
||||||
|
:
|
||||||
|
public mixedFvPatchScalarField
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Tinf
|
||||||
|
scalarField Tinf_;
|
||||||
|
|
||||||
|
//- alphaWall
|
||||||
|
scalarField alphaWall_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("wallHeatTransfer");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from patch and internal field
|
||||||
|
wallHeatTransferFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<scalar, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct from patch, internal field and dictionary
|
||||||
|
wallHeatTransferFvPatchScalarField
|
||||||
|
(
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<scalar, volMesh>&,
|
||||||
|
const dictionary&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct by mapping given wallHeatTransferFvPatchScalarField
|
||||||
|
// onto a new patch
|
||||||
|
wallHeatTransferFvPatchScalarField
|
||||||
|
(
|
||||||
|
const wallHeatTransferFvPatchScalarField&,
|
||||||
|
const fvPatch&,
|
||||||
|
const DimensionedField<scalar, volMesh>&,
|
||||||
|
const fvPatchFieldMapper&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct as copy
|
||||||
|
wallHeatTransferFvPatchScalarField
|
||||||
|
(
|
||||||
|
const wallHeatTransferFvPatchScalarField&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct and return a clone
|
||||||
|
virtual tmp<fvPatchScalarField> clone() const
|
||||||
|
{
|
||||||
|
return tmp<fvPatchScalarField>
|
||||||
|
(
|
||||||
|
new wallHeatTransferFvPatchScalarField(*this)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Construct as copy setting internal field reference
|
||||||
|
wallHeatTransferFvPatchScalarField
|
||||||
|
(
|
||||||
|
const wallHeatTransferFvPatchScalarField&,
|
||||||
|
const DimensionedField<scalar, volMesh>&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Construct and return a clone setting internal field reference
|
||||||
|
virtual tmp<fvPatchScalarField> clone
|
||||||
|
(
|
||||||
|
const DimensionedField<scalar, volMesh>& iF
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return tmp<fvPatchScalarField>
|
||||||
|
(
|
||||||
|
new wallHeatTransferFvPatchScalarField(*this, iF)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Member functions
|
||||||
|
|
||||||
|
// Access
|
||||||
|
|
||||||
|
//- Return Tinf
|
||||||
|
const scalarField& Tinf() const
|
||||||
|
{
|
||||||
|
return Tinf_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return reference to Tinf to allow adjustment
|
||||||
|
scalarField& Tinf()
|
||||||
|
{
|
||||||
|
return Tinf_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return alphaWall
|
||||||
|
const scalarField& alphaWall() const
|
||||||
|
{
|
||||||
|
return alphaWall_;
|
||||||
|
}
|
||||||
|
|
||||||
|
//- Return reference to alphaWall to allow adjustment
|
||||||
|
scalarField& alphaWall()
|
||||||
|
{
|
||||||
|
return alphaWall_;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Mapping functions
|
||||||
|
|
||||||
|
//- Map (and resize as needed) from self given a mapping object
|
||||||
|
virtual void autoMap
|
||||||
|
(
|
||||||
|
const fvPatchFieldMapper&
|
||||||
|
);
|
||||||
|
|
||||||
|
//- Reverse map the given fvPatchField onto this fvPatchField
|
||||||
|
virtual void rmap
|
||||||
|
(
|
||||||
|
const fvPatchScalarField&,
|
||||||
|
const labelList&
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Evaluation functions
|
||||||
|
|
||||||
|
//- Update the coefficients associated with the patch field
|
||||||
|
virtual void updateCoeffs();
|
||||||
|
|
||||||
|
|
||||||
|
//- Write
|
||||||
|
virtual void write(Ostream&) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -1,28 +1,31 @@
|
|||||||
{
|
{
|
||||||
volScalarField rAU(1.0/UEqn.A());
|
rho1 = rho10 + psi1*p;
|
||||||
surfaceScalarField rAUf(fvc::interpolate(rAU));
|
rho2 = rho20 + psi2*p;
|
||||||
|
|
||||||
tmp<fvScalarMatrix> p_rghEqnComp;
|
volScalarField rAU = 1.0/UEqn.A();
|
||||||
|
surfaceScalarField rAUf = fvc::interpolate(rAU);
|
||||||
|
|
||||||
if (pimple.transonic())
|
tmp<fvScalarMatrix> p_rghEqnComp1;
|
||||||
|
tmp<fvScalarMatrix> p_rghEqnComp2;
|
||||||
|
|
||||||
|
//if (transonic)
|
||||||
|
//{
|
||||||
|
//}
|
||||||
|
//else
|
||||||
{
|
{
|
||||||
p_rghEqnComp =
|
surfaceScalarField phid1("phid1", fvc::interpolate(psi1)*phi);
|
||||||
(
|
surfaceScalarField phid2("phid2", fvc::interpolate(psi2)*phi);
|
||||||
fvm::ddt(p_rgh)
|
|
||||||
+ fvm::div(phi, p_rgh)
|
|
||||||
- fvm::Sp(fvc::div(phi), p_rgh)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
p_rghEqnComp =
|
|
||||||
(
|
|
||||||
fvm::ddt(p_rgh)
|
|
||||||
+ fvc::div(phi, p_rgh)
|
|
||||||
- fvc::Sp(fvc::div(phi), p_rgh)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
p_rghEqnComp1 =
|
||||||
|
fvc::ddt(rho1) + psi1*correction(fvm::ddt(p_rgh))
|
||||||
|
+ fvc::div(phid1, p_rgh)
|
||||||
|
- fvc::Sp(fvc::div(phid1), p_rgh);
|
||||||
|
|
||||||
|
p_rghEqnComp2 =
|
||||||
|
fvc::ddt(rho2) + psi2*correction(fvm::ddt(p_rgh))
|
||||||
|
+ fvc::div(phid2, p_rgh)
|
||||||
|
- fvc::Sp(fvc::div(phid2), p_rgh);
|
||||||
|
}
|
||||||
|
|
||||||
U = rAU*UEqn.H();
|
U = rAU*UEqn.H();
|
||||||
|
|
||||||
@ -39,6 +42,10 @@
|
|||||||
- ghf*fvc::snGrad(rho)
|
- ghf*fvc::snGrad(rho)
|
||||||
)*rAUf*mesh.magSf();
|
)*rAUf*mesh.magSf();
|
||||||
|
|
||||||
|
// Thermodynamic density needs to be updated by psi*d(p) after the
|
||||||
|
// pressure solution - done in 2 parts. Part 1:
|
||||||
|
//thermo.rho() -= psi*p_rgh;
|
||||||
|
|
||||||
while (pimple.correctNonOrthogonal())
|
while (pimple.correctNonOrthogonal())
|
||||||
{
|
{
|
||||||
fvScalarMatrix p_rghEqnIncomp
|
fvScalarMatrix p_rghEqnIncomp
|
||||||
@ -50,19 +57,23 @@
|
|||||||
solve
|
solve
|
||||||
(
|
(
|
||||||
(
|
(
|
||||||
max(alpha1, scalar(0))*(psi1/rho1)
|
(max(alpha1, scalar(0))/rho1)*p_rghEqnComp1()
|
||||||
+ max(alpha2, scalar(0))*(psi2/rho2)
|
+ (max(alpha2, scalar(0))/rho2)*p_rghEqnComp2()
|
||||||
)
|
)
|
||||||
*p_rghEqnComp()
|
|
||||||
+ p_rghEqnIncomp,
|
+ p_rghEqnIncomp,
|
||||||
mesh.solver(p_rgh.select(pimple.finalInnerIter()))
|
mesh.solver(p_rgh.select(pimple.finalInnerIter()))
|
||||||
);
|
);
|
||||||
|
|
||||||
if (pimple.finalNonOrthogonalIter())
|
if (pimple.finalNonOrthogonalIter())
|
||||||
{
|
{
|
||||||
|
// Second part of thermodynamic density update
|
||||||
|
//thermo.rho() += psi*p_rgh;
|
||||||
|
|
||||||
dgdt =
|
dgdt =
|
||||||
(pos(alpha2)*(psi2/rho2) - pos(alpha1)*(psi1/rho1))
|
(
|
||||||
*(p_rghEqnComp & p_rgh);
|
pos(alpha2)*(p_rghEqnComp2 & p_rgh)/rho2
|
||||||
|
- pos(alpha1)*(p_rghEqnComp1 & p_rgh)/rho1
|
||||||
|
);
|
||||||
phi += p_rghEqnIncomp.flux();
|
phi += p_rghEqnIncomp.flux();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,34 @@
|
|||||||
|
/*--------------------------------*- 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 volScalarField;
|
||||||
|
object alpha1;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [0 0 0 1 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 300;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
walls
|
||||||
|
{
|
||||||
|
type zeroGradient;
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultFaces
|
||||||
|
{
|
||||||
|
type empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -10,7 +10,7 @@ FoamFile
|
|||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
class volScalarField;
|
class volScalarField;
|
||||||
object alpha1;
|
object alphawater;
|
||||||
}
|
}
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -1,5 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
cd ${0%/*} || exit 1 # run from this directory
|
||||||
|
|
||||||
foamCleanTutorials cases
|
foamCleanTutorials cases
|
||||||
rm -rf processor*
|
rm -rf processor*
|
||||||
rm -rf 0/p_rgh 0/p_rgh.gz 0/alpha1 0/alpha1.gz
|
rm -rf 0/p_rgh.gz 0/alphawater.gz 0/T.gz
|
||||||
|
|||||||
@ -8,8 +8,9 @@ cd ${0%/*} || exit 1 # run from this directory
|
|||||||
application=`getApplication`
|
application=`getApplication`
|
||||||
|
|
||||||
runApplication blockMesh
|
runApplication blockMesh
|
||||||
cp 0/alpha1.org 0/alpha1
|
cp 0/alphawater.org 0/alphawater
|
||||||
cp 0/p_rgh.org 0/p_rgh
|
cp 0/p_rgh.org 0/p_rgh
|
||||||
|
cp 0/T.org 0/T
|
||||||
runApplication setFields
|
runApplication setFields
|
||||||
runApplication $application
|
runApplication $application
|
||||||
|
|
||||||
|
|||||||
@ -33,28 +33,20 @@ blocks
|
|||||||
hex (0 1 2 3 4 5 6 7) (80 160 1) simpleGrading (1 1 1)
|
hex (0 1 2 3 4 5 6 7) (80 160 1) simpleGrading (1 1 1)
|
||||||
);
|
);
|
||||||
|
|
||||||
boundary
|
patches
|
||||||
(
|
(
|
||||||
walls
|
wall walls
|
||||||
{
|
(
|
||||||
type wall;
|
(3 7 6 2)
|
||||||
faces
|
(0 4 7 3)
|
||||||
(
|
(2 6 5 1)
|
||||||
(3 7 6 2)
|
(1 5 4 0)
|
||||||
(0 4 7 3)
|
)
|
||||||
(2 6 5 1)
|
empty frontAndBack
|
||||||
(1 5 4 0)
|
(
|
||||||
);
|
(0 3 2 1)
|
||||||
}
|
(4 5 6 7)
|
||||||
frontAndBack
|
)
|
||||||
{
|
|
||||||
type empty;
|
|
||||||
faces
|
|
||||||
(
|
|
||||||
(0 3 2 1)
|
|
||||||
(4 5 6 7)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -15,22 +15,28 @@ FoamFile
|
|||||||
}
|
}
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
phase1
|
phases (water air);
|
||||||
|
|
||||||
|
water
|
||||||
{
|
{
|
||||||
transportModel Newtonian;
|
transportModel Newtonian;
|
||||||
nu nu [ 0 2 -1 0 0 0 0 ] 1e-06;
|
nu nu [ 0 2 -1 0 0 0 0 ] 1e-06;
|
||||||
|
k k [1 1 -3 -1 0 0 0] 0; //0.613;
|
||||||
rho rho [ 1 -3 0 0 0 0 0 ] 1000;
|
rho rho [ 1 -3 0 0 0 0 0 ] 1000;
|
||||||
rho0 rho0 [ 1 -3 0 0 0 0 0 ] 1000;
|
rho0 rho0 [ 1 -3 0 0 0 0 0 ] 1000;
|
||||||
psi psi [ 0 -2 2 0 0 ] 1e-05;
|
R R [0 2 -2 -1 0] 3000;
|
||||||
|
Cv Cv [0 2 -2 -1 0] 4179;
|
||||||
}
|
}
|
||||||
|
|
||||||
phase2
|
air
|
||||||
{
|
{
|
||||||
transportModel Newtonian;
|
transportModel Newtonian;
|
||||||
nu nu [ 0 2 -1 0 0 0 0 ] 1.589e-05;
|
nu nu [ 0 2 -1 0 0 0 0 ] 1.589e-05;
|
||||||
|
k k [1 1 -3 -1 0 0 0] 0; //2.63e-2;
|
||||||
rho rho [ 1 -3 0 0 0 0 0 ] 1;
|
rho rho [ 1 -3 0 0 0 0 0 ] 1;
|
||||||
rho0 rho0 [ 1 -3 0 0 0 0 0 ] 0;
|
rho0 rho0 [ 1 -3 0 0 0 0 0 ] 0;
|
||||||
psi psi [ 0 -2 2 0 0 ] 1e-05;
|
R R [0 2 -2 -1 0] 287;
|
||||||
|
Cv Cv [0 2 -2 -1 0] 721;
|
||||||
}
|
}
|
||||||
|
|
||||||
pMin pMin [ 1 -1 -2 0 0 0 0 ] 10000;
|
pMin pMin [ 1 -1 -2 0 0 0 0 ] 10000;
|
||||||
|
|||||||
@ -17,7 +17,7 @@ FoamFile
|
|||||||
|
|
||||||
application compressibleInterFoam;
|
application compressibleInterFoam;
|
||||||
|
|
||||||
startFrom latestTime;
|
startFrom startTime;
|
||||||
|
|
||||||
startTime 0;
|
startTime 0;
|
||||||
|
|
||||||
|
|||||||
@ -30,7 +30,9 @@ divSchemes
|
|||||||
div(rho*phi,U) Gauss upwind;
|
div(rho*phi,U) Gauss upwind;
|
||||||
div(phi,alpha) Gauss vanLeer;
|
div(phi,alpha) Gauss vanLeer;
|
||||||
div(phirb,alpha) Gauss interfaceCompression 1;
|
div(phirb,alpha) Gauss interfaceCompression 1;
|
||||||
div(phi,p_rgh) Gauss upwind;
|
div(phid1,p_rgh) Gauss upwind;
|
||||||
|
div(phid2,p_rgh) Gauss upwind;
|
||||||
|
div(rho*phi,T) Gauss upwind;
|
||||||
div(phi,k) Gauss vanLeer;
|
div(phi,k) Gauss vanLeer;
|
||||||
div((nuEff*dev(T(grad(U))))) Gauss linear;
|
div((nuEff*dev(T(grad(U))))) Gauss linear;
|
||||||
}
|
}
|
||||||
@ -55,7 +57,6 @@ fluxRequired
|
|||||||
default no;
|
default no;
|
||||||
p_rgh;
|
p_rgh;
|
||||||
pcorr;
|
pcorr;
|
||||||
gamma;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -91,7 +91,7 @@ solvers
|
|||||||
nSweeps 1;
|
nSweeps 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
"(k|B|nuTilda)"
|
"(T|k|B|nuTilda).*"
|
||||||
{
|
{
|
||||||
solver PBiCG;
|
solver PBiCG;
|
||||||
preconditioner DILU;
|
preconditioner DILU;
|
||||||
|
|||||||
@ -17,8 +17,9 @@ FoamFile
|
|||||||
|
|
||||||
defaultFieldValues
|
defaultFieldValues
|
||||||
(
|
(
|
||||||
volScalarFieldValue alpha1 1
|
volScalarFieldValue alphawater 1
|
||||||
volScalarFieldValue p_rgh 1e5
|
volScalarFieldValue p_rgh 1e5
|
||||||
|
volScalarFieldValue T 300
|
||||||
);
|
);
|
||||||
|
|
||||||
regions
|
regions
|
||||||
@ -29,8 +30,9 @@ regions
|
|||||||
radius 0.1;
|
radius 0.1;
|
||||||
fieldValues
|
fieldValues
|
||||||
(
|
(
|
||||||
volScalarFieldValue alpha1 0
|
volScalarFieldValue alphawater 0
|
||||||
volScalarFieldValue p_rgh 1e6
|
volScalarFieldValue p_rgh 1e6
|
||||||
|
volScalarFieldValue T 578
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
boxToCell
|
boxToCell
|
||||||
@ -38,7 +40,7 @@ regions
|
|||||||
box (-10 1 -1) (10 10 1);
|
box (-10 1 -1) (10 10 1);
|
||||||
fieldValues
|
fieldValues
|
||||||
(
|
(
|
||||||
volScalarFieldValue alpha1 0
|
volScalarFieldValue alphawater 0
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
@ -0,0 +1,29 @@
|
|||||||
|
/*--------------------------------*- 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 volScalarField;
|
||||||
|
object alpha1;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
dimensions [0 0 0 1 0 0 0];
|
||||||
|
|
||||||
|
internalField uniform 300;
|
||||||
|
|
||||||
|
boundaryField
|
||||||
|
{
|
||||||
|
walls
|
||||||
|
{
|
||||||
|
type zeroGradient;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -10,7 +10,7 @@ FoamFile
|
|||||||
version 2.0;
|
version 2.0;
|
||||||
format ascii;
|
format ascii;
|
||||||
class volScalarField;
|
class volScalarField;
|
||||||
object alpha1.org;
|
object alphawater;
|
||||||
}
|
}
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -3,6 +3,6 @@ cd ${0%/*} || exit 1 # run from this directory
|
|||||||
|
|
||||||
foamCleanTutorials cases
|
foamCleanTutorials cases
|
||||||
rm -rf processor*
|
rm -rf processor*
|
||||||
rm -rf 0/p_rgh 0/p_rgh.gz 0/alpha1 0/alpha1.gz
|
rm -rf 0/p_rgh 0/p_rgh.gz 0/alphawater 0/alphawater.gz 0/T.gz
|
||||||
|
|
||||||
# ----------------------------------------------------------------- end-of-file
|
# ----------------------------------------------------------------- end-of-file
|
||||||
|
|||||||
@ -8,8 +8,9 @@ cd ${0%/*} || exit 1 # run from this directory
|
|||||||
application=`getApplication`
|
application=`getApplication`
|
||||||
|
|
||||||
runApplication blockMesh
|
runApplication blockMesh
|
||||||
cp 0/alpha1.org 0/alpha1
|
cp 0/alphawater.org 0/alphawater
|
||||||
cp 0/p_rgh.org 0/p_rgh
|
cp 0/p_rgh.org 0/p_rgh
|
||||||
|
cp 0/T.org 0/T
|
||||||
runApplication setFields
|
runApplication setFields
|
||||||
runApplication decomposePar
|
runApplication decomposePar
|
||||||
runParallel $application 4
|
runParallel $application 4
|
||||||
|
|||||||
@ -15,22 +15,28 @@ FoamFile
|
|||||||
}
|
}
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
phase1
|
phases (water air);
|
||||||
|
|
||||||
|
water
|
||||||
{
|
{
|
||||||
transportModel Newtonian;
|
transportModel Newtonian;
|
||||||
nu nu [ 0 2 -1 0 0 0 0 ] 1e-06;
|
nu nu [ 0 2 -1 0 0 0 0 ] 1e-06;
|
||||||
|
k k [1 1 -3 -1 0 0 0] 0; //0.613;
|
||||||
rho rho [ 1 -3 0 0 0 0 0 ] 1000;
|
rho rho [ 1 -3 0 0 0 0 0 ] 1000;
|
||||||
rho0 rho0 [ 1 -3 0 0 0 0 0 ] 1000;
|
rho0 rho0 [ 1 -3 0 0 0 0 0 ] 1000;
|
||||||
psi psi [ 0 -2 2 0 0 ] 1e-05;
|
R R [0 2 -2 -1 0] 3000;
|
||||||
|
Cv Cv [0 2 -2 -1 0] 4179;
|
||||||
}
|
}
|
||||||
|
|
||||||
phase2
|
air
|
||||||
{
|
{
|
||||||
transportModel Newtonian;
|
transportModel Newtonian;
|
||||||
nu nu [ 0 2 -1 0 0 0 0 ] 1.589e-05;
|
nu nu [ 0 2 -1 0 0 0 0 ] 1.589e-05;
|
||||||
|
k k [1 1 -3 -1 0 0 0] 0; //2.63e-2;
|
||||||
rho rho [ 1 -3 0 0 0 0 0 ] 1;
|
rho rho [ 1 -3 0 0 0 0 0 ] 1;
|
||||||
rho0 rho0 [ 1 -3 0 0 0 0 0 ] 0;
|
rho0 rho0 [ 1 -3 0 0 0 0 0 ] 0;
|
||||||
psi psi [ 0 -2 2 0 0 ] 1e-05;
|
R R [0 2 -2 -1 0] 287;
|
||||||
|
Cv Cv [0 2 -2 -1 0] 721;
|
||||||
}
|
}
|
||||||
|
|
||||||
pMin pMin [ 1 -1 -2 0 0 0 0 ] 10000;
|
pMin pMin [ 1 -1 -2 0 0 0 0 ] 10000;
|
||||||
|
|||||||
@ -30,7 +30,9 @@ divSchemes
|
|||||||
div(rho*phi,U) Gauss upwind;
|
div(rho*phi,U) Gauss upwind;
|
||||||
div(phi,alpha) Gauss vanLeer;
|
div(phi,alpha) Gauss vanLeer;
|
||||||
div(phirb,alpha) Gauss interfaceCompression 1;
|
div(phirb,alpha) Gauss interfaceCompression 1;
|
||||||
div(phi,p_rgh) Gauss upwind;
|
div(phid1,p_rgh) Gauss upwind;
|
||||||
|
div(phid2,p_rgh) Gauss upwind;
|
||||||
|
div(rho*phi,T) Gauss upwind;
|
||||||
div(phi,k) Gauss vanLeer;
|
div(phi,k) Gauss vanLeer;
|
||||||
div((nuEff*dev(T(grad(U))))) Gauss linear;
|
div((nuEff*dev(T(grad(U))))) Gauss linear;
|
||||||
}
|
}
|
||||||
@ -55,7 +57,6 @@ fluxRequired
|
|||||||
default no;
|
default no;
|
||||||
p_rgh;
|
p_rgh;
|
||||||
pcorr;
|
pcorr;
|
||||||
gamma;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -91,7 +91,7 @@ solvers
|
|||||||
nSweeps 1;
|
nSweeps 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
"(k|B|nuTilda)"
|
"(T|k|B|nuTilda).*"
|
||||||
{
|
{
|
||||||
solver PBiCG;
|
solver PBiCG;
|
||||||
preconditioner DILU;
|
preconditioner DILU;
|
||||||
|
|||||||
@ -17,8 +17,9 @@ FoamFile
|
|||||||
|
|
||||||
defaultFieldValues
|
defaultFieldValues
|
||||||
(
|
(
|
||||||
volScalarFieldValue alpha1 1
|
volScalarFieldValue alphawater 1
|
||||||
volScalarFieldValue p_rgh 1e5
|
volScalarFieldValue p_rgh 1e5
|
||||||
|
volScalarFieldValue T 300
|
||||||
);
|
);
|
||||||
|
|
||||||
regions
|
regions
|
||||||
@ -29,8 +30,9 @@ regions
|
|||||||
radius 0.1;
|
radius 0.1;
|
||||||
fieldValues
|
fieldValues
|
||||||
(
|
(
|
||||||
volScalarFieldValue alpha1 0
|
volScalarFieldValue alphawater 0
|
||||||
volScalarFieldValue p_rgh 1e6
|
volScalarFieldValue p_rgh 1e6
|
||||||
|
volScalarFieldValue T 578
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
boxToCell
|
boxToCell
|
||||||
@ -38,7 +40,7 @@ regions
|
|||||||
box (-10 1 -1) (10 10 1);
|
box (-10 1 -1) (10 10 1);
|
||||||
fieldValues
|
fieldValues
|
||||||
(
|
(
|
||||||
volScalarFieldValue alpha1 0
|
volScalarFieldValue alphawater 0
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user