New modular solver framework for single- and multi-region simulations

in which different solver modules can be selected in each region to for complex
conjugate heat-transfer and other combined physics problems such as FSI
(fluid-structure interaction).

For single-region simulations the solver module is selected, instantiated and
executed in the PIMPLE loop in the new foamRun application.

For multi-region simulations the set of solver modules, one for each region, are
selected, instantiated and executed in the multi-region PIMPLE loop of new the
foamMultiRun application.

This provides a very general, flexible and extensible framework for complex
coupled problems by creating more solver modules, either by converting existing
solver applications or creating new ones.

The current set of solver modules provided are:

isothermalFluid
    Solver module for steady or transient turbulent flow of compressible
    isothermal fluids with optional mesh motion and mesh topology changes.

    Created from the rhoSimpleFoam, rhoPimpleFoam and buoyantFoam solvers but
    without the energy equation, hence isothermal.  The buoyant pressure
    formulation corresponding to the buoyantFoam solver is selected
    automatically by the presence of the p_rgh pressure field in the start-time
    directory.

fluid
    Solver module for steady or transient turbulent flow of compressible fluids
    with heat-transfer for HVAC and similar applications, with optional
    mesh motion and mesh topology changes.

    Derived from the isothermalFluid solver module with the addition of the
    energy equation from the rhoSimpleFoam, rhoPimpleFoam and buoyantFoam
    solvers, thus providing the equivalent functionality of these three solvers.

multicomponentFluid
    Solver module for steady or transient turbulent flow of compressible
    reacting fluids with optional mesh motion and mesh topology changes.

    Derived from the isothermalFluid solver module with the addition of
    multicomponent thermophysical properties energy and specie mass-fraction
    equations from the reactingFoam solver, thus providing the equivalent
    functionality in reactingFoam and buoyantReactingFoam.  Chemical reactions
    and/or combustion modelling may be optionally selected to simulate reacting
    systems including fires, explosions etc.

solid
    Solver module for turbulent flow of compressible fluids for conjugate heat
    transfer, HVAC and similar applications, with optional mesh motion and mesh
    topology changes.

    The solid solver module may be selected in solid regions of a CHT case, with
    either the fluid or multicomponentFluid solver module in the fluid regions
    and executed with foamMultiRun to provide functionality equivalent
    chtMultiRegionFoam but in a flexible and extensible framework for future
    extension to more complex coupled problems.

All the usual fvModels, fvConstraints, functionObjects etc. are available with
these solver modules to support simulations including body-forces, local sources,
Lagrangian clouds, liquid films etc. etc.

Converting compressibleInterFoam and multiphaseEulerFoam into solver modules
would provide a significant enhancement to the CHT capability and incompressible
solvers like pimpleFoam run in conjunction with solidDisplacementFoam in
foamMultiRun would be useful for a range of FSI problems.  Many other
combinations of existing solvers converted into solver modules could prove
useful for a very wide range of complex combined physics simulations.

All tutorials from the rhoSimpleFoam, rhoPimpleFoam, buoyantFoam, reactingFoam,
buoyantReactingFoam and chtMultiRegionFoam solver applications replaced by
solver modules have been updated and moved into the tutorials/modules directory:

modules
├── CHT
│   ├── coolingCylinder2D
│   ├── coolingSphere
│   ├── heatedDuct
│   ├── heatExchanger
│   ├── reverseBurner
│   └── shellAndTubeHeatExchanger
├── fluid
│   ├── aerofoilNACA0012
│   ├── aerofoilNACA0012Steady
│   ├── angledDuct
│   ├── angledDuctExplicitFixedCoeff
│   ├── angledDuctLTS
│   ├── annularThermalMixer
│   ├── BernardCells
│   ├── blockedChannel
│   ├── buoyantCavity
│   ├── cavity
│   ├── circuitBoardCooling
│   ├── decompressionTank
│   ├── externalCoupledCavity
│   ├── forwardStep
│   ├── helmholtzResonance
│   ├── hotRadiationRoom
│   ├── hotRadiationRoomFvDOM
│   ├── hotRoom
│   ├── hotRoomBoussinesq
│   ├── hotRoomBoussinesqSteady
│   ├── hotRoomComfort
│   ├── iglooWithFridges
│   ├── mixerVessel2DMRF
│   ├── nacaAirfoil
│   ├── pitzDaily
│   ├── prism
│   ├── shockTube
│   ├── squareBend
│   ├── squareBendLiq
│   └── squareBendLiqSteady
└── multicomponentFluid
    ├── aachenBomb
    ├── counterFlowFlame2D
    ├── counterFlowFlame2D_GRI
    ├── counterFlowFlame2D_GRI_TDAC
    ├── counterFlowFlame2DLTS
    ├── counterFlowFlame2DLTS_GRI_TDAC
    ├── cylinder
    ├── DLR_A_LTS
    ├── filter
    ├── hotBoxes
    ├── membrane
    ├── parcelInBox
    ├── rivuletPanel
    ├── SandiaD_LTS
    ├── simplifiedSiwek
    ├── smallPoolFire2D
    ├── smallPoolFire3D
    ├── splashPanel
    ├── verticalChannel
    ├── verticalChannelLTS
    └── verticalChannelSteady

Also redirection scripts are provided for the replaced solvers which call
foamRun -solver <solver module name> or foamMultiRun in the case of
chtMultiRegionFoam for backward-compatibility.

Documentation for foamRun and foamMultiRun:

Application
    foamRun

Description
    Loads and executes an OpenFOAM solver module either specified by the
    optional \c solver entry in the \c controlDict or as a command-line
    argument.

    Uses the flexible PIMPLE (PISO-SIMPLE) solution for time-resolved and
    pseudo-transient and steady simulations.

Usage
    \b foamRun [OPTION]

      - \par -solver <name>
        Solver name

      - \par -libs '(\"lib1.so\" ... \"libN.so\")'
        Specify the additional libraries loaded

    Example usage:
      - To run a \c rhoPimpleFoam case by specifying the solver on the
        command line:
        \verbatim
            foamRun -solver fluid
        \endverbatim

      - To update and run a \c rhoPimpleFoam case add the following entries to
        the controlDict:
        \verbatim
            application     foamRun;

            solver          fluid;
        \endverbatim
        then execute \c foamRun

Application
    foamMultiRun

Description
    Loads and executes an OpenFOAM solver modules for each region of a
    multiregion simulation e.g. for conjugate heat transfer.

    The region solvers are specified in the \c regionSolvers dictionary entry in
    \c controlDict, containing a list of pairs of region and solver names,
    e.g. for a two region case with one fluid region named
    liquid and one solid region named tubeWall:
    \verbatim
        regionSolvers
        {
            liquid          fluid;
            tubeWall        solid;
        }
    \endverbatim

    The \c regionSolvers entry is a dictionary to support name substitutions to
    simplify the specification of a single solver type for a set of
    regions, e.g.
    \verbatim
        fluidSolver     fluid;
        solidSolver     solid;

        regionSolvers
        {
            tube1             $fluidSolver;
            tubeWall1         solid;
            tube2             $fluidSolver;
            tubeWall2         solid;
            tube3             $fluidSolver;
            tubeWall3         solid;
        }
    \endverbatim

    Uses the flexible PIMPLE (PISO-SIMPLE) solution for time-resolved and
    pseudo-transient and steady simulations.

Usage
    \b foamMultiRun [OPTION]

      - \par -libs '(\"lib1.so\" ... \"libN.so\")'
        Specify the additional libraries loaded

    Example usage:
      - To update and run a \c chtMultiRegion case add the following entries to
        the controlDict:
        \verbatim
            application     foamMultiRun;

            regionSolvers
            {
                fluid           fluid;
                solid           solid;
            }
        \endverbatim
        then execute \c foamMultiRun
This commit is contained in:
Henry Weller
2022-08-04 21:11:35 +01:00
parent 7e2dd6dda2
commit 968e60148a
1540 changed files with 5034 additions and 5070 deletions

View File

@ -0,0 +1,54 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class volScalarField;
location "0";
object T;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 300;
boundaryField
{
inlet
{
type fixedValue;
value uniform 300;
}
outlet
{
type inletOutlet;
inletValue uniform 300;
value uniform 300;
}
symmetry
{
type symmetry;
}
wall
{
type fixedValue;
value uniform 300;
}
plenum
{
type fixedValue;
value uniform 300;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,55 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class volVectorField;
location "0";
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
inlet
{
type flowRateInletVelocity;
massFlowRate 0.0001;
value uniform (0 0 0);
}
outlet
{
type pressureInletOutletVelocity;
inletValue uniform (0 0 0);
value uniform (0 0 0);
}
symmetry
{
type symmetry;
}
wall
{
type fixedValue;
value uniform (0 0 0);
}
plenum
{
type pressureInletVelocity;
value uniform (0 0 0);
}
}
// ************************************************************************* //

View File

@ -0,0 +1,62 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class volScalarField;
location "0";
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 1e5;
boundaryField
{
inlet
{
type zeroGradient;
}
outlet
{
type fixedMean;
meanValue constant 1e5;
value uniform 1e5;
}
symmetry
{
type symmetry;
}
wall
{
type zeroGradient;
}
plenum
{
type plenumPressure;
gamma 1.4;
R 287.04;
supplyMassFlowRate 0.0001;
supplyTotalTemperature 300;
plenumVolume 0.000125;
plenumDensity 1.1613;
plenumTemperature 300;
inletAreaRatio 1.0;
inletDischargeCoefficient 0.8;
timeScale 1e-4;
value uniform 1e5;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,9 @@
#!/bin/sh
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase
(cd system && rm -f blockMeshDict.caseBlocks blockMeshDict.caseBoundary)
rm -rf resolved modelled pressure.eps

View File

@ -0,0 +1,47 @@
#!/bin/sh
cd ${0%/*} || exit 1
. $WM_PROJECT_DIR/bin/tools/RunFunctions
# Run function links the appropriate mesh files and clones the case
run()
{
(
cd system
rm -f blockMeshDict.caseBlocks blockMeshDict.caseBoundary
ln -s blockMeshDict.${1}Blocks blockMeshDict.caseBlocks
ln -s blockMeshDict.${1}Boundary blockMeshDict.caseBoundary
)
cloneCase . ${1}
(
cd ${1}
runApplication blockMesh
runApplication decomposePar
runParallel $(getApplication)
)
}
# Run with a fully resolved plenum
run resolved
# Run with the plenum modelled by a boundary condition
run modelled
# Plot a comparison of the pressure in the neck
cat << EOF | gnuplot -persist
set terminal postscript eps size 5,4 enhanced color
set xlabel "Time (s)"
set ylabel "Gauge pressure in the neck (Pa)"
set output "pressure.eps"
plot \
"resolved/postProcessing/probes/0/p" us 1:(\$4-1e5) t "Resolved Plenum" w l, \
"modelled/postProcessing/probes/0/p" us 1:(\$4-1e5) t "Modelled Plenum" w l
EOF

View File

@ -0,0 +1,20 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
location "constant";
object momentumTransport;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType laminar;
// ************************************************************************* //

View File

@ -0,0 +1,47 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
location "constant";
object physicalProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType
{
type hePsiThermo;
mixture pureMixture;
transport const;
thermo eConst;
equationOfState perfectGas;
specie specie;
energy sensibleInternalEnergy;
}
mixture
{
specie
{
molWeight 28.9;
}
thermodynamics
{
Cv 712;
Hf 0;
}
transport
{
mu 1.8e-05;
Pr 0.7;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,243 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
location "system";
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 0.0025;
vertices
(
(-28 -10 -10)
(-28 -10 -5)
(-28 -10 5)
(-28 -10 10)
(-28 -5 -10)
(-28 -5 -5)
(-28 -5 5)
(-28 -5 10)
(-28 5 -10)
(-28 5 -5)
(-28 5 5)
(-28 5 10)
(-28 10 -10)
(-28 10 -5)
(-28 10 5)
(-28 10 10)
(-14 -10 -10)
(-14 -10 -5)
(-14 -10 5)
(-14 -10 10)
(-14 -5 -10)
(-14 -5 -5)
(-14 -5 5)
(-14 -5 10)
(-14 5 -10)
(-14 5 -5)
(-14 5 5)
(-14 5 10)
(-14 10 -10)
(-14 10 -5)
(-14 10 5)
(-14 10 10)
( -8 -10 -10)
( -8 -10 -5)
( -8 -10 5)
( -8 -10 10)
( -8 -5 -10)
( -8 -5 -5)
( -8 -5 5)
( -8 -5 10)
( -8 5 -10)
( -8 5 -5)
( -8 5 5)
( -8 5 10)
( -8 10 -10)
( -8 10 -5)
( -8 10 5)
( -8 10 10)
( 0 -10 -10)
( 0 -10 -5)
( 0 -10 5)
( 0 -10 10)
( 0 -5 -10)
( 0 -5 -5)
( 0 -5 5)
( 0 -5 10)
( 0 5 -10)
( 0 5 -5)
( 0 5 5)
( 0 5 10)
( 0 10 -10)
( 0 10 -5)
( 0 10 5)
( 0 10 10)
( 6 -10 -10)
( 6 -10 -5)
( 6 -10 5)
( 6 -10 10)
( 6 -5 -10)
( 6 -5 -5)
( 6 -5 5)
( 6 -5 10)
( 6 5 -10)
( 6 5 -5)
( 6 5 5)
( 6 5 10)
( 6 10 -10)
( 6 10 -5)
( 6 10 5)
( 6 10 10)
( 10 -10 -10)
( 10 -10 -5)
( 10 -10 5)
( 10 -10 10)
( 10 -5 -10)
( 10 -5 -5)
( 10 -5 5)
( 10 -5 10)
( 10 5 -10)
( 10 5 -5)
( 10 5 5)
( 10 5 10)
( 10 10 -10)
( 10 10 -5)
( 10 10 5)
( 10 10 10)
(-11 -2 -2)
(-11 -2 2)
(-11 2 -2)
(-11 2 2)
( -8 -2 -2)
( -8 -2 2)
( -8 2 -2)
( -8 2 2)
( 0 -2 -2)
( 0 -2 2)
( 0 2 -2)
( 0 2 2)
( 3 -2 -2)
( 3 -2 2)
( 3 2 -2)
( 3 2 2)
);
x1 14; x2 6; x3 20; x4 6; x5 4; // X divisions
yc 6; ys 12; zc $yc; zs $ys; // Y and Z corner and side divisions
o 6; // O-grid divisions
blocks
(
#include "blockMeshDict.caseBlocks"
hex ( 48 52 53 49 64 68 69 65) ($yc $zc $x4) simpleGrading (1 1 1)
hex ( 49 53 54 50 65 69 70 66) ($yc $zs $x4) simpleGrading (1 1 1)
hex ( 50 54 55 51 66 70 71 67) ($yc $zc $x4) simpleGrading (1 1 1)
hex ( 52 56 57 53 68 72 73 69) ($ys $zc $x4) simpleGrading (1 1 1)
hex ( 54 58 59 55 70 74 75 71) ($ys $zc $x4) simpleGrading (1 1 1)
hex ( 56 60 61 57 72 76 77 73) ($yc $zc $x4) simpleGrading (1 1 1)
hex ( 57 61 62 58 73 77 78 74) ($yc $zs $x4) simpleGrading (1 1 1)
hex ( 58 62 63 59 74 78 79 75) ($yc $zc $x4) simpleGrading (1 1 1)
hex ( 64 68 69 65 80 84 85 81) ($yc $zc $x5) simpleGrading (1 1 1)
hex ( 65 69 70 66 81 85 86 82) ($yc $zs $x5) simpleGrading (1 1 1)
hex ( 66 70 71 67 82 86 87 83) ($yc $zc $x5) simpleGrading (1 1 1)
hex ( 68 72 73 69 84 88 89 85) ($ys $zc $x5) simpleGrading (1 1 1)
hex ( 69 73 74 70 85 89 90 86) ($ys $zs $x5) simpleGrading (1 1 1)
hex ( 70 74 75 71 86 90 91 87) ($ys $zc $x5) simpleGrading (1 1 1)
hex ( 72 76 77 73 88 92 93 89) ($yc $zc $x5) simpleGrading (1 1 1)
hex ( 73 77 78 74 89 93 94 90) ($yc $zs $x5) simpleGrading (1 1 1)
hex ( 74 78 79 75 90 94 95 91) ($yc $zc $x5) simpleGrading (1 1 1)
hex (100 102 103 101 104 106 107 105) ($ys $zs $x3) simpleGrading (1 1 1)
hex (104 106 107 105 108 110 111 109) ($ys $zs $x4) simpleGrading (1 1 1)
hex (108 110 111 109 69 73 74 70 ) ($ys $zs $o ) simpleGrading (1 1 1)
hex ( 53 54 70 69 104 105 109 108) ($zs $x4 $o ) simpleGrading (1 1 1)
hex ( 57 53 69 73 106 104 108 110) ($ys $x4 $o ) simpleGrading (1 1 1)
hex ( 54 58 74 70 105 107 111 109) ($ys $x4 $o ) simpleGrading (1 1 1)
hex ( 58 57 73 74 107 106 110 111) ($zs $x4 $o ) simpleGrading (1 1 1)
);
defaultPatch
{
name walls;
type wall;
}
boundary
(
#include "blockMeshDict.caseBoundary"
outlet
{
type patch;
faces
(
(80 84 85 81)
(81 85 86 82)
(82 86 87 83)
(84 88 89 85)
(85 89 90 86)
(86 90 91 87)
(88 92 93 89)
(89 93 94 90)
(90 94 95 91)
);
}
sides
{
type symmetry;
faces
(
(48 49 65 64)
(49 50 66 65)
(50 51 67 66)
(48 52 68 64)
(52 56 72 68)
(56 60 76 72)
(51 55 71 67)
(55 59 75 71)
(59 63 79 75)
(60 61 77 76)
(61 62 78 77)
(62 63 79 78)
(64 65 81 80)
(65 66 82 81)
(66 67 83 82)
(64 68 84 80)
(68 72 88 84)
(72 76 92 88)
(67 71 87 83)
(71 75 91 87)
(75 79 95 91)
(76 77 93 92)
(77 78 94 93)
(78 79 95 94)
);
}
);
// ************************************************************************* //

View File

@ -0,0 +1,8 @@
plenum
{
type patch;
faces
(
(100 102 103 101)
);
}

View File

@ -0,0 +1,26 @@
hex ( 0 4 5 1 16 20 21 17) ($yc $zc $x1) simpleGrading (1 1 1)
hex ( 1 5 6 2 17 21 22 18) ($yc $zs $x1) simpleGrading (1 1 1)
hex ( 2 6 7 3 18 22 23 19) ($yc $zc $x1) simpleGrading (1 1 1)
hex ( 4 8 9 5 20 24 25 21) ($ys $zc $x1) simpleGrading (1 1 1)
hex ( 5 9 10 6 21 25 26 22) ($ys $zs $x1) simpleGrading (1 1 1)
hex ( 6 10 11 7 22 26 27 23) ($ys $zc $x1) simpleGrading (1 1 1)
hex ( 8 12 13 9 24 28 29 25) ($yc $zc $x1) simpleGrading (1 1 1)
hex ( 9 13 14 10 25 29 30 26) ($yc $zs $x1) simpleGrading (1 1 1)
hex ( 10 14 15 11 26 30 31 27) ($yc $zc $x1) simpleGrading (1 1 1)
hex ( 16 20 21 17 32 36 37 33) ($yc $zc $x2) simpleGrading (1 1 1)
hex ( 17 21 22 18 33 37 38 34) ($yc $zs $x2) simpleGrading (1 1 1)
hex ( 18 22 23 19 34 38 39 35) ($yc $zc $x2) simpleGrading (1 1 1)
hex ( 20 24 25 21 36 40 41 37) ($ys $zc $x2) simpleGrading (1 1 1)
hex ( 22 26 27 23 38 42 43 39) ($ys $zc $x2) simpleGrading (1 1 1)
hex ( 24 28 29 25 40 44 45 41) ($yc $zc $x2) simpleGrading (1 1 1)
hex ( 25 29 30 26 41 45 46 42) ($yc $zs $x2) simpleGrading (1 1 1)
hex ( 26 30 31 27 42 46 47 43) ($yc $zc $x2) simpleGrading (1 1 1)
hex ( 21 25 26 22 96 98 99 97) ($ys $zs $o ) simpleGrading (1 1 1)
hex ( 96 98 99 97 100 102 103 101) ($ys $zs $x2) simpleGrading (1 1 1)
hex ( 21 22 38 37 96 97 101 100) ($zs $x2 $o ) simpleGrading (1 1 1)
hex ( 25 21 37 41 98 96 100 102) ($ys $x2 $o ) simpleGrading (1 1 1)
hex ( 22 26 42 38 97 99 103 101) ($ys $x2 $o ) simpleGrading (1 1 1)
hex ( 26 25 41 42 99 98 102 103) ($zs $x2 $o ) simpleGrading (1 1 1)

View File

@ -0,0 +1,16 @@
inlet
{
type patch;
faces
(
( 0 4 5 1)
( 1 5 6 2)
( 2 6 7 3)
( 4 8 9 5)
( 5 9 10 6)
( 6 10 11 7)
( 8 12 13 9)
( 9 13 14 10)
(10 14 15 11)
);
}

View File

@ -0,0 +1,74 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application foamRun;
solver fluid;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 0.05;
deltaT 1e-4;
writeControl adjustableRunTime;
writeInterval 1e-2;
purgeWrite 0;
writeFormat ascii;
writePrecision 10;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable true;
adjustTimeStep no;
maxCo 0.5;
functions
{
probes
{
libs ("libsampling.so");
type probes;
name probes;
writeControl timeStep;
writeInterval 1;
fields (p);
probeLocations
(
( -0.045 0 0 )
( -0.045 0.020 0 )
( -0.010 0 0 )
( 0.0125 0 0 )
( 0.0125 0.020 0 )
);
}
}
// ************************************************************************* //

View File

@ -0,0 +1,21 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
location "system";
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 4;
method scotch;
// ************************************************************************* //

View File

@ -0,0 +1,24 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
object fvConstraints;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
limitp
{
type limitPressure;
minFactor 0.5;
maxFactor 2;
}
// ************************************************************************* //

View File

@ -0,0 +1,55 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
location "system";
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default Euler;
}
gradSchemes
{
default Gauss linear;
}
divSchemes
{
default none;
div(phi,U) Gauss limitedLinearV 1;
div(phi,e) Gauss limitedLinear 1;
div(phi,K) Gauss limitedLinear 1;
div(phi,(p|rho)) Gauss limitedLinear 1;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
}
laplacianSchemes
{
default Gauss linear corrected;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default corrected;
}
// ************************************************************************* //

View File

@ -0,0 +1,64 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
"(p|rho)"
{
solver PCG;
preconditioner DIC;
tolerance 1e-6;
relTol 0.01;
}
"(p|rho)Final"
{
$p;
relTol 0;
}
"(U|e|k|nuTilda)"
{
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-6;
relTol 0.01;
}
"(U|e|k|nuTilda)Final"
{
$U;
relTol 0;
}
}
PIMPLE
{
momentumPredictor yes;
nOuterCorrectors 3;
nCorrectors 1;
nNonOrthogonalCorrectors 0;
}
relaxationFactors
{
equations
{
".*" 1;
}
}
// ************************************************************************* //