Modular solvers: Reorganised directory structure of applications and tutorials

The new flexible and extensible modular solvers structure already provides most
of the simulation functionality needed for single phase, multiphase,
multicomponent etc. fluid flow problems as well as a very effective method of
combining these with solid heat transfer, solid stress, surface film to solve
complex multi-region, multi-physics problems and are now the primary mechanism
for the further development of OpenFOAM simulation capability in future.  To
emphasis this for both users and developers the applications/solvers directory
has been separated into applications/modules containing all the solver modules:

├── modules
│   ├── compressibleMultiphaseVoF
│   ├── compressibleVoF
│   ├── film
│   ├── fluid
│   ├── fluidSolver
│   ├── functions
│   ├── incompressibleDenseParticleFluid
│   ├── incompressibleDriftFlux
│   ├── incompressibleFluid
│   ├── incompressibleMultiphaseVoF
│   ├── incompressibleVoF
│   ├── isothermalFilm
│   ├── isothermalFluid
│   ├── movingMesh
│   ├── multicomponentFluid
│   ├── multiphaseEuler
│   ├── multiphaseVoFSolver
│   ├── shockFluid
│   ├── solid
│   ├── solidDisplacement
│   ├── twoPhaseSolver
│   ├── twoPhaseVoFSolver
│   ├── VoFSolver
│   └── XiFluid

applications/solvers containing the foamRun and foamMultiRun solver applications
which instantiate and execute the chosen solver modules and also standalone
solver applications for special initialisation and test activities:

├── solvers
│   ├── boundaryFoam
│   ├── chemFoam
│   ├── foamMultiRun
│   ├── foamRun
│   └── potentialFoam

and applications/legacy containing legacy solver applications which are not
currently being actively developed but the functionality of which will be merged
into the solver modules or form the basis of new solver modules as the need
arises:

├── legacy
│   ├── basic
│   │   ├── financialFoam
│   │   └── laplacianFoam
│   ├── combustion
│   │   └── PDRFoam
│   ├── compressible
│   │   └── rhoPorousSimpleFoam
│   ├── electromagnetics
│   │   ├── electrostaticFoam
│   │   ├── magneticFoam
│   │   └── mhdFoam
│   ├── incompressible
│   │   ├── adjointShapeOptimisationFoam
│   │   ├── dnsFoam
│   │   ├── icoFoam
│   │   ├── porousSimpleFoam
│   │   └── shallowWaterFoam
│   └── lagrangian
│       ├── dsmcFoam
│       ├── mdEquilibrationFoam
│       └── mdFoam

Correspondingly the tutorials directory structure has been reorganised with the
modular solver directories at the top level with names that make it easier for
users to find example cases relating to their particular requirements and a
legacy sub-directory containing cases corresponding to the legacy solver
applications listed above:

├── compressibleMultiphaseVoF
│   └── damBreak4phaseLaminar
├── compressibleVoF
│   ├── ballValve
│   ├── climbingRod
│   ├── damBreak
│   ├── depthCharge2D
│   ├── depthCharge3D
│   ├── sloshingTank2D
│   └── throttle
├── film
│   └── rivuletPanel
├── fluid
│   ├── aerofoilNACA0012
│   ├── aerofoilNACA0012Steady
│   ├── angledDuct
│   ├── angledDuctExplicitFixedCoeff
│   ├── angledDuctLTS
│   ├── annularThermalMixer
│   ├── BernardCells
│   ├── blockedChannel
│   ├── buoyantCavity
│   ├── cavity
│   ├── decompressionTank
│   ├── externalCoupledCavity
│   ├── forwardStep
│   ├── helmholtzResonance
│   ├── hotRadiationRoom
│   ├── hotRadiationRoomFvDOM
│   ├── hotRoom
│   ├── hotRoomBoussinesq
│   ├── hotRoomBoussinesqSteady
│   ├── hotRoomComfort
│   ├── iglooWithFridges
│   ├── mixerVessel2DMRF
│   ├── nacaAirfoil
│   ├── pitzDaily
│   ├── prism
│   ├── shockTube
│   ├── squareBend
│   ├── squareBendLiq
│   └── squareBendLiqSteady
├── incompressibleDenseParticleFluid
│   ├── column
│   ├── cyclone
│   ├── Goldschmidt
│   ├── GoldschmidtMPPIC
│   └── injectionChannel
├── incompressibleDriftFlux
│   ├── dahl
│   ├── mixerVessel2DMRF
│   └── tank3D
├── incompressibleFluid
│   ├── airFoil2D
│   ├── ballValve
│   ├── blockedChannel
│   ├── cavity
│   ├── cavityCoupledU
│   ├── channel395
│   ├── drivaerFastback
│   ├── ductSecondaryFlow
│   ├── elipsekkLOmega
│   ├── flowWithOpenBoundary
│   ├── hopperParticles
│   ├── impeller
│   ├── mixerSRF
│   ├── mixerVessel2D
│   ├── mixerVessel2DMRF
│   ├── mixerVesselHorizontal2DParticles
│   ├── motorBike
│   ├── motorBikeSteady
│   ├── movingCone
│   ├── offsetCylinder
│   ├── oscillatingInlet
│   ├── pipeCyclic
│   ├── pitzDaily
│   ├── pitzDailyLES
│   ├── pitzDailyLESDevelopedInlet
│   ├── pitzDailyLTS
│   ├── pitzDailyPulse
│   ├── pitzDailyScalarTransport
│   ├── pitzDailySteady
│   ├── pitzDailySteadyExperimentalInlet
│   ├── pitzDailySteadyMappedToPart
│   ├── pitzDailySteadyMappedToRefined
│   ├── planarContraction
│   ├── planarCouette
│   ├── planarPoiseuille
│   ├── porousBlockage
│   ├── propeller
│   ├── roomResidenceTime
│   ├── rotor2DRotating
│   ├── rotor2DSRF
│   ├── rotorDisk
│   ├── T3A
│   ├── TJunction
│   ├── TJunctionFan
│   ├── turbineSiting
│   ├── waveSubSurface
│   ├── windAroundBuildings
│   └── wingMotion
├── incompressibleMultiphaseVoF
│   ├── damBreak4phase
│   ├── damBreak4phaseFineLaminar
│   ├── damBreak4phaseLaminar
│   └── mixerVessel2DMRF
├── incompressibleVoF
│   ├── angledDuct
│   ├── capillaryRise
│   ├── cavitatingBullet
│   ├── climbingRod
│   ├── containerDischarge2D
│   ├── damBreak
│   ├── damBreakLaminar
│   ├── damBreakPorousBaffle
│   ├── damBreakWithObstacle
│   ├── DTCHull
│   ├── DTCHullMoving
│   ├── DTCHullWave
│   ├── floatingObject
│   ├── floatingObjectWaves
│   ├── forcedUpstreamWave
│   ├── mixerVessel
│   ├── mixerVessel2DMRF
│   ├── mixerVesselHorizontal2D
│   ├── nozzleFlow2D
│   ├── planingHullW3
│   ├── propeller
│   ├── sloshingCylinder
│   ├── sloshingTank2D
│   ├── sloshingTank2D3DoF
│   ├── sloshingTank3D
│   ├── sloshingTank3D3DoF
│   ├── sloshingTank3D6DoF
│   ├── testTubeMixer
│   ├── waterChannel
│   ├── wave
│   ├── wave3D
│   └── weirOverflow
├── isothermalFilm
│   └── rivuletPanel
├── isothermalFluid
│   ├── potentialFreeSurfaceMovingOscillatingBox
│   └── potentialFreeSurfaceOscillatingBox
├── legacy
│   ├── basic
│   │   ├── financialFoam
│   │   │   └── europeanCall
│   │   └── laplacianFoam
│   │       └── flange
│   ├── combustion
│   │   └── PDRFoam
│   │       └── flamePropagationWithObstacles
│   ├── compressible
│   │   └── rhoPorousSimpleFoam
│   │       ├── angledDuctExplicit
│   │       └── angledDuctImplicit
│   ├── electromagnetics
│   │   ├── electrostaticFoam
│   │   │   └── chargedWire
│   │   └── mhdFoam
│   │       └── hartmann
│   ├── incompressible
│   │   ├── adjointShapeOptimisationFoam
│   │   │   └── pitzDaily
│   │   ├── dnsFoam
│   │   │   └── boxTurb16
│   │   ├── icoFoam
│   │   │   ├── cavity
│   │   │   └── elbow
│   │   ├── porousSimpleFoam
│   │   │   ├── angledDuctExplicit
│   │   │   └── angledDuctImplicit
│   │   └── shallowWaterFoam
│   │       └── squareBump
│   ├── lagrangian
│   │   ├── dsmcFoam
│   │   │   ├── freeSpacePeriodic
│   │   │   ├── freeSpaceStream
│   │   │   ├── supersonicCorner
│   │   │   └── wedge15Ma5
│   │   ├── mdEquilibrationFoam
│   │   │   ├── periodicCubeArgon
│   │   │   └── periodicCubeWater
│   │   └── mdFoam
│   │       └── nanoNozzle
├── mesh
│   ├── blockMesh
│   │   ├── pipe
│   │   ├── sphere
│   │   ├── sphere7
│   │   └── sphere7ProjectedEdges
│   ├── refineMesh
│   │   └── refineFieldDirs
│   └── snappyHexMesh
│       ├── flange
│       └── pipe
├── movingMesh
│   └── SnakeRiverCanyon
├── multicomponentFluid
│   ├── aachenBomb
│   ├── counterFlowFlame2D
│   ├── counterFlowFlame2D_GRI
│   ├── counterFlowFlame2D_GRI_TDAC
│   ├── counterFlowFlame2DLTS
│   ├── counterFlowFlame2DLTS_GRI_TDAC
│   ├── DLR_A_LTS
│   ├── filter
│   ├── lockExchange
│   ├── membrane
│   ├── nc7h16
│   ├── parcelInBox
│   ├── SandiaD_LTS
│   ├── simplifiedSiwek
│   ├── smallPoolFire2D
│   ├── smallPoolFire3D
│   ├── verticalChannel
│   ├── verticalChannelLTS
│   └── verticalChannelSteady
├── multiphaseEuler
│   ├── bed
│   ├── bubbleColumn
│   ├── bubbleColumnEvaporating
│   ├── bubbleColumnEvaporatingDissolving
│   ├── bubbleColumnEvaporatingReacting
│   ├── bubbleColumnIATE
│   ├── bubbleColumnLaminar
│   ├── bubbleColumnLES
│   ├── bubblePipe
│   ├── damBreak4phase
│   ├── fluidisedBed
│   ├── fluidisedBedLaminar
│   ├── Grossetete
│   ├── hydrofoil
│   ├── injection
│   ├── LBend
│   ├── mixerVessel2D
│   ├── mixerVessel2DMRF
│   ├── pipeBend
│   ├── steamInjection
│   ├── titaniaSynthesis
│   ├── titaniaSynthesisSurface
│   ├── wallBoilingIATE
│   ├── wallBoilingPolydisperse
│   └── wallBoilingPolydisperseTwoGroups
├── multiRegion
│   ├── CHT
│   │   ├── circuitBoardCooling
│   │   ├── coolingCylinder2D
│   │   ├── coolingSphere
│   │   ├── heatedDuct
│   │   ├── heatExchanger
│   │   ├── multiphaseCoolingCylinder2D
│   │   ├── reverseBurner
│   │   ├── shellAndTubeHeatExchanger
│   │   ├── VoFcoolingCylinder2D
│   │   └── wallBoiling
│   └── film
│       ├── cylinder
│       ├── cylinderDripping
│       ├── cylinderVoF
│       ├── hotBoxes
│       ├── rivuletBox
│       ├── rivuletPanel
│       ├── splashPanel
│       └── VoFToFilm
├── potentialFoam
│   ├── cylinder
│   └── pitzDaily
├── resources
│   ├── blockMesh
│   ├── geometry
│   └── thermoData
├── shockFluid
│   ├── biconic25-55Run35
│   ├── forwardStep
│   ├── LadenburgJet60psi
│   ├── movingCone
│   ├── obliqueShock
│   ├── shockTube
│   └── wedge15Ma5
├── solidDisplacement
│   ├── beamEndLoad
│   └── plateHole
└── XiFluid
    ├── kivaTest
    └── moriyoshiHomogeneous
This commit is contained in:
Henry Weller
2023-05-25 18:14:41 +01:00
parent 20c181c5c0
commit e744fdb5f1
6180 changed files with 490 additions and 763 deletions

View File

@ -0,0 +1,39 @@
/*--------------------------------*- 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;
object T.particles;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 300;
boundaryField
{
inlet
{
type fixedValue;
value $internalField;
}
outlet
{
type zeroGradient;
}
walls
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,39 @@
/*--------------------------------*- 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;
object T.water;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 300;
boundaryField
{
inlet
{
type fixedValue;
value $internalField;
}
outlet
{
type zeroGradient;
}
walls
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,39 @@
/*--------------------------------*- 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;
object U.particles;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
inlet
{
type fixedValue;
value uniform (0 0.5 0);
}
outlet
{
type zeroGradient;
}
walls
{
type slip;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,39 @@
/*--------------------------------*- 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;
object U.water;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
inlet
{
type fixedValue;
value uniform (0 0.5 0);
}
outlet
{
type zeroGradient;
}
walls
{
type noSlip;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,39 @@
/*--------------------------------*- 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;
object alpha.particles;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 1e-3;
boundaryField
{
inlet
{
type fixedValue;
value $internalField;
}
outlet
{
type zeroGradient;
}
walls
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,39 @@
/*--------------------------------*- 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;
object alpha.water;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0.999;
boundaryField
{
inlet
{
type fixedValue;
value $internalField;
}
outlet
{
type zeroGradient;
}
walls
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- 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;
object alphat.particles;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
inlet
{
type calculated;
value $internalField;
}
outlet
{
type calculated;
value $internalField;
}
walls
{
type calculated;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- 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;
object alphat.water;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
inlet
{
type calculated;
value $internalField;
}
outlet
{
type calculated;
value $internalField;
}
walls
{
type compressible::alphatWallFunction;
Prt 0.85;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- 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;
object epsilon.water;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -3 0 0 0 0];
internalField uniform 0.00136;
boundaryField
{
inlet
{
type turbulentMixingLengthDissipationRateInlet;
mixingLength 0.02;
k k.water;
value $internalField;
}
outlet
{
type zeroGradient;
}
walls
{
type epsilonWallFunction;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,39 @@
/*--------------------------------*- 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;
object f.particles;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 1.0;
boundaryField
{
inlet
{
type fixedValue;
value $internalField;
}
outlet
{
type zeroGradient;
}
walls
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- 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;
object k.water;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0.00081;
boundaryField
{
inlet
{
type turbulentIntensityKineticEnergyInlet;
U U.water;
intensity 0.05;
value $internalField;
}
outlet
{
type zeroGradient;
}
walls
{
type kqRWallFunction;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- 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;
object nut.particles;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
inlet
{
type calculated;
value $internalField;
}
outlet
{
type calculated;
value $internalField;
}
walls
{
type calculated;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- 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;
object nut.water;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
inlet
{
type calculated;
value $internalField;
}
outlet
{
type calculated;
value $internalField;
}
walls
{
type nutkWallFunction;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,41 @@
/*--------------------------------*- 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;
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 1e5;
boundaryField
{
inlet
{
type calculated;
value $internalField;
}
outlet
{
type calculated;
value $internalField;
}
walls
{
type calculated;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- 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;
object p_rgh;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 1e5;
boundaryField
{
inlet
{
type fixedFluxPressure;
value $internalField;
}
outlet
{
type prghPressure;
p $internalField;
value $internalField;
}
walls
{
type fixedFluxPressure;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,9 @@
#!/bin/sh
cd ${0%/*} || exit 1 # Run from this directory
# Source clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase && rm -f *.eps
#------------------------------------------------------------------------------

View File

@ -0,0 +1,28 @@
#!/bin/sh
cd ${0%/*} || exit 1 # Run from this directory
# Source run functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions
# Mesh
runApplication blockMesh
runApplication topoSet
# Run
runApplication decomposePar
runParallel $(getApplication)
runApplication reconstructPar -latestTime
# Post-process
runApplication foamPostProcess -func "
graphLayerAverage
(
name=graphCrossSection,
patches=(inlet),
axis=distance,
d.particles
)
" -latestTime
cd validation && ./createGraphs
#------------------------------------------------------------------------------

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 uniformDimensionedVectorField;
object g;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -2 0 0 0 0];
value (0 0 -9.81);
// ************************************************************************* //

View File

@ -0,0 +1,34 @@
/*--------------------------------*- 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 momentumTransport.particles;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType RAS;
RAS
{
model phasePressure;
turbulence on;
printCoeffs on;
phasePressureCoeffs
{
preAlphaExp 500;
expMax 1000;
g0 1000;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,27 @@
/*--------------------------------*- 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 momentumTransport.water;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType RAS;
RAS
{
model RNGkEpsilon;
turbulence on;
printCoeffs on;
}
// ************************************************************************* //

View File

@ -0,0 +1,178 @@
/*--------------------------------*- 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 phaseProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
type populationBalanceMultiphaseSystem;
phases (particles water);
populationBalances (agglomerates);
particles
{
type pureIsothermalPhaseModel;
diameterModel velocityGroup;
velocityGroupCoeffs
{
populationBalance agglomerates;
shapeModel spherical;
sizeGroups
(
f1 {dSph 1e-6; value 0;}
f2 {dSph 1.21e-6; value 0.000;}
f3 {dSph 1.463e-6; value 0.0001;}
f4 {dSph 1.77e-6; value 0.0002;}
f5 {dSph 2.142e-6; value 0.0004;}
f6 {dSph 2.591e-6; value 0.0008;}
f7 {dSph 3.134e-6; value 0.0015;}
f8 {dSph 3.792e-6; value 0.0025;}
f9 {dSph 4.587e-6; value 0.004;}
f10 {dSph 5.549e-6; value 0.0062;}
f11 {dSph 6.71e-6; value 0.0093;}
f12 {dSph 8.12e-6; value 0.0137;}
f13 {dSph 9.82e-6; value 0.0198;}
f14 {dSph 11.88e-6; value 0.0279;}
f15 {dSph 14.38e-6; value 0.0383;}
f16 {dSph 17.39e-6; value 0.0512;}
f17 {dSph 21.04e-6; value 0.0663;}
f18 {dSph 25.45e-6; value 0.0829;}
f19 {dSph 30.79e-6; value 0.0991;}
f20 {dSph 37.24e-6; value 0.1121;}
f21 {dSph 45.06e-6; value 0.1183;}
f22 {dSph 54.51e-6; value 0.1141;}
f23 {dSph 65.94e-6; value 0.0977;}
f24 {dSph 79.77e-6; value 0.0712;}
f25 {dSph 96.49e-6; value 0.0412;}
f26 {dSph 116.7e-6; value 0.0170;}
f27 {dSph 141.2e-6; value 0.004;}
f28 {dSph 170.8e-6; value 0.0002;}
f29 {dSph 206.7e-6; value 0;}
f30 {dSph 250e-6; value 0;}
);
}
alphaMax 0.62;
residualAlpha 1e-8;
}
water
{
type pureIsothermalPhaseModel;
diameterModel none;
residualAlpha 1e-8;
}
populationBalanceCoeffs
{
agglomerates
{
continuousPhase water;
coalescenceModels
(
AdachiStuartFokkink{}
);
binaryBreakupModels
();
breakupModels
(
Kusters
{
daughterSizeDistributionModel Laakkonen;
C4 2;
B 50e-7;
dP 250e-9;
Df 2.4;
}
);
driftModels
();
nucleationModels
();
}
}
blending
{
default
{
type continuous;
phase water;
}
}
surfaceTension
{}
aspectRatio
{}
interfaceCompression
{}
drag
{
particles_dispersedIn_water
{
type WenYu;
}
}
virtualMass
{
particles_dispersedIn_water
{
type constantCoefficient;
Cvm 0.5;
}
}
heatTransfer
{}
phaseTransfer
{}
lift
{
particles_dispersedIn_water
{
type SaffmanMei;
residualRe 1e-6;
}
}
wallLubrication
{}
turbulentDispersion
{
particles_dispersedIn_water
{
type Burns;
sigma 1;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,50 @@
/*--------------------------------*- 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 physicalProperties.particles;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType
{
type heRhoThermo;
mixture pureMixture;
transport const;
thermo hConst;
equationOfState rhoConst;
specie specie;
energy sensibleInternalEnergy;
}
mixture
{
specie
{
molWeight 14;
}
equationOfState
{
rho 1400;
}
thermodynamics
{
Cp 1000;
Hf 0;
}
transport
{
mu 0;
Pr 1;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,50 @@
/*--------------------------------*- 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 physicalProperties.water;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType
{
type heRhoThermo;
mixture pureMixture;
transport const;
thermo hConst;
equationOfState rhoConst;
specie specie;
energy sensibleInternalEnergy;
}
mixture
{
specie
{
molWeight 18;
}
equationOfState
{
rho 997;
};
thermodynamics
{
Cp 4181;
Hf 0;
}
transport
{
mu 8.9e-4;
Pr 6.127;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,183 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 1e-3;
geometry
{
torus
{
type triSurfaceMesh;
file "torus.obj";
}
}
vertices
(
(-9.9 0 9.9)
(-14.14 0 14.14)
(14.14 0 14.14)
(9.9 0 9.9)
(9.9 0 -9.9)
(14.14 0 -14.14)
(-14.14 0 -14.14)
(-9.9 0 -9.9)
(-9.9 400 9.9)
(-14.14 400 14.14)
(14.14 400 14.14)
(9.9 400 9.9)
(9.9 400 -9.9)
(14.14 400 -14.14)
(-14.14 400 -14.14)
(-9.9 400 -9.9)
(-9.9 450.1 60)
(-14.14 445.86 60)
(14.14 445.86 60)
(9.9 450.1 60)
(9.9 469.9 60)
(14.14 474.14 60)
(-14.14 474.14 60)
(-9.9 469.9 60)
(-9.9 450.1 460)
(-14.14 445.86 460)
(14.14 445.86 460)
(9.9 450.1 460)
(9.9 469.9 460)
(14.14 474.14 460)
(-14.14 474.14 460)
(-9.9 469.9 460)
);
blocks
(
hex (0 1 2 3 8 9 10 11) (8 12 100) simpleGrading (0.35 1 1)
hex (3 2 5 4 11 10 13 12) (8 12 100) simpleGrading (0.35 1 1)
hex (4 5 6 7 12 13 14 15) (8 12 100) simpleGrading (0.35 1 1)
hex (7 6 1 0 15 14 9 8) (8 12 100) simpleGrading (0.35 1 1)
hex (0 3 4 7 8 11 12 15) (12 12 100) simpleGrading (1 1 1)
hex (8 9 10 11 16 17 18 19) (8 12 23) simpleGrading (0.35 1 1)
hex (11 10 13 12 19 18 21 20) (8 12 23) simpleGrading (0.35 1 1)
hex (12 13 14 15 20 21 22 23) (8 12 23) simpleGrading (0.35 1 1)
hex (15 14 9 8 23 22 17 16) (8 12 23) simpleGrading (0.35 1 1)
hex (8 11 12 15 16 19 20 23) (12 12 23) simpleGrading (1 1 1)
hex (16 17 18 19 24 25 26 27) (8 12 100) simpleGrading (0.35 1 1)
hex (19 18 21 20 27 26 29 28) (8 12 100) simpleGrading (0.35 1 1)
hex (20 21 22 23 28 29 30 31) (8 12 100) simpleGrading (0.35 1 1)
hex (23 22 17 16 31 30 25 24) (8 12 100) simpleGrading (0.35 1 1)
hex (16 19 20 23 24 27 28 31) (12 12 100) simpleGrading (1 1 1)
);
edges
(
arc 1 2 (0 0 20)
arc 2 5 (20 0 0)
arc 5 6 (0 0 -20)
arc 6 1 (-20 0 0)
arc 0 3 (0 0 11.23)
arc 3 4 (11.23 0 0)
arc 4 7 (0 0 -11.23)
arc 7 0 (-11.23 0 0)
arc 9 10 (0 400 20)
arc 10 13 (20 400 0)
arc 13 14 (0 400 -20)
arc 14 9 (-20 400 0)
arc 8 11 (0 400 11.23)
arc 11 12 (11.23 400 0)
arc 12 15 (0 400 -11.23)
arc 15 8 (-11.23 400 0)
arc 17 18 (0 440 60)
arc 18 21 (20 460 60)
arc 21 22 (0 480 60)
arc 22 17 (-20 460 60)
arc 16 19 (0 448.77 60)
arc 19 20 (11.23 460 60)
arc 20 23 (0 471.23 60)
arc 23 16 (-11.23 460 60)
arc 25 26 (0 440 460)
arc 26 29 (20 460 460)
arc 29 30 (0 480 460)
arc 30 25 (-20 460 460)
arc 24 27 (0 448.77 460)
arc 27 28 (11.23 460 460)
arc 28 31 (0 471.23 460)
arc 31 24 (-11.23 460 460)
arc 9 17 (-14.14 432.428 27.572)
arc 10 18 (14.14 432.428 27.572)
arc 13 21 (14.14 452.425 7.572)
arc 14 22 (-14.14 452.425 7.572)
arc 8 16 (-9.9 435.426 24.574)
arc 11 19 (9.9 435.426 24.574)
arc 12 20 (9.9 449.427 10.573)
arc 15 23 (-9.9 449.427 10.573)
);
faces
(
project (9 10 18 17) torus
project (10 13 21 18) torus
project (13 14 22 21) torus
project (14 9 17 22) torus
);
boundary
(
inlet
{
type patch;
faces
(
(0 1 2 3)
(3 2 5 4)
(4 5 6 7)
(7 6 1 0)
(0 3 4 7)
);
}
outlet
{
type patch;
faces
(
(24 25 26 27)
(27 26 29 28)
(28 29 30 31)
(31 30 25 24)
(24 27 28 31)
);
}
walls
{
type wall;
faces
(
(1 9 10 2)
(2 10 13 5)
(5 13 14 6)
(6 14 9 1)
(9 17 18 10)
(10 18 21 13)
(13 21 22 14)
(14 22 17 9)
(17 25 26 18)
(18 26 29 21)
(21 29 30 22)
(22 30 25 17)
);
}
);
mergePatchPairs
();

View File

@ -0,0 +1,104 @@
/*--------------------------------*- 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 controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application foamRun;
solver multiphaseEuler;
startFrom latestTime;
startTime 0;
stopAt endTime;
endTime 2;
deltaT 0.003;
writeControl adjustableRunTime;
writeInterval 0.1;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
adjustTimeStep yes;
maxCo 1;
maxDeltaT 1;
functions
{
#includeFunc writeObjects(d.particles)
#includeFunc populationBalanceSizeDistribution
(
name=probabilityDensity.afterBend_1d,
populationBalance=agglomerates,
select=cellZone,
cellZone=afterBend_1d,
functionType=volumeDensity,
coordinateType=diameter,
normalise=yes
)
#includeFunc populationBalanceSizeDistribution
(
name=probabilityDensity.afterBend_5d,
populationBalance=agglomerates,
select=cellZone,
cellZone=afterBend_5d,
functionType=volumeDensity,
coordinateType=diameter,
normalise=yes
)
#includeFunc populationBalanceSizeDistribution
(
name=probabilityDensity.afterBend_9d,
populationBalance=agglomerates,
select=cellZone,
cellZone=afterBend_9d,
functionType=volumeDensity,
coordinateType=diameter,
normalise=yes
)
#includeFunc populationBalanceSizeDistribution
(
name=probabilityDensity.beforeBend_1d,
populationBalance=agglomerates,
select=cellZone,
cellZone=beforeBend_1d,
functionType=volumeDensity,
coordinateType=diameter,
normalise=yes
)
}
// ************************************************************************* //

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;
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 6;
method scotch;
// ************************************************************************* //

View File

@ -0,0 +1,70 @@
/*--------------------------------*- 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 fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default Euler;
}
gradSchemes
{
default Gauss linear;
}
divSchemes
{
default none;
div(phi,alpha) Gauss vanLeer;
div(phir,alpha) Gauss vanLeer;
div(phi,U) Gauss limitedLinearV 1;
div(alphaRhoPhi,U) Gauss limitedLinearV 1;
"div\(alphaPhi,f.*\)" Gauss limitedLinear 1;
div(alphaPhi,p) Gauss limitedLinear 1;
"div\(alphaRhoPhi,(h|e|k|epsilon)\)" Gauss limitedLinear 1;
div(alphaRhoPhi,K) Gauss limitedLinear 1;
div(alphaRhoPhi.water,(p|rho.water)) Gauss limitedLinear 1;
div((((alpha.water*rho.water)*nuEff.water)*dev2(T(grad(U.water))))) Gauss linear;
div((((rho.particles*nut.particles)*dev2(T(grad(U.particles))))+(((rho.particles*lambda.particles)*div(phi.particles))*I))) Gauss linear;
}
laplacianSchemes
{
default Gauss linear uncorrected;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default uncorrected;
}
wallDist
{
method meshWave;
}
// ************************************************************************* //

View File

@ -0,0 +1,99 @@
/*--------------------------------*- 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 fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
"alpha.*"
{
nAlphaCorr 1;
nAlphaSubCycles 3;
implicitPhasePressure yes;
solver PBiCGStab;
preconditioner DIC;
tolerance 1e-9;
relTol 0;
minIter 1;
}
p_rgh
{
solver GAMG;
smoother DIC;
tolerance 1e-8;
relTol 0.01;
}
p_rghFinal
{
$p_rgh;
relTol 0;
}
"(h|e).*"
{
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-6;
relTol 0;
minIter 1;
maxIter 10;
}
"(k|epsilon).*"
{
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-5;
relTol 0;
minIter 1;
}
"f.*"
{
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-6;
relTol 0;
}
agglomerates
{
nCorr 1;
tolerance 1e-4;
scale true;
solveOnFinalIterOnly true;
sourceUpdateInterval 1;
}
}
PIMPLE
{
nOuterCorrectors 3;
nCorrectors 2;
nNonOrthogonalCorrectors 0;
alphaSpreadMin 5e-4;
alphaSpreadMax 0.9995;
faceMomentum no;
VmDdtCorrection yes;
dragCorrection yes;
partialElimination no;
}
relaxationFactors
{}
// ************************************************************************* //

View File

@ -0,0 +1,77 @@
/*--------------------------------*- 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 topoSetDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
actions
(
{
name beforeBend_1d;
type cellSet;
action new;
source boxToCell;
box (-0.03 0.35 -0.03) (0.03 0.37 0.03);
}
{
name afterBend_1d;
type cellSet;
action new;
source boxToCell;
box (-0.03 0.43 0.09) (0.03 0.48 0.11);
}
{
name afterBend_5d;
type cellSet;
action new;
source boxToCell;
box (-0.03 0.43 0.25) (0.03 0.48 0.27);
}
{
name afterBend_9d;
type cellSet;
action new;
source boxToCell;
box (-0.03 0.43 0.41) (0.03 0.48 0.43);
}
{
name beforeBend_1d;
type cellZoneSet;
action new;
source setToCellZone;
set beforeBend_1d;
}
{
name afterBend_1d;
type cellZoneSet;
action new;
source setToCellZone;
set afterBend_1d;
}
{
name afterBend_5d;
type cellZoneSet;
action new;
source setToCellZone;
set afterBend_5d;
}
{
name afterBend_9d;
type cellZoneSet;
action new;
source setToCellZone;
set afterBend_9d;
}
);
// ************************************************************************* //

View File

@ -0,0 +1,46 @@
#!/bin/sh
if ! which gnuplot > /dev/null 2>&1
then
echo 'gnuplot not found - skipping graph creation' >&2
exit 1
fi
time=$(foamListTimes -case .. -latestTime)
beforeBend=../postProcessing/probabilityDensity.beforeBend_1d/$time/probabilityDensity.beforeBend_1d.xy
afterBend1D=../postProcessing/probabilityDensity.afterBend_1d/$time/probabilityDensity.afterBend_1d.xy
afterBend3D=../postProcessing/probabilityDensity.afterBend_3d/$time/probabilityDensity.afterBend_3d.xy
afterBend5D=../postProcessing/probabilityDensity.afterBend_5d/$time/probabilityDensity.afterBend_5d.xy
afterBend7D=../postProcessing/probabilityDensity.afterBend_7d/$time/probabilityDensity.afterBend_7d.xy
afterBend9D=../postProcessing/probabilityDensity.afterBend_9d/$time/probabilityDensity.afterBend_9d.xy
layerAverage=../postProcessing/graphCrossSection/$time/layerAverage.xy
gnuplot<<EOF
set terminal postscript eps color enhanced font "Helvetica,20"
set output '../volumeDensity.eps'
set logscale x
set xlabel 'd ({/Symbol m}m)'
set ylabel '({/Symbol a}/{/Symbol a}_{tot})/{/Symbol D}d (mm^{-1})'
set key left top
set grid
plot "$beforeBend" u (\$1*1e6):(\$2) w histeps lw 3 lc rgb 'web-green' t 'Before bend',\
"$afterBend1D" u (\$1*1e6):(\$2) w histeps lw 3 lc rgb 'red' t 'After bend: 1D',\
"$afterBend5D" u (\$1*1e6):(\$2) w histeps lw 3 lc rgb 'orange' t 'After bend: 5D',\
"$afterBend9D" u (\$1*1e6):(\$2) w histeps lw 3 lc rgb 'blue' t 'After bend: 9D'
EOF
gnuplot<<EOF
set terminal postscript eps color enhanced font "Helvetica,20"
set output '../crossSectionAverageDiameter.eps'
set xlabel 'Distance along pipe (m)'
set ylabel 'Cross-section average particle diameter ({/Symbol m}m)'
set key left top
set grid
plot "$layerAverage" u (\$1):(\$2*1e6) w histeps lw 3 lc rgb 'web-green' t ''
EOF
#------------------------------------------------------------------------------