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
Development
openfoam
Commits
f2fe2f51
Commit
f2fe2f51
authored
Nov 01, 2010
by
graham
Browse files
Merge branch 'master' into cvm
parents
2c08067a
1fe653ac
Changes
54
Hide whitespace changes
Inline
Side-by-side
ReleaseNotes-dev
View file @
f2fe2f51
...
...
@@ -66,6 +66,11 @@
-doc display application documentation in browser
-help print the usage
*** *New* basicSolidThermo solids thermophysical library
+ Used in all conjugate heat transfer solvers
+ constant properties
+ temperature dependent properties
+ temperature and direction (in local coordinate system) dependent properties
*** *New* Surface film library
+ Creation of films by particle addition, or initial film distribution
+ Coupled with the lagrangian/intermediate cloud hierarchy library
...
...
@@ -86,7 +91,14 @@
*** *New* ptscotch decomposition method
*** *Updated* particle tracking algorithm
*** *Updated* split cyclics into two separate patches. See doc/changed/splitCyclics.txt
* *Updated* interpolation (volPointInterpolation) now works without the
globalPointPatch. Moving mesh cases can now be run non-parallel and
continued in parallel and reconstructed without any limitation.
*** *New* compact binary I/O for faces and cells. This speeds up reading/writing meshes in binary.
*** *Updated* runTimeModifiable
+ on linux uses inotify instead of time stamps - more efficient for large
numbers of monitored files. No more fileModificationSkew needed.
+ single integer reduction instead of one reduction per monitored file.
* Solvers
A number of new solvers have been developed for a range of engineering
applications. There has been a set of improvements to certain classes of
...
...
@@ -125,6 +137,8 @@
(nonuniformTransform)cyclic <zoneA>_<zoneB>
+ extrudes into master direction (i.e. away from the owner cell
if flipMap is false)
+ =topoSet=: replacement of cellSet,faceSet,pointSet utilities.
Comparable to a dictionary driven =setSet= utility.
*** Updated utilities
+ =setFields=: optionally use faceSets to set patch values (see e.g. hotRoom tutorial).
+ =blockMesh=: specify patches via dictionary instead of type only. This
...
...
@@ -133,6 +147,8 @@
* Post-processing
+ =foamToEnsight=: parallel continuous data. new =-nodeValues= option to generate and output nodal
field data.
+ =singleCellMesh=: new utility to convert mesh and fields to a single cell
mesh. Great for postprocessing.
+ Function objects:
+ =residualControl=: new function object to allow users to terminate steady
state calculations when the defined residual levels are achieved
...
...
@@ -144,7 +160,9 @@
+ =streamLine=: generate streamlines; ouputs both trajectory and field data
* New tutorials
There is a large number of new tutorials
to support the
new solvers in the
There is a large number of new tutorials
for existing and
new solvers in the
release.
+ =reactingParcelFilmFoam= tutorials:
+ multipleBoxes, hotBoxes, panel, evaporationTest
+ =interDyMFoam= tutorials:
+ testTubeMixer: showcases =solidBodyMotionFunction=
applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/chtMultiRegionSimpleFoam.C
View file @
f2fe2f51
...
...
@@ -34,7 +34,6 @@ Description
#include "turbulenceModel.H"
#include "fixedGradientFvPatchFields.H"
#include "regionProperties.H"
#include "compressibleCourantNo.H"
#include "basicSolidThermo.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
...
...
applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/compressibleCourantNo.C
View file @
f2fe2f51
...
...
@@ -37,20 +37,14 @@ Foam::scalar Foam::compressibleCourantNo
scalar
CoNum
=
0
.
0
;
scalar
meanCoNum
=
0
.
0
;
//- Can have fluid domains with 0 cells so do not test.
//if (mesh.nInternalFaces())
{
surfaceScalarField
SfUfbyDelta
=
mesh
.
surfaceInterpolation
::
deltaCoeffs
()
*
mag
(
phi
)
/
fvc
::
interpolate
(
rho
);
CoNum
=
max
(
SfUfbyDelta
/
mesh
.
magSf
())
.
value
()
*
runTime
.
deltaT
().
value
();
meanCoNum
=
(
sum
(
SfUfbyDelta
)
/
sum
(
mesh
.
magSf
()))
.
value
()
*
runTime
.
deltaT
().
value
();
}
scalarField
sumPhi
=
fvc
::
surfaceSum
(
mag
(
phi
))().
internalField
()
/
rho
.
internalField
();
CoNum
=
0
.
5
*
gMax
(
sumPhi
/
mesh
.
V
().
field
())
*
runTime
.
deltaTValue
();
meanCoNum
=
0
.
5
*
(
gSum
(
sumPhi
)
/
gSum
(
mesh
.
V
().
field
()))
*
runTime
.
deltaTValue
();
Info
<<
"Region: "
<<
mesh
.
name
()
<<
" Courant Number mean: "
<<
meanCoNum
<<
" max: "
<<
CoNum
<<
endl
;
...
...
applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solidRegionDiffNo.C
View file @
f2fe2f51
...
...
@@ -37,18 +37,16 @@ Foam::scalar Foam::solidRegionDiffNo
scalar
DiNum
=
0
.
0
;
scalar
meanDiNum
=
0
.
0
;
//- Can have fluid domains with 0 cells so do not test.
if
(
mesh
.
nInternalFaces
())
{
surfaceScalarField
KrhoCpbyDelta
=
mesh
.
surfaceInterpolation
::
deltaCoeffs
()
*
fvc
::
interpolate
(
K
)
/
fvc
::
interpolate
(
Cprho
);
DiNum
=
max
(
KrhoCpbyDelta
.
internalField
())
*
runTime
.
deltaT
().
value
();
meanDiNum
=
(
average
(
KrhoCpbyDelta
)).
value
()
*
runTime
.
deltaT
().
value
();
}
//- Take care: can have fluid domains with 0 cells so do not test for
// zero internal faces.
surfaceScalarField
KrhoCpbyDelta
=
mesh
.
surfaceInterpolation
::
deltaCoeffs
()
*
fvc
::
interpolate
(
K
)
/
fvc
::
interpolate
(
Cprho
);
DiNum
=
gMax
(
KrhoCpbyDelta
.
internalField
())
*
runTime
.
deltaT
().
value
();
meanDiNum
=
(
average
(
KrhoCpbyDelta
)).
value
()
*
runTime
.
deltaT
().
value
();
Info
<<
"Region: "
<<
mesh
.
name
()
<<
" Diffusion Number mean: "
<<
meanDiNum
<<
" max: "
<<
DiNum
<<
endl
;
...
...
applications/solvers/multiphase/bubbleFoam/createRASTurbulence.H
View file @
f2fe2f51
...
...
@@ -55,7 +55,7 @@
(
dimensionedScalar
::
lookupOrAddToDict
(
"alpha
Eps
"
,
"alpha
k
"
,
kEpsilonDict
,
1
.
0
)
...
...
applications/solvers/multiphase/interFoam/Allwclean
View file @
f2fe2f51
...
...
@@ -6,5 +6,6 @@ wclean
wclean interDyMFoam
wclean MRFInterFoam
wclean porousInterFoam
wclean LTSInterFoam
# ----------------------------------------------------------------- end-of-file
applications/solvers/multiphase/interFoam/Allwmake
View file @
f2fe2f51
...
...
@@ -6,5 +6,6 @@ wmake
wmake interDyMFoam
wmake MRFInterFoam
wmake porousInterFoam
wmake LTSInterFoam
# ----------------------------------------------------------------- end-of-file
applications/solvers/multiphase/interFoam/LTSInterFoam/LTSInterFoam.C
0 → 100644
View file @
f2fe2f51
/*---------------------------------------------------------------------------*\
========= |
\\ / 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
interFoam
Description
Solver for 2 incompressible, isothermal immiscible fluids using a VOF
(volume of fluid) phase-fraction based interface capturing approach.
The momentum and other fluid properties are of the "mixture" and a single
momentum equation is solved.
Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected.
For a two-fluid approach see twoPhaseEulerFoam.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "MULES.H"
#include "subCycle.H"
#include "interfaceProperties.H"
#include "twoPhaseMixture.H"
#include "turbulenceModel.H"
#include "fvcSmooth.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int
main
(
int
argc
,
char
*
argv
[])
{
#include "setRootCase.H"
#include "createTime.H"
#include "createMesh.H"
#include "readPISOControls.H"
#include "initContinuityErrs.H"
#include "createFields.H"
#include "correctPhi.H"
#include "CourantNo.H"
#include "setInitialrDeltaT.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info
<<
"
\n
Starting time loop
\n
"
<<
endl
;
while
(
runTime
.
run
())
{
#include "readPISOControls.H"
runTime
++
;
Info
<<
"Time = "
<<
runTime
.
timeName
()
<<
nl
<<
endl
;
#include "setrDeltaT.H"
twoPhaseProperties
.
correct
();
#include "alphaEqnSubCycle.H"
turbulence
->
correct
();
#include "UEqn.H"
// --- PISO loop
for
(
int
corr
=
0
;
corr
<
nCorr
;
corr
++
)
{
#include "pEqn.H"
}
runTime
.
write
();
Info
<<
"ExecutionTime = "
<<
runTime
.
elapsedCpuTime
()
<<
" s"
<<
" ClockTime = "
<<
runTime
.
elapsedClockTime
()
<<
" s"
<<
nl
<<
endl
;
}
Info
<<
"End
\n
"
<<
endl
;
return
0
;
}
// ************************************************************************* //
applications/solvers/
heatTransfer/chtMultiRegionFoam/chtMultiRegionSimpleFoam/fluid/compressibleCourantNo
.C
→
applications/solvers/
multiphase/interFoam/LTSInterFoam/MULES
.C
View file @
f2fe2f51
...
...
@@ -23,39 +23,60 @@ License
\*---------------------------------------------------------------------------*/
#include "compressibleCourantNo.H"
#include "fvc.H"
#include "MULES.H"
#include "upwind.H"
#include "uncorrectedSnGrad.H"
#include "gaussConvectionScheme.H"
#include "gaussLaplacianScheme.H"
#include "uncorrectedSnGrad.H"
#include "surfaceInterpolate.H"
#include "fvcSurfaceIntegrate.H"
#include "slicedSurfaceFields.H"
#include "syncTools.H"
Foam
::
scalar
Foam
::
compressibleCourantNo
#include "fvCFD.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
void
Foam
::
MULES
::
explicitLTSSolve
(
const
fvMesh
&
mesh
,
const
Time
&
runTime
,
const
volScalarField
&
rho
,
const
surfaceScalarField
&
phi
volScalarField
&
psi
,
const
surfaceScalarField
&
phi
,
surfaceScalarField
&
phiPsi
,
const
scalar
psiMax
,
const
scalar
psiMin
)
{
scalar
CoNum
=
0
.
0
;
scalar
meanCoNum
=
0
.
0
;
//- Can have fluid domains with 0 cells so do not test.
//if (mesh.nInternalFaces())
{
surfaceScalarField
SfUfbyDelta
=
mesh
.
surfaceInterpolation
::
deltaCoeffs
()
*
mag
(
phi
)
/
fvc
::
interpolate
(
rho
);
CoNum
=
max
(
SfUfbyDelta
/
mesh
.
magSf
())
.
value
()
*
runTime
.
deltaT
().
value
();
meanCoNum
=
(
sum
(
SfUfbyDelta
)
/
sum
(
mesh
.
magSf
()))
.
value
()
*
runTime
.
deltaT
().
value
();
}
explicitLTSSolve
(
geometricOneField
(),
psi
,
phi
,
phiPsi
,
zeroField
(),
zeroField
(),
psiMax
,
psiMin
);
}
Info
<<
"Region: "
<<
mesh
.
name
()
<<
" Courant Number mean: "
<<
meanCoNum
<<
" max: "
<<
CoNum
<<
endl
;
return
CoNum
;
void
Foam
::
MULES
::
implicitSolve
(
volScalarField
&
psi
,
const
surfaceScalarField
&
phi
,
surfaceScalarField
&
phiPsi
,
const
scalar
psiMax
,
const
scalar
psiMin
)
{
implicitSolve
(
geometricOneField
(),
psi
,
phi
,
phiPsi
,
zeroField
(),
zeroField
(),
psiMax
,
psiMin
);
}
...
...
applications/solvers/multiphase/interFoam/LTSInterFoam/MULES.H
0 → 100644
View file @
f2fe2f51
/*---------------------------------------------------------------------------*\
========= |
\\ / 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/>.
Global
MULES
Description
MULES: Multidimensional universal limiter with explicit solution.
Solve a convective-only transport equation using an explicit universal
multi-dimensional limiter.
Parameters are the variable to solve, the normal convective flux and the
actual explicit flux of the variable which is also used to return limited
flux used in the bounded-solution.
SourceFiles
MULES.C
\*---------------------------------------------------------------------------*/
#ifndef MULES_H
#define MULES_H
#include "volFields.H"
#include "surfaceFieldsFwd.H"
#include "primitiveFieldsFwd.H"
#include "zeroField.H"
#include "geometricOneField.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace
Foam
{
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace
MULES
{
template
<
class
RhoType
,
class
SpType
,
class
SuType
>
void
explicitLTSSolve
(
const
RhoType
&
rho
,
volScalarField
&
psi
,
const
surfaceScalarField
&
phiBD
,
surfaceScalarField
&
phiPsi
,
const
SpType
&
Sp
,
const
SuType
&
Su
,
const
scalar
psiMax
,
const
scalar
psiMin
);
void
explicitLTSSolve
(
volScalarField
&
psi
,
const
surfaceScalarField
&
phiBD
,
surfaceScalarField
&
phiPsi
,
const
scalar
psiMax
,
const
scalar
psiMin
);
template
<
class
RhoType
,
class
SpType
,
class
SuType
>
void
implicitSolve
(
const
RhoType
&
rho
,
volScalarField
&
gamma
,
const
surfaceScalarField
&
phi
,
surfaceScalarField
&
phiCorr
,
const
SpType
&
Sp
,
const
SuType
&
Su
,
const
scalar
psiMax
,
const
scalar
psiMin
);
void
implicitSolve
(
volScalarField
&
gamma
,
const
surfaceScalarField
&
phi
,
surfaceScalarField
&
phiCorr
,
const
scalar
psiMax
,
const
scalar
psiMin
);
template
<
class
RhoType
,
class
SpType
,
class
SuType
>
void
limiter
(
scalarField
&
allLambda
,
const
RhoType
&
rho
,
const
volScalarField
&
psi
,
const
surfaceScalarField
&
phiBD
,
const
surfaceScalarField
&
phiCorr
,
const
SpType
&
Sp
,
const
SuType
&
Su
,
const
scalar
psiMax
,
const
scalar
psiMin
,
const
label
nLimiterIter
);
}
// End namespace MULES
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
}
// End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#ifdef NoRepository
# include "MULESTemplates.C"
#endif
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //
applications/solvers/multiphase/interFoam/LTSInterFoam/MULESTemplates.C
0 → 100644
View file @
f2fe2f51
/*---------------------------------------------------------------------------*\
========= |
\\ / 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/>.
\*---------------------------------------------------------------------------*/
#include "MULES.H"
#include "upwind.H"
#include "uncorrectedSnGrad.H"
#include "gaussConvectionScheme.H"
#include "gaussLaplacianScheme.H"
#include "uncorrectedSnGrad.H"
#include "surfaceInterpolate.H"
#include "fvcSurfaceIntegrate.H"
#include "slicedSurfaceFields.H"
#include "syncTools.H"
#include "fvCFD.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
template
<
class
RhoType
,
class
SpType
,
class
SuType
>
void
Foam
::
MULES
::
explicitLTSSolve
(
const
RhoType
&
rho
,
volScalarField
&
psi
,
const
surfaceScalarField
&
phi
,
surfaceScalarField
&
phiPsi
,
const
SpType
&
Sp
,
const
SuType
&
Su
,
const
scalar
psiMax
,
const
scalar
psiMin
)
{
Info
<<
"MULES: Solving for "
<<
psi
.
name
()
<<
endl
;
const
fvMesh
&
mesh
=
psi
.
mesh
();
psi
.
correctBoundaryConditions
();
surfaceScalarField
phiBD
=
upwind
<
scalar
>
(
psi
.
mesh
(),
phi
).
flux
(
psi
);
surfaceScalarField
&
phiCorr
=
phiPsi
;
phiCorr
-=
phiBD
;
scalarField
allLambda
(
mesh
.
nFaces
(),
1
.
0
);
slicedSurfaceScalarField
lambda
(
IOobject
(
"lambda"
,
mesh
.
time
().
timeName
(),
mesh
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
,
false
),
mesh
,
dimless
,
allLambda
,
false
// Use slices for the couples
);
limiter
(
allLambda
,
rho
,
psi
,
phiBD
,
phiCorr
,
Sp
.
field
(),
Su
.
field
(),
psiMax
,
psiMin
,
3
);
phiPsi
=
phiBD
+
lambda
*
phiCorr
;
scalarField
&
psiIf
=
psi
;
const
scalarField
&
psi0
=
psi
.
oldTime
();
const
volScalarField
&
rDeltaT
=
mesh
.
objectRegistry
::
lookupObject
<
volScalarField
>
(
"rSubDeltaT"
);
psiIf
=
0
.
0
;
fvc
::
surfaceIntegrate
(
psiIf
,
phiPsi
);
if
(
mesh
.
moving
())
{
psiIf
=
(
mesh
.
Vsc0
()
*
rho
.
oldTime
()
*
psi0
*
rDeltaT
/
mesh
.
Vsc
()
+
Su
.
field
()
-
psiIf
)
/
(
rho
*
rDeltaT
-
Sp
.
field
());
}
else
{
psiIf
=
(
rho
.
oldTime
()
*
psi0
*
rDeltaT
+
Su
.
field
()
-
psiIf
)
/
(
rho
*
rDeltaT
-
Sp
.
field
());
}