ENH: chtMultiRegionFoam solvers - added option to calculate using frozen flow

This commit is contained in:
andy
2014-10-16 10:20:19 +01:00
committed by Andrew Heather
parent e08a22afd1
commit ade2801158
6 changed files with 54 additions and 46 deletions

View File

@ -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

View File

@ -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];

View File

@ -1,11 +1,19 @@
// Pressure-velocity SIMPLE corrector // Pressure-velocity SIMPLE corrector
p_rgh.storePrevIter();
rho.storePrevIter();
{ {
#include "UEqn.H" if (frozenFlow)
#include "EEqn.H" {
#include "pEqn.H" #include "EEqn.H"
} }
else
{
p_rgh.storePrevIter();
rho.storePrevIter();
turb.correct(); #include "UEqn.H"
#include "EEqn.H"
#include "pEqn.H"
turb.correct();
}
}

View File

@ -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
( (

View File

@ -28,3 +28,5 @@
dimMass, dimMass,
initialMassFluid[i] initialMassFluid[i]
); );
const bool frozenFlow = frozenFlowFluid[i];

View File

@ -3,24 +3,31 @@ if (finalIter)
mesh.data::add("finalIteration", true); mesh.data::add("finalIteration", true);
} }
if (oCorr == 0) if (frozenFlow)
{ {
#include "rhoEqn.H" #include "EEqn.H"
} }
else
#include "UEqn.H"
#include "EEqn.H"
// --- PISO loop
for (int corr=0; corr<nCorr; corr++)
{ {
#include "pEqn.H" if (oCorr == 0)
{
#include "rhoEqn.H"
}
#include "UEqn.H"
#include "EEqn.H"
// --- PISO loop
for (int corr=0; corr<nCorr; corr++)
{
#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");