Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Development
openfoam
Commits
89ee9b3e
Commit
89ee9b3e
authored
Sep 29, 2010
by
Henry
Browse files
Merged all multiphase developments in OpenFOAM-1.7.x
parent
fbf4d9ec
Changes
404
Hide whitespace changes
Inline
Side-by-side
applications/solvers/heatTransfer/buoyantSimpleFoam_old/Make/files
0 → 100644
View file @
89ee9b3e
buoyantSimpleFoam.C
EXE = $(FOAM_APPBIN)/buoyantSimpleFoam
applications/solvers/heatTransfer/buoyantSimpleFoam_old/Make/options
0 → 100644
View file @
89ee9b3e
EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/turbulenceModels \
-I$(LIB_SRC)/turbulenceModels/compressible/RAS/lnInclude \
-I$(LIB_SRC)/finiteVolume/cfdTools \
-I$(LIB_SRC)/finiteVolume/lnInclude
EXE_LIBS = \
-lmeshTools \
-lbasicThermophysicalModels \
-lspecie \
-lcompressibleRASModels \
-lfiniteVolume
applications/solvers/heatTransfer/buoyantSimpleFoam_old/UEqn.H
0 → 100644
View file @
89ee9b3e
// Solve the Momentum equation
tmp
<
fvVectorMatrix
>
UEqn
(
fvm
::
div
(
phi
,
U
)
+
turbulence
->
divDevRhoReff
(
U
)
);
UEqn
().
relax
();
solve
(
UEqn
()
==
rho
*
g
-
fvc
::
grad
(
p
)
/*
fvc::reconstruct
(
fvc::interpolate(rho)*(g & mesh.Sf())
- fvc::snGrad(p)*mesh.magSf()
)
*/
);
applications/solvers/heatTransfer/buoyantSimpleFoam_old/buoyantSimpleFoam.C
0 → 100644
View file @
89ee9b3e
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
buoyantSimpleFoam
Description
Steady-state solver for buoyant, turbulent flow of compressible fluids
\*---------------------------------------------------------------------------*/
#include
"fvCFD.H"
#include
"basicPsiThermo.H"
#include
"RASModel.H"
#include
"fixedGradientFvPatchFields.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int
main
(
int
argc
,
char
*
argv
[])
{
#include
"setRootCase.H"
#include
"createTime.H"
#include
"createMesh.H"
#include
"readGravitationalAcceleration.H"
#include
"createFields.H"
#include
"initContinuityErrs.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info
<<
"
\n
Starting time loop
\n
"
<<
endl
;
while
(
runTime
.
loop
())
{
Info
<<
"Time = "
<<
runTime
.
timeName
()
<<
nl
<<
endl
;
#include
"readSIMPLEControls.H"
p
.
storePrevIter
();
rho
.
storePrevIter
();
// Pressure-velocity SIMPLE corrector
{
#include
"UEqn.H"
#include
"hEqn.H"
#include
"pEqn.H"
}
turbulence
->
correct
();
runTime
.
write
();
Info
<<
"ExecutionTime = "
<<
runTime
.
elapsedCpuTime
()
<<
" s"
<<
" ClockTime = "
<<
runTime
.
elapsedClockTime
()
<<
" s"
<<
nl
<<
endl
;
}
Info
<<
"End
\n
"
<<
endl
;
return
0
;
}
// ************************************************************************* //
applications/solvers/heatTransfer/buoyantSimpleFoam_old/createFields.H
0 → 100644
View file @
89ee9b3e
Info
<<
"Reading thermophysical properties
\n
"
<<
endl
;
autoPtr
<
basicPsiThermo
>
pThermo
(
basicPsiThermo
::
New
(
mesh
)
);
basicPsiThermo
&
thermo
=
pThermo
();
volScalarField
rho
(
IOobject
(
"rho"
,
runTime
.
timeName
(),
mesh
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
),
thermo
.
rho
()
);
volScalarField
&
p
=
thermo
.
p
();
volScalarField
&
h
=
thermo
.
h
();
const
volScalarField
&
psi
=
thermo
.
psi
();
Info
<<
"Reading field U
\n
"
<<
endl
;
volVectorField
U
(
IOobject
(
"U"
,
runTime
.
timeName
(),
mesh
,
IOobject
::
MUST_READ
,
IOobject
::
AUTO_WRITE
),
mesh
);
#include
"compressibleCreatePhi.H"
Info
<<
"Creating turbulence model
\n
"
<<
endl
;
autoPtr
<
compressible
::
RASModel
>
turbulence
(
compressible
::
RASModel
::
New
(
rho
,
U
,
phi
,
thermo
)
);
thermo
.
correct
();
label
pRefCell
=
0
;
scalar
pRefValue
=
0
.
0
;
setRefCell
(
p
,
mesh
.
solutionDict
().
subDict
(
"SIMPLE"
),
pRefCell
,
pRefValue
);
dimensionedScalar
initialMass
=
fvc
::
domainIntegrate
(
rho
);
applications/solvers/heatTransfer/buoyantSimpleFoam_old/hEqn.H
0 → 100644
View file @
89ee9b3e
{
fvScalarMatrix
hEqn
(
fvm
::
div
(
phi
,
h
)
-
fvm
::
Sp
(
fvc
::
div
(
phi
),
h
)
-
fvm
::
laplacian
(
turbulence
->
alphaEff
(),
h
)
==
fvc
::
div
(
phi
/
fvc
::
interpolate
(
rho
)
*
fvc
::
interpolate
(
p
))
-
p
*
fvc
::
div
(
phi
/
fvc
::
interpolate
(
rho
))
);
hEqn
.
relax
();
hEqn
.
solve
();
thermo
.
correct
();
}
applications/solvers/heatTransfer/buoyantSimpleFoam_old/pEqn.H
0 → 100644
View file @
89ee9b3e
{
rho
=
thermo
.
rho
();
volScalarField
rUA
=
1
.
0
/
UEqn
().
A
();
surfaceScalarField
rhorUAf
(
"(rho*(1|A(U)))"
,
fvc
::
interpolate
(
rho
*
rUA
));
U
=
rUA
*
UEqn
().
H
();
UEqn
.
clear
();
phi
=
fvc
::
interpolate
(
rho
)
*
(
fvc
::
interpolate
(
U
)
&
mesh
.
Sf
());
bool
closedVolume
=
adjustPhi
(
phi
,
U
,
p
);
surfaceScalarField
buoyancyPhi
=
rhorUAf
*
fvc
::
interpolate
(
rho
)
*
(
g
&
mesh
.
Sf
());
phi
+=
buoyancyPhi
;
for
(
int
nonOrth
=
0
;
nonOrth
<=
nNonOrthCorr
;
nonOrth
++
)
{
fvScalarMatrix
pEqn
(
fvm
::
laplacian
(
rhorUAf
,
p
)
==
fvc
::
div
(
phi
)
);
pEqn
.
setReference
(
pRefCell
,
pRefValue
);
pEqn
.
solve
();
if
(
nonOrth
==
nNonOrthCorr
)
{
// For closed-volume cases adjust the pressure and density levels
// to obey overall mass continuity
if
(
closedVolume
)
{
p
+=
(
initialMass
-
fvc
::
domainIntegrate
(
psi
*
p
))
/
fvc
::
domainIntegrate
(
psi
);
}
// Calculate the conservative fluxes
phi
-=
pEqn
.
flux
();
// Explicitly relax pressure for momentum corrector
p
.
relax
();
// Correct the momentum source with the pressure gradient flux
// calculated from the relaxed pressure
U
+=
rUA
*
(
rho
*
g
-
fvc
::
grad
(
p
));
//U += rUA*fvc::reconstruct((buoyancyPhi - pEqn.flux())/rhorUAf);
U
.
correctBoundaryConditions
();
}
}
#include
"continuityErrs.H"
rho
=
thermo
.
rho
();
rho
.
relax
();
Info
<<
"rho max/min : "
<<
max
(
rho
).
value
()
<<
" "
<<
min
(
rho
).
value
()
<<
endl
;
}
applications/solvers/multiphase/cavitatingFoam/Make/options
View file @
89ee9b3e
...
...
@@ -7,8 +7,8 @@ EXE_INC = \
-I$(LIB_SRC)/thermophysicalModels/barotropicCompressibilityModel/lnInclude
EXE_LIBS = \
-lincompressibleTurbulenceModel \
-lincompressibleTransportModels \
-lincompressibleTurbulenceModel \
-lincompressibleRASModels \
-lincompressibleLESModels \
-lfiniteVolume \
...
...
applications/solvers/multiphase/cavitatingFoam/UEqn.H
View file @
89ee9b3e
...
...
@@ -20,3 +20,5 @@
{
solve
(
UEqn
==
-
fvc
::
grad
(
p
));
}
Info
<<
"max(U) "
<<
max
(
mag
(
U
)).
value
()
<<
endl
;
applications/solvers/multiphase/cavitatingFoam/cavitatingFoam.C
View file @
89ee9b3e
...
...
@@ -25,7 +25,8 @@ Application
cavitatingFoam
Description
Transient cavitation code based on the barotropic equation of state.
Transient cavitation code based on the homogeneous equilibrium model
from which the compressibility of the liquid/vapour "mixture" is obtained.
Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected.
...
...
applications/solvers/multiphase/cavitatingFoam/pEqn.H
View file @
89ee9b3e
...
...
@@ -52,9 +52,32 @@
}
}
Info
<<
"max-min
p
: "
<<
max
(
p
).
value
()
Info
<<
"
Predicted p
max-min : "
<<
max
(
p
).
value
()
<<
" "
<<
min
(
p
).
value
()
<<
endl
;
rho
==
max
(
psi
*
p
+
(
1
.
0
-
gamma
)
*
rhol0
+
((
gamma
*
psiv
+
(
1
.
0
-
gamma
)
*
psil
)
-
psi
)
*
pSat
,
rhoMin
);
#include
"gammaPsi.H"
p
=
(
rho
-
(
1
.
0
-
gamma
)
*
rhol0
-
((
gamma
*
psiv
+
(
1
.
0
-
gamma
)
*
psil
)
-
psi
)
*
pSat
)
/
psi
;
p
.
correctBoundaryConditions
();
Info
<<
"Phase-change corrected p max-min : "
<<
max
(
p
).
value
()
<<
" "
<<
min
(
p
).
value
()
<<
endl
;
// Correct velocity
U
=
HbyA
-
rUA
*
fvc
::
grad
(
p
);
...
...
@@ -70,17 +93,4 @@
U
.
correctBoundaryConditions
();
Info
<<
"max(U) "
<<
max
(
mag
(
U
)).
value
()
<<
endl
;
rho
==
max
(
psi
*
p
+
(
1
.
0
-
gamma
)
*
rhol0
+
((
gamma
*
psiv
+
(
1
.
0
-
gamma
)
*
psil
)
-
psi
)
*
pSat
,
rhoMin
);
Info
<<
"max-min rho: "
<<
max
(
rho
).
value
()
<<
" "
<<
min
(
rho
).
value
()
<<
endl
;
#include
"gammaPsi.H"
}
applications/solvers/multiphase/compressibleInterDyMFoam/alphaEqns.H
deleted
100644 → 0
View file @
fbf4d9ec
{
word
alphaScheme
(
"div(phi,alpha)"
);
word
alpharScheme
(
"div(phirb,alpha)"
);
surfaceScalarField
phir
=
phic
*
interface
.
nHatf
();
for
(
int
gCorr
=
0
;
gCorr
<
nAlphaCorr
;
gCorr
++
)
{
volScalarField
::
DimensionedInternalField
Sp
(
IOobject
(
"Sp"
,
runTime
.
timeName
(),
mesh
),
mesh
,
dimensionedScalar
(
"Sp"
,
dgdt
.
dimensions
(),
0
.
0
)
);
volScalarField
::
DimensionedInternalField
Su
(
IOobject
(
"Su"
,
runTime
.
timeName
(),
mesh
),
// Divergence term is handled explicitly to be
// consistent with the explicit transport solution
divU
*
min
(
alpha1
,
scalar
(
1
))
);
forAll
(
dgdt
,
celli
)
{
if
(
dgdt
[
celli
]
>
0
.
0
&&
alpha1
[
celli
]
>
0
.
0
)
{
Sp
[
celli
]
-=
dgdt
[
celli
]
*
alpha1
[
celli
];
Su
[
celli
]
+=
dgdt
[
celli
]
*
alpha1
[
celli
];
}
else
if
(
dgdt
[
celli
]
<
0
.
0
&&
alpha1
[
celli
]
<
1
.
0
)
{
Sp
[
celli
]
+=
dgdt
[
celli
]
*
(
1
.
0
-
alpha1
[
celli
]);
}
}
surfaceScalarField
phiAlpha1
=
fvc
::
flux
(
phi
,
alpha1
,
alphaScheme
)
+
fvc
::
flux
(
-
fvc
::
flux
(
-
phir
,
alpha2
,
alpharScheme
),
alpha1
,
alpharScheme
);
MULES
::
explicitSolve
(
geometricOneField
(),
alpha1
,
phi
,
phiAlpha1
,
Sp
,
Su
,
1
,
0
);
surfaceScalarField
rho1f
=
fvc
::
interpolate
(
rho1
);
surfaceScalarField
rho2f
=
fvc
::
interpolate
(
rho2
);
rhoPhi
=
phiAlpha1
*
(
rho1f
-
rho2f
)
+
phi
*
rho2f
;
alpha2
=
scalar
(
1
)
-
alpha1
;
}
Info
<<
"Liquid phase volume fraction = "
<<
alpha1
.
weightedAverage
(
mesh
.
V
()).
value
()
<<
" Min(alpha1) = "
<<
min
(
alpha1
).
value
()
<<
" Min(alpha2) = "
<<
min
(
alpha2
).
value
()
<<
endl
;
}
applications/solvers/multiphase/compressibleInterDyMFoam/createFields.H
deleted
100644 → 0
View file @
fbf4d9ec
Info
<<
"Reading field p
\n
"
<<
endl
;
volScalarField
p
(
IOobject
(
"p"
,
runTime
.
timeName
(),
mesh
,
IOobject
::
MUST_READ
,
IOobject
::
AUTO_WRITE
),
mesh
);
Info
<<
"Reading field alpha1
\n
"
<<
endl
;
volScalarField
alpha1
(
IOobject
(
"alpha1"
,
runTime
.
timeName
(),
mesh
,
IOobject
::
MUST_READ
,
IOobject
::
AUTO_WRITE
),
mesh
);
Info
<<
"Calculating field alpha1
\n
"
<<
endl
;
volScalarField
alpha2
(
"alpha2"
,
scalar
(
1
)
-
alpha1
);
Info
<<
"Reading field U
\n
"
<<
endl
;
volVectorField
U
(
IOobject
(
"U"
,
runTime
.
timeName
(),
mesh
,
IOobject
::
MUST_READ
,
IOobject
::
AUTO_WRITE
),
mesh
);
#include
"createPhi.H"
Info
<<
"Reading transportProperties
\n
"
<<
endl
;
twoPhaseMixture
twoPhaseProperties
(
U
,
phi
);
dimensionedScalar
rho10
(
twoPhaseProperties
.
subDict
(
twoPhaseProperties
.
phase1Name
()
).
lookup
(
"rho0"
)
);
dimensionedScalar
rho20
(
twoPhaseProperties
.
subDict
(
twoPhaseProperties
.
phase2Name
()
).
lookup
(
"rho0"
)
);
dimensionedScalar
psi1
(
twoPhaseProperties
.
subDict
(
twoPhaseProperties
.
phase1Name
()
).
lookup
(
"psi"
)
);
dimensionedScalar
psi2
(
twoPhaseProperties
.
subDict
(
twoPhaseProperties
.
phase2Name
()
).
lookup
(
"psi"
)
);
dimensionedScalar
pMin
(
twoPhaseProperties
.
lookup
(
"pMin"
));
volScalarField
rho1
=
rho10
+
psi1
*
p
;
volScalarField
rho2
=
rho20
+
psi2
*
p
;
volScalarField
rho
(
IOobject
(
"rho"
,
runTime
.
timeName
(),
mesh
,
IOobject
::
READ_IF_PRESENT
,
IOobject
::
AUTO_WRITE
),
alpha1
*
rho1
+
alpha2
*
rho2
);
// Mass flux
// Initialisation does not matter because rhoPhi is reset after the
// alpha1 solution before it is used in the U equation.
surfaceScalarField
rhoPhi
(
IOobject
(
"rho*phi"
,
runTime
.
timeName
(),
mesh
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
),
fvc
::
interpolate
(
rho
)
*
phi
);
volScalarField
dgdt
=
pos
(
alpha2
)
*
fvc
::
div
(
phi
)
/
max
(
alpha2
,
scalar
(
0
.
0001
));
// Construct interface from alpha1 distribution
interfaceProperties
interface
(
alpha1
,
U
,
twoPhaseProperties
);
// Construct incompressible turbulence model
autoPtr
<
incompressible
::
turbulenceModel
>
turbulence
(
incompressible
::
turbulenceModel
::
New
(
U
,
phi
,
twoPhaseProperties
)
);
wordList
pcorrTypes
(
p
.
boundaryField
().
size
(),
zeroGradientFvPatchScalarField
::
typeName
);
forAll
(
p
.
boundaryField
(),
i
)
{
if
(
p
.
boundaryField
()[
i
].
fixesValue
())
{
pcorrTypes
[
i
]
=
fixedValueFvPatchScalarField
::
typeName
;
}
}
applications/solvers/multiphase/compressibleInterFoam/Allwclean
0 → 100755
View file @
89ee9b3e
#!/bin/sh
cd
${
0
%/*
}
||
exit
1
# run from this directory
set
-x
wclean