Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
HPCAPPs
OpenFOAM-GPU-v2.0
Commits
649c29f9
Commit
649c29f9
authored
Aug 30, 2023
by
quant
Browse files
Initial commit
parent
89db0b5a
Changes
789
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1335 additions
and
0 deletions
+1335
-0
OpenFOAM-v2112/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/createPorousZones.H
...pressible/simpleFoam/porousSimpleFoam/createPorousZones.H
+1
-0
OpenFOAM-v2112/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/pEqn.H
...solvers/incompressible/simpleFoam/porousSimpleFoam/pEqn.H
+59
-0
OpenFOAM-v2112/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/porousSimpleFoam.C
...mpressible/simpleFoam/porousSimpleFoam/porousSimpleFoam.C
+100
-0
OpenFOAM-v2112/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/setPorosityTreatment.H
...ssible/simpleFoam/porousSimpleFoam/setPorosityTreatment.H
+19
-0
OpenFOAM-v2112/applications/solvers/incompressible/simpleFoam/simpleFoam.C
...plications/solvers/incompressible/simpleFoam/simpleFoam.C
+121
-0
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/Allwclean
...M-v2112/applications/solvers/lagrangian/DPMFoam/Allwclean
+12
-0
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/Allwmake
...AM-v2112/applications/solvers/lagrangian/DPMFoam/Allwmake
+13
-0
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/CourantNo.H
...v2112/applications/solvers/lagrangian/DPMFoam/CourantNo.H
+53
-0
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/DPMDyMFoam.C
...ations/solvers/lagrangian/DPMFoam/DPMDyMFoam/DPMDyMFoam.C
+168
-0
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/MPPICDyMFoam.C
...lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/MPPICDyMFoam.C
+43
-0
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/Make/files
...ers/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/Make/files
+3
-0
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/Make/options
...s/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/Make/options
+48
-0
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/Make/files
...ications/solvers/lagrangian/DPMFoam/DPMDyMFoam/Make/files
+3
-0
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/Make/options
...ations/solvers/lagrangian/DPMFoam/DPMDyMFoam/Make/options
+47
-0
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/correctPhic.H
...tions/solvers/lagrangian/DPMFoam/DPMDyMFoam/correctPhic.H
+11
-0
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/createUcf.H
...cations/solvers/lagrangian/DPMFoam/DPMDyMFoam/createUcf.H
+51
-0
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/pEqn.H
...applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/pEqn.H
+62
-0
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMFoam.C
...M-v2112/applications/solvers/lagrangian/DPMFoam/DPMFoam.C
+155
-0
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMTurbulenceModels/DPMIncompressibleTurbulenceModel.C
...am/DPMTurbulenceModels/DPMIncompressibleTurbulenceModel.C
+210
-0
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMTurbulenceModels/DPMIncompressibleTurbulenceModel.H
...am/DPMTurbulenceModels/DPMIncompressibleTurbulenceModel.H
+156
-0
No files found.
Too many changes to show.
To preserve performance only
789 of 789+
files are displayed.
Plain diff
Email patch
OpenFOAM-v2112/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/createPorousZones.H
0 → 100644
View file @
649c29f9
IOporosityModelList
pZones
(
mesh
);
OpenFOAM-v2112/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/pEqn.H
0 → 100644
View file @
649c29f9
tmp
<
volVectorField
>
tHbyA
;
if
(
pressureImplicitPorosity
)
{
tHbyA
=
constrainHbyA
(
trTU
()
&
UEqn
.
H
(),
U
,
p
);
}
else
{
tHbyA
=
constrainHbyA
(
trAU
()
*
UEqn
.
H
(),
U
,
p
);
}
volVectorField
&
HbyA
=
tHbyA
.
ref
();
tUEqn
.
clear
();
surfaceScalarField
phiHbyA
(
"phiHbyA"
,
fvc
::
flux
(
HbyA
));
MRF
.
makeRelative
(
phiHbyA
);
adjustPhi
(
phiHbyA
,
U
,
p
);
while
(
simple
.
correctNonOrthogonal
())
{
tmp
<
fvScalarMatrix
>
tpEqn
;
if
(
pressureImplicitPorosity
)
{
tpEqn
=
(
fvm
::
laplacian
(
trTU
(),
p
)
==
fvc
::
div
(
phiHbyA
));
}
else
{
tpEqn
=
(
fvm
::
laplacian
(
trAU
(),
p
)
==
fvc
::
div
(
phiHbyA
));
}
fvScalarMatrix
pEqn
=
tpEqn
.
ref
();
pEqn
.
setReference
(
pRefCell
,
pRefValue
);
pEqn
.
solve
();
if
(
simple
.
finalNonOrthogonalIter
())
{
phi
=
phiHbyA
-
pEqn
.
flux
();
}
}
#include "continuityErrs.H"
// Explicitly relax pressure for momentum corrector
p
.
relax
();
if
(
pressureImplicitPorosity
)
{
U
=
HbyA
-
(
trTU
()
&
fvc
::
grad
(
p
));
}
else
{
U
=
HbyA
-
(
trAU
()
*
fvc
::
grad
(
p
));
}
U
.
correctBoundaryConditions
();
fvOptions
.
correct
(
U
);
OpenFOAM-v2112/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/porousSimpleFoam.C
0 → 100644
View file @
649c29f9
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
-------------------------------------------------------------------------------
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
porousSimpleFoam
Group
grpIncompressibleSolvers
Description
Steady-state solver for incompressible, turbulent flow with
implicit or explicit porosity treatment and support for multiple reference
frames (MRF).
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "singlePhaseTransportModel.H"
#include "turbulentTransportModel.H"
#include "simpleControl.H"
#include "IOporosityModelList.H"
#include "fvOptions.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int
main
(
int
argc
,
char
*
argv
[])
{
argList
::
addNote
(
"Steady-state solver for incompressible, turbulent flow with"
"implicit/explicit porosity treatment
\n
"
"With MRF support."
);
#define CREATE_FIELDS_2 createPorousZones.H
#include "postProcess.H"
#include "addCheckCaseOptions.H"
#include "setRootCaseLists.H"
#include "createTime.H"
#include "createMesh.H"
#include "createControl.H"
#include "createFields.H"
#include "createPorousZones.H"
#include "setPorosityTreatment.H"
#include "initContinuityErrs.H"
turbulence
->
validate
();
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info
<<
"
\n
Starting time loop
\n
"
<<
endl
;
while
(
simple
.
loop
())
{
Info
<<
"Time = "
<<
runTime
.
timeName
()
<<
nl
<<
endl
;
// Pressure-velocity SIMPLE corrector
{
#include "UEqn.H"
#include "pEqn.H"
}
laminarTransport
.
correct
();
turbulence
->
correct
();
runTime
.
write
();
runTime
.
printExecutionTime
(
Info
);
}
Info
<<
"End
\n
"
<<
endl
;
return
0
;
}
// ************************************************************************* //
OpenFOAM-v2112/applications/solvers/incompressible/simpleFoam/porousSimpleFoam/setPorosityTreatment.H
0 → 100644
View file @
649c29f9
bool
pressureImplicitPorosity
(
false
);
// nUCorrectors used for pressureImplicitPorosity
int
nUCorr
=
0
;
if
(
pZones
.
active
())
{
// nUCorrectors for pressureImplicitPorosity
nUCorr
=
simple
.
dict
().
getOrDefault
<
int
>
(
"nUCorrectors"
,
0
);
if
(
nUCorr
>
0
)
{
pressureImplicitPorosity
=
true
;
Info
<<
"Using pressure implicit porosity"
<<
endl
;
}
else
{
Info
<<
"Using pressure explicit porosity"
<<
endl
;
}
}
OpenFOAM-v2112/applications/solvers/incompressible/simpleFoam/simpleFoam.C
0 → 100644
View file @
649c29f9
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
-------------------------------------------------------------------------------
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
simpleFoam
Group
grpIncompressibleSolvers
Description
Steady-state solver for incompressible, turbulent flows.
\heading Solver details
The solver uses the SIMPLE algorithm to solve the continuity equation:
\f[
\div \vec{U} = 0
\f]
and momentum equation:
\f[
\div \left( \vec{U} \vec{U} \right) - \div \gvec{R}
= - \grad p + \vec{S}_U
\f]
Where:
\vartable
\vec{U} | Velocity
p | Pressure
\vec{R} | Stress tensor
\vec{S}_U | Momentum source
\endvartable
\heading Required fields
\plaintable
U | Velocity [m/s]
p | Kinematic pressure, p/rho [m2/s2]
\<turbulence fields\> | As required by user selection
\endplaintable
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "singlePhaseTransportModel.H"
#include "turbulentTransportModel.H"
#include "simpleControl.H"
#include "fvOptions.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int
main
(
int
argc
,
char
*
argv
[])
{
argList
::
addNote
(
"Steady-state solver for incompressible, turbulent flows."
);
#include "postProcess.H"
#include "addCheckCaseOptions.H"
#include "setRootCaseLists.H"
#include "createTime.H"
#include "createMesh.H"
#include "createControl.H"
#include "createFields.H"
#include "initContinuityErrs.H"
turbulence
->
validate
();
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info
<<
"
\n
Starting time loop
\n
"
<<
endl
;
while
(
simple
.
loop
())
{
Info
<<
"Time = "
<<
runTime
.
timeName
()
<<
nl
<<
endl
;
// --- Pressure-velocity SIMPLE corrector
{
#include "UEqn.H"
#include "pEqn.H"
}
laminarTransport
.
correct
();
turbulence
->
correct
();
runTime
.
write
();
runTime
.
printExecutionTime
(
Info
);
}
Info
<<
"End
\n
"
<<
endl
;
return
0
;
}
// ************************************************************************* //
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/Allwclean
0 → 100644
View file @
649c29f9
#!/bin/sh
cd
"
${
0
%/*
}
"
||
exit
# Run from this directory
#------------------------------------------------------------------------------
wclean libso DPMTurbulenceModels
wclean
wclean MPPICFoam
wclean DPMDyMFoam
wclean DPMDyMFoam/MPPICDyMFoam
#------------------------------------------------------------------------------
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/Allwmake
0 → 100644
View file @
649c29f9
#!/bin/sh
cd
"
${
0
%/*
}
"
||
exit
# Run from this directory
.
${
WM_PROJECT_DIR
:?
}
/wmake/scripts/AllwmakeParseArguments
#------------------------------------------------------------------------------
wmake
$targetType
DPMTurbulenceModels
wmake
$targetType
wmake
$targetType
MPPICFoam
wmake
$targetType
DPMDyMFoam
wmake
$targetType
DPMDyMFoam/MPPICDyMFoam
#------------------------------------------------------------------------------
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/CourantNo.H
0 → 100644
View file @
649c29f9
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2013-2016 OpenFOAM Foundation
-------------------------------------------------------------------------------
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/>.
Global
CourantNo
Description
Calculates and outputs the mean and maximum Courant Numbers.
\*---------------------------------------------------------------------------*/
scalar
CoNum
=
0
.
0
;
scalar
meanCoNum
=
0
.
0
;
if
(
mesh
.
nInternalFaces
())
{
scalarField
sumPhi
(
fvc
::
surfaceSum
(
mag
(
phic
))().
primitiveField
()
);
CoNum
=
0
.
5
*
gMax
(
sumPhi
/
mesh
.
V
().
field
())
*
runTime
.
deltaTValue
();
meanCoNum
=
0
.
5
*
(
gSum
(
sumPhi
)
/
gSum
(
mesh
.
V
().
field
()))
*
runTime
.
deltaTValue
();
}
Info
<<
"Courant Number mean: "
<<
meanCoNum
<<
" max: "
<<
CoNum
<<
endl
;
// ************************************************************************* //
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/DPMDyMFoam.C
0 → 100644
View file @
649c29f9
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2017 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
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
DPMDyMFoam
Description
Transient solver for the coupled transport of a single kinematic particle
cloud including the effect of the volume fraction of particles on the
continuous phase, with optional mesh motion and mesh topology changes.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "dynamicFvMesh.H"
#include "singlePhaseTransportModel.H"
#include "DPMIncompressibleTurbulenceModel.H"
#include "pimpleControl.H"
#include "CorrectPhi.H"
#ifdef MPPIC
#include "basicKinematicCloud.H"
#define basicKinematicTypeCloud basicKinematicCloud
#else
#include "basicKinematicCollidingCloud.H"
#define basicKinematicTypeCloud basicKinematicCollidingCloud
#endif
int
main
(
int
argc
,
char
*
argv
[])
{
argList
::
addNote
(
"Transient solver for the coupled transport of a"
" single kinematic particle cloud including the effect"
" of the volume fraction of particles on the continuous phase.
\n
"
"With optional mesh motion and mesh topology changes."
);
argList
::
addOption
(
"cloudName"
,
"name"
,
"specify alternative cloud name. default is 'kinematicCloud'"
);
#include "postProcess.H"
#include "setRootCaseLists.H"
#include "createTime.H"
#include "createDynamicFvMesh.H"
#include "createDyMControls.H"
#include "createFields.H"
#include "createUcf.H"
#include "initContinuityErrs.H"
Info
<<
"
\n
Starting time loop
\n
"
<<
endl
;
while
(
runTime
.
run
())
{
#include "readDyMControls.H"
#include "CourantNo.H"
#include "setDeltaT.H"
++
runTime
;
Info
<<
"Time = "
<<
runTime
.
timeName
()
<<
nl
<<
endl
;
// Store the particle positions
kinematicCloud
.
storeGlobalPositions
();
mesh
.
update
();
// Calculate absolute flux from the mapped surface velocity
phic
=
mesh
.
Sf
()
&
Ucf
;
if
(
mesh
.
changing
()
&&
correctPhi
)
{
#include "correctPhic.H"
}
// Make the flux relative to the mesh motion
fvc
::
makeRelative
(
phic
,
Uc
);
if
(
mesh
.
changing
()
&&
checkMeshCourantNo
)
{
#include "meshCourantNo.H"
}
continuousPhaseTransport
.
correct
();
muc
=
rhoc
*
continuousPhaseTransport
.
nu
();
kinematicCloud
.
evolve
();
// Update continuous phase volume fraction field
alphac
=
max
(
1
.
0
-
kinematicCloud
.
theta
(),
alphacMin
);
alphac
.
correctBoundaryConditions
();
alphacf
=
fvc
::
interpolate
(
alphac
);
alphaPhic
=
alphacf
*
phic
;
fvVectorMatrix
cloudSU
(
kinematicCloud
.
SU
(
Uc
));
volVectorField
cloudVolSUSu
(
IOobject
(
"cloudVolSUSu"
,
runTime
.
timeName
(),
mesh
),
mesh
,
dimensionedVector
(
cloudSU
.
dimensions
()
/
dimVolume
,
Zero
),
zeroGradientFvPatchVectorField
::
typeName
);
cloudVolSUSu
.
primitiveFieldRef
()
=
-
cloudSU
.
source
()
/
mesh
.
V
();
cloudVolSUSu
.
correctBoundaryConditions
();
cloudSU
.
source
()
=
Zero
;
// --- Pressure-velocity PIMPLE corrector loop
while
(
pimple
.
loop
())
{
#include "UcEqn.H"
// --- PISO loop
while
(
pimple
.
correct
())
{
#include "pEqn.H"
}
if
(
pimple
.
turbCorr
())
{
continuousPhaseTurbulence
->
correct
();
}
}
runTime
.
write
();
runTime
.
printExecutionTime
(
Info
);
}
Info
<<
"End
\n
"
<<
endl
;
return
0
;
}
// ************************************************************************* //
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/MPPICDyMFoam.C
0 → 100644
View file @
649c29f9
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2017 OpenFOAM Foundation
-------------------------------------------------------------------------------
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
MPPICDyMFoam
Description
Transient solver for the coupled transport of a single kinematic particle
cloud including the effect of the volume fraction of particles on the
continuous phase. Multi-Phase Particle In Cell (MPPIC) modeling is used to
represent collisions without resolving particle-particle interactions,
with optional mesh motion and mesh topology changes.
\*---------------------------------------------------------------------------*/
#define MPPIC
#include "DPMDyMFoam.C"
// ************************************************************************* //
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/Make/files
0 → 100644
View file @
649c29f9
MPPICDyMFoam.C
EXE = $(FOAM_APPBIN)/MPPICDyMFoam
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/MPPICDyMFoam/Make/options
0 → 100644
View file @
649c29f9
EXE_INC = \
-I.. \
-I../.. \
-I../../DPMTurbulenceModels \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/finiteArea/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/lagrangian/basic/lnInclude \
-I$(LIB_SRC)/lagrangian/intermediate/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
-I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/phaseIncompressible/lnInclude \
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
-I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/regionFaModels/lnInclude \
-I$(LIB_SRC)/faOptions/lnInclude
EXE_LIBS = \
-lfiniteVolume \
-lfvOptions \
-lmeshTools \
-llagrangian \
-llagrangianIntermediate \
-llagrangianTurbulence \
-lspecie \
-lradiationModels \
-lincompressibleTransportModels \
-lturbulenceModels \
-lincompressibleTurbulenceModels \
-lDPMTurbulenceModels \
-lregionModels \
-lsurfaceFilmModels \
-ldynamicMesh \
-ldynamicFvMesh \
-ltopoChangerFvMesh \
-lsampling \
-lregionFaModels \
-lfiniteArea \
-lfaOptions
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/Make/files
0 → 100644
View file @
649c29f9
DPMDyMFoam.C
EXE = $(FOAM_APPBIN)/DPMDyMFoam
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/Make/options
0 → 100644
View file @
649c29f9
EXE_INC = \
-I.. \
-I../DPMTurbulenceModels \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/finiteArea/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/lagrangian/basic/lnInclude \
-I$(LIB_SRC)/lagrangian/intermediate/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
-I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/phaseIncompressible/lnInclude \
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
-I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/regionFaModels/lnInclude \
-I$(LIB_SRC)/faOptions/lnInclude
EXE_LIBS = \
-lfiniteVolume \
-lfvOptions \
-lmeshTools \
-llagrangian \
-llagrangianIntermediate \
-llagrangianTurbulence \
-lspecie \
-lradiationModels \
-lincompressibleTransportModels \
-lturbulenceModels \
-lincompressibleTurbulenceModels \
-lDPMTurbulenceModels \
-lregionModels \
-lsurfaceFilmModels \
-ldynamicMesh \
-ldynamicFvMesh \
-ltopoChangerFvMesh \
-lsampling \
-lregionFaModels \
-lfiniteArea \
-lfaOptions
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/correctPhic.H
0 → 100644
View file @
649c29f9
CorrectPhi
(
Uc
,
phic
,
p
,
dimensionedScalar
(
"rAUf"
,
dimTime
,
1
),
geometricZeroField
(),
pimple
);
#include "continuityErrs.H"
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/createUcf.H
0 → 100644
View file @
649c29f9
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2017 OpenFOAM Foundation
-------------------------------------------------------------------------------
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/>.
Global
createUcf
Description
Creates and initialises the velocity velocity field Ucf.
\*---------------------------------------------------------------------------*/
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info
<<
"Reading/calculating continuous phase face velocity Ucf
\n
"
<<
endl
;
surfaceVectorField
Ucf
(
IOobject
(
"Ucf"
,
runTime
.
timeName
(),
mesh
,
IOobject
::
READ_IF_PRESENT
,
IOobject
::
AUTO_WRITE
),
fvc
::
interpolate
(
Uc
)
);
// ************************************************************************* //
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMDyMFoam/pEqn.H
0 → 100644
View file @
649c29f9
{
volVectorField
HbyA
(
constrainHbyA
(
rAUc
*
UcEqn
.
H
(),
Uc
,
p
));
surfaceScalarField
phiHbyA
(
"phiHbyA"
,
(
fvc
::
flux
(
HbyA
)
+
alphacf
*
rAUcf
*
fvc
::
ddtCorr
(
Uc
,
Ucf
)
)
);
if
(
p
.
needReference
())
{
fvc
::
makeRelative
(
phiHbyA
,
Uc
);
adjustPhi
(
phiHbyA
,
Uc
,
p
);
fvc
::
makeAbsolute
(
phiHbyA
,
Uc
);
}
phiHbyA
+=
phicForces
;
// Update the pressure BCs to ensure flux consistency
constrainPressure
(
p
,
Uc
,
phiHbyA
,
rAUcf
);
// Non-orthogonal pressure corrector loop
while
(
pimple
.
correctNonOrthogonal
())
{
fvScalarMatrix
pEqn
(
fvm
::
laplacian
(
alphacf
*
rAUcf
,
p
)
==
fvc
::
ddt
(
alphac
)
+
fvc
::
div
(
alphacf
*
phiHbyA
)
);
pEqn
.
setReference
(
pRefCell
,
pRefValue
);
pEqn
.
solve
(
mesh
.
solver
(
p
.
select
(
pimple
.
finalInnerIter
())));
if
(
pimple
.
finalNonOrthogonalIter
())
{
phic
=
phiHbyA
-
pEqn
.
flux
()
/
alphacf
;
p
.
relax
();
Uc
=
HbyA
+
rAUc
*
fvc
::
reconstruct
((
phicForces
-
pEqn
.
flux
()
/
alphacf
)
/
rAUcf
);
Uc
.
correctBoundaryConditions
();
{
Ucf
=
fvc
::
interpolate
(
Uc
);
surfaceVectorField
n
(
mesh
.
Sf
()
/
mesh
.
magSf
());
Ucf
+=
n
*
(
phic
/
mesh
.
magSf
()
-
(
n
&
Ucf
));
}
// Make the fluxes relative to the mesh motion
fvc
::
makeRelative
(
phic
,
Uc
);
}
}
}
#include "continuityErrs.H"
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMFoam.C
0 → 100644
View file @
649c29f9
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2013-2016 OpenFOAM Foundation
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
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
DPMFoam
Group
grpLagrangianSolvers
Description
Transient solver for the coupled transport of a single kinematic particle
cloud including the effect of the volume fraction of particles on the
continuous phase.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "singlePhaseTransportModel.H"
#include "DPMIncompressibleTurbulenceModel.H"
#include "pimpleControl.H"
#ifdef MPPIC
#include "basicKinematicCloud.H"
#define basicKinematicTypeCloud basicKinematicCloud
#else
#include "basicKinematicCollidingCloud.H"
#define basicKinematicTypeCloud basicKinematicCollidingCloud
#endif
int
main
(
int
argc
,
char
*
argv
[])
{
argList
::
addNote
(
"Transient solver for the coupled transport of a"
" single kinematic particle cloud including the effect"
" of the volume fraction of particles on the continuous phase."
);
argList
::
addOption
(
"cloud"
,
"name"
,
"specify alternative cloud name. default is 'kinematicCloud'"
);
#include "postProcess.H"
#include "addCheckCaseOptions.H"
#include "setRootCaseLists.H"
#include "createTime.H"
#include "createMesh.H"
#include "createControl.H"
#include "createTimeControls.H"
#include "createFields.H"
#include "initContinuityErrs.H"
Info
<<
"
\n
Starting time loop
\n
"
<<
endl
;
while
(
runTime
.
run
())
{
#include "readTimeControls.H"
#include "CourantNo.H"
#include "setDeltaT.H"
++
runTime
;
Info
<<
"Time = "
<<
runTime
.
timeName
()
<<
nl
<<
endl
;
continuousPhaseTransport
.
correct
();
muc
=
rhoc
*
continuousPhaseTransport
.
nu
();
Info
<<
"Evolving "
<<
kinematicCloud
.
name
()
<<
endl
;
kinematicCloud
.
evolve
();
// Update continuous phase volume fraction field
alphac
=
max
(
1
.
0
-
kinematicCloud
.
theta
(),
alphacMin
);
alphac
.
correctBoundaryConditions
();
alphacf
=
fvc
::
interpolate
(
alphac
);
alphaPhic
=
alphacf
*
phic
;
fvVectorMatrix
cloudSU
(
kinematicCloud
.
SU
(
Uc
));
volVectorField
cloudVolSUSu
(
IOobject
(
"cloudVolSUSu"
,
runTime
.
timeName
(),
mesh
),
mesh
,
dimensionedVector
(
cloudSU
.
dimensions
()
/
dimVolume
,
Zero
),
zeroGradientFvPatchVectorField
::
typeName
);
cloudVolSUSu
.
primitiveFieldRef
()
=
-
cloudSU
.
source
()
/
mesh
.
V
();
cloudVolSUSu
.
correctBoundaryConditions
();
cloudSU
.
source
()
=
Zero
;
// cloudVolSUSu.primitiveFieldRef() =
// (cloudSU.diag()*Uc() - cloudSU.source())/mesh.V();
// cloudVolSUSu.correctBoundaryConditions();
// cloudSU.source() = cloudSU.diag()*Uc();
// --- Pressure-velocity PIMPLE corrector loop
while
(
pimple
.
loop
())
{
#include "UcEqn.H"
// --- PISO loop
while
(
pimple
.
correct
())
{
#include "pEqn.H"
}
if
(
pimple
.
turbCorr
())
{
continuousPhaseTurbulence
->
correct
();
}
}
runTime
.
write
();
runTime
.
printExecutionTime
(
Info
);
}
Info
<<
"End
\n
"
<<
endl
;
return
0
;
}
// ************************************************************************* //
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMTurbulenceModels/DPMIncompressibleTurbulenceModel.C
0 → 100644
View file @
649c29f9
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
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/>.
\*---------------------------------------------------------------------------*/
#include "DPMIncompressibleTurbulenceModel.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
template
<
class
TransportModel
>
Foam
::
DPMIncompressibleTurbulenceModel
<
TransportModel
>::
DPMIncompressibleTurbulenceModel
(
const
word
&
type
,
const
volScalarField
&
alpha
,
const
geometricOneField
&
rho
,
const
volVectorField
&
U
,
const
surfaceScalarField
&
alphaRhoPhi
,
const
surfaceScalarField
&
phi
,
const
TransportModel
&
transportModel
,
const
word
&
propertiesName
)
:
TurbulenceModel
<
volScalarField
,
geometricOneField
,
incompressibleTurbulenceModel
,
TransportModel
>
(
alpha
,
rho
,
U
,
alphaRhoPhi
,
phi
,
transportModel
,
propertiesName
)
{}
// * * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * //
template
<
class
TransportModel
>
Foam
::
autoPtr
<
Foam
::
DPMIncompressibleTurbulenceModel
<
TransportModel
>>
Foam
::
DPMIncompressibleTurbulenceModel
<
TransportModel
>::
New
(
const
volScalarField
&
alpha
,
const
volVectorField
&
U
,
const
surfaceScalarField
&
alphaRhoPhi
,
const
surfaceScalarField
&
phi
,
const
TransportModel
&
transportModel
,
const
word
&
propertiesName
)
{
return
autoPtr
<
DPMIncompressibleTurbulenceModel
>
(
static_cast
<
DPMIncompressibleTurbulenceModel
*>
(
TurbulenceModel
<
volScalarField
,
geometricOneField
,
incompressibleTurbulenceModel
,
TransportModel
>::
New
(
alpha
,
geometricOneField
(),
U
,
alphaRhoPhi
,
phi
,
transportModel
,
propertiesName
).
ptr
())
);
}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
template
<
class
TransportModel
>
Foam
::
tmp
<
Foam
::
volScalarField
>
Foam
::
DPMIncompressibleTurbulenceModel
<
TransportModel
>::
pPrime
()
const
{
return
tmp
<
volScalarField
>::
New
(
IOobject
(
IOobject
::
groupName
(
"pPrime"
,
this
->
alphaRhoPhi_
.
group
()),
this
->
runTime_
.
timeName
(),
this
->
mesh_
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
),
this
->
mesh_
,
dimensionedScalar
(
dimPressure
,
Zero
)
);
}
template
<
class
TransportModel
>
Foam
::
tmp
<
Foam
::
surfaceScalarField
>
Foam
::
DPMIncompressibleTurbulenceModel
<
TransportModel
>::
pPrimef
()
const
{
return
tmp
<
surfaceScalarField
>::
New
(
IOobject
(
IOobject
::
groupName
(
"pPrimef"
,
this
->
alphaRhoPhi_
.
group
()),
this
->
runTime_
.
timeName
(),
this
->
mesh_
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
),
this
->
mesh_
,
dimensionedScalar
(
dimPressure
,
Zero
)
);
}
template
<
class
TransportModel
>
Foam
::
tmp
<
Foam
::
volSymmTensorField
>
Foam
::
DPMIncompressibleTurbulenceModel
<
TransportModel
>::
devReff
()
const
{
return
devRhoReff
();
}
template
<
class
TransportModel
>
Foam
::
tmp
<
Foam
::
volSymmTensorField
>
Foam
::
DPMIncompressibleTurbulenceModel
<
TransportModel
>::
devReff
(
const
volVectorField
&
U
)
const
{
return
devRhoReff
(
U
);
}
template
<
class
TransportModel
>
Foam
::
tmp
<
Foam
::
fvVectorMatrix
>
Foam
::
DPMIncompressibleTurbulenceModel
<
TransportModel
>::
divDevReff
(
volVectorField
&
U
)
const
{
return
divDevRhoReff
(
U
);
}
template
<
class
TransportModel
>
Foam
::
tmp
<
Foam
::
volSymmTensorField
>
Foam
::
DPMIncompressibleTurbulenceModel
<
TransportModel
>::
devRhoReff
()
const
{
NotImplemented
;
return
devReff
();
}
template
<
class
TransportModel
>
Foam
::
tmp
<
Foam
::
volSymmTensorField
>
Foam
::
DPMIncompressibleTurbulenceModel
<
TransportModel
>::
devRhoReff
(
const
volVectorField
&
U
)
const
{
NotImplemented
;
return
nullptr
;
}
template
<
class
TransportModel
>
Foam
::
tmp
<
Foam
::
fvVectorMatrix
>
Foam
::
DPMIncompressibleTurbulenceModel
<
TransportModel
>::
divDevRhoReff
(
volVectorField
&
U
)
const
{
NotImplemented
;
return
divDevReff
(
U
);
}
// ************************************************************************* //
OpenFOAM-v2112/applications/solvers/lagrangian/DPMFoam/DPMTurbulenceModels/DPMIncompressibleTurbulenceModel.H
0 → 100644
View file @
649c29f9
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
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/>.
Class
Foam::DPMIncompressibleTurbulenceModel
Description
Templated abstract base class for volumen occupancy incompressible
turbulence models.
SourceFiles
DPMIncompressibleTurbulenceModel.C
\*---------------------------------------------------------------------------*/
#ifndef DPMIncompressibleTurbulenceModel_H
#define DPMIncompressibleTurbulenceModel_H
#include "TurbulenceModel.H"
#include "incompressibleTurbulenceModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace
Foam
{
/*---------------------------------------------------------------------------*\
Class DPMIncompressibleTurbulenceModel Declaration
\*---------------------------------------------------------------------------*/
template
<
class
TransportModel
>
class
DPMIncompressibleTurbulenceModel
:
public
TurbulenceModel
<
volScalarField
,
geometricOneField
,
incompressibleTurbulenceModel
,
TransportModel
>
{
public:
typedef
volScalarField
alphaField
;
typedef
geometricOneField
rhoField
;
typedef
TransportModel
transportModel
;
// Constructors
//- Construct
DPMIncompressibleTurbulenceModel
(
const
word
&
type
,
const
alphaField
&
alpha
,
const
geometricOneField
&
rho
,
const
volVectorField
&
U
,
const
surfaceScalarField
&
alphaRhoPhi
,
const
surfaceScalarField
&
phi
,
const
TransportModel
&
transportModel
,
const
word
&
propertiesName
);
// Selectors
//- Return a reference to the selected turbulence model
static
autoPtr
<
DPMIncompressibleTurbulenceModel
>
New
(
const
alphaField
&
alpha
,
const
volVectorField
&
U
,
const
surfaceScalarField
&
alphaRhoPhi
,
const
surfaceScalarField
&
phi
,
const
TransportModel
&
transportModel
,
const
word
&
propertiesName
=
turbulenceModel
::
propertiesName
);
//- Destructor
virtual
~
DPMIncompressibleTurbulenceModel
()
=
default
;
// Member Functions
//- Return the phase-pressure'
// (derivative of phase-pressure w.r.t. phase-fraction)
virtual
tmp
<
volScalarField
>
pPrime
()
const
;
//- Return the face-phase-pressure'
// (derivative of phase-pressure w.r.t. phase-fraction)
virtual
tmp
<
surfaceScalarField
>
pPrimef
()
const
;
//- Return the effective stress tensor
virtual
tmp
<
volSymmTensorField
>
devReff
()
const
;
//- Return the effective stress tensor based on a given velocity field
virtual
tmp
<
volSymmTensorField
>
devReff
(
const
volVectorField
&
U
)
const
;
//- Return the source term for the momentum equation
virtual
tmp
<
fvVectorMatrix
>
divDevReff
(
volVectorField
&
U
)
const
;
//- Return the effective stress tensor
virtual
tmp
<
volSymmTensorField
>
devRhoReff
()
const
;
//- Return the effective stress tensor based on a given velocity field
virtual
tmp
<
volSymmTensorField
>
devRhoReff
(
const
volVectorField
&
U
)
const
;
//- Return the source term for the momentum equation
virtual
tmp
<
fvVectorMatrix
>
divDevRhoReff
(
volVectorField
&
U
)
const
;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
}
// End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#ifdef NoRepository
#include "DPMIncompressibleTurbulenceModel.C"
#endif
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //
Prev
1
…
24
25
26
27
28
29
30
31
32
…
40
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment