rhoPimpleFoam: Added "consistent" option to replace rhoPimplecFoam

e.g. in tutorials/compressible/rhoPimpleFoam/ras/angledDuctLTS

PIMPLE
{
    momentumPredictor   yes;
    transonic           no;
    nOuterCorrectors    50;
    nCorrectors         1;
    nNonOrthogonalCorrectors 0;
    consistent          yes;

    rhoMin          0.5;
    rhoMax          2.0;

    residualControl
    {
        "(U|k|epsilon)"
        {
            relTol          0;
            tolerance       0.0001;
        }
    }

    turbOnFinalIterOnly off;
}

relaxationFactors
{
    fields
    {
        "p.*"           0.9;
        "rho.*"         1;
    }
    equations
    {
        "U.*"           0.9;
        "h.*"           0.7;
        "(k|epsilon|omega).*" 0.8;
    }
}
This commit is contained in:
Henry Weller 2015-06-27 16:26:51 +01:00
parent 38e200ce83
commit 8cad93c724
22 changed files with 228 additions and 142 deletions

View File

@ -83,7 +83,14 @@ int main(int argc, char *argv[])
// --- Pressure corrector loop
while (pimple.correct())
{
#include "pEqn.H"
if (pimple.consistent())
{
#include "pcEqn.H"
}
else
{
#include "pEqn.H"
}
}
if (pimple.turbCorr())

View File

@ -1,3 +0,0 @@
rhoPimplecFoam.C
EXE = $(FOAM_APPBIN)/rhoPimplecFoam

View File

@ -1,22 +0,0 @@
EXE_INC = \
-I.. \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/finiteVolume/cfdTools \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I$(LIB_SRC)/fvOptions/lnInclude
EXE_LIBS = \
-lcompressibleTransportModels \
-lfluidThermophysicalModels \
-lspecie \
-lturbulenceModels \
-lcompressibleTurbulenceModels \
-lfiniteVolume \
-lmeshTools \
-lsampling \
-lfvOptions

View File

@ -1,108 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2012-2015 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
rhoPimplecFoam
Description
Transient solver for laminar or turbulent flow of compressible fluids
for HVAC and similar applications.
Uses the flexible PIMPLEC (PISOC-SIMPLEC) solution for time-resolved and
pseudo-transient simulations.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "psiThermo.H"
#include "turbulentFluidThermoModel.H"
#include "bound.H"
#include "pimpleControl.H"
#include "fvIOoptionList.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
#include "setRootCase.H"
#include "createTime.H"
#include "createMesh.H"
pimpleControl pimple(mesh);
#include "createFields.H"
#include "createMRF.H"
#include "createFvOptions.H"
#include "initContinuityErrs.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl;
while (runTime.run())
{
#include "readTimeControls.H"
#include "compressibleCourantNo.H"
#include "setDeltaT.H"
runTime++;
Info<< "Time = " << runTime.timeName() << nl << endl;
if (pimple.nCorrPIMPLE() <= 1)
{
#include "rhoEqn.H"
}
// --- Pressure-velocity PIMPLE corrector loop
while (pimple.loop())
{
#include "UEqn.H"
#include "EEqn.H"
// --- Pressure corrector loop
while (pimple.correct())
{
#include "pEqn.H"
}
if (pimple.turbCorr())
{
turbulence->correct();
}
}
runTime.write();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
}
Info<< "End\n" << endl;
return 0;
}
// ************************************************************************* //

View File

@ -0,0 +1,62 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class polyBoundaryMesh;
location "constant/polyMesh";
object boundary;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
6
(
front
{
type wall;
inGroups 1(wall);
nFaces 700;
startFace 63400;
}
back
{
type wall;
inGroups 1(wall);
nFaces 700;
startFace 64100;
}
walls
{
type wall;
inGroups 1(wall);
nFaces 1400;
startFace 64800;
}
porosityWall
{
type wall;
inGroups 1(wall);
nFaces 1600;
startFace 66200;
}
inlet
{
type patch;
nFaces 400;
startFace 67800;
}
outlet
{
type patch;
nFaces 400;
startFace 68200;
}
)
// ************************************************************************* //

View File

@ -0,0 +1,147 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// block definition for a porosity with an angled inlet/outlet
// the porosity is not aligned with the main axes
//
convertToMeters 0.001;
vertices
(
// inlet region
( -150 0 -25 ) // pt 0 (in1b)
( -150 35.35533906 -25 ) // pt 1 (in2b)
( -150 0 25 ) // pt 2 (in1f)
( -150 35.35533906 25 ) // pt 3 (in2f)
// join inlet->outlet
( 0 0 -25 ) // pt 4 (join1b)
( -35.35533906 35.35533906 -25 ) // pt 5 (join2b)
( 0 0 25 ) // pt 6 (join1f)
( -35.35533906 35.35533906 25 ) // pt 7 (join2f)
// porosity ends ->outlet
( 70.71067812 70.71067812 -25 ) // pt 8 (poro1b)
( 35.35533906 106.06601718 -25 ) // pt 9 (poro2b)
( 70.71067812 70.71067812 25 ) // pt 10 (poro1f)
( 35.35533906 106.06601718 25 ) // pt 11 (poro2f)
// outlet
( 141.42135624 141.42135624 -25 ) // pt 12 (out1b)
( 106.06601718 176.7766953 -25 ) // pt 13 (out2b)
( 141.42135624 141.42135624 25 ) // pt 14 (out1f)
( 106.06601718 176.7766953 25 ) // pt 15 (out2f)
);
blocks
(
// inlet block
hex (0 4 5 1 2 6 7 3)
inlet ( 15 20 20 ) simpleGrading (1 1 1)
// porosity block
hex (4 8 9 5 6 10 11 7)
porosity ( 20 20 20 ) simpleGrading (1 1 1)
// outlet block
hex (8 12 13 9 10 14 15 11)
outlet ( 20 20 20 ) simpleGrading (1 1 1)
);
edges
(
);
boundary
(
// is there no way of defining all my 'defaultFaces' to be 'wall'?
front
{
type wall;
faces
(
// inlet block
(2 6 7 3)
// outlet block
(10 14 15 11)
);
}
back
{
type wall;
faces
(
// inlet block
(1 5 4 0)
// outlet block
(9 13 12 8)
);
}
walls
{
type wall;
faces
(
// inlet block
(2 0 4 6)
(7 5 1 3)
// outlet block
(10 8 12 14)
(15 13 9 11)
);
}
porosityWall
{
type wall;
faces
(
// porosity block
(6 10 11 7)
// porosity block
(5 9 8 4)
// porosity block
(6 4 8 10)
(11 9 5 7)
);
}
inlet
{
type patch;
faces
(
(3 1 0 2)
);
}
outlet
{
type patch;
faces
(
(15 13 12 14)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //

View File

@ -15,7 +15,7 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application rhoPimplecFoam;
application rhoPimpleFoam;
startFrom startTime;

View File

@ -46,16 +46,17 @@ solvers
tolerance 1e-06;
relTol 0;
}
}
PIMPLE
{
momentumPredictor yes;
transonic no;
nOuterCorrectors 50;
nCorrectors 1;
momentumPredictor yes;
transonic no;
nOuterCorrectors 50;
nCorrectors 1;
nNonOrthogonalCorrectors 0;
consistent yes;
rhoMin 0.5;
rhoMax 2.0;
@ -75,12 +76,14 @@ relaxationFactors
{
fields
{
"p.*" 0.3;
"p.*" 0.9;
"rho.*" 1;
}
equations
{
"(U|h|k|epsilon|omega).*" 0.7;
"U.*" 0.9;
"h.*" 0.7;
"(k|epsilon|omega).*" 0.8;
}
}