mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: chtMultiRegionFoam solvers - added option to calculate using frozen flow
This commit is contained in:
@ -11,8 +11,9 @@
|
|||||||
PtrList<radiation::radiationModel> radiation(fluidRegions.size());
|
PtrList<radiation::radiationModel> radiation(fluidRegions.size());
|
||||||
|
|
||||||
List<scalar> initialMassFluid(fluidRegions.size());
|
List<scalar> initialMassFluid(fluidRegions.size());
|
||||||
List<label> pRefCellFluid(fluidRegions.size(),0);
|
List<label> pRefCellFluid(fluidRegions.size(), 0);
|
||||||
List<scalar> pRefValueFluid(fluidRegions.size(),0.0);
|
List<scalar> pRefValueFluid(fluidRegions.size(), 0.0);
|
||||||
|
List<bool> frozenFlowFluid(fluidRegions.size(), false);
|
||||||
|
|
||||||
PtrList<dimensionedScalar> rhoMax(fluidRegions.size());
|
PtrList<dimensionedScalar> rhoMax(fluidRegions.size());
|
||||||
PtrList<dimensionedScalar> rhoMin(fluidRegions.size());
|
PtrList<dimensionedScalar> rhoMin(fluidRegions.size());
|
||||||
@ -160,38 +161,22 @@
|
|||||||
|
|
||||||
initialMassFluid[i] = fvc::domainIntegrate(rhoFluid[i]).value();
|
initialMassFluid[i] = fvc::domainIntegrate(rhoFluid[i]).value();
|
||||||
|
|
||||||
|
const dictionary& simpleDict =
|
||||||
|
fluidRegions[i].solutionDict().subDict("SIMPLE");
|
||||||
|
|
||||||
setRefCell
|
setRefCell
|
||||||
(
|
(
|
||||||
thermoFluid[i].p(),
|
thermoFluid[i].p(),
|
||||||
p_rghFluid[i],
|
p_rghFluid[i],
|
||||||
fluidRegions[i].solutionDict().subDict("SIMPLE"),
|
simpleDict,
|
||||||
pRefCellFluid[i],
|
pRefCellFluid[i],
|
||||||
pRefValueFluid[i]
|
pRefValueFluid[i]
|
||||||
);
|
);
|
||||||
|
|
||||||
rhoMax.set
|
simpleDict.readIfPresent("frozenFlow", frozenFlowFluid[i]);
|
||||||
(
|
|
||||||
i,
|
|
||||||
new dimensionedScalar
|
|
||||||
(
|
|
||||||
fluidRegions[i].solutionDict().subDict("SIMPLE").lookup
|
|
||||||
(
|
|
||||||
"rhoMax"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
rhoMin.set
|
rhoMax.set(i, new dimensionedScalar(simpleDict.lookup("rhoMax")));
|
||||||
(
|
rhoMin.set(i, new dimensionedScalar(simpleDict.lookup("rhoMin")));
|
||||||
i,
|
|
||||||
new dimensionedScalar
|
|
||||||
(
|
|
||||||
fluidRegions[i].solutionDict().subDict("SIMPLE").lookup
|
|
||||||
(
|
|
||||||
"rhoMin"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
Info<< " Adding fvOptions\n" << endl;
|
Info<< " Adding fvOptions\n" << endl;
|
||||||
fluidFvOptions.set
|
fluidFvOptions.set
|
||||||
|
|||||||
@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
const label pRefCell = pRefCellFluid[i];
|
const label pRefCell = pRefCellFluid[i];
|
||||||
const scalar pRefValue = pRefValueFluid[i];
|
const scalar pRefValue = pRefValueFluid[i];
|
||||||
|
const bool frozenFlow = frozenFlowFluid[i];
|
||||||
|
|
||||||
volScalarField& p_rgh = p_rghFluid[i];
|
volScalarField& p_rgh = p_rghFluid[i];
|
||||||
const volScalarField& gh = ghFluid[i];
|
const volScalarField& gh = ghFluid[i];
|
||||||
|
|||||||
@ -1,11 +1,19 @@
|
|||||||
// Pressure-velocity SIMPLE corrector
|
// Pressure-velocity SIMPLE corrector
|
||||||
|
|
||||||
|
{
|
||||||
|
if (frozenFlow)
|
||||||
|
{
|
||||||
|
#include "EEqn.H"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
p_rgh.storePrevIter();
|
p_rgh.storePrevIter();
|
||||||
rho.storePrevIter();
|
rho.storePrevIter();
|
||||||
{
|
|
||||||
#include "UEqn.H"
|
#include "UEqn.H"
|
||||||
#include "EEqn.H"
|
#include "EEqn.H"
|
||||||
#include "pEqn.H"
|
#include "pEqn.H"
|
||||||
}
|
|
||||||
|
|
||||||
turb.correct();
|
turb.correct();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -13,6 +13,7 @@
|
|||||||
PtrList<volScalarField> dpdtFluid(fluidRegions.size());
|
PtrList<volScalarField> dpdtFluid(fluidRegions.size());
|
||||||
|
|
||||||
List<scalar> initialMassFluid(fluidRegions.size());
|
List<scalar> initialMassFluid(fluidRegions.size());
|
||||||
|
List<bool> frozenFlowFluid(fluidRegions.size(), false);
|
||||||
|
|
||||||
PtrList<fv::IOoptionList> fluidFvOptions(fluidRegions.size());
|
PtrList<fv::IOoptionList> fluidFvOptions(fluidRegions.size());
|
||||||
|
|
||||||
@ -102,7 +103,7 @@
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
Info<< " Adding turbulence \n" << endl;
|
Info<< " Adding to turbulence\n" << endl;
|
||||||
turbulence.set
|
turbulence.set
|
||||||
(
|
(
|
||||||
i,
|
i,
|
||||||
@ -190,6 +191,10 @@
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const dictionary& pimpleDict =
|
||||||
|
fluidRegions[i].solutionDict().subDict("PIMPLE");
|
||||||
|
pimpleDict.readIfPresent("frozenFlow", frozenFlowFluid[i]);
|
||||||
|
|
||||||
Info<< " Adding fvOptions\n" << endl;
|
Info<< " Adding fvOptions\n" << endl;
|
||||||
fluidFvOptions.set
|
fluidFvOptions.set
|
||||||
(
|
(
|
||||||
|
|||||||
@ -28,3 +28,5 @@
|
|||||||
dimMass,
|
dimMass,
|
||||||
initialMassFluid[i]
|
initialMassFluid[i]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const bool frozenFlow = frozenFlowFluid[i];
|
||||||
@ -3,24 +3,31 @@ if (finalIter)
|
|||||||
mesh.data::add("finalIteration", true);
|
mesh.data::add("finalIteration", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (oCorr == 0)
|
if (frozenFlow)
|
||||||
{
|
{
|
||||||
|
#include "EEqn.H"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (oCorr == 0)
|
||||||
|
{
|
||||||
#include "rhoEqn.H"
|
#include "rhoEqn.H"
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "UEqn.H"
|
#include "UEqn.H"
|
||||||
#include "EEqn.H"
|
#include "EEqn.H"
|
||||||
|
|
||||||
// --- PISO loop
|
// --- PISO loop
|
||||||
for (int corr=0; corr<nCorr; corr++)
|
for (int corr=0; corr<nCorr; corr++)
|
||||||
{
|
{
|
||||||
#include "pEqn.H"
|
#include "pEqn.H"
|
||||||
|
}
|
||||||
|
|
||||||
|
turb.correct();
|
||||||
|
|
||||||
|
rho = thermo.rho();
|
||||||
}
|
}
|
||||||
|
|
||||||
turb.correct();
|
|
||||||
|
|
||||||
rho = thermo.rho();
|
|
||||||
|
|
||||||
if (finalIter)
|
if (finalIter)
|
||||||
{
|
{
|
||||||
mesh.data::remove("finalIteration");
|
mesh.data::remove("finalIteration");
|
||||||
|
|||||||
Reference in New Issue
Block a user