mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Updated heat transfer solvers and tutorials to use p_rgh
This commit is contained in:
@ -12,7 +12,7 @@
|
||||
);
|
||||
|
||||
TEqn.relax();
|
||||
TEqn.solve();
|
||||
TEqn.solve(mesh.solver(T.select(finalIter)));
|
||||
|
||||
rhok = 1.0 - beta*(T - TRef);
|
||||
}
|
||||
|
||||
@ -18,9 +18,10 @@
|
||||
fvc::reconstruct
|
||||
(
|
||||
(
|
||||
fvc::interpolate(rhok)*(g & mesh.Sf())
|
||||
- fvc::snGrad(p)*mesh.magSf()
|
||||
)
|
||||
)
|
||||
- ghf*fvc::snGrad(rhok)
|
||||
- fvc::snGrad(p_rgh)
|
||||
)*mesh.magSf()
|
||||
),
|
||||
mesh.solver(U.select(finalIter))
|
||||
);
|
||||
}
|
||||
|
||||
@ -87,7 +87,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
if (nOuterCorr != 1)
|
||||
{
|
||||
p.storePrevIter();
|
||||
p_rgh.storePrevIter();
|
||||
}
|
||||
|
||||
#include "UEqn.H"
|
||||
|
||||
@ -14,12 +14,12 @@
|
||||
mesh
|
||||
);
|
||||
|
||||
Info<< "Reading field p\n" << endl;
|
||||
volScalarField p
|
||||
Info<< "Reading field p_rgh\n" << endl;
|
||||
volScalarField p_rgh
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"p",
|
||||
"p_rgh",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::MUST_READ,
|
||||
@ -52,6 +52,18 @@
|
||||
incompressible::RASModel::New(U, phi, laminarTransport)
|
||||
);
|
||||
|
||||
// Kinematic density for buoyancy force
|
||||
volScalarField rhok
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"rhok",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
1.0 - beta*(T - TRef)
|
||||
);
|
||||
|
||||
// kinematic turbulent thermal thermal conductivity m2/s
|
||||
Info<< "Reading field kappat\n" << endl;
|
||||
volScalarField kappat
|
||||
@ -67,25 +79,41 @@
|
||||
mesh
|
||||
);
|
||||
|
||||
Info<< "Calculating field g.h\n" << endl;
|
||||
volScalarField gh("gh", g & mesh.C());
|
||||
surfaceScalarField ghf("ghf", g & mesh.Cf());
|
||||
|
||||
volScalarField p
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"p",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
p_rgh + rhok*gh
|
||||
);
|
||||
|
||||
label pRefCell = 0;
|
||||
scalar pRefValue = 0.0;
|
||||
setRefCell
|
||||
(
|
||||
p,
|
||||
p_rgh,
|
||||
mesh.solutionDict().subDict("PIMPLE"),
|
||||
pRefCell,
|
||||
pRefValue
|
||||
);
|
||||
|
||||
|
||||
// Kinematic density for buoyancy force
|
||||
volScalarField rhok
|
||||
if (p_rgh.needReference())
|
||||
{
|
||||
p += dimensionedScalar
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"rhok",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
1.0 - beta*(T - TRef)
|
||||
"p",
|
||||
p.dimensions(),
|
||||
pRefValue - getRefCellValue(p, pRefCell)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@ -7,22 +7,23 @@
|
||||
phi = (fvc::interpolate(U) & mesh.Sf())
|
||||
+ fvc::ddtPhiCorr(rUA, U, phi);
|
||||
|
||||
surfaceScalarField buoyancyPhi =
|
||||
rUAf*fvc::interpolate(rhok)*(g & mesh.Sf());
|
||||
phi += buoyancyPhi;
|
||||
surfaceScalarField buoyancyPhi = rUAf*ghf*fvc::snGrad(rhok)*mesh.magSf();
|
||||
phi -= buoyancyPhi;
|
||||
|
||||
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
|
||||
{
|
||||
fvScalarMatrix pEqn
|
||||
fvScalarMatrix p_rghEqn
|
||||
(
|
||||
fvm::laplacian(rUAf, p) == fvc::div(phi)
|
||||
fvm::laplacian(rUAf, p_rgh) == fvc::div(phi)
|
||||
);
|
||||
|
||||
pEqn.solve
|
||||
p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell));
|
||||
|
||||
p_rghEqn.solve
|
||||
(
|
||||
mesh.solver
|
||||
(
|
||||
p.select
|
||||
p_rgh.select
|
||||
(
|
||||
(
|
||||
finalIter
|
||||
@ -36,17 +37,30 @@
|
||||
if (nonOrth == nNonOrthCorr)
|
||||
{
|
||||
// Calculate the conservative fluxes
|
||||
phi -= pEqn.flux();
|
||||
phi -= p_rghEqn.flux();
|
||||
|
||||
// Explicitly relax pressure for momentum corrector
|
||||
p.relax();
|
||||
p_rgh.relax();
|
||||
|
||||
// Correct the momentum source with the pressure gradient flux
|
||||
// calculated from the relaxed pressure
|
||||
U += rUA*fvc::reconstruct((buoyancyPhi - pEqn.flux())/rUAf);
|
||||
U -= rUA*fvc::reconstruct((buoyancyPhi + p_rghEqn.flux())/rUAf);
|
||||
U.correctBoundaryConditions();
|
||||
}
|
||||
}
|
||||
|
||||
#include "continuityErrs.H"
|
||||
|
||||
p = p_rgh + rhok*gh;
|
||||
|
||||
if (p_rgh.needReference())
|
||||
{
|
||||
p += dimensionedScalar
|
||||
(
|
||||
"p",
|
||||
p.dimensions(),
|
||||
pRefValue - getRefCellValue(p, pRefCell)
|
||||
);
|
||||
p_rgh = p - rhok*gh;
|
||||
}
|
||||
}
|
||||
|
||||
@ -96,29 +96,23 @@
|
||||
p_rgh + rhok*gh
|
||||
);
|
||||
|
||||
label p_rghRefCell = 0;
|
||||
scalar p_rghRefValue = 0.0;
|
||||
label pRefCell = 0;
|
||||
scalar pRefValue = 0.0;
|
||||
setRefCell
|
||||
(
|
||||
p,
|
||||
p_rgh,
|
||||
mesh.solutionDict().subDict("SIMPLE"),
|
||||
p_rghRefCell,
|
||||
p_rghRefValue
|
||||
pRefCell,
|
||||
pRefValue
|
||||
);
|
||||
|
||||
scalar pRefValue = 0.0;
|
||||
|
||||
if (p_rgh.needReference())
|
||||
{
|
||||
pRefValue = readScalar
|
||||
(
|
||||
mesh.solutionDict().subDict("SIMPLE").lookup("pRefValue")
|
||||
);
|
||||
|
||||
p += dimensionedScalar
|
||||
(
|
||||
"p",
|
||||
p.dimensions(),
|
||||
pRefValue - getRefCellValue(p, p_rghRefCell)
|
||||
pRefValue - getRefCellValue(p, pRefCell)
|
||||
);
|
||||
}
|
||||
|
||||
@ -18,17 +18,9 @@
|
||||
fvm::laplacian(rUAf, p_rgh) == fvc::div(phi)
|
||||
);
|
||||
|
||||
p_rghEqn.setReference(p_rghRefCell, p_rghRefValue);
|
||||
p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell));
|
||||
|
||||
// retain the residual from the first iteration
|
||||
if (nonOrth == 0)
|
||||
{
|
||||
p_rghEqn.solve();
|
||||
}
|
||||
else
|
||||
{
|
||||
p_rghEqn.solve();
|
||||
}
|
||||
|
||||
if (nonOrth == nNonOrthCorr)
|
||||
{
|
||||
@ -55,7 +47,8 @@
|
||||
(
|
||||
"p",
|
||||
p.dimensions(),
|
||||
pRefValue - getRefCellValue(p, p_rghRefCell)
|
||||
pRefValue - getRefCellValue(p, pRefCell)
|
||||
);
|
||||
p_rgh = p - rhok*gh;
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,8 +17,11 @@
|
||||
==
|
||||
fvc::reconstruct
|
||||
(
|
||||
fvc::interpolate(rho)*(g & mesh.Sf())
|
||||
- fvc::snGrad(p)*mesh.magSf()
|
||||
)
|
||||
(
|
||||
- ghf*fvc::snGrad(rho)
|
||||
- fvc::snGrad(p_rgh)
|
||||
)*mesh.magSf()
|
||||
),
|
||||
mesh.solver(U.select(finalIter))
|
||||
);
|
||||
}
|
||||
|
||||
@ -80,7 +80,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
if (nOuterCorr != 1)
|
||||
{
|
||||
p.storePrevIter();
|
||||
p_rgh.storePrevIter();
|
||||
}
|
||||
|
||||
#include "UEqn.H"
|
||||
|
||||
@ -53,15 +53,30 @@
|
||||
)
|
||||
);
|
||||
|
||||
Info<< "Calculating field g.h\n" << endl;
|
||||
volScalarField gh("gh", g & mesh.C());
|
||||
surfaceScalarField ghf("ghf", g & mesh.Cf());
|
||||
|
||||
Info<< "Reading field p_rgh\n" << endl;
|
||||
volScalarField p_rgh
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"p_rgh",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh
|
||||
);
|
||||
|
||||
// Force p_rgh to be consistent with p
|
||||
p_rgh = p - rho*gh;
|
||||
|
||||
Info<< "Creating field DpDt\n" << endl;
|
||||
volScalarField DpDt
|
||||
(
|
||||
"DpDt",
|
||||
fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p)
|
||||
);
|
||||
|
||||
thermo.correct();
|
||||
|
||||
dimensionedScalar initialMass = fvc::domainIntegrate(rho);
|
||||
|
||||
dimensionedScalar totalVolume = sum(mesh.V());
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
);
|
||||
|
||||
hEqn.relax();
|
||||
hEqn.solve();
|
||||
hEqn.solve(mesh.solver(h.select(finalIter)));
|
||||
|
||||
thermo.correct();
|
||||
}
|
||||
|
||||
@ -1,11 +1,9 @@
|
||||
{
|
||||
bool closedVolume = p.needReference();
|
||||
|
||||
rho = thermo.rho();
|
||||
|
||||
// Thermodynamic density needs to be updated by psi*d(p) after the
|
||||
// pressure solution - done in 2 parts. Part 1:
|
||||
thermo.rho() -= psi*p;
|
||||
thermo.rho() -= psi*p_rgh;
|
||||
|
||||
volScalarField rUA = 1.0/UEqn.A();
|
||||
surfaceScalarField rhorUAf("(rho*(1|A(U)))", fvc::interpolate(rho*rUA));
|
||||
@ -18,24 +16,23 @@
|
||||
+ fvc::ddtPhiCorr(rUA, rho, U, phi)
|
||||
);
|
||||
|
||||
surfaceScalarField buoyancyPhi =
|
||||
rhorUAf*fvc::interpolate(rho)*(g & mesh.Sf());
|
||||
surfaceScalarField buoyancyPhi = -rhorUAf*ghf*fvc::snGrad(rho)*mesh.magSf();
|
||||
phi += buoyancyPhi;
|
||||
|
||||
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
|
||||
{
|
||||
fvScalarMatrix pEqn
|
||||
fvScalarMatrix p_rghEqn
|
||||
(
|
||||
fvc::ddt(rho) + psi*correction(fvm::ddt(p))
|
||||
fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh))
|
||||
+ fvc::div(phi)
|
||||
- fvm::laplacian(rhorUAf, p)
|
||||
- fvm::laplacian(rhorUAf, p_rgh)
|
||||
);
|
||||
|
||||
pEqn.solve
|
||||
p_rghEqn.solve
|
||||
(
|
||||
mesh.solver
|
||||
(
|
||||
p.select
|
||||
p_rgh.select
|
||||
(
|
||||
(
|
||||
finalIter
|
||||
@ -49,34 +46,25 @@
|
||||
if (nonOrth == nNonOrthCorr)
|
||||
{
|
||||
// Calculate the conservative fluxes
|
||||
phi += pEqn.flux();
|
||||
phi += p_rghEqn.flux();
|
||||
|
||||
// Explicitly relax pressure for momentum corrector
|
||||
p.relax();
|
||||
p_rgh.relax();
|
||||
|
||||
// Correct the momentum source with the pressure gradient flux
|
||||
// calculated from the relaxed pressure
|
||||
U += rUA*fvc::reconstruct((buoyancyPhi + pEqn.flux())/rhorUAf);
|
||||
U += rUA*fvc::reconstruct((buoyancyPhi + p_rghEqn.flux())/rhorUAf);
|
||||
U.correctBoundaryConditions();
|
||||
}
|
||||
}
|
||||
|
||||
p = p_rgh + rho*gh;
|
||||
|
||||
// Second part of thermodynamic density update
|
||||
thermo.rho() += psi*p;
|
||||
thermo.rho() += psi*p_rgh;
|
||||
|
||||
DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
|
||||
|
||||
#include "rhoEqn.H"
|
||||
#include "compressibleContinuityErrs.H"
|
||||
|
||||
// For closed-volume cases adjust the pressure and density levels
|
||||
// to obey overall mass continuity
|
||||
if (closedVolume)
|
||||
{
|
||||
p +=
|
||||
(initialMass - fvc::domainIntegrate(psi*p))
|
||||
/fvc::domainIntegrate(psi);
|
||||
thermo.rho() = psi*p;
|
||||
rho += (initialMass - fvc::domainIntegrate(rho))/totalVolume;
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,11 +62,8 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
#include "UEqn.H"
|
||||
#include "hEqn.H"
|
||||
for (int i=0; i<3; i++)
|
||||
{
|
||||
#include "pEqn.H"
|
||||
}
|
||||
}
|
||||
|
||||
turbulence->correct();
|
||||
|
||||
|
||||
@ -23,20 +23,6 @@
|
||||
volScalarField& h = thermo.h();
|
||||
const volScalarField& psi = thermo.psi();
|
||||
|
||||
Info<< "Reading field p_rgh\n" << endl;
|
||||
volScalarField p_rgh
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"p_rgh",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh
|
||||
);
|
||||
|
||||
Info<< "Reading field U\n" << endl;
|
||||
volVectorField U
|
||||
(
|
||||
@ -53,7 +39,6 @@
|
||||
|
||||
#include "compressibleCreatePhi.H"
|
||||
|
||||
|
||||
Info<< "Creating turbulence model\n" << endl;
|
||||
autoPtr<compressible::RASModel> turbulence
|
||||
(
|
||||
@ -66,40 +51,39 @@
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
Info<< "Calculating field g.h\n" << endl;
|
||||
volScalarField gh("gh", g & mesh.C());
|
||||
surfaceScalarField ghf("ghf", g & mesh.Cf());
|
||||
|
||||
p = p_rgh + rho*gh;
|
||||
thermo.correct();
|
||||
rho = thermo.rho();
|
||||
Info<< "Reading field p_rgh\n" << endl;
|
||||
volScalarField p_rgh
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"p_rgh",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh
|
||||
);
|
||||
|
||||
// Force p_rgh to be consistent with p
|
||||
p_rgh = p - rho*gh;
|
||||
|
||||
label p_rghRefCell = 0;
|
||||
scalar p_rghRefValue = 0.0;
|
||||
|
||||
label pRefCell = 0;
|
||||
scalar pRefValue = 0.0;
|
||||
setRefCell
|
||||
(
|
||||
p,
|
||||
p_rgh,
|
||||
mesh.solutionDict().subDict("SIMPLE"),
|
||||
p_rghRefCell,
|
||||
p_rghRefValue
|
||||
pRefCell,
|
||||
pRefValue
|
||||
);
|
||||
|
||||
scalar pRefValue = 0.0;
|
||||
|
||||
if (p_rgh.needReference())
|
||||
{
|
||||
pRefValue = readScalar
|
||||
(
|
||||
mesh.solutionDict().subDict("SIMPLE").lookup("pRefValue")
|
||||
);
|
||||
|
||||
p += dimensionedScalar
|
||||
(
|
||||
"p",
|
||||
p.dimensions(),
|
||||
pRefValue - getRefCellValue(p, p_rghRefCell)
|
||||
);
|
||||
}
|
||||
|
||||
dimensionedScalar initialMass = fvc::domainIntegrate(rho);
|
||||
dimensionedScalar totalVolume = sum(mesh.V());
|
||||
|
||||
@ -1,11 +1,12 @@
|
||||
{
|
||||
rho = thermo.rho();
|
||||
rho.relax();
|
||||
|
||||
volScalarField rUA = 1.0/UEqn().A();
|
||||
surfaceScalarField rhorUAf("(rho*(1|A(U)))", fvc::interpolate(rho*rUA));
|
||||
|
||||
U = rUA*UEqn().H();
|
||||
//UEqn.clear();
|
||||
UEqn.clear();
|
||||
|
||||
phi = fvc::interpolate(rho)*(fvc::interpolate(U) & mesh.Sf());
|
||||
bool closedVolume = adjustPhi(phi, U, p_rgh);
|
||||
@ -20,7 +21,7 @@
|
||||
fvm::laplacian(rhorUAf, p_rgh) == fvc::div(phi)
|
||||
);
|
||||
|
||||
p_rghEqn.setReference(p_rghRefCell, p_rghRefValue);
|
||||
p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell));
|
||||
p_rghEqn.solve();
|
||||
|
||||
if (nonOrth == nNonOrthCorr)
|
||||
@ -42,13 +43,13 @@
|
||||
|
||||
p = p_rgh + rho*gh;
|
||||
|
||||
// For closed-volume cases adjust the pressure and density levels
|
||||
// For closed-volume cases adjust the pressure level
|
||||
// to obey overall mass continuity
|
||||
if (closedVolume)
|
||||
{
|
||||
p += (initialMass - fvc::domainIntegrate(psi*p))
|
||||
/fvc::domainIntegrate(psi);
|
||||
p_rgh == p - rho*gh;
|
||||
p_rgh = p - rho*gh;
|
||||
}
|
||||
|
||||
rho = thermo.rho();
|
||||
|
||||
@ -58,7 +58,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
#include "readSIMPLEControls.H"
|
||||
|
||||
p.storePrevIter();
|
||||
p_rgh.storePrevIter();
|
||||
rho.storePrevIter();
|
||||
|
||||
// Pressure-velocity SIMPLE corrector
|
||||
|
||||
@ -93,6 +93,8 @@ int main(int argc, char *argv[])
|
||||
// --- PIMPLE loop
|
||||
for (int oCorr=0; oCorr<nOuterCorr; oCorr++)
|
||||
{
|
||||
bool finalIter = oCorr == nOuterCorr-1;
|
||||
|
||||
forAll(fluidRegions, i)
|
||||
{
|
||||
Info<< "\nSolving for fluid region "
|
||||
|
||||
@ -13,7 +13,9 @@
|
||||
==
|
||||
fvc::reconstruct
|
||||
(
|
||||
fvc::interpolate(rho)*(g & mesh.Sf())
|
||||
- fvc::snGrad(p)*mesh.magSf()
|
||||
(
|
||||
- ghf*fvc::snGrad(rho)
|
||||
- fvc::snGrad(p_rgh)
|
||||
)*mesh.magSf()
|
||||
)
|
||||
);
|
||||
|
||||
@ -6,12 +6,16 @@
|
||||
PtrList<surfaceScalarField> phiFluid(fluidRegions.size());
|
||||
PtrList<uniformDimensionedVectorField> gFluid(fluidRegions.size());
|
||||
PtrList<compressible::turbulenceModel> turbulence(fluidRegions.size());
|
||||
PtrList<volScalarField> DpDtf(fluidRegions.size());
|
||||
PtrList<volScalarField> p_rghFluid(fluidRegions.size());
|
||||
PtrList<volScalarField> ghFluid(fluidRegions.size());
|
||||
PtrList<surfaceScalarField> ghfFluid(fluidRegions.size());
|
||||
|
||||
List<scalar> initialMassFluid(fluidRegions.size());
|
||||
List<label> pRefCellFluid(fluidRegions.size(),0);
|
||||
List<scalar> pRefValueFluid(fluidRegions.size(),0.0);
|
||||
|
||||
PtrList<dimensionedScalar> rhoMax(fluidRegions.size());
|
||||
PtrList<dimensionedScalar> rhoMin(fluidRegions.size());
|
||||
|
||||
// Populate fluid field pointer lists
|
||||
forAll(fluidRegions, i)
|
||||
@ -130,15 +134,68 @@
|
||||
).ptr()
|
||||
);
|
||||
|
||||
Info<< " Adding to ghFluid\n" << endl;
|
||||
ghFluid.set
|
||||
(
|
||||
i,
|
||||
new volScalarField("gh", gFluid[i] & fluidRegions[i].C())
|
||||
);
|
||||
|
||||
Info<< " Adding to ghfFluid\n" << endl;
|
||||
ghfFluid.set
|
||||
(
|
||||
i,
|
||||
new surfaceScalarField("ghf", gFluid[i] & fluidRegions[i].Cf())
|
||||
);
|
||||
|
||||
p_rghFluid.set
|
||||
(
|
||||
i,
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"p_rgh",
|
||||
runTime.timeName(),
|
||||
fluidRegions[i],
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
fluidRegions[i]
|
||||
)
|
||||
);
|
||||
|
||||
// Force p_rgh to be consistent with p
|
||||
p_rghFluid[i] = thermoFluid[i].p() - rhoFluid[i]*ghFluid[i];
|
||||
|
||||
initialMassFluid[i] = fvc::domainIntegrate(rhoFluid[i]).value();
|
||||
|
||||
setRefCell
|
||||
(
|
||||
thermoFluid[i].p(),
|
||||
p_rghFluid[i],
|
||||
fluidRegions[i].solutionDict().subDict("SIMPLE"),
|
||||
pRefCellFluid[i],
|
||||
pRefValueFluid[i]
|
||||
);
|
||||
|
||||
rhoMax.set
|
||||
(
|
||||
i,
|
||||
new dimensionedScalar
|
||||
(
|
||||
fluidRegions[i].solutionDict().subDict("SIMPLE").lookup("rhoMax")
|
||||
)
|
||||
);
|
||||
|
||||
rhoMin.set
|
||||
(
|
||||
i,
|
||||
new dimensionedScalar
|
||||
(
|
||||
fluidRegions[i].solutionDict().subDict("SIMPLE").lookup("rhoMin")
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -5,8 +5,8 @@
|
||||
- fvm::Sp(fvc::div(phi), h)
|
||||
- fvm::laplacian(turb.alphaEff(), h)
|
||||
==
|
||||
fvc::div(phi/fvc::interpolate(rho)*fvc::interpolate(p))
|
||||
- p*fvc::div(phi/fvc::interpolate(rho))
|
||||
fvc::div(phi/fvc::interpolate(rho), rho/psi, "div(U,p)")
|
||||
- (rho/psi)*fvc::div(phi/fvc::interpolate(rho))
|
||||
);
|
||||
|
||||
hEqn.relax();
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
{
|
||||
// From buoyantSimpleFoam
|
||||
|
||||
rho = thermo.rho();
|
||||
rho = max(rho, rhoMin[i]);
|
||||
rho = min(rho, rhoMax[i]);
|
||||
rho.relax();
|
||||
|
||||
volScalarField rUA = 1.0/UEqn().A();
|
||||
surfaceScalarField rhorUAf("(rho*(1|A(U)))", fvc::interpolate(rho*rUA));
|
||||
@ -10,59 +12,54 @@
|
||||
UEqn.clear();
|
||||
|
||||
phi = fvc::interpolate(rho)*(fvc::interpolate(U) & mesh.Sf());
|
||||
bool closedVolume = adjustPhi(phi, U, p);
|
||||
bool closedVolume = adjustPhi(phi, U, p_rgh);
|
||||
|
||||
surfaceScalarField buoyancyPhi =
|
||||
rhorUAf*fvc::interpolate(rho)*(g & mesh.Sf());
|
||||
phi += buoyancyPhi;
|
||||
surfaceScalarField buoyancyPhi = rhorUAf*ghf*fvc::snGrad(rho)*mesh.magSf();
|
||||
phi -= buoyancyPhi;
|
||||
|
||||
// Solve pressure
|
||||
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
|
||||
{
|
||||
fvScalarMatrix pEqn
|
||||
fvScalarMatrix p_rghEqn
|
||||
(
|
||||
fvm::laplacian(rhorUAf, p) == fvc::div(phi)
|
||||
fvm::laplacian(rhorUAf, p_rgh) == fvc::div(phi)
|
||||
);
|
||||
|
||||
pEqn.setReference(pRefCell, pRefValue);
|
||||
p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell));
|
||||
|
||||
// retain the residual from the first iteration
|
||||
if (nonOrth == 0)
|
||||
{
|
||||
pEqn.solve();
|
||||
}
|
||||
else
|
||||
{
|
||||
pEqn.solve();
|
||||
}
|
||||
p_rghEqn.solve();
|
||||
|
||||
if (nonOrth == nNonOrthCorr)
|
||||
{
|
||||
// For closed-volume cases adjust the pressure and density levels
|
||||
// Calculate the conservative fluxes
|
||||
phi -= p_rghEqn.flux();
|
||||
|
||||
// Explicitly relax pressure for momentum corrector
|
||||
p_rgh.relax();
|
||||
|
||||
// Correct the momentum source with the pressure gradient flux
|
||||
// calculated from the relaxed pressure
|
||||
U -= rUA*fvc::reconstruct((buoyancyPhi + p_rghEqn.flux())/rhorUAf);
|
||||
U.correctBoundaryConditions();
|
||||
}
|
||||
}
|
||||
|
||||
p = p_rgh + rho*gh;
|
||||
|
||||
#include "continuityErrs.H"
|
||||
|
||||
// For closed-volume cases adjust the pressure level
|
||||
// to obey overall mass continuity
|
||||
if (closedVolume)
|
||||
{
|
||||
p += (initialMass - fvc::domainIntegrate(psi*p))
|
||||
/fvc::domainIntegrate(psi);
|
||||
p_rgh = p - rho*gh;
|
||||
}
|
||||
|
||||
// Calculate the conservative fluxes
|
||||
phi -= pEqn.flux();
|
||||
|
||||
// Explicitly relax pressure for momentum corrector
|
||||
p.relax();
|
||||
|
||||
// Correct the momentum source with the pressure gradient flux
|
||||
// calculated from the relaxed pressure
|
||||
U += rUA*fvc::reconstruct((buoyancyPhi - pEqn.flux())/rhorUAf);
|
||||
U.correctBoundaryConditions();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#include "continuityErrs.H"
|
||||
|
||||
rho = thermo.rho();
|
||||
rho = max(rho, rhoMin[i]);
|
||||
rho = min(rho, rhoMax[i]);
|
||||
rho.relax();
|
||||
|
||||
Info<< "Min/max rho:" << min(rho).value() << ' '
|
||||
|
||||
@ -5,7 +5,6 @@
|
||||
volScalarField& K = KFluid[i];
|
||||
volVectorField& U = UFluid[i];
|
||||
surfaceScalarField& phi = phiFluid[i];
|
||||
const dimensionedVector& g = gFluid[i];
|
||||
|
||||
compressible::turbulenceModel& turb = turbulence[i];
|
||||
|
||||
@ -22,3 +21,7 @@
|
||||
|
||||
const label pRefCell = pRefCellFluid[i];
|
||||
const scalar pRefValue = pRefValueFluid[i];
|
||||
|
||||
volScalarField& p_rgh = p_rghFluid[i];
|
||||
const volScalarField& gh = ghFluid[i];
|
||||
const surfaceScalarField& ghf = ghfFluid[i];
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
// Pressure-velocity SIMPLE corrector
|
||||
|
||||
p.storePrevIter();
|
||||
p_rgh.storePrevIter();
|
||||
rho.storePrevIter();
|
||||
{
|
||||
#include "UEqn.H"
|
||||
|
||||
@ -16,8 +16,11 @@
|
||||
==
|
||||
fvc::reconstruct
|
||||
(
|
||||
fvc::interpolate(rho)*(g & mesh.Sf())
|
||||
- fvc::snGrad(p)*mesh.magSf()
|
||||
)
|
||||
(
|
||||
- ghf*fvc::snGrad(rho)
|
||||
- fvc::snGrad(p_rgh)
|
||||
)*mesh.magSf()
|
||||
),
|
||||
mesh.solver(U.select(finalIter))
|
||||
);
|
||||
}
|
||||
|
||||
@ -6,6 +6,9 @@
|
||||
PtrList<surfaceScalarField> phiFluid(fluidRegions.size());
|
||||
PtrList<uniformDimensionedVectorField> gFluid(fluidRegions.size());
|
||||
PtrList<compressible::turbulenceModel> turbulence(fluidRegions.size());
|
||||
PtrList<volScalarField> p_rghFluid(fluidRegions.size());
|
||||
PtrList<volScalarField> ghFluid(fluidRegions.size());
|
||||
PtrList<surfaceScalarField> ghfFluid(fluidRegions.size());
|
||||
PtrList<volScalarField> DpDtFluid(fluidRegions.size());
|
||||
|
||||
List<scalar> initialMassFluid(fluidRegions.size());
|
||||
@ -129,6 +132,42 @@
|
||||
).ptr()
|
||||
);
|
||||
|
||||
Info<< " Adding to ghFluid\n" << endl;
|
||||
ghFluid.set
|
||||
(
|
||||
i,
|
||||
new volScalarField("gh", gFluid[i] & fluidRegions[i].C())
|
||||
);
|
||||
|
||||
Info<< " Adding to ghfFluid\n" << endl;
|
||||
ghfFluid.set
|
||||
(
|
||||
i,
|
||||
new surfaceScalarField("ghf", gFluid[i] & fluidRegions[i].Cf())
|
||||
);
|
||||
|
||||
p_rghFluid.set
|
||||
(
|
||||
i,
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"p_rgh",
|
||||
runTime.timeName(),
|
||||
fluidRegions[i],
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
fluidRegions[i]
|
||||
)
|
||||
);
|
||||
|
||||
// Force p_rgh to be consistent with p
|
||||
p_rghFluid[i] = thermoFluid[i].p() - rhoFluid[i]*ghFluid[i];
|
||||
|
||||
initialMassFluid[i] = fvc::domainIntegrate(rhoFluid[i]).value();
|
||||
|
||||
Info<< " Adding to DpDtFluid\n" << endl;
|
||||
DpDtFluid.set
|
||||
(
|
||||
@ -147,6 +186,4 @@
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
initialMassFluid[i] = fvc::domainIntegrate(rhoFluid[i]).value();
|
||||
}
|
||||
|
||||
@ -7,16 +7,9 @@
|
||||
==
|
||||
DpDt
|
||||
);
|
||||
if (oCorr == nOuterCorr-1)
|
||||
{
|
||||
|
||||
hEqn.relax();
|
||||
hEqn.solve(mesh.solver("hFinal"));
|
||||
}
|
||||
else
|
||||
{
|
||||
hEqn.relax();
|
||||
hEqn.solve();
|
||||
}
|
||||
hEqn.solve(mesh.solver(h.select(finalIter)));
|
||||
|
||||
thermo.correct();
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
{
|
||||
bool closedVolume = p.needReference();
|
||||
bool closedVolume = p_rgh.needReference();
|
||||
|
||||
rho = thermo.rho();
|
||||
|
||||
@ -17,34 +17,35 @@
|
||||
)
|
||||
);
|
||||
|
||||
phi = phiU + fvc::interpolate(rho)*(g & mesh.Sf())*rhorUAf;
|
||||
phi = phiU - rhorUAf*ghf*fvc::snGrad(rho)*mesh.magSf();
|
||||
|
||||
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
|
||||
{
|
||||
fvScalarMatrix pEqn
|
||||
fvScalarMatrix p_rghEqn
|
||||
(
|
||||
fvm::ddt(psi, p)
|
||||
fvm::ddt(psi, p_rgh) + fvc::ddt(psi, rho)*gh
|
||||
+ fvc::div(phi)
|
||||
- fvm::laplacian(rhorUAf, p)
|
||||
- fvm::laplacian(rhorUAf, p_rgh)
|
||||
);
|
||||
|
||||
if
|
||||
p_rghEqn.solve
|
||||
(
|
||||
mesh.solver
|
||||
(
|
||||
p_rgh.select
|
||||
(
|
||||
(
|
||||
oCorr == nOuterCorr-1
|
||||
&& corr == nCorr-1
|
||||
&& nonOrth == nNonOrthCorr
|
||||
)
|
||||
{
|
||||
pEqn.solve(mesh.solver(p.name() + "Final"));
|
||||
}
|
||||
else
|
||||
{
|
||||
pEqn.solve(mesh.solver(p.name()));
|
||||
}
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
if (nonOrth == nNonOrthCorr)
|
||||
{
|
||||
phi += pEqn.flux();
|
||||
phi += p_rghEqn.flux();
|
||||
}
|
||||
}
|
||||
|
||||
@ -52,6 +53,8 @@
|
||||
U += rUA*fvc::reconstruct((phi - phiU)/rhorUAf);
|
||||
U.correctBoundaryConditions();
|
||||
|
||||
p = p_rgh + rho*gh;
|
||||
|
||||
// Update pressure substantive derivative
|
||||
DpDt = fvc::DDt(surfaceScalarField("phiU", phi/fvc::interpolate(rho)), p);
|
||||
|
||||
@ -65,9 +68,10 @@
|
||||
// to obey overall mass continuity
|
||||
if (closedVolume)
|
||||
{
|
||||
p += (massIni - fvc::domainIntegrate(psi*p))
|
||||
p += (initialMass - fvc::domainIntegrate(psi*p))
|
||||
/fvc::domainIntegrate(psi);
|
||||
rho = thermo.rho();
|
||||
p_rgh = p - rho*gh;
|
||||
}
|
||||
|
||||
// Update thermal conductivity
|
||||
|
||||
@ -1,17 +0,0 @@
|
||||
const dictionary& piso = fluidRegions[i].solutionDict().subDict("PISO");
|
||||
|
||||
const int nOuterCorr =
|
||||
piso.lookupOrDefault<int>("nOuterCorrectors", 1);
|
||||
|
||||
const int nCorr =
|
||||
piso.lookupOrDefault<int>("nCorrectors", 1);
|
||||
|
||||
const int nNonOrthCorr =
|
||||
piso.lookupOrDefault<int>("nNonOrthogonalCorrectors", 0);
|
||||
|
||||
const bool momentumPredictor =
|
||||
piso.lookupOrDefault("momentumPredictor", true);
|
||||
|
||||
const bool transonic =
|
||||
piso.lookupOrDefault("transonic", false);
|
||||
|
||||
@ -1,11 +1,10 @@
|
||||
const fvMesh& mesh = fluidRegions[i];
|
||||
fvMesh& mesh = fluidRegions[i];
|
||||
|
||||
basicPsiThermo& thermo = thermoFluid[i];
|
||||
volScalarField& rho = rhoFluid[i];
|
||||
volScalarField& K = KFluid[i];
|
||||
volVectorField& U = UFluid[i];
|
||||
surfaceScalarField& phi = phiFluid[i];
|
||||
const dimensionedVector& g = gFluid[i];
|
||||
|
||||
compressible::turbulenceModel& turb = turbulence[i];
|
||||
volScalarField& DpDt = DpDtFluid[i];
|
||||
@ -14,4 +13,13 @@
|
||||
const volScalarField& psi = thermo.psi();
|
||||
volScalarField& h = thermo.h();
|
||||
|
||||
const dimensionedScalar massIni("massIni", dimMass, initialMassFluid[i]);
|
||||
volScalarField& p_rgh = p_rghFluid[i];
|
||||
const volScalarField& gh = ghFluid[i];
|
||||
const surfaceScalarField& ghf = ghfFluid[i];
|
||||
|
||||
const dimensionedScalar initialMass
|
||||
(
|
||||
"initialMass",
|
||||
dimMass,
|
||||
initialMassFluid[i]
|
||||
);
|
||||
|
||||
@ -1,3 +1,8 @@
|
||||
if (finalIter)
|
||||
{
|
||||
mesh.data::add("finalIteration", true);
|
||||
}
|
||||
|
||||
if (oCorr == 0)
|
||||
{
|
||||
#include "rhoEqn.H"
|
||||
@ -16,3 +21,8 @@ for (int corr=0; corr<nCorr; corr++)
|
||||
turb.correct();
|
||||
|
||||
rho = thermo.rho();
|
||||
|
||||
if (finalIter)
|
||||
{
|
||||
mesh.data::remove("finalIteration");
|
||||
}
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
p.storePrevIter();
|
||||
p_rgh.storePrevIter();
|
||||
rho.storePrevIter();
|
||||
|
||||
@ -8,9 +8,5 @@
|
||||
<< solidRegions[i].name() << nl << endl;
|
||||
|
||||
Info<< " Adding to thermos\n" << endl;
|
||||
thermos.set
|
||||
(
|
||||
i,
|
||||
basicSolidThermo::New(solidRegions[i])
|
||||
);
|
||||
thermos.set(i, basicSolidThermo::New(solidRegions[i]));
|
||||
}
|
||||
|
||||
@ -1,3 +1,8 @@
|
||||
if (finalIter)
|
||||
{
|
||||
mesh.data::add("finalIteration", true);
|
||||
}
|
||||
|
||||
{
|
||||
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
|
||||
{
|
||||
@ -7,8 +12,13 @@
|
||||
- fvm::laplacian(K, T)
|
||||
);
|
||||
TEqn().relax();
|
||||
TEqn().solve();
|
||||
TEqn().solve(mesh.solver(T.select(finalIter)));
|
||||
}
|
||||
|
||||
Info<< "Min/max T:" << min(T) << ' ' << max(T) << endl;
|
||||
}
|
||||
|
||||
if (finalIter)
|
||||
{
|
||||
mesh.data::remove("finalIteration");
|
||||
}
|
||||
|
||||
@ -13,5 +13,5 @@
|
||||
|
||||
if (momentumPredictor)
|
||||
{
|
||||
solve(UEqn == -fvc::grad(p));
|
||||
solve(UEqn == -fvc::grad(p), mesh.solver(U.select(finalIter)));
|
||||
}
|
||||
|
||||
@ -90,17 +90,28 @@ int main(int argc, char *argv[])
|
||||
#include "rhoEqn.H"
|
||||
|
||||
// --- PIMPLE loop
|
||||
for (int ocorr=1; ocorr<=nOuterCorr; ocorr++)
|
||||
for (int oCorr=0; oCorr<nOuterCorr; oCorr++)
|
||||
{
|
||||
bool finalIter = oCorr == nOuterCorr - 1;
|
||||
if (finalIter)
|
||||
{
|
||||
mesh.data::add("finalIteration", true);
|
||||
}
|
||||
|
||||
#include "UEqn.H"
|
||||
#include "YEqn.H"
|
||||
#include "hsEqn.H"
|
||||
|
||||
// --- PISO loop
|
||||
for (int corr=1; corr<=nCorr; corr++)
|
||||
for (int corr=0; corr<nCorr; corr++)
|
||||
{
|
||||
#include "pEqn.H"
|
||||
}
|
||||
|
||||
if (finalIter)
|
||||
{
|
||||
mesh.data::remove("finalIteration");
|
||||
}
|
||||
}
|
||||
|
||||
turbulence->correct();
|
||||
|
||||
@ -15,7 +15,7 @@
|
||||
|
||||
hsEqn.relax();
|
||||
|
||||
hsEqn.solve();
|
||||
hsEqn.solve(mesh.solver(hs.select(finalIter)));
|
||||
|
||||
thermo.correct();
|
||||
|
||||
|
||||
@ -26,7 +26,20 @@ if (transonic)
|
||||
coalParcels.Srho()
|
||||
);
|
||||
|
||||
pEqn.solve();
|
||||
pEqn.solve
|
||||
(
|
||||
mesh.solver
|
||||
(
|
||||
p.select
|
||||
(
|
||||
(
|
||||
finalIter
|
||||
&& corr == nCorr-1
|
||||
&& nonOrth == nNonOrthCorr
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
if (nonOrth == nNonOrthCorr)
|
||||
{
|
||||
@ -54,7 +67,20 @@ else
|
||||
coalParcels.Srho()
|
||||
);
|
||||
|
||||
pEqn.solve();
|
||||
pEqn.solve
|
||||
(
|
||||
mesh.solver
|
||||
(
|
||||
p.select
|
||||
(
|
||||
(
|
||||
finalIter
|
||||
&& corr == nCorr-1
|
||||
&& nonOrth == nNonOrthCorr
|
||||
)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
if (nonOrth == nNonOrthCorr)
|
||||
{
|
||||
|
||||
@ -23,411 +23,7 @@ boundaryField
|
||||
floor
|
||||
{
|
||||
type fixedValue;
|
||||
value nonuniform List<scalar>
|
||||
400
|
||||
(
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
600
|
||||
600
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
600
|
||||
600
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
)
|
||||
;
|
||||
value uniform 300;
|
||||
}
|
||||
ceiling
|
||||
{
|
||||
|
||||
@ -22,23 +22,20 @@ boundaryField
|
||||
{
|
||||
floor
|
||||
{
|
||||
type buoyantPressure;
|
||||
rho rhok;
|
||||
value uniform 0;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
ceiling
|
||||
{
|
||||
type buoyantPressure;
|
||||
rho rhok;
|
||||
value uniform 0;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
{
|
||||
type buoyantPressure;
|
||||
rho rhok;
|
||||
value uniform 0;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,45 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
object p_rgh;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 2 -2 0 0 0 0];
|
||||
|
||||
internalField uniform 0;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
floor
|
||||
{
|
||||
type buoyantPressure;
|
||||
rho rhok;
|
||||
value uniform 0;
|
||||
}
|
||||
|
||||
ceiling
|
||||
{
|
||||
type buoyantPressure;
|
||||
rho rhok;
|
||||
value uniform 0;
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
{
|
||||
type buoyantPressure;
|
||||
rho rhok;
|
||||
value uniform 0;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -5,6 +5,6 @@ cd ${0%/*} || exit 1 # run from this directory
|
||||
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
|
||||
|
||||
cleanCase
|
||||
cp 0/T.org 0/T
|
||||
rm -f 0/T
|
||||
|
||||
# ----------------------------------------------------------------- end-of-file
|
||||
|
||||
@ -8,6 +8,7 @@ application=`getApplication`
|
||||
|
||||
compileApplication ../../buoyantPimpleFoam/hotRoom/setHotRoom
|
||||
runApplication blockMesh
|
||||
cp 0/T.org 0/T
|
||||
runApplication setHotRoom
|
||||
runApplication $application
|
||||
|
||||
|
||||
@ -40,12 +40,12 @@ divSchemes
|
||||
laplacianSchemes
|
||||
{
|
||||
default none;
|
||||
laplacian(nuEff,U) Gauss linear corrected;
|
||||
laplacian((1|A(U)),p) Gauss linear corrected;
|
||||
laplacian(kappaEff,T) Gauss linear corrected;
|
||||
laplacian(DkEff,k) Gauss linear corrected;
|
||||
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
||||
laplacian(DREff,R) Gauss linear corrected;
|
||||
laplacian(nuEff,U) Gauss linear uncorrected;
|
||||
laplacian((1|A(U)),p_rgh) Gauss linear uncorrected;
|
||||
laplacian(kappaEff,T) Gauss linear uncorrected;
|
||||
laplacian(DkEff,k) Gauss linear uncorrected;
|
||||
laplacian(DepsilonEff,epsilon) Gauss linear uncorrected;
|
||||
laplacian(DREff,R) Gauss linear uncorrected;
|
||||
}
|
||||
|
||||
interpolationSchemes
|
||||
@ -55,13 +55,13 @@ interpolationSchemes
|
||||
|
||||
snGradSchemes
|
||||
{
|
||||
default corrected;
|
||||
default uncorrected;
|
||||
}
|
||||
|
||||
fluxRequired
|
||||
{
|
||||
default no;
|
||||
p ;
|
||||
p_rgh;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -17,17 +17,17 @@ FoamFile
|
||||
|
||||
solvers
|
||||
{
|
||||
p
|
||||
p_rgh
|
||||
{
|
||||
solver PCG;
|
||||
preconditioner DIC;
|
||||
tolerance 1e-8;
|
||||
relTol 0.1;
|
||||
relTol 0.01;
|
||||
}
|
||||
|
||||
pFinal
|
||||
p_rghFinal
|
||||
{
|
||||
$p;
|
||||
$p_rgh;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
|
||||
@ -22,23 +22,20 @@ boundaryField
|
||||
{
|
||||
floor
|
||||
{
|
||||
type buoyantPressure;
|
||||
rho rhok;
|
||||
value uniform 0;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
ceiling
|
||||
{
|
||||
type buoyantPressure;
|
||||
rho rhok;
|
||||
value uniform 0;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
{
|
||||
type buoyantPressure;
|
||||
rho rhok;
|
||||
value uniform 0;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -5,6 +5,6 @@ cd ${0%/*} || exit 1 # run from this directory
|
||||
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
|
||||
|
||||
cleanCase
|
||||
cp 0/T.org 0/T
|
||||
rm -f 0/T
|
||||
|
||||
# ----------------------------------------------------------------- end-of-file
|
||||
|
||||
@ -8,6 +8,7 @@ application=`getApplication`
|
||||
|
||||
compileApplication ../../buoyantPimpleFoam/hotRoom/setHotRoom
|
||||
runApplication blockMesh
|
||||
cp 0/T.org 0/T
|
||||
runApplication setHotRoom
|
||||
runApplication $application
|
||||
|
||||
|
||||
@ -45,5 +45,25 @@ timePrecision 6;
|
||||
|
||||
runTimeModifiable true;
|
||||
|
||||
functions
|
||||
{
|
||||
residualControl1
|
||||
{
|
||||
type residualControl;
|
||||
functionObjectLibs ( "libjobControl.so" );
|
||||
outputControl timeStep;
|
||||
outputInterval 1;
|
||||
|
||||
maxResiduals
|
||||
{
|
||||
p_rgh 1e-2;
|
||||
U 1e-4;
|
||||
T 1e-3;
|
||||
|
||||
// possibly check turbulence fields
|
||||
"(k|epsilon|omega)" 1e-3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -37,17 +37,15 @@ solvers
|
||||
SIMPLE
|
||||
{
|
||||
nNonOrthogonalCorrectors 0;
|
||||
p_rghRefCell 0;
|
||||
p_rghRefValue 0;
|
||||
pRefCell 0;
|
||||
pRefValue 0;
|
||||
}
|
||||
|
||||
relaxationFactors
|
||||
{
|
||||
rho 1;
|
||||
p_rgh 0.7;
|
||||
U 0.2;
|
||||
T 0.7;
|
||||
T 0.5;
|
||||
"(k|epsilon|R)" 0.7;
|
||||
}
|
||||
|
||||
|
||||
@ -22,30 +22,26 @@ boundaryField
|
||||
{
|
||||
ground
|
||||
{
|
||||
type buoyantPressure;
|
||||
rho rhok;
|
||||
value uniform 0;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
igloo_region0
|
||||
{
|
||||
type buoyantPressure;
|
||||
rho rhok;
|
||||
value uniform 0;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
twoFridgeFreezers_seal_0
|
||||
{
|
||||
type buoyantPressure;
|
||||
rho rhok;
|
||||
value uniform 0;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
twoFridgeFreezers_herring_1
|
||||
{
|
||||
type buoyantPressure;
|
||||
rho rhok;
|
||||
value uniform 0;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -21,55 +21,55 @@ FoamFile
|
||||
{
|
||||
type empty;
|
||||
nFaces 0;
|
||||
startFace 60456;
|
||||
startFace 60336;
|
||||
}
|
||||
minX
|
||||
{
|
||||
type empty;
|
||||
nFaces 0;
|
||||
startFace 60456;
|
||||
startFace 60336;
|
||||
}
|
||||
maxX
|
||||
{
|
||||
type empty;
|
||||
nFaces 0;
|
||||
startFace 60456;
|
||||
startFace 60336;
|
||||
}
|
||||
minY
|
||||
{
|
||||
type empty;
|
||||
nFaces 0;
|
||||
startFace 60456;
|
||||
startFace 60336;
|
||||
}
|
||||
ground
|
||||
{
|
||||
type wall;
|
||||
nFaces 590;
|
||||
startFace 60456;
|
||||
startFace 60336;
|
||||
}
|
||||
maxZ
|
||||
{
|
||||
type empty;
|
||||
nFaces 0;
|
||||
startFace 61046;
|
||||
startFace 60926;
|
||||
}
|
||||
igloo_region0
|
||||
{
|
||||
type wall;
|
||||
nFaces 2260;
|
||||
startFace 61046;
|
||||
startFace 60926;
|
||||
}
|
||||
twoFridgeFreezers_seal_0
|
||||
{
|
||||
type wall;
|
||||
nFaces 1344;
|
||||
startFace 63306;
|
||||
startFace 63186;
|
||||
}
|
||||
twoFridgeFreezers_herring_1
|
||||
{
|
||||
type wall;
|
||||
nFaces 1116;
|
||||
startFace 64650;
|
||||
startFace 64530;
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@ -45,5 +45,25 @@ timePrecision 6;
|
||||
|
||||
runTimeModifiable true;
|
||||
|
||||
functions
|
||||
{
|
||||
residualControl1
|
||||
{
|
||||
type residualControl;
|
||||
functionObjectLibs ( "libjobControl.so" );
|
||||
outputControl timeStep;
|
||||
outputInterval 1;
|
||||
|
||||
maxResiduals
|
||||
{
|
||||
p_rgh 1e-2;
|
||||
U 1e-4;
|
||||
T 1e-3;
|
||||
|
||||
// possibly check turbulence fields
|
||||
"(k|epsilon|omega)" 1e-3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -37,16 +37,15 @@ solvers
|
||||
SIMPLE
|
||||
{
|
||||
nNonOrthogonalCorrectors 0;
|
||||
p_rghRefCell 0;
|
||||
p_rghRefValue 0;
|
||||
pRefCell 0;
|
||||
pRefValue 0;
|
||||
}
|
||||
|
||||
relaxationFactors
|
||||
{
|
||||
p_rgh 0.8;
|
||||
p_rgh 0.7;
|
||||
U 0.2;
|
||||
T 0.7;
|
||||
T 0.5;
|
||||
"(k|epsilon)" 0.7;
|
||||
}
|
||||
|
||||
|
||||
@ -22,20 +22,20 @@ boundaryField
|
||||
{
|
||||
floor
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 1e5;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
ceiling
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 1e5;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 1e5;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
42
tutorials/heatTransfer/buoyantPimpleFoam/hotRoom/0/p_rgh
Normal file
42
tutorials/heatTransfer/buoyantPimpleFoam/hotRoom/0/p_rgh
Normal file
@ -0,0 +1,42 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
object p_rgh;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [1 -1 -2 0 0 0 0];
|
||||
|
||||
internalField uniform 1e5;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
floor
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 1e5;
|
||||
}
|
||||
|
||||
ceiling
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 1e5;
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 1e5;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -42,7 +42,7 @@ laplacianSchemes
|
||||
{
|
||||
default none;
|
||||
laplacian(muEff,U) Gauss linear corrected;
|
||||
laplacian((rho*(1|A(U))),p) Gauss linear corrected;
|
||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear corrected;
|
||||
laplacian(alphaEff,h) Gauss linear corrected;
|
||||
laplacian(DkEff,k) Gauss linear corrected;
|
||||
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
||||
@ -62,7 +62,7 @@ snGradSchemes
|
||||
fluxRequired
|
||||
{
|
||||
default no;
|
||||
p ;
|
||||
p_rgh;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -25,17 +25,17 @@ solvers
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
p
|
||||
p_rgh
|
||||
{
|
||||
solver PCG;
|
||||
preconditioner DIC;
|
||||
tolerance 1e-8;
|
||||
relTol 0.1;
|
||||
relTol 0.01;
|
||||
}
|
||||
|
||||
pFinal
|
||||
p_rghFinal
|
||||
{
|
||||
$p;
|
||||
$p_rgh;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
@ -44,7 +44,7 @@ solvers
|
||||
solver PBiCG;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-6;
|
||||
relTol 0;
|
||||
relTol 0.1;
|
||||
}
|
||||
|
||||
"(U|h|k|epsilon|R)Final"
|
||||
@ -56,7 +56,7 @@ solvers
|
||||
|
||||
PIMPLE
|
||||
{
|
||||
momentumPredictor no;
|
||||
momentumPredictor yes;
|
||||
nOuterCorrectors 1;
|
||||
nCorrectors 2;
|
||||
nNonOrthogonalCorrectors 0;
|
||||
|
||||
@ -23,26 +23,26 @@ boundaryField
|
||||
{
|
||||
frontAndBack
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 1e5;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
topAndBottom
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 1e5;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
hot
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 1e5;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
cold
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 1e5;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -44,5 +44,25 @@ timePrecision 6;
|
||||
|
||||
runTimeModifiable true;
|
||||
|
||||
functions
|
||||
{
|
||||
residualControl1
|
||||
{
|
||||
type residualControl;
|
||||
functionObjectLibs ( "libjobControl.so" );
|
||||
outputControl timeStep;
|
||||
outputInterval 1;
|
||||
|
||||
maxResiduals
|
||||
{
|
||||
p_rgh 1e-2;
|
||||
U 1e-4;
|
||||
T 1e-3;
|
||||
|
||||
// possibly check turbulence fields
|
||||
"(k|epsilon|omega)" 1e-3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -44,17 +44,16 @@ SIMPLE
|
||||
{
|
||||
momentumPredictor yes;
|
||||
nNonOrthogonalCorrectors 0;
|
||||
p_rghRefCell 0;
|
||||
p_rghRefValue 100000;
|
||||
pRefValue 100000;
|
||||
convergence 1e-04;
|
||||
pRefCell 0;
|
||||
pRefValue 0;
|
||||
}
|
||||
|
||||
relaxationFactors
|
||||
{
|
||||
p_rgh 0.9;
|
||||
rho 1.0;
|
||||
p_rgh 0.7;
|
||||
U 0.3;
|
||||
h 0.7;
|
||||
h 0.3;
|
||||
"(k|epsilon|omega)" 0.7;
|
||||
}
|
||||
|
||||
|
||||
@ -23,411 +23,7 @@ boundaryField
|
||||
floor
|
||||
{
|
||||
type fixedValue;
|
||||
value nonuniform List<scalar>
|
||||
400
|
||||
(
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
600
|
||||
600
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
600
|
||||
600
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
)
|
||||
;
|
||||
value uniform 300;
|
||||
}
|
||||
ceiling
|
||||
{
|
||||
|
||||
@ -23,411 +23,7 @@ boundaryField
|
||||
floor
|
||||
{
|
||||
type fixedValue;
|
||||
value nonuniform List<scalar>
|
||||
400
|
||||
(
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
600
|
||||
600
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
600
|
||||
600
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
300
|
||||
)
|
||||
;
|
||||
value uniform 300;
|
||||
}
|
||||
ceiling
|
||||
{
|
||||
|
||||
@ -22,20 +22,20 @@ boundaryField
|
||||
{
|
||||
floor
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 1e5;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
ceiling
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 1e5;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 1e5;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
42
tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/0/p_rgh
Normal file
42
tutorials/heatTransfer/buoyantSimpleFoam/hotRoom/0/p_rgh
Normal file
@ -0,0 +1,42 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
object p_rgh;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [1 -1 -2 0 0 0 0];
|
||||
|
||||
internalField uniform 1e5;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
floor
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 1e5;
|
||||
}
|
||||
|
||||
ceiling
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 1e5;
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 1e5;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -45,5 +45,25 @@ timePrecision 6;
|
||||
|
||||
runTimeModifiable true;
|
||||
|
||||
functions
|
||||
{
|
||||
residualControl1
|
||||
{
|
||||
type residualControl;
|
||||
functionObjectLibs ( "libjobControl.so" );
|
||||
outputControl timeStep;
|
||||
outputInterval 1;
|
||||
|
||||
maxResiduals
|
||||
{
|
||||
p_rgh 1e-2;
|
||||
U 1e-4;
|
||||
T 1e-3;
|
||||
|
||||
// possibly check turbulence fields
|
||||
"(k|epsilon|omega)" 1e-3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -40,12 +40,12 @@ divSchemes
|
||||
laplacianSchemes
|
||||
{
|
||||
default none;
|
||||
laplacian(muEff,U) Gauss linear corrected;
|
||||
laplacian((rho*(1|A(U))),p) Gauss linear corrected;
|
||||
laplacian(alphaEff,h) Gauss linear corrected;
|
||||
laplacian(DkEff,k) Gauss linear corrected;
|
||||
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
||||
laplacian(DREff,R) Gauss linear corrected;
|
||||
laplacian(muEff,U) Gauss linear uncorrected;
|
||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear uncorrected;
|
||||
laplacian(alphaEff,h) Gauss linear uncorrected;
|
||||
laplacian(DkEff,k) Gauss linear uncorrected;
|
||||
laplacian(DepsilonEff,epsilon) Gauss linear uncorrected;
|
||||
laplacian(DREff,R) Gauss linear uncorrected;
|
||||
}
|
||||
|
||||
interpolationSchemes
|
||||
@ -61,7 +61,7 @@ snGradSchemes
|
||||
fluxRequired
|
||||
{
|
||||
default no;
|
||||
p ;
|
||||
p_rgh;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -17,12 +17,12 @@ FoamFile
|
||||
|
||||
solvers
|
||||
{
|
||||
p
|
||||
p_rgh
|
||||
{
|
||||
solver PCG;
|
||||
preconditioner DIC;
|
||||
tolerance 1e-08;
|
||||
relTol 0;
|
||||
relTol 0.01;
|
||||
}
|
||||
|
||||
"(U|h|k|epsilon|R)"
|
||||
@ -30,7 +30,7 @@ solvers
|
||||
solver PBiCG;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-05;
|
||||
relTol 0;
|
||||
relTol 0.1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -38,16 +38,16 @@ SIMPLE
|
||||
{
|
||||
nNonOrthogonalCorrectors 0;
|
||||
pRefCell 0;
|
||||
pRefValue 100000;
|
||||
pRefValue 0;
|
||||
}
|
||||
|
||||
relaxationFactors
|
||||
{
|
||||
rho 1;
|
||||
p 0.7;
|
||||
rho 1.0;
|
||||
p_rgh 0.7;
|
||||
U 0.2;
|
||||
h 0.7;
|
||||
"(k|epsilon|R)" 0.7;
|
||||
h 0.2;
|
||||
"(k|epsilon|R)" 0.5;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -25,7 +25,7 @@ boundaryField
|
||||
type MarshakRadiation;
|
||||
T T;
|
||||
emissivity 1;
|
||||
value uniform 0;
|
||||
// value uniform 0;
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
@ -33,7 +33,7 @@ boundaryField
|
||||
type MarshakRadiation;
|
||||
T T;
|
||||
emissivity 1;
|
||||
value uniform 0;
|
||||
// value uniform 0;
|
||||
}
|
||||
|
||||
ceiling
|
||||
@ -41,7 +41,7 @@ boundaryField
|
||||
type MarshakRadiation;
|
||||
T T;
|
||||
emissivity 1;
|
||||
value uniform 0;
|
||||
// value uniform 0;
|
||||
}
|
||||
|
||||
box
|
||||
@ -49,7 +49,7 @@ boundaryField
|
||||
type MarshakRadiation;
|
||||
T T;
|
||||
emissivity 1;
|
||||
value uniform 0;
|
||||
// value uniform 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -22,26 +22,26 @@ boundaryField
|
||||
{
|
||||
floor
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 100000;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
ceiling
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 100000;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 100000;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
box
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 100000;
|
||||
type calculated;
|
||||
value $internalField;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,48 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
object p_rgh;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [1 -1 -2 0 0 0 0];
|
||||
|
||||
internalField uniform 100000;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
floor
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 100000;
|
||||
}
|
||||
|
||||
ceiling
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 100000;
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 100000;
|
||||
}
|
||||
|
||||
box
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 100000;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -45,5 +45,25 @@ timePrecision 6;
|
||||
|
||||
runTimeModifiable true;
|
||||
|
||||
functions
|
||||
{
|
||||
residualControl1
|
||||
{
|
||||
type residualControl;
|
||||
functionObjectLibs ( "libjobControl.so" );
|
||||
outputControl timeStep;
|
||||
outputInterval 1;
|
||||
|
||||
maxResiduals
|
||||
{
|
||||
p_rgh 1e-2;
|
||||
U 1e-4;
|
||||
T 1e-3;
|
||||
|
||||
// possibly check turbulence fields
|
||||
"(k|epsilon|omega)" 1e-3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -41,7 +41,7 @@ laplacianSchemes
|
||||
{
|
||||
default none;
|
||||
laplacian(muEff,U) Gauss linear corrected;
|
||||
laplacian((rho*(1|A(U))),p) Gauss linear corrected;
|
||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear corrected;
|
||||
laplacian(alphaEff,h) Gauss linear corrected;
|
||||
laplacian(DkEff,k) Gauss linear corrected;
|
||||
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
||||
@ -62,7 +62,7 @@ snGradSchemes
|
||||
fluxRequired
|
||||
{
|
||||
default no;
|
||||
p;
|
||||
p_rgh;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ FoamFile
|
||||
|
||||
solvers
|
||||
{
|
||||
p
|
||||
p_rgh
|
||||
{
|
||||
solver PCG;
|
||||
preconditioner DIC;
|
||||
@ -35,7 +35,7 @@ solvers
|
||||
|
||||
G
|
||||
{
|
||||
$p;
|
||||
$p_rgh;
|
||||
tolerance 1e-05;
|
||||
relTol 0.1;
|
||||
}
|
||||
@ -50,11 +50,11 @@ SIMPLE
|
||||
|
||||
relaxationFactors
|
||||
{
|
||||
rho 1;
|
||||
p 0.3;
|
||||
U 0.7;
|
||||
h 0.7;
|
||||
"(k|epsilon)" 0.7;
|
||||
rho 1.0;
|
||||
p_rgh 0.7;
|
||||
U 0.2;
|
||||
h 0.2;
|
||||
"(k|epsilon|R)" 0.5;
|
||||
G 0.7;
|
||||
}
|
||||
|
||||
|
||||
@ -24,7 +24,7 @@ boundaryField
|
||||
{
|
||||
type greyDiffusiveRadiation;
|
||||
T T;
|
||||
emissivity 0.5;
|
||||
emissivity 1.0;
|
||||
value uniform 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,25 +22,25 @@ boundaryField
|
||||
{
|
||||
floor
|
||||
{
|
||||
type buoyantPressure;
|
||||
type calculated;
|
||||
value uniform 100000;
|
||||
}
|
||||
|
||||
ceiling
|
||||
{
|
||||
type buoyantPressure;
|
||||
type calculated;
|
||||
value uniform 100000;
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
{
|
||||
type buoyantPressure;
|
||||
type calculated;
|
||||
value uniform 100000;
|
||||
}
|
||||
|
||||
box
|
||||
{
|
||||
type buoyantPressure;
|
||||
type calculated;
|
||||
value uniform 100000;
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,48 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
object p_rgh;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [1 -1 -2 0 0 0 0];
|
||||
|
||||
internalField uniform 100000;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
floor
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 100000;
|
||||
}
|
||||
|
||||
ceiling
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 100000;
|
||||
}
|
||||
|
||||
fixedWalls
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 100000;
|
||||
}
|
||||
|
||||
box
|
||||
{
|
||||
type buoyantPressure;
|
||||
value uniform 100000;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -45,5 +45,25 @@ timePrecision 6;
|
||||
|
||||
runTimeModifiable true;
|
||||
|
||||
functions
|
||||
{
|
||||
residualControl1
|
||||
{
|
||||
type residualControl;
|
||||
functionObjectLibs ( "libjobControl.so" );
|
||||
outputControl timeStep;
|
||||
outputInterval 1;
|
||||
|
||||
maxResiduals
|
||||
{
|
||||
p_rgh 1e-2;
|
||||
U 1e-4;
|
||||
T 1e-3;
|
||||
|
||||
// possibly check turbulence fields
|
||||
"(k|epsilon|omega)" 1e-3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -42,7 +42,7 @@ laplacianSchemes
|
||||
{
|
||||
default none;
|
||||
laplacian(muEff,U) Gauss linear corrected;
|
||||
laplacian((rho*(1|A(U))),p) Gauss linear corrected;
|
||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear corrected;
|
||||
laplacian(alphaEff,h) Gauss linear corrected;
|
||||
laplacian(DkEff,k) Gauss linear corrected;
|
||||
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
|
||||
@ -63,7 +63,7 @@ snGradSchemes
|
||||
fluxRequired
|
||||
{
|
||||
default no;
|
||||
p;
|
||||
p_rgh;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ FoamFile
|
||||
|
||||
solvers
|
||||
{
|
||||
p
|
||||
p_rgh
|
||||
{
|
||||
solver GAMG;
|
||||
tolerance 1e-06;
|
||||
@ -47,11 +47,12 @@ SIMPLE
|
||||
|
||||
relaxationFactors
|
||||
{
|
||||
rho 1;
|
||||
p 0.3;
|
||||
rho 1.0;
|
||||
p_rgh 0.3;
|
||||
U 0.7;
|
||||
h 0.7;
|
||||
"(k|epsilon)" 0.7;
|
||||
k 0.7;
|
||||
epsilon 0.7;
|
||||
"ILambda.*" 0.7;
|
||||
}
|
||||
|
||||
|
||||
@ -10,7 +10,6 @@ FoamFile
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
location "0.001";
|
||||
object epsilon;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -10,7 +10,6 @@ FoamFile
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
location "0.001";
|
||||
object k;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -0,0 +1,29 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
object p_rgh;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [1 -1 -2 0 0 0 0];
|
||||
|
||||
internalField uniform 1e5;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
".*"
|
||||
{
|
||||
type calculated;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -92,16 +92,30 @@ dictionaryReplacement
|
||||
}
|
||||
}
|
||||
|
||||
p
|
||||
p_rgh
|
||||
{
|
||||
internalField uniform 100000;
|
||||
internalField uniform 1e5;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
".*"
|
||||
{
|
||||
type buoyantPressure;
|
||||
value 1e5;
|
||||
value uniform 1e5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p
|
||||
{
|
||||
internalField uniform 1e5;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
".*"
|
||||
{
|
||||
type calculated;
|
||||
value uniform 1e5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,13 +17,11 @@ FoamFile
|
||||
ddtSchemes
|
||||
{
|
||||
default Euler;
|
||||
//default CoEuler phi rho 0.1;
|
||||
}
|
||||
|
||||
gradSchemes
|
||||
{
|
||||
default Gauss linear;
|
||||
// grad(U) cellLimited Gauss linear 1;
|
||||
}
|
||||
|
||||
divSchemes
|
||||
@ -43,7 +41,7 @@ laplacianSchemes
|
||||
{
|
||||
default none;
|
||||
laplacian(muEff,U) Gauss linear limited 0.333;
|
||||
laplacian((rho*(1|A(U))),p) Gauss linear limited 0.333;
|
||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear limited 0.333;
|
||||
laplacian(alphaEff,h) Gauss linear limited 0.333;
|
||||
laplacian(DkEff,k) Gauss linear limited 0.333;
|
||||
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
||||
@ -63,7 +61,7 @@ snGradSchemes
|
||||
fluxRequired
|
||||
{
|
||||
default no;
|
||||
p;
|
||||
p_rgh;
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -24,7 +24,7 @@ solvers
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
p
|
||||
p_rgh
|
||||
{
|
||||
solver GAMG;
|
||||
tolerance 1e-8;
|
||||
@ -38,31 +38,26 @@ solvers
|
||||
mergeLevels 1;
|
||||
}
|
||||
|
||||
pFinal
|
||||
p_rghFinal
|
||||
{
|
||||
$p;
|
||||
$p_rgh;
|
||||
tolerance 1e-8;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
U
|
||||
"(U|h|k|epsilon|R)"
|
||||
{
|
||||
solver PBiCG;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-08;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
h
|
||||
{
|
||||
$U;
|
||||
tolerance 1e-08;
|
||||
relTol 0.1;
|
||||
}
|
||||
|
||||
"(hFinal|k|epsilon|R)"
|
||||
"(U|h|k|epsilon|R)Final"
|
||||
{
|
||||
$U;
|
||||
tolerance 1e-08;
|
||||
relTol 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -35,9 +35,9 @@ writeInterval 50;
|
||||
|
||||
purgeWrite 0;
|
||||
|
||||
writeFormat ascii;
|
||||
writeFormat binary;
|
||||
|
||||
writePrecision 7;
|
||||
writePrecision 8;
|
||||
|
||||
writeCompression off;
|
||||
|
||||
@ -45,10 +45,11 @@ timeFormat general;
|
||||
|
||||
timePrecision 6;
|
||||
|
||||
runTimeModifiable true;
|
||||
runTimeModifiable yes;
|
||||
|
||||
maxCo 0.3;
|
||||
|
||||
// Maximum diffusion number
|
||||
maxDi 10.0;
|
||||
|
||||
adjustTimeStep yes;
|
||||
|
||||
@ -21,6 +21,12 @@ solvers
|
||||
solver PCG;
|
||||
preconditioner DIC;
|
||||
tolerance 1E-06;
|
||||
relTol 0.1;
|
||||
}
|
||||
TFinal
|
||||
{
|
||||
$T;
|
||||
tolerance 1E-06;
|
||||
relTol 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,6 +21,12 @@ solvers
|
||||
solver PCG;
|
||||
preconditioner DIC;
|
||||
tolerance 1E-06;
|
||||
relTol 0.1;
|
||||
}
|
||||
TFinal
|
||||
{
|
||||
$T;
|
||||
tolerance 1E-06;
|
||||
relTol 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,6 +21,12 @@ solvers
|
||||
solver PCG;
|
||||
preconditioner DIC;
|
||||
tolerance 1E-06;
|
||||
relTol 0.1;
|
||||
}
|
||||
TFinal
|
||||
{
|
||||
$T;
|
||||
tolerance 1E-06;
|
||||
relTol 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@ dictionaryReplacement
|
||||
{
|
||||
U
|
||||
{
|
||||
internalField uniform (0.01 0 0);
|
||||
internalField uniform (0.1 0 0);
|
||||
|
||||
boundaryField
|
||||
{
|
||||
@ -30,13 +30,13 @@ dictionaryReplacement
|
||||
minX
|
||||
{
|
||||
type fixedValue;
|
||||
value uniform ( 0.01 0 0 );
|
||||
value uniform ( 0.1 0 0 );
|
||||
}
|
||||
maxX
|
||||
{
|
||||
type inletOutlet;
|
||||
inletValue uniform ( 0 0 0 );
|
||||
value uniform ( 0 0 0 );
|
||||
value uniform ( 0.1 0 0 );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -127,25 +127,42 @@ dictionaryReplacement
|
||||
}
|
||||
}
|
||||
|
||||
p
|
||||
p_rgh
|
||||
{
|
||||
internalField uniform 100000;
|
||||
internalField uniform 1e5;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
".*"
|
||||
{
|
||||
type buoyantPressure;
|
||||
value 1e5;
|
||||
value uniform 1e5;
|
||||
}
|
||||
|
||||
maxX
|
||||
{
|
||||
type waveTransmissive;
|
||||
gamma 1.4;
|
||||
fieldInf 100000;
|
||||
lInf 0.4;
|
||||
value uniform 100000;
|
||||
type fixedValue;
|
||||
value uniform 1e5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p
|
||||
{
|
||||
internalField uniform 1e5;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
".*"
|
||||
{
|
||||
type calculated;
|
||||
value uniform 1e5;
|
||||
}
|
||||
|
||||
maxX
|
||||
{
|
||||
type calculated;
|
||||
value uniform 1e5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,13 +17,11 @@ FoamFile
|
||||
ddtSchemes
|
||||
{
|
||||
default Euler;
|
||||
//default CoEuler phi rho 0.1;
|
||||
}
|
||||
|
||||
gradSchemes
|
||||
{
|
||||
default Gauss linear;
|
||||
// grad(U) cellLimited Gauss linear 1;
|
||||
}
|
||||
|
||||
divSchemes
|
||||
@ -43,7 +41,7 @@ laplacianSchemes
|
||||
{
|
||||
default none;
|
||||
laplacian(muEff,U) Gauss linear limited 0.333;
|
||||
laplacian((rho*(1|A(U))),p) Gauss linear limited 0.333;
|
||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear limited 0.333;
|
||||
laplacian(alphaEff,h) Gauss linear limited 0.333;
|
||||
laplacian(DkEff,k) Gauss linear limited 0.333;
|
||||
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
||||
@ -63,7 +61,7 @@ snGradSchemes
|
||||
fluxRequired
|
||||
{
|
||||
default no;
|
||||
p;
|
||||
p_rgh;
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -20,14 +20,14 @@ solvers
|
||||
{
|
||||
solver PCG
|
||||
preconditioner DIC;
|
||||
tolerance 1e-8;
|
||||
tolerance 1e-7;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
p
|
||||
p_rgh
|
||||
{
|
||||
solver GAMG;
|
||||
tolerance 1e-8;
|
||||
tolerance 1e-7;
|
||||
relTol 0.01;
|
||||
|
||||
smoother GaussSeidel;
|
||||
@ -36,33 +36,30 @@ solvers
|
||||
nCellsInCoarsestLevel 10;
|
||||
agglomerator faceAreaPair;
|
||||
mergeLevels 1;
|
||||
|
||||
maxIter 100;
|
||||
}
|
||||
|
||||
pFinal
|
||||
p_rghFinal
|
||||
{
|
||||
$p;
|
||||
tolerance 1e-8;
|
||||
$p_rgh;
|
||||
tolerance 1e-7;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
U
|
||||
"(U|h|k|epsilon|R)"
|
||||
{
|
||||
solver PBiCG;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-08;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
h
|
||||
{
|
||||
$U;
|
||||
tolerance 1e-08;
|
||||
tolerance 1e-7;
|
||||
relTol 0.1;
|
||||
}
|
||||
|
||||
"(hFinal|k|epsilon|R)"
|
||||
"(U|h|k|epsilon|R)Final"
|
||||
{
|
||||
$U;
|
||||
tolerance 1e-07;
|
||||
relTol 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -76,7 +73,6 @@ PISO
|
||||
pRefValue 1e5;
|
||||
}
|
||||
|
||||
|
||||
PIMPLE
|
||||
{
|
||||
momentumPredictor on;
|
||||
@ -84,11 +80,10 @@ PIMPLE
|
||||
nNonOrthogonalCorrectors 0;
|
||||
}
|
||||
|
||||
|
||||
relaxationFactors
|
||||
{
|
||||
// h 0.9;
|
||||
// U 0.9;
|
||||
h 1;
|
||||
U 1;
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -10,7 +10,6 @@ FoamFile
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
location "0.001";
|
||||
object alphat;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -10,7 +10,6 @@ FoamFile
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
location "0.001";
|
||||
object epsilon;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -10,7 +10,6 @@ FoamFile
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
location "0.001";
|
||||
object k;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -0,0 +1,29 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
object p_rgh;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [1 -1 -2 0 0 0 0];
|
||||
|
||||
internalField uniform 1e5;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
".*"
|
||||
{
|
||||
type calculated;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -94,16 +94,30 @@ dictionaryReplacement
|
||||
}
|
||||
}
|
||||
|
||||
p
|
||||
p_rgh
|
||||
{
|
||||
internalField uniform 100000;
|
||||
internalField uniform 1e5;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
".*"
|
||||
{
|
||||
type buoyantPressure;
|
||||
value 1e5;
|
||||
value uniform 1e5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
p
|
||||
{
|
||||
internalField uniform 1e5;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
".*"
|
||||
{
|
||||
type calculated;
|
||||
value uniform 1e5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,13 +17,11 @@ FoamFile
|
||||
ddtSchemes
|
||||
{
|
||||
default Euler;
|
||||
//default CoEuler phi rho 0.1;
|
||||
}
|
||||
|
||||
gradSchemes
|
||||
{
|
||||
default Gauss linear;
|
||||
// grad(U) cellLimited Gauss linear 1;
|
||||
}
|
||||
|
||||
divSchemes
|
||||
@ -43,7 +41,7 @@ laplacianSchemes
|
||||
{
|
||||
default none;
|
||||
laplacian(muEff,U) Gauss linear limited 0.333;
|
||||
laplacian((rho*(1|A(U))),p) Gauss linear limited 0.333;
|
||||
laplacian((rho*(1|A(U))),p_rgh) Gauss linear limited 0.333;
|
||||
laplacian(alphaEff,h) Gauss linear limited 0.333;
|
||||
laplacian(DkEff,k) Gauss linear limited 0.333;
|
||||
laplacian(DepsilonEff,epsilon) Gauss linear limited 0.333;
|
||||
@ -63,7 +61,7 @@ snGradSchemes
|
||||
fluxRequired
|
||||
{
|
||||
default no;
|
||||
p;
|
||||
p_rgh;
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -20,14 +20,14 @@ solvers
|
||||
{
|
||||
solver PCG
|
||||
preconditioner DIC;
|
||||
tolerance 1e-8;
|
||||
tolerance 1e-7;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
p
|
||||
p_rgh
|
||||
{
|
||||
solver GAMG;
|
||||
tolerance 1e-8;
|
||||
tolerance 1e-7;
|
||||
relTol 0.01;
|
||||
|
||||
smoother GaussSeidel;
|
||||
@ -38,32 +38,26 @@ solvers
|
||||
mergeLevels 1;
|
||||
}
|
||||
|
||||
pFinal
|
||||
p_rghFinal
|
||||
{
|
||||
$p;
|
||||
tolerance 1e-8;
|
||||
$p_rgh;
|
||||
tolerance 1e-7;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
U
|
||||
"(U|h|k|epsilon|R)"
|
||||
{
|
||||
solver PBiCG;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-08;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
h
|
||||
{
|
||||
$U;
|
||||
tolerance 1e-08;
|
||||
tolerance 1e-7;
|
||||
relTol 0.1;
|
||||
}
|
||||
|
||||
|
||||
"(hFinal|k|epsilon|R)"
|
||||
"(U|h|k|epsilon|R)Final"
|
||||
{
|
||||
$U;
|
||||
tolerance 1e-07;
|
||||
relTol 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -77,7 +71,6 @@ PISO
|
||||
pRefValue 1e5;
|
||||
}
|
||||
|
||||
|
||||
PIMPLE
|
||||
{
|
||||
momentumPredictor on;
|
||||
@ -85,11 +78,10 @@ PIMPLE
|
||||
nNonOrthogonalCorrectors 0;
|
||||
}
|
||||
|
||||
|
||||
relaxationFactors
|
||||
{
|
||||
// h 0.9;
|
||||
// U 0.9;
|
||||
h 1;
|
||||
U 1;
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -21,6 +21,12 @@ solvers
|
||||
solver PCG;
|
||||
preconditioner DIC;
|
||||
tolerance 1E-06;
|
||||
relTol 0.1;
|
||||
}
|
||||
TFinal
|
||||
{
|
||||
$T;
|
||||
tolerance 1E-06;
|
||||
relTol 0;
|
||||
}
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user