mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge branch 'develop' of develop.openfoam.com:Development/OpenFOAM-plus into develop
This commit is contained in:
14
Allwmake
14
Allwmake
@ -60,6 +60,13 @@ then
|
||||
(cd $WM_PROJECT_DIR/modules 2>/dev/null && wmake -all)
|
||||
fi
|
||||
|
||||
# Count files in given directory. Ignore "Test-*" binaries.
|
||||
_foamCountDirEntries()
|
||||
{
|
||||
(cd "$1" 2>/dev/null && find -mindepth 1 -maxdepth 1 -type f 2>/dev/null) |\
|
||||
sed -e '\@/Test-@d' | wc -l
|
||||
}
|
||||
|
||||
# Some summary information
|
||||
echo
|
||||
date "+%Y-%m-%d %H:%M:%S %z" 2>/dev/null || echo "date is unknown"
|
||||
@ -68,4 +75,11 @@ echo " ${WM_PROJECT_DIR##*/}"
|
||||
echo " $WM_COMPILER $WM_COMPILER_TYPE compiler"
|
||||
echo " ${WM_OPTIONS}, with ${WM_MPLIB} ${FOAM_MPI}"
|
||||
echo
|
||||
echo " api = $(wmakeBuildInfo -show-api 2>/dev/null)"
|
||||
echo " patch = $(wmakeBuildInfo -show-patch 2>/dev/null)"
|
||||
echo " bin = $(_foamCountDirEntries $FOAM_APPBIN) entries"
|
||||
echo " lib = $(_foamCountDirEntries $FOAM_LIBBIN) entries"
|
||||
echo
|
||||
echo "========================================"
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -28,14 +28,14 @@ Description
|
||||
Mass tranfer Lee model. Simple model driven by field value difference as:
|
||||
|
||||
\f[
|
||||
mDot = C \rho \alpha (\T - T_{activate})/T_{activate}
|
||||
\dot{m} = C \rho \alpha (T - T_{activate})/T_{activate}
|
||||
\f]
|
||||
|
||||
where C is a model constant.
|
||||
|
||||
if C > 0:
|
||||
\f[
|
||||
mDot = C \rho \alpha*(\T - T_{activate})/T_{activate}
|
||||
\dot{m} = C \rho \alpha (T - T_{activate})/T_{activate}
|
||||
\f]
|
||||
for \f[ T > T_{activate} \f]
|
||||
|
||||
@ -46,12 +46,12 @@ Description
|
||||
|
||||
if C < 0:
|
||||
\f[
|
||||
mDot = -C \rho \alpha (T_{activate} - \T)/T_{activate}
|
||||
\dot{m} = -C \rho \alpha (T_{activate} - T)/T_{activate}
|
||||
\f]
|
||||
for \f[ T < T_{activate} \f]
|
||||
|
||||
and
|
||||
\f[ mDot = 0.0 \f] for \f[ T > T_{activate} \f]
|
||||
\f[ \dot{m} = 0.0 \f] for \f[ T > T_{activate} \f]
|
||||
|
||||
Based on the reference:
|
||||
-# W. H. Lee. "A Pressure Iteration Scheme for Two-Phase Modeling".
|
||||
|
||||
@ -25,38 +25,37 @@ Class
|
||||
Foam::meltingEvaporationModels::kineticGasEvaporation
|
||||
|
||||
Description
|
||||
|
||||
Considering the Hertz Knudsen formula, which gives the
|
||||
evaporation-condensation flux based on the kinetic theory for flat
|
||||
interface:
|
||||
|
||||
\f[
|
||||
Flux = C sqrt(M/(2 \pi \R T_{activate}))(\p - pSat)
|
||||
Flux = C \sqrt{\frac{M}{2 \pi R T_{activate}}}(p - p_{sat})
|
||||
\f]
|
||||
|
||||
where:
|
||||
\vartable
|
||||
Flux | mass flux rate [Kg/s/m2]
|
||||
Flux | mass flux rate [kg/s/m2]
|
||||
M | molecular weight
|
||||
T_{activate} | saturation temperature
|
||||
C | accomodation coefficient
|
||||
R | universal gas constant
|
||||
pSat | saturation pressure
|
||||
\p | vapor partial pressure
|
||||
p_{sat} | saturation pressure
|
||||
p | vapor partial pressure
|
||||
\endvartable
|
||||
|
||||
The Clapeyron-Clausius equation relates the pressure to the temperature
|
||||
for the saturation condition:
|
||||
|
||||
\f[
|
||||
dp/dT = - L / (T*(nuv - nul))
|
||||
\frac{dp}{dT} = - \frac{L}{T (\nu_v - \nu_l)}
|
||||
\f]
|
||||
|
||||
where:
|
||||
\vartable
|
||||
L | latent heat
|
||||
nuv | inverse of the vapor density
|
||||
nul | inverse of the liquid density
|
||||
\nu_v | inverse of the vapor density
|
||||
\nu_l | inverse of the liquid density
|
||||
\endvartable
|
||||
|
||||
|
||||
@ -64,10 +63,10 @@ Description
|
||||
|
||||
\f[
|
||||
Flux =
|
||||
2 C/(2 - C)
|
||||
sqrt(M/(2 \pi \R T_{activate}))
|
||||
2 \frac{C}{2 - C}
|
||||
\sqrt{\frac{M}{2 \pi R T_{activate}}}
|
||||
L (\rho_{v}*\rho_{l}/(\rho_{l} - \rho_{v}))
|
||||
(\T - T_{activate})/T_{activate}
|
||||
(T - T_{activate})/T_{activate}
|
||||
\f]
|
||||
|
||||
This assumes liquid and vapour are in equilibrium, then the accomodation
|
||||
@ -75,7 +74,7 @@ Description
|
||||
Hertz-Knudsen-Schrage.
|
||||
|
||||
Based on the reference:
|
||||
- Van P. Carey, “Liquid-Vapor Phase Change Phenomena”, ISBN 0-89116836,
|
||||
- Van P. Carey, Liquid-Vapor Phase Change Phenomena, ISBN 0-89116836,
|
||||
1992, pp. 112-121.
|
||||
|
||||
|
||||
|
||||
@ -64,6 +64,11 @@ int main(int argc, char *argv[])
|
||||
"list",
|
||||
"List directories or files to be checked"
|
||||
);
|
||||
argList::addBoolOption
|
||||
(
|
||||
"list-all",
|
||||
"List all directories (including non-existence ones)"
|
||||
);
|
||||
argList::addArgument("file...");
|
||||
|
||||
argList::addNote
|
||||
@ -77,9 +82,15 @@ int main(int argc, char *argv[])
|
||||
// First handle no parameters
|
||||
if (args.size() == 1)
|
||||
{
|
||||
if (args.found("list"))
|
||||
if (args.found("list-all"))
|
||||
{
|
||||
fileNameList results = findEtcDirs();
|
||||
fileNameList results = etcDirs(false);
|
||||
printList(results);
|
||||
return 0;
|
||||
}
|
||||
else if (args.found("list"))
|
||||
{
|
||||
fileNameList results = etcDirs();
|
||||
printList(results);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@ Usage
|
||||
- \par -patches patch or patch list
|
||||
Specify particular patches to write.
|
||||
|
||||
- \par -faceZones patch or zone list
|
||||
- \par -faceZones zone or zone list
|
||||
Specify faceZones to write, with wildcards
|
||||
|
||||
- \par -cellZone zoneName
|
||||
|
||||
@ -149,7 +149,7 @@ Description
|
||||
|
||||
// Write faceZones (POLYDATA file, one for each zone)
|
||||
|
||||
if (doFaceZones && !mesh.faceZones().empty())
|
||||
if (!selectedFaceZones.empty() && !mesh.faceZones().empty())
|
||||
{
|
||||
if (nSurfaceScalarField == -1)
|
||||
{
|
||||
@ -187,6 +187,11 @@ Description
|
||||
|
||||
for (const faceZone& fz : mesh.faceZones())
|
||||
{
|
||||
if (!selectedFaceZones.match(fz.name()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
indirectPrimitivePatch pp
|
||||
(
|
||||
IndirectList<face>(mesh.faces(), fz),
|
||||
|
||||
@ -70,6 +70,10 @@ Usage
|
||||
- \par -pointSet \<name\>
|
||||
Restrict conversion to the faceSet or pointSet.
|
||||
|
||||
- \par -faceZones zone or zone list
|
||||
Specify single faceZone or or multiple faceZones (name or regex)
|
||||
to write
|
||||
|
||||
- \par -nearCellValue
|
||||
Output cell value on patches instead of patch value itself
|
||||
|
||||
@ -85,9 +89,6 @@ Usage
|
||||
- \par -no-point-data
|
||||
Suppress conversion of pointFields. No interpolated PointData.
|
||||
|
||||
- \par -noFaceZones
|
||||
Suppress conversion of surface fields on faceZones
|
||||
|
||||
- \par -poly-decomp
|
||||
Decompose polyhedral cells into tets/pyramids
|
||||
|
||||
@ -308,6 +309,13 @@ int main(int argc, char *argv[])
|
||||
"Convert specified pointSet only",
|
||||
true // mark as an advanced option
|
||||
);
|
||||
argList::addOption
|
||||
(
|
||||
"faceZones",
|
||||
"wordRes",
|
||||
"Specify single or multiple faceZones to write\n"
|
||||
"Eg, 'cells' or '( slice \"mfp-.*\" )'."
|
||||
);
|
||||
|
||||
argList::addOption
|
||||
(
|
||||
@ -397,12 +405,10 @@ int main(int argc, char *argv[])
|
||||
" Eg, 'outlet' or '( inlet \".*Wall\" )'",
|
||||
true // mark as an advanced option
|
||||
);
|
||||
|
||||
argList::addBoolOption
|
||||
argList::ignoreOptionCompat
|
||||
(
|
||||
"noFaceZones",
|
||||
"Suppress conversion of surface fields on faceZones",
|
||||
true // mark as an advanced option
|
||||
{"noFaceZones", 1806}, // faceZones are only enabled on demand
|
||||
false // bool option, no argument
|
||||
);
|
||||
argList::ignoreOptionCompat
|
||||
(
|
||||
@ -435,7 +441,6 @@ int main(int argc, char *argv[])
|
||||
const bool doFiniteArea = args.found("finiteAreaFields");
|
||||
const bool doSurfaceFields = args.found("surfaceFields");
|
||||
|
||||
const bool doFaceZones = !args.found("noFaceZones") && doInternal;
|
||||
const bool oneBoundary = args.found("one-boundary") && doBoundary;
|
||||
const bool nearCellValue = args.found("nearCellValue") && doBoundary;
|
||||
const bool allRegions = args.found("allRegions");
|
||||
@ -471,10 +476,14 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
|
||||
// Can be specified as empty (ie, no fields)
|
||||
wordRes selectedFields;
|
||||
const bool useFieldFilter =
|
||||
args.readListIfPresent<wordRe>("fields", selectedFields);
|
||||
|
||||
// Non-mandatory
|
||||
const wordRes selectedFaceZones(args.getList<wordRe>("faceZones", false));
|
||||
|
||||
#include "createTime.H"
|
||||
|
||||
instantList timeDirs = timeSelector::select0(runTime, args);
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
foamPvCore.C
|
||||
|
||||
LIB = $(FOAM_LIBBIN)/libfoamPv-pv${ParaView_MAJOR}
|
||||
LIB = $(FOAM_LIBBIN)/libfoamPv-pv${PARAVIEW_API}
|
||||
|
||||
@ -5,4 +5,4 @@ vtkPVFoamMeshLagrangian.C
|
||||
vtkPVFoamMeshVolume.C
|
||||
vtkPVFoamUpdateInfo.C
|
||||
|
||||
LIB = $(FOAM_LIBBIN)/libvtkPVFoam-pv${ParaView_MAJOR}
|
||||
LIB = $(FOAM_LIBBIN)/libvtkPVFoam-pv${PARAVIEW_API}
|
||||
|
||||
@ -18,5 +18,5 @@ LIB_LIBS = \
|
||||
-lconversion \
|
||||
-lgenericPatchFields \
|
||||
-llagrangian \
|
||||
-L$(FOAM_LIBBIN) -lfoamPv-pv$(PARAVIEW_API) \
|
||||
-L$(FOAM_LIBBIN) -lfoamPv-pv${PARAVIEW_API} \
|
||||
$(GLIBS)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
vtkPVblockMesh.C
|
||||
vtkPVblockMeshConvert.C
|
||||
|
||||
LIB = $(FOAM_LIBBIN)/libvtkPVblockMesh-pv${ParaView_MAJOR}
|
||||
LIB = $(FOAM_LIBBIN)/libvtkPVblockMesh-pv${PARAVIEW_API}
|
||||
|
||||
@ -12,5 +12,5 @@ EXE_INC = \
|
||||
LIB_LIBS = \
|
||||
-lmeshTools \
|
||||
-lblockMesh \
|
||||
-L$(FOAM_LIBBIN) -lfoamPv-pv$(PARAVIEW_API) \
|
||||
-L$(FOAM_LIBBIN) -lfoamPv-pv${PARAVIEW_API} \
|
||||
$(GLIBS)
|
||||
|
||||
@ -215,8 +215,8 @@ int main(int argc, char *argv[])
|
||||
#include "setRootCase.H"
|
||||
#include "createTime.H"
|
||||
|
||||
wordRes selectedFields;
|
||||
args.readListIfPresent<wordRe>("fields", selectedFields);
|
||||
// Non-mandatory
|
||||
const wordRes selectedFields(args.getList<wordRe>("fields", false));
|
||||
|
||||
if (selectedFields.empty())
|
||||
{
|
||||
|
||||
@ -0,0 +1,3 @@
|
||||
createBoxTurb.C
|
||||
|
||||
EXE = $(FOAM_APPBIN)/createBoxTurb
|
||||
@ -0,0 +1,12 @@
|
||||
EXE_INC = \
|
||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||
-I$(LIB_SRC)/meshTools/lnInclude \
|
||||
-I$(LIB_SRC)/mesh/blockMesh/lnInclude \
|
||||
-I$(LIB_SRC)/fileFormats/lnInclude
|
||||
|
||||
|
||||
EXE_LIBS = \
|
||||
-lfiniteVolume \
|
||||
-lmeshTools \
|
||||
-lblockMesh \
|
||||
-lfileFormats
|
||||
@ -0,0 +1,104 @@
|
||||
const cellModel& hex = cellModel::ref(cellModel::HEX);
|
||||
|
||||
cellShapeList cellShapes;
|
||||
faceListList boundary;
|
||||
pointField points;
|
||||
{
|
||||
Info<< "Creating block" << endl;
|
||||
|
||||
block b
|
||||
(
|
||||
cellShape(hex, identity(8), false),
|
||||
pointField
|
||||
(
|
||||
{
|
||||
point(0, 0, 0),
|
||||
point(L.x(), 0, 0),
|
||||
point(L.x(), L.y(), 0),
|
||||
point(0, L.y(), 0),
|
||||
point(0, 0, L.z()),
|
||||
point(L.x(), 0, L.z()),
|
||||
point(L.x(), L.y(), L.z()),
|
||||
point(0, L.y(), L.z())
|
||||
}
|
||||
),
|
||||
blockEdgeList(),
|
||||
blockFaceList(),
|
||||
N,
|
||||
List<gradingDescriptors>(12)
|
||||
);
|
||||
|
||||
Info<< "Creating cells" << endl;
|
||||
|
||||
List<FixedList<label, 8>> bCells(b.cells());
|
||||
cellShapes.setSize(bCells.size());
|
||||
forAll(cellShapes, celli)
|
||||
{
|
||||
cellShapes[celli] =
|
||||
cellShape(hex, labelList(bCells[celli]), false);
|
||||
}
|
||||
|
||||
Info<< "Creating boundary faces" << endl;
|
||||
|
||||
boundary.setSize(b.boundaryPatches().size());
|
||||
forAll(boundary, patchi)
|
||||
{
|
||||
faceList faces(b.boundaryPatches()[patchi].size());
|
||||
forAll(faces, facei)
|
||||
{
|
||||
faces[facei] = face(b.boundaryPatches()[patchi][facei]);
|
||||
}
|
||||
boundary[patchi].transfer(faces);
|
||||
}
|
||||
|
||||
points.transfer(const_cast<pointField&>(b.points()));
|
||||
}
|
||||
|
||||
Info<< "Creating patch dictionaries" << endl;
|
||||
wordList patchNames(boundary.size());
|
||||
forAll(patchNames, patchi)
|
||||
{
|
||||
patchNames[patchi] = "patch" + Foam::name(patchi);
|
||||
}
|
||||
|
||||
PtrList<dictionary> boundaryDicts(boundary.size());
|
||||
forAll(boundaryDicts, patchi)
|
||||
{
|
||||
boundaryDicts.set(patchi, new dictionary());
|
||||
dictionary& patchDict = boundaryDicts[patchi];
|
||||
word nbrPatchName;
|
||||
if (patchi % 2 == 0)
|
||||
{
|
||||
nbrPatchName = "patch" + Foam::name(patchi + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
nbrPatchName = "patch" + Foam::name(patchi - 1);
|
||||
}
|
||||
|
||||
patchDict.add("type", cyclicPolyPatch::typeName);
|
||||
patchDict.add("neighbourPatch", nbrPatchName);
|
||||
}
|
||||
|
||||
Info<< "Creating polyMesh" << endl;
|
||||
polyMesh mesh
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
polyMesh::defaultRegion,
|
||||
runTime.constant(),
|
||||
runTime,
|
||||
IOobject::NO_READ
|
||||
),
|
||||
std::move(points),
|
||||
cellShapes,
|
||||
boundary,
|
||||
patchNames,
|
||||
boundaryDicts,
|
||||
"defaultFaces",
|
||||
cyclicPolyPatch::typeName,
|
||||
false
|
||||
);
|
||||
|
||||
Info<< "Writing polyMesh" << endl;
|
||||
mesh.write();
|
||||
@ -0,0 +1,184 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2018 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
|
||||
createBoxTurb
|
||||
|
||||
Description
|
||||
Creates a box of isotropic turbulence based on a user-specified
|
||||
energy spectrum.
|
||||
|
||||
Based on the reference
|
||||
\verbatim
|
||||
Saad, T., Cline, D., Stoll, R., Sutherland, J.C.
|
||||
"Scalable Tools for Generating Synthetic Isotropic Turbulence with
|
||||
Arbitrary Spectra"
|
||||
AIAA Journal, Vol. 55, No. 1 (2017), pp. 327-331.
|
||||
\endverbatim
|
||||
|
||||
The \c -createBlockMesh option creates a block mesh and exits, which
|
||||
can then be decomposed and the utility run in parallel.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "fvCFD.H"
|
||||
#include "block.H"
|
||||
#include "mathematicalConstants.H"
|
||||
|
||||
using namespace Foam::constant;
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::vector randomUnitVector(Random& rndGen)
|
||||
{
|
||||
// Sample point on a sphere
|
||||
scalar t = rndGen.globalPosition<scalar>(-1, 1);
|
||||
scalar phim = rndGen.globalSample01<scalar>()*mathematical::twoPi;
|
||||
scalar thetam = Foam::acos(t);
|
||||
|
||||
return vector
|
||||
(
|
||||
Foam::sin(thetam*Foam::cos(phim)),
|
||||
Foam::sin(thetam*Foam::sin(phim)),
|
||||
Foam::cos(thetam)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
argList::addBoolOption
|
||||
(
|
||||
"createBlockMesh",
|
||||
"create the block mesh and exit"
|
||||
);
|
||||
|
||||
#include "setRootCase.H"
|
||||
|
||||
#include "createTime.H"
|
||||
#include "createFields.H"
|
||||
|
||||
if (args.found("createBlockMesh"))
|
||||
{
|
||||
// Create a box block mesh with cyclic patches
|
||||
#include "createBlockMesh.H"
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include "createMesh.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// Minimum wave number
|
||||
scalar kappa0 = mathematical::twoPi/cmptMin(L);
|
||||
|
||||
// Maximum wave number
|
||||
scalar kappaMax = mathematical::pi/cmptMin(delta);
|
||||
|
||||
Info<< "Wave number min/max = " << kappa0 << ", " << kappaMax << endl;
|
||||
|
||||
Info<< "Generating velocity field" << endl;
|
||||
|
||||
volVectorField U
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"U",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
mesh,
|
||||
dimensionedVector(dimVelocity, Zero)
|
||||
);
|
||||
|
||||
vectorField& Uc = U.primitiveFieldRef();
|
||||
const scalar deltaKappa = (kappaMax - kappa0)/scalar(nModes - 1);
|
||||
const vectorField& C(mesh.C());
|
||||
for (label modei = 1; modei <= nModes; ++modei)
|
||||
{
|
||||
// Equidistant wave mode
|
||||
scalar kappaM = kappa0 + deltaKappa*(modei-1);
|
||||
|
||||
Info<< "Processing mode:" << modei << " kappaM:" << kappaM << endl;
|
||||
|
||||
// Energy
|
||||
scalar E = Ek->value(kappaM);
|
||||
|
||||
// Wave amplitude
|
||||
scalar qm = Foam::sqrt(E*deltaKappa);
|
||||
|
||||
// Wave number unit vector
|
||||
const vector kappaHatm(randomUnitVector(rndGen));
|
||||
|
||||
vector kappaTildem(0.5*kappaM*cmptMultiply(kappaHatm, delta));
|
||||
for (direction i = 0; i < 3; ++i)
|
||||
{
|
||||
kappaTildem[i] = 2/delta[i]*Foam::sin(kappaTildem[i]);
|
||||
}
|
||||
|
||||
// Intermediate unit vector zeta
|
||||
const vector zetaHatm(randomUnitVector(rndGen));
|
||||
|
||||
// Unit vector sigma
|
||||
vector sigmaHatm(zetaHatm^kappaTildem);
|
||||
sigmaHatm /= mag(kappaTildem);
|
||||
|
||||
// Phase angle
|
||||
scalar psim = 0.5*rndGen.position(-mathematical::pi, mathematical::pi);
|
||||
|
||||
// Add the velocity contribution per mode
|
||||
Uc += 2*qm*cos(kappaM*(kappaHatm & C) + psim)*sigmaHatm;
|
||||
}
|
||||
|
||||
U.write();
|
||||
|
||||
{
|
||||
Info<< "Generating kinetic energy field" << endl;
|
||||
volScalarField k("k", 0.5*magSqr(U));
|
||||
k.write();
|
||||
Info<< "min/max/average k = "
|
||||
<< gMin(k) << ", " << gMax(k) << ", " << gAverage(k)
|
||||
<< endl;
|
||||
}
|
||||
|
||||
{
|
||||
Info<< "Generating div(U) field" << endl;
|
||||
volScalarField divU(fvc::div(U));
|
||||
divU.write();
|
||||
Info<< "min/max/average div(U) = "
|
||||
<< gMin(divU) << ", " << gMax(divU) << ", " << gAverage(divU)
|
||||
<< endl;
|
||||
}
|
||||
|
||||
Info<< nl;
|
||||
runTime.printExecutionTime(Info);
|
||||
|
||||
Info<< "End\n" << endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,33 @@
|
||||
IOdictionary dict
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"createBoxTurbDict",
|
||||
runTime.constant(),
|
||||
runTime,
|
||||
IOobject::MUST_READ
|
||||
)
|
||||
);
|
||||
|
||||
// Extents in x, y, z directions
|
||||
const vector L(dict.get<vector>("L"));
|
||||
|
||||
// Number of cells in x, y, z directions
|
||||
const Vector<label> N(dict.get<Vector<label>>("N"));
|
||||
|
||||
// Wave number vs energy profile
|
||||
autoPtr<Function1<scalar>> Ek(Function1<scalar>::New("Ek", dict));
|
||||
|
||||
// Number of modes
|
||||
const label nModes = dict.get<label>("nModes");
|
||||
|
||||
// Mesh spacing in x, y and z directions
|
||||
const vector delta
|
||||
(
|
||||
L.x()/scalar(N.x()),
|
||||
L.y()/scalar(N.y()),
|
||||
L.z()/scalar(N.z())
|
||||
);
|
||||
|
||||
Random rndGen(1234);
|
||||
|
||||
@ -288,8 +288,8 @@ int main(int argc, char *argv[])
|
||||
Info<< "Subtracting mapped source field from target" << endl;
|
||||
}
|
||||
|
||||
wordRes selectedFields;
|
||||
args.readListIfPresent<wordRe>("fields", selectedFields);
|
||||
// Non-mandatory
|
||||
const wordRes selectedFields(args.getList<wordRe>("fields", false));
|
||||
|
||||
const bool noLagrangian = args.found("noLagrangian");
|
||||
|
||||
|
||||
@ -177,6 +177,11 @@ int main(int argc, char *argv[])
|
||||
isoCutCell icc(mesh, f);
|
||||
icc.volumeOfFluid(alpha1, f0);
|
||||
|
||||
if (dict.lookupOrDefault("invertAlpha", false))
|
||||
{
|
||||
alpha1 = 1 - alpha1;
|
||||
}
|
||||
|
||||
// Writing volScalarField alpha1
|
||||
ISstream::defaultPrecision(18);
|
||||
alpha1.write();
|
||||
|
||||
@ -29,6 +29,7 @@
|
||||
# Driver script to run mpi jobs with the processes in a separate XTerm
|
||||
# or to separate log files.
|
||||
# Requires bash on all processors.
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
. $WM_PROJECT_DIR/bin/tools/RunFunctions # Run functions
|
||||
|
||||
@ -193,15 +194,17 @@ fi
|
||||
|
||||
sourceFoam=false # Fallback command
|
||||
|
||||
# check ~/.$WM_PROJECT/$WM_PROJECT_VERSION/
|
||||
# Same as foamEtcFile -mode=uo bashrc
|
||||
#
|
||||
# check ~/.$WM_PROJECT/$WM_PROJECT_API/
|
||||
# check ~/.$WM_PROJECT/
|
||||
# check <installedProject>/etc/
|
||||
if [ -n "$WM_PROJECT" ]
|
||||
then
|
||||
for i in \
|
||||
$HOME/.$WM_PROJECT/$WM_PROJECT_VERSION \
|
||||
$HOME/.$WM_PROJECT \
|
||||
$WM_PROJECT_DIR/etc \
|
||||
"$HOME/.$WM_PROJECT/$WM_PROJECT_API" \
|
||||
"$HOME/.$WM_PROJECT" \
|
||||
"$WM_PROJECT_DIR/etc" \
|
||||
;
|
||||
do
|
||||
if [ -f "$i/bashrc" ]
|
||||
|
||||
@ -123,7 +123,7 @@ _matches()
|
||||
local result
|
||||
for regexp
|
||||
do
|
||||
result=$(echo "$input" | sed -n -e "/^$regexp"'$/p')
|
||||
result=$(echo "$input" | sed -ne "/^$regexp"'$/p')
|
||||
test -n "$result" && return 0 # successful match
|
||||
done
|
||||
return 1
|
||||
@ -243,7 +243,7 @@ removeBashMagic()
|
||||
# ----
|
||||
# set projectName="$WM_PROJECT"
|
||||
# set projectDir=`lsof +p $$ |& \
|
||||
# sed -n -e 's@^[^/]*@@; s@\(/'"$projectName"'[^/]*\)/etc/cshrc[^/]*@\1@p'`
|
||||
# sed -ne 'something /etc/cshrc something'`
|
||||
# ----
|
||||
removeCshMagic()
|
||||
{
|
||||
@ -587,7 +587,7 @@ do
|
||||
die "'$1' has bad value: '$optionValue'"
|
||||
|
||||
replace etc/config.sh/paraview ParaView_VERSION "$optionValue"
|
||||
replaceCsh etc/config.csh/paraview ParaView_VERSION "$optionValue"
|
||||
replace etc/config.csh/paraview ParaView_VERSION "$optionValue"
|
||||
adjusted=true
|
||||
shift
|
||||
;;
|
||||
|
||||
20
etc/caseDicts/postProcessing/fields/AMIWeights
Normal file
20
etc/caseDicts/postProcessing/fields/AMIWeights
Normal file
@ -0,0 +1,20 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration | Version: v1806
|
||||
\\ / A nd | Web: www.OpenFOAM.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Description
|
||||
Calculates and writes the second largest eigenvalue of the sum of the
|
||||
square of the symmetrical and anti-symmetrical parts of the velocity
|
||||
gradient tensor.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
type AMIWeights;
|
||||
libs ("libfieldFunctionObjects.so");
|
||||
writeFields yes;
|
||||
writeControl writeTime;
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -77,15 +77,14 @@ endif
|
||||
while ( $#argv > 0 )
|
||||
switch ($argv[1])
|
||||
case ParaView*=*:
|
||||
# name=value -> setenv name value
|
||||
eval "setenv $argv[1]:s/=/ /"
|
||||
# name=value -> set name=value
|
||||
eval "set $argv[1]"
|
||||
breaksw
|
||||
endsw
|
||||
shift
|
||||
end
|
||||
|
||||
if (! $?ParaView_VERSION ) set ParaView_VERSION=''
|
||||
|
||||
if ($?ParaView_VERSION) then
|
||||
switch ("$ParaView_VERSION")
|
||||
case "":
|
||||
# empty - do nothing
|
||||
@ -209,8 +208,8 @@ default:
|
||||
setenv ParaView_DIR # Defined but empty (used by foamPV alias)
|
||||
endif
|
||||
breaksw
|
||||
|
||||
endsw
|
||||
endif
|
||||
|
||||
unset cleaned archDir
|
||||
unset cmake cmake_version
|
||||
|
||||
@ -40,21 +40,25 @@ source "$WM_PROJECT_DIR/etc/config.csh/functions"
|
||||
# It may also not be required at all, in which case a dummy "ThirdParty"
|
||||
# directory inside of the OpenFOAM project directory.
|
||||
#
|
||||
# Note: only accept if the directory exists and contains a "Allwmake" file
|
||||
# Note: only accept if the directory exists and contains either
|
||||
# a "Allwmake" file (source) or a "platforms" directory (runtime-only)
|
||||
|
||||
setenv WM_THIRD_PARTY_DIR
|
||||
set foundDir=''
|
||||
|
||||
_foamEcho "Locating ThirdParty directory"
|
||||
foreach WM_THIRD_PARTY_DIR (\
|
||||
|
||||
foreach foamDir (\
|
||||
"$WM_PROJECT_DIR/ThirdParty" \
|
||||
"$prefixDir/ThirdParty-$WM_PROJECT_VERSION" \
|
||||
"$prefixDir/ThirdParty-v$WM_PROJECT_API" \
|
||||
"$prefixDir/ThirdParty-$WM_PROJECT_API" \
|
||||
"$prefixDir/ThirdParty-common" \
|
||||
)
|
||||
_foamEcho "... $WM_THIRD_PARTY_DIR"
|
||||
if ( -d "$WM_THIRD_PARTY_DIR" ) then
|
||||
if ( -f "$WM_THIRD_PARTY_DIR/Allwmake" || -d "$WM_THIRD_PARTY_DIR/platforms" ) then
|
||||
_foamEcho "... $foamDir"
|
||||
if ( -d "$foamDir" ) then
|
||||
if ( -f "$foamDir/Allwmake" || -d "$foamDir/platforms" ) then
|
||||
setenv WM_THIRD_PARTY_DIR "$foamDir"
|
||||
set foundDir=true
|
||||
break
|
||||
endif
|
||||
@ -182,6 +186,6 @@ unalias _foamAddLib
|
||||
unalias _foamAddLibAuto
|
||||
|
||||
# Variables (done as final statement for a clean exit code)
|
||||
unset cleaned foamOldDirs foundDir prefixDir
|
||||
unset cleaned foamOldDirs foundDir foamDir prefixDir
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
@ -43,6 +43,7 @@ unsetenv WM_ARCH_OPTION
|
||||
unsetenv WM_CC
|
||||
unsetenv WM_CFLAGS
|
||||
unsetenv WM_COMPILER
|
||||
unsetenv WM_COMPILER_ARCH
|
||||
unsetenv WM_COMPILER_TYPE
|
||||
unsetenv WM_COMPILER_LIB_ARCH
|
||||
unsetenv WM_COMPILE_OPTION
|
||||
|
||||
@ -49,7 +49,7 @@ then
|
||||
# outside of ThirdParty and should be added to the path.
|
||||
|
||||
ending="${ADIOS_ARCH_PATH##*-}"
|
||||
if [ "$ending" != none -a "$ending" != system ]
|
||||
if [ "$ending" != none ] && [ "$ending" != system ]
|
||||
then
|
||||
# PATH was already cleaned by etc/bashrc caller
|
||||
_foamAddPath $ADIOS_ARCH_PATH/bin
|
||||
|
||||
@ -96,7 +96,7 @@ _of_complete_cache_[foamToGMV]="-case -decomposeParDict -fileHandler | -listFunc
|
||||
_of_complete_cache_[foamToStarMesh]="-case -fileHandler -scale -time | -constant -latestTime -listFunctionObjects -listRegisteredSwitches -listSwitches -listUnsetSwitches -noBnd -noFunctionObjects -noZero -doc -doc-source -help"
|
||||
_of_complete_cache_[foamToSurface]="-case -fileHandler -scale -time | -constant -latestTime -listFunctionObjects -listRegisteredSwitches -listSwitches -listUnsetSwitches -noFunctionObjects -noZero -tri -doc -doc-source -help"
|
||||
_of_complete_cache_[foamToTetDualMesh]="-case -decomposeParDict -fileHandler -time | -constant -latestTime -listFunctionObjects -listRegisteredSwitches -listScalarBCs -listSwitches -listUnsetSwitches -listVectorBCs -noFunctionObjects -noZero -overwrite -parallel -doc -doc-source -help"
|
||||
_of_complete_cache_[foamToVTK]="-case -cellSet -cellZone -decomposeParDict -excludePatches -faceSet -fields -fileHandler -name -patches -pointSet -region -regions -time | -allRegions -ascii -constant -finiteAreaFields -latestTime -legacy -listFunctionObjects -listRegisteredSwitches -listScalarBCs -listSwitches -listUnsetSwitches -listVectorBCs -nearCellValue -no-boundary -no-internal -no-lagrangian -no-point-data -noFaceZones -noFunctionObjects -noZero -one-boundary -overwrite -parallel -poly-decomp -surfaceFields -doc -doc-source -help"
|
||||
_of_complete_cache_[foamToVTK]="-case -cellSet -cellZone -decomposeParDict -excludePatches -faceSet -faceZones -fields -fileHandler -name -patches -pointSet -region -regions -time | -allRegions -ascii -constant -finiteAreaFields -latestTime -legacy -listFunctionObjects -listRegisteredSwitches -listScalarBCs -listSwitches -listUnsetSwitches -listVectorBCs -nearCellValue -no-boundary -no-internal -no-lagrangian -no-point-data -noFunctionObjects -noZero -one-boundary -overwrite -parallel -poly-decomp -surfaceFields -doc -doc-source -help"
|
||||
_of_complete_cache_[foamUpgradeCyclics]="-case -decomposeParDict -fileHandler -region -time | -constant -dry-run -enableFunctionEntries -latestTime -listFunctionObjects -listRegisteredSwitches -listScalarBCs -listSwitches -listUnsetSwitches -listVectorBCs -noFunctionObjects -noZero -parallel -doc -doc-source -help"
|
||||
_of_complete_cache_[foamyHexMesh]="-case -decomposeParDict -fileHandler | -checkGeometry -conformationOnly -listFunctionObjects -listRegisteredSwitches -listScalarBCs -listSwitches -listUnsetSwitches -listVectorBCs -parallel -doc -doc-source -help"
|
||||
_of_complete_cache_[foamyQuadMesh]="-case -fileHandler -pointsFile | -listFunctionObjects -listRegisteredSwitches -listSwitches -listUnsetSwitches -noFunctionObjects -overwrite -doc -doc-source -help"
|
||||
|
||||
@ -105,7 +105,7 @@ then
|
||||
foamVar_end="${1##*-}"
|
||||
|
||||
# Do not add (none) or a system directory
|
||||
if [ -z "$foamVar_prefix" -o "$foamVar_end" = none -o "$foamVar_end" = system ]
|
||||
if [ -z "$foamVar_prefix" ] || [ "$foamVar_end" = none ] || [ "$foamVar_end" = system ]
|
||||
then
|
||||
unset foamVar_prefix foamVar_end
|
||||
return 1
|
||||
|
||||
@ -53,7 +53,7 @@ then
|
||||
# outside of ThirdParty and must be added to the lib-path.
|
||||
|
||||
ending="${GPERFTOOLS_ARCH_PATH##*-}"
|
||||
if [ "$ending" != none -a "$ending" != system ]
|
||||
if [ "$ending" != none ] && [ "$ending" != system ]
|
||||
then
|
||||
_foamAddLib $GPERFTOOLS_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH
|
||||
_foamAddPath $GPERFTOOLS_ARCH_PATH/bin
|
||||
|
||||
@ -204,7 +204,7 @@ case "$ParaView_VERSION" in
|
||||
echo " PV_PLUGIN_PATH : $PV_PLUGIN_PATH" 1>&2
|
||||
fi
|
||||
else
|
||||
if [ "$FOAM_VERBOSE" -a "$PS1" ]
|
||||
if [ -n "$FOAM_VERBOSE" ] && [ -n "$PS1" ]
|
||||
then
|
||||
echo "No paraview found" 1>&2
|
||||
echo " ParaView_DIR : $ParaView_DIR" 1>&2
|
||||
|
||||
@ -146,7 +146,7 @@ export FOAM_LIBBIN="$WM_PROJECT_DIR/platforms/$WM_OPTIONS/lib"
|
||||
siteDir="$WM_PROJECT_DIR/site"
|
||||
|
||||
# User override
|
||||
if [ -d "$WM_PROJECT_SITE" -a "$WM_PROJECT_SITE" != "$siteDir" ]
|
||||
if [ -d "$WM_PROJECT_SITE" ] && [ "$WM_PROJECT_SITE" != "$siteDir" ]
|
||||
then
|
||||
siteDir="$WM_PROJECT_SITE"
|
||||
export WM_PROJECT_SITE
|
||||
|
||||
@ -41,7 +41,9 @@ unset WM_SHELL_FUNCTIONS
|
||||
# It may also not be required at all, in which case a dummy "ThirdParty"
|
||||
# directory inside of the OpenFOAM project directory.
|
||||
#
|
||||
# Note: only accept if the directory exists and contains a "Allwmake" file
|
||||
# Note: only accept if the directory exists and contains either
|
||||
# a "Allwmake" file (source) or a "platforms" directory (runtime-only)
|
||||
|
||||
export WM_THIRD_PARTY_DIR
|
||||
unset foundDir
|
||||
|
||||
|
||||
@ -54,7 +54,7 @@ setenv WM_PROJECT_VERSION plus
|
||||
# If the directory naming does not match WM_PROJECT, need to change here
|
||||
set projectName="$WM_PROJECT"
|
||||
set projectDir=`lsof +p $$ |& \
|
||||
sed -n -e 's@^[^/]*@@; s@\(/'"$projectName"'[^/]*\)/etc/cshrc[^/]*@\1@p'`
|
||||
sed -ne 's@^[^/]*@@;\@/'"$projectName"'[^/]*/etc/cshrc@{s@/etc/cshrc.*@@p; q}'`
|
||||
|
||||
# set projectDir="$HOME/OpenFOAM/OpenFOAM-$WM_PROJECT_VERSION"
|
||||
# set projectDir="/opt/OpenFOAM/OpenFOAM-$WM_PROJECT_VERSION"
|
||||
|
||||
@ -70,6 +70,10 @@ primitives/Tensor/lists/symmTensorList.C
|
||||
primitives/Tensor/lists/tensorList.C
|
||||
|
||||
primitives/Vector/complexVector/complexVector.C
|
||||
#if !defined(WM_DP)
|
||||
primitives/Vector/doubleVector/doubleVector.C
|
||||
primitives/Tensor/doubleTensor/doubleTensor.C
|
||||
#endif
|
||||
#if !defined(WM_SP)
|
||||
primitives/Vector/floatVector/floatVector.C
|
||||
primitives/Tensor/floatTensor/floatTensor.C
|
||||
|
||||
@ -212,13 +212,14 @@ Foam::dimensioned<Type> Foam::dimensioned<Type>::lookupOrDefault
|
||||
const Type& defaultValue
|
||||
)
|
||||
{
|
||||
return
|
||||
dimensioned<Type>
|
||||
(
|
||||
name,
|
||||
dims,
|
||||
dict.lookupOrDefault<Type>(name, defaultValue)
|
||||
);
|
||||
if (dict.found(name))
|
||||
{
|
||||
return dimensioned<Type>(name, dims, dict);
|
||||
}
|
||||
else
|
||||
{
|
||||
return dimensioned<Type>(name, dims, defaultValue);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -871,8 +871,14 @@ void Foam::argList::parse
|
||||
if (Pstream::master() && bannerEnabled())
|
||||
{
|
||||
IOobject::writeBanner(Info, true)
|
||||
<< "Build : " << foamVersion::build.c_str()
|
||||
<< " (OPENFOAM=" << OPENFOAM;
|
||||
<< "Build : ";
|
||||
|
||||
if (foamVersion::build.size())
|
||||
{
|
||||
Info<< foamVersion::build.c_str() << ' ';
|
||||
}
|
||||
|
||||
Info<< "OPENFOAM=" << foamVersion::api;
|
||||
|
||||
if (foamVersion::patched())
|
||||
{
|
||||
@ -880,7 +886,7 @@ void Foam::argList::parse
|
||||
Info<< " patch=" << foamVersion::patch.c_str();
|
||||
}
|
||||
|
||||
Info<< ')' << nl
|
||||
Info<< nl
|
||||
<< "Arch : " << foamVersion::buildArch << nl
|
||||
<< "Exec : " << commandLine_.c_str() << nl
|
||||
<< "Date : " << dateString.c_str() << nl
|
||||
|
||||
@ -371,12 +371,15 @@ public:
|
||||
const T& deflt
|
||||
) const;
|
||||
|
||||
//- Read a List of values from the named option,
|
||||
//- Get a List of values from the named option,
|
||||
//- treating a single entry like a list of size 1.
|
||||
// \param optName the option name to read from
|
||||
// \param mandatory if the option is non-mandatory, the behaviour
|
||||
// is similar to readListIfPresent().
|
||||
template<class T>
|
||||
inline List<T> getList(const word& optName) const;
|
||||
inline List<T> getList(const word& optName, bool mandatory=true) const;
|
||||
|
||||
//- If named option is present, read a List of values
|
||||
//- If named option is present, get a List of values
|
||||
//- treating a single entry like a list of size 1.
|
||||
// \return true if the named option was found.
|
||||
template<class T>
|
||||
|
||||
@ -322,14 +322,22 @@ inline Foam::List<T> Foam::argList::getList(const label index) const
|
||||
|
||||
|
||||
template<class T>
|
||||
inline Foam::List<T> Foam::argList::getList(const word& optName) const
|
||||
inline Foam::List<T> Foam::argList::getList
|
||||
(
|
||||
const word& optName,
|
||||
bool mandatory
|
||||
) const
|
||||
{
|
||||
List<T> list;
|
||||
|
||||
if (mandatory || found(optName))
|
||||
{
|
||||
ITstream is(optName, options_[optName]);
|
||||
|
||||
List<T> list;
|
||||
readList(is, list);
|
||||
|
||||
checkITstream(is, optName);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
@ -345,6 +353,7 @@ inline bool Foam::argList::readListIfPresent
|
||||
if (found(optName))
|
||||
{
|
||||
ITstream is(optName, options_[optName]);
|
||||
|
||||
readList(is, list);
|
||||
|
||||
checkITstream(is, optName);
|
||||
|
||||
@ -95,6 +95,7 @@ static inline bool groupResourceDir(Foam::fileName& queried)
|
||||
is undefined (was this intentional?)
|
||||
#endif
|
||||
|
||||
queried.clear();
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -108,7 +109,13 @@ static inline bool groupResourceDir(Foam::fileName& queried)
|
||||
static inline bool projectResourceDir(Foam::fileName& queried)
|
||||
{
|
||||
queried = Foam::getEnv("WM_PROJECT_DIR")/"etc";
|
||||
return (queried.size() > 3 && Foam::isDir(queried));
|
||||
if (queried.size() > 3)
|
||||
{
|
||||
return Foam::isDir(queried);
|
||||
}
|
||||
|
||||
queried.clear();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@ -119,8 +126,9 @@ Foam::fileNameList searchEtc
|
||||
bool (*accept)(const Foam::fileName&)
|
||||
)
|
||||
{
|
||||
// Could use foamVersion::api, but this more direct.
|
||||
const Foam::fileName version(std::to_string(OPENFOAM));
|
||||
// Use foamVersion::api (instead of the OPENFOAM define) to ensure this
|
||||
// stays properly synchronized with the build information
|
||||
const Foam::fileName version(std::to_string(Foam::foamVersion::api));
|
||||
|
||||
Foam::fileNameList list;
|
||||
Foam::fileName dir, candidate;
|
||||
@ -192,6 +200,42 @@ Foam::fileNameList searchEtc
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::fileNameList Foam::etcDirs(bool test)
|
||||
{
|
||||
// Use foamVersion::api (instead of the OPENFOAM define) to ensure this
|
||||
// stays properly synchronized with the build information
|
||||
const Foam::fileName version(std::to_string(Foam::foamVersion::api));
|
||||
|
||||
Foam::fileNameList list(5);
|
||||
Foam::fileName dir;
|
||||
label nDirs = 0;
|
||||
|
||||
// User resource directories
|
||||
if (userResourceDir(dir) || (!test && dir.size()))
|
||||
{
|
||||
list[nDirs++] = dir/version;
|
||||
list[nDirs++] = dir;
|
||||
}
|
||||
|
||||
// Group (site) resource directories
|
||||
if (groupResourceDir(dir) || (!test && dir.size()))
|
||||
{
|
||||
list[nDirs++] = dir/version;
|
||||
list[nDirs++] = dir;
|
||||
}
|
||||
|
||||
// Other (project) resource directory
|
||||
if (projectResourceDir(dir) || (!test && dir.size()))
|
||||
{
|
||||
list[nDirs++] = dir;
|
||||
}
|
||||
|
||||
list.resize(nDirs);
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
|
||||
Foam::fileNameList Foam::findEtcDirs
|
||||
(
|
||||
const fileName& name,
|
||||
|
||||
@ -44,6 +44,14 @@ namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
//- The etc search directories in the normal search order.
|
||||
//
|
||||
// \param test false to disable the default test for directory existence.
|
||||
//
|
||||
// \return The list of directories
|
||||
fileNameList etcDirs(bool test=true);
|
||||
|
||||
|
||||
//- Search for directories from user/group/other directories.
|
||||
// Uses search hierarchy as per findEtcFiles().
|
||||
//
|
||||
@ -51,8 +59,8 @@ namespace Foam
|
||||
// an empty list if the name cannot be found.
|
||||
fileNameList findEtcDirs
|
||||
(
|
||||
const fileName& name=fileName::null, //!< the file to search for
|
||||
const bool findFirst=false //!< stop when the first file has been found
|
||||
const fileName& name, //!< The directory to search for
|
||||
const bool findFirst=false //!< Stop after locating the first directory
|
||||
);
|
||||
|
||||
|
||||
@ -76,9 +84,9 @@ fileNameList findEtcDirs
|
||||
// an empty list if the name cannot be found.
|
||||
fileNameList findEtcFiles
|
||||
(
|
||||
const fileName& name, //!< the file to search for
|
||||
const bool mandatory=false, //!< abort if the file cannot be found
|
||||
const bool findFirst=false //!< stop when the first file has been found
|
||||
const fileName& name, //!< The file to search for
|
||||
const bool mandatory=false, //!< Abort if the file cannot be found
|
||||
const bool findFirst=false //!< Stop after locating the first directory
|
||||
);
|
||||
|
||||
|
||||
@ -88,8 +96,8 @@ fileNameList findEtcFiles
|
||||
// search hierarchy or an empty fileName if the name cannot be found.
|
||||
fileName findEtcFile
|
||||
(
|
||||
const fileName& name, //!< the file to search for
|
||||
const bool mandatory=false //!< abort if the file cannot be found
|
||||
const fileName& name, //!< The file to search for
|
||||
const bool mandatory=false //!< Abort if the file cannot be found
|
||||
);
|
||||
|
||||
|
||||
|
||||
86
src/OpenFOAM/primitives/Tensor/doubleTensor/doubleTensor.C
Normal file
86
src/OpenFOAM/primitives/Tensor/doubleTensor/doubleTensor.C
Normal file
@ -0,0 +1,86 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2018 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 "doubleTensor.H"
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
template<>
|
||||
const char* const Foam::doubleTensor::vsType::typeName = "doubleTensor";
|
||||
|
||||
template<>
|
||||
const char* const Foam::doubleTensor::vsType::componentNames[] =
|
||||
{
|
||||
"xx", "xy", "xz",
|
||||
"yx", "yy", "yz",
|
||||
"zx", "zy", "zz"
|
||||
};
|
||||
|
||||
template<>
|
||||
const Foam::doubleTensor Foam::doubleTensor::vsType::zero
|
||||
(
|
||||
doubleTensor::uniform(0)
|
||||
);
|
||||
|
||||
template<>
|
||||
const Foam::doubleTensor Foam::doubleTensor::vsType::one
|
||||
(
|
||||
doubleTensor::uniform(1)
|
||||
);
|
||||
|
||||
template<>
|
||||
const Foam::doubleTensor Foam::doubleTensor::vsType::max
|
||||
(
|
||||
doubleTensor::uniform(doubleScalarVGREAT)
|
||||
);
|
||||
|
||||
template<>
|
||||
const Foam::doubleTensor Foam::doubleTensor::vsType::min
|
||||
(
|
||||
doubleTensor::uniform(-doubleScalarVGREAT)
|
||||
);
|
||||
|
||||
template<>
|
||||
const Foam::doubleTensor Foam::doubleTensor::vsType::rootMax
|
||||
(
|
||||
doubleTensor::uniform(doubleScalarROOTVGREAT)
|
||||
);
|
||||
|
||||
template<>
|
||||
const Foam::doubleTensor Foam::doubleTensor::vsType::rootMin
|
||||
(
|
||||
doubleTensor::uniform(-doubleScalarROOTVGREAT)
|
||||
);
|
||||
|
||||
template<>
|
||||
const Foam::doubleTensor Foam::doubleTensor::I
|
||||
(
|
||||
1, 0, 0,
|
||||
0, 1, 0,
|
||||
0, 0, 1
|
||||
);
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
64
src/OpenFOAM/primitives/Tensor/doubleTensor/doubleTensor.H
Normal file
64
src/OpenFOAM/primitives/Tensor/doubleTensor/doubleTensor.H
Normal file
@ -0,0 +1,64 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2018 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/>.
|
||||
|
||||
Typedef
|
||||
Foam::doubleTensor
|
||||
|
||||
Description
|
||||
A Tensor of values with double precision
|
||||
|
||||
SourceFiles
|
||||
doubleTensor.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef doubleTensor_H
|
||||
#define doubleTensor_H
|
||||
|
||||
#include "Tensor.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef Tensor<double> doubleTensor;
|
||||
|
||||
//- Data associated with doubleTensor type are contiguous
|
||||
#if !defined(WM_DP)
|
||||
template<>
|
||||
inline bool contiguous<doubleTensor>() {return true;}
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -25,7 +25,7 @@ Typedef
|
||||
Foam::floatTensor
|
||||
|
||||
Description
|
||||
FloatTensor of scalars.
|
||||
A Tensor of values with float precision
|
||||
|
||||
SourceFiles
|
||||
floatTensor.C
|
||||
@ -48,9 +48,10 @@ namespace Foam
|
||||
typedef Tensor<float> floatTensor;
|
||||
|
||||
//- Data associated with floatTensor type are contiguous
|
||||
#if !defined(WM_SP)
|
||||
template<>
|
||||
inline bool contiguous<floatTensor>() {return true;}
|
||||
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
|
||||
@ -25,7 +25,7 @@ Typedef
|
||||
Foam::labelTensor
|
||||
|
||||
Description
|
||||
3D labelTensor obtained from generic Tensor
|
||||
A Tensor of values using label (integer) representation.
|
||||
|
||||
SourceFiles
|
||||
labelTensor.C
|
||||
|
||||
76
src/OpenFOAM/primitives/Vector/doubleVector/doubleVector.C
Normal file
76
src/OpenFOAM/primitives/Vector/doubleVector/doubleVector.C
Normal file
@ -0,0 +1,76 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2018 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 "doubleVector.H"
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
template<>
|
||||
const char* const Foam::doubleVector::vsType::typeName = "doubleVector";
|
||||
|
||||
template<>
|
||||
const char* const Foam::doubleVector::vsType::componentNames[] =
|
||||
{
|
||||
"x", "y", "z"
|
||||
};
|
||||
|
||||
template<>
|
||||
const Foam::doubleVector Foam::doubleVector::vsType::zero
|
||||
(
|
||||
doubleVector::uniform(0)
|
||||
);
|
||||
|
||||
template<>
|
||||
const Foam::doubleVector Foam::doubleVector::vsType::one
|
||||
(
|
||||
doubleVector::uniform(1)
|
||||
);
|
||||
|
||||
template<>
|
||||
const Foam::doubleVector Foam::doubleVector::vsType::max
|
||||
(
|
||||
doubleVector::uniform(doubleScalarVGREAT)
|
||||
);
|
||||
|
||||
template<>
|
||||
const Foam::doubleVector Foam::doubleVector::vsType::min
|
||||
(
|
||||
doubleVector::uniform(-doubleScalarVGREAT)
|
||||
);
|
||||
|
||||
template<>
|
||||
const Foam::doubleVector Foam::doubleVector::vsType::rootMax
|
||||
(
|
||||
doubleVector::uniform(doubleScalarROOTVGREAT)
|
||||
);
|
||||
|
||||
template<>
|
||||
const Foam::doubleVector Foam::doubleVector::vsType::rootMin
|
||||
(
|
||||
doubleVector::uniform(-doubleScalarROOTVGREAT)
|
||||
);
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
64
src/OpenFOAM/primitives/Vector/doubleVector/doubleVector.H
Normal file
64
src/OpenFOAM/primitives/Vector/doubleVector/doubleVector.H
Normal file
@ -0,0 +1,64 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2018 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/>.
|
||||
|
||||
Typedef
|
||||
Foam::doubleVector
|
||||
|
||||
Description
|
||||
A Vector of values with double precision.
|
||||
|
||||
SourceFiles
|
||||
doubleVector.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef doubleVector_H
|
||||
#define doubleVector_H
|
||||
|
||||
#include "Vector.H"
|
||||
#include "contiguous.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
typedef Vector<double> doubleVector;
|
||||
|
||||
//- Data associated with doubleVector type are contiguous
|
||||
#if !defined(WM_DP)
|
||||
template<>
|
||||
inline bool contiguous<doubleVector>() {return true;}
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -21,9 +21,6 @@ License
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Description
|
||||
Vector of floats.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "floatVector.H"
|
||||
|
||||
@ -25,7 +25,7 @@ Typedef
|
||||
Foam::floatVector
|
||||
|
||||
Description
|
||||
A float version of vector
|
||||
A Vector of values with float precision.
|
||||
|
||||
SourceFiles
|
||||
floatVector.C
|
||||
|
||||
@ -187,6 +187,9 @@ bool Foam::UPstream::init(int& argc, char**& argv, const bool needsThread)
|
||||
Pout<< "UPstream::init : mpi-buffer-size " << bufSize << endl;
|
||||
}
|
||||
|
||||
// TBD: could add error handling here.
|
||||
// Delete allocated and leave if we fail to attach the buffer?
|
||||
|
||||
MPI_Buffer_attach(new char[bufSize], bufSize);
|
||||
}
|
||||
#endif
|
||||
@ -225,10 +228,19 @@ void Foam::UPstream::exit(int errnum)
|
||||
|
||||
#ifndef SGIMPI
|
||||
{
|
||||
int size;
|
||||
char* buff;
|
||||
MPI_Buffer_detach(&buff, &size);
|
||||
delete[] buff;
|
||||
// Some MPI notes suggest that the return code is MPI_SUCCESS when
|
||||
// no buffer is attached.
|
||||
// Be extra careful and require a non-zero size as well.
|
||||
|
||||
int bufSize = 0;
|
||||
char* buf = nullptr;
|
||||
|
||||
flag = MPI_Buffer_detach(&buf, &bufSize);
|
||||
|
||||
if (MPI_SUCCESS == flag && bufSize)
|
||||
{
|
||||
delete[] buf;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
396
src/functionObjects/field/AMIWeights/AMIWeights.C
Normal file
396
src/functionObjects/field/AMIWeights/AMIWeights.C
Normal file
@ -0,0 +1,396 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2018 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 "AMIWeights.H"
|
||||
#include "fvMesh.H"
|
||||
#include "foamVtkSurfaceWriter.H"
|
||||
#include "PatchTools.H"
|
||||
#include "cyclicACMIPolyPatch.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace functionObjects
|
||||
{
|
||||
defineTypeNameAndDebug(AMIWeights, 0);
|
||||
addToRunTimeSelectionTable(functionObject, AMIWeights, dictionary);
|
||||
}
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||
|
||||
void Foam::functionObjects::AMIWeights::writeFileHeader(Ostream& os)
|
||||
{
|
||||
writeHeader(os, "AMI");
|
||||
|
||||
writeCommented(os, "Time");
|
||||
forAll(patchIDs_, patchi)
|
||||
{
|
||||
writeTabbed(os, "Patch");
|
||||
writeTabbed(os, "nbr_patch");
|
||||
|
||||
if (Pstream::parRun())
|
||||
{
|
||||
writeTabbed(os, "distributed");
|
||||
}
|
||||
|
||||
writeTabbed(os, "src_min_weight");
|
||||
writeTabbed(os, "src_max_weight");
|
||||
writeTabbed(os, "src_average_weight");
|
||||
writeTabbed(os, "src_min_neighbours");
|
||||
writeTabbed(os, "src_max_neighbours");
|
||||
writeTabbed(os, "src_average_neighbours");
|
||||
writeTabbed(os, "tgt_min_weight");
|
||||
writeTabbed(os, "tgt_max_weight");
|
||||
writeTabbed(os, "tgt_average_weight");
|
||||
writeTabbed(os, "tgt_min_neighbours");
|
||||
writeTabbed(os, "tgt_max_neighbours");
|
||||
writeTabbed(os, "tgt_average_neighbours");
|
||||
}
|
||||
|
||||
os << endl;
|
||||
}
|
||||
|
||||
|
||||
void Foam::functionObjects::AMIWeights::reportPatch
|
||||
(
|
||||
const cyclicAMIPolyPatch& pp
|
||||
)
|
||||
{
|
||||
const word& nbrPatchName = pp.neighbPatchName();
|
||||
|
||||
const Switch distributed = pp.AMI().singlePatchProc() == -1;
|
||||
|
||||
const scalarField& srcWeightsSum = pp.AMI().srcWeightsSum();
|
||||
const scalar srcMinWeight = gMin(srcWeightsSum);
|
||||
const scalar srcMaxWeight = gMax(srcWeightsSum);
|
||||
const scalar srcAveWeight = gAverage(srcWeightsSum);
|
||||
|
||||
const labelListList& srcAddress = pp.AMI().srcAddress();
|
||||
label srcMinNbr = labelMax;
|
||||
label srcMaxNbr = labelMin;
|
||||
scalar srcAveNbr = 0;
|
||||
for (const labelList& srcFace : srcAddress)
|
||||
{
|
||||
const label n = srcFace.size();
|
||||
srcAveNbr += n;
|
||||
srcMinNbr = min(srcMinNbr, n);
|
||||
srcMaxNbr = max(srcMaxNbr, n);
|
||||
}
|
||||
|
||||
reduce(srcMinNbr, minOp<label>());
|
||||
reduce(srcMaxNbr, maxOp<label>());
|
||||
|
||||
srcAveNbr =
|
||||
returnReduce(srcAveNbr, sumOp<scalar>())
|
||||
/(returnReduce(srcAddress.size(), sumOp<scalar>()) + ROOTVSMALL);
|
||||
|
||||
const scalarField& tgtWeightsSum = pp.AMI().tgtWeightsSum();
|
||||
const scalar tgtMinWeight = gMin(tgtWeightsSum);
|
||||
const scalar tgtMaxWeight = gMax(tgtWeightsSum);
|
||||
const scalar tgtAveWeight = gAverage(tgtWeightsSum);
|
||||
|
||||
const labelListList& tgtAddress = pp.AMI().tgtAddress();
|
||||
label tgtMinNbr = labelMax;
|
||||
label tgtMaxNbr = labelMin;
|
||||
scalar tgtAveNbr = 0;
|
||||
for (const labelList& tgtFace : tgtAddress)
|
||||
{
|
||||
const label n = tgtFace.size();
|
||||
tgtAveNbr += n;
|
||||
tgtMinNbr = min(tgtMinNbr, n);
|
||||
tgtMaxNbr = max(tgtMaxNbr, n);
|
||||
}
|
||||
|
||||
reduce(tgtMinNbr, minOp<label>());
|
||||
reduce(tgtMaxNbr, maxOp<label>());
|
||||
|
||||
tgtAveNbr =
|
||||
returnReduce(tgtAveNbr, sumOp<scalar>())
|
||||
/(returnReduce(tgtAddress.size(), sumOp<scalar>()) + ROOTVSMALL);
|
||||
|
||||
file()
|
||||
<< mesh_.time().timeName() << tab
|
||||
<< pp.name() << tab
|
||||
<< nbrPatchName << tab;
|
||||
|
||||
|
||||
if (Pstream::parRun())
|
||||
{
|
||||
file() << distributed << tab;
|
||||
}
|
||||
|
||||
file()
|
||||
<< srcMinWeight << tab
|
||||
<< srcMaxWeight << tab
|
||||
<< srcAveWeight << tab
|
||||
<< srcMinNbr << tab
|
||||
<< srcMaxNbr << tab
|
||||
<< srcAveNbr << tab
|
||||
<< tgtMinWeight << tab
|
||||
<< tgtMaxWeight << tab
|
||||
<< tgtAveWeight << tab
|
||||
<< tgtMinNbr << tab
|
||||
<< tgtMaxNbr << tab
|
||||
<< tgtAveNbr << tab
|
||||
<< endl;
|
||||
|
||||
Log << " Patches: " << nl
|
||||
<< " Source: " << pp.name() << nl
|
||||
<< " Target: " << nbrPatchName << nl;
|
||||
|
||||
if (Pstream::parRun())
|
||||
{
|
||||
Log << " Parallel distributed: " << distributed << nl;
|
||||
}
|
||||
|
||||
Log << nl;
|
||||
|
||||
const label w = IOstream::defaultPrecision() + 8;
|
||||
|
||||
Log << " | " << setw(w) << pp.name()
|
||||
<< " | " << setw(w) << nbrPatchName << " | " << nl
|
||||
<< " min(weight) | " << setw(w) << srcMinWeight
|
||||
<< " | " << setw(w) << tgtMinWeight << " | " << nl
|
||||
<< " max(weight) | " << setw(w) << srcMaxWeight
|
||||
<< " | " << setw(w) << tgtMaxWeight << " | " << nl
|
||||
<< " ave(weight) | " << setw(w) << srcAveWeight
|
||||
<< " | " << setw(w) << tgtAveWeight << " | " << nl
|
||||
<< " min(address) | " << setw(w) << srcMinNbr
|
||||
<< " | " << setw(w) << tgtMinNbr << " | " << nl
|
||||
<< " max(address) | " << setw(w) << srcMaxNbr
|
||||
<< " | " << setw(w) << tgtMaxNbr << " | " << nl
|
||||
<< " ave(address) | " << setw(w) << srcAveNbr
|
||||
<< " | " << setw(w) << tgtAveNbr << " | " << nl
|
||||
<< endl;
|
||||
|
||||
setResult(pp.name() + ":src", pp.name());
|
||||
setResult(pp.name() + ":tgt", nbrPatchName);
|
||||
setResult(pp.name() + ":src:min(weight)", srcMinWeight);
|
||||
setResult(pp.name() + ":src:max(weight)", srcMaxWeight);
|
||||
setResult(pp.name() + ":src:ave(weight)", srcAveWeight);
|
||||
setResult(pp.name() + ":src:min(address)", srcMinNbr);
|
||||
setResult(pp.name() + ":src:max(address)", srcMaxNbr);
|
||||
setResult(pp.name() + ":src:ave(address)", srcAveNbr);
|
||||
setResult(pp.name() + ":tgt:min(weight)", tgtMinWeight);
|
||||
setResult(pp.name() + ":tgt:max(weight)", tgtMaxWeight);
|
||||
setResult(pp.name() + ":tgt:ave(weight)", tgtAveWeight);
|
||||
setResult(pp.name() + ":tgt:min(address)", tgtMinNbr);
|
||||
setResult(pp.name() + ":tgt:max(address)", tgtMaxNbr);
|
||||
setResult(pp.name() + ":tgt:ave(address)", tgtAveNbr);
|
||||
}
|
||||
|
||||
|
||||
void Foam::functionObjects::AMIWeights::writeWeightField
|
||||
(
|
||||
const cyclicAMIPolyPatch& cpp,
|
||||
const scalarField& weightSum,
|
||||
const word& side
|
||||
) const
|
||||
{
|
||||
// Collect geometry
|
||||
labelList pointToGlobal;
|
||||
labelList uniqueMeshPointLabels;
|
||||
autoPtr<globalIndex> globalPoints;
|
||||
autoPtr<globalIndex> globalFaces;
|
||||
faceList mergedFaces;
|
||||
pointField mergedPoints;
|
||||
Foam::PatchTools::gatherAndMerge
|
||||
(
|
||||
mesh_,
|
||||
cpp.localFaces(),
|
||||
cpp.meshPoints(),
|
||||
cpp.meshPointMap(),
|
||||
|
||||
pointToGlobal,
|
||||
uniqueMeshPointLabels,
|
||||
globalPoints,
|
||||
globalFaces,
|
||||
|
||||
mergedFaces,
|
||||
mergedPoints
|
||||
);
|
||||
|
||||
// Collect field
|
||||
scalarField mergedWeights;
|
||||
globalFaces().gather
|
||||
(
|
||||
UPstream::worldComm,
|
||||
ListOps::create<label>
|
||||
(
|
||||
UPstream::procID(UPstream::worldComm),
|
||||
labelOp<int>() // int -> label
|
||||
),
|
||||
weightSum,
|
||||
mergedWeights
|
||||
);
|
||||
|
||||
const bool isACMI = isA<cyclicACMIPolyPatch>(cpp);
|
||||
|
||||
scalarField mergedMask;
|
||||
if (isACMI)
|
||||
{
|
||||
const cyclicACMIPolyPatch& pp = refCast<const cyclicACMIPolyPatch>(cpp);
|
||||
|
||||
globalFaces().gather
|
||||
(
|
||||
UPstream::worldComm,
|
||||
ListOps::create<label>
|
||||
(
|
||||
UPstream::procID(UPstream::worldComm),
|
||||
labelOp<int>() // int -> label
|
||||
),
|
||||
pp.mask(),
|
||||
mergedMask
|
||||
);
|
||||
}
|
||||
|
||||
if (Pstream::master())
|
||||
{
|
||||
instant inst(mesh_.time().value(), mesh_.time().timeName());
|
||||
|
||||
vtk::surfaceWriter writer
|
||||
(
|
||||
mergedPoints,
|
||||
mergedFaces,
|
||||
(baseTimeDir()/cpp.name() + "_" + side),
|
||||
false // serial: master-only
|
||||
);
|
||||
|
||||
writer.setTime(inst);
|
||||
writer.writeTimeValue();
|
||||
writer.writeGeometry();
|
||||
|
||||
writer.beginCellData(1 + (isACMI ? 1 : 0));
|
||||
writer.write("weightsSum", mergedWeights);
|
||||
|
||||
if (isACMI)
|
||||
{
|
||||
writer.write("mask", mergedMask);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Foam::functionObjects::AMIWeights::writeWeightFields
|
||||
(
|
||||
const cyclicAMIPolyPatch& cpp
|
||||
) const
|
||||
{
|
||||
if (cpp.owner())
|
||||
{
|
||||
writeWeightField(cpp, cpp.AMI().srcWeightsSum(), "src");
|
||||
writeWeightField(cpp.neighbPatch(), cpp.AMI().tgtWeightsSum(), "tgt");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::functionObjects::AMIWeights::AMIWeights
|
||||
(
|
||||
const word& name,
|
||||
const Time& runTime,
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
fvMeshFunctionObject(name, runTime, dict),
|
||||
writeFile(mesh_, name, typeName, dict),
|
||||
writeFields_(false),
|
||||
patchIDs_()
|
||||
{
|
||||
read(dict);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
bool Foam::functionObjects::AMIWeights::read(const dictionary& dict)
|
||||
{
|
||||
if (fvMeshFunctionObject::read(dict) && writeFile::read(dict))
|
||||
{
|
||||
const polyBoundaryMesh& pbm = mesh_.boundaryMesh();
|
||||
|
||||
patchIDs_.clear();
|
||||
labelHashSet ids;
|
||||
forAll(pbm, patchi)
|
||||
{
|
||||
if (isA<cyclicAMIPolyPatch>(pbm[patchi]))
|
||||
{
|
||||
const auto& ami =
|
||||
static_cast<const cyclicAMIPolyPatch&>(pbm[patchi]);
|
||||
|
||||
if (ami.owner())
|
||||
{
|
||||
ids.insert(patchi);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
patchIDs_ = ids.sortedToc();
|
||||
|
||||
writeFileHeader(file());
|
||||
|
||||
writeFields_ = dict.get<bool>("writeFields");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool Foam::functionObjects::AMIWeights::execute()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool Foam::functionObjects::AMIWeights::write()
|
||||
{
|
||||
Log << type() << " " << name() << " write:" << nl;
|
||||
|
||||
const polyBoundaryMesh& pbm = mesh_.boundaryMesh();
|
||||
for (const label patchi : patchIDs_)
|
||||
{
|
||||
const polyPatch& pp = pbm[patchi];
|
||||
const auto& cpp = static_cast<const cyclicAMIPolyPatch&>(pp);
|
||||
|
||||
reportPatch(cpp);
|
||||
|
||||
if (writeFields_)
|
||||
{
|
||||
writeWeightFields(cpp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
163
src/functionObjects/field/AMIWeights/AMIWeights.H
Normal file
163
src/functionObjects/field/AMIWeights/AMIWeights.H
Normal file
@ -0,0 +1,163 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2018 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/>.
|
||||
|
||||
Class
|
||||
Foam::functionObjects::AMIWeights
|
||||
|
||||
Group
|
||||
grpFieldFunctionObjects
|
||||
|
||||
Description
|
||||
|
||||
Usage
|
||||
Example of function object specification:
|
||||
\verbatim
|
||||
AMIWeights1
|
||||
{
|
||||
type AMIWeights;
|
||||
libs ("libfieldFunctionObjects.so");
|
||||
writeFields yes;
|
||||
}
|
||||
\endverbatim
|
||||
|
||||
Where the entries comprise:
|
||||
\table
|
||||
Property | Description | Required | Default value
|
||||
type | type name: AMIWeights | yes |
|
||||
writeFields | write weights as VTK fields | yes |
|
||||
\endtable
|
||||
|
||||
Output data is written to the file \<timeDir\>/AMIWeights.dat
|
||||
|
||||
See also
|
||||
Foam::functionObjects::fvMeshFunctionObject
|
||||
Foam::functionObjects::writeFile
|
||||
|
||||
SourceFiles
|
||||
AMIWeights.C
|
||||
AMIWeightsTemplates.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef functionObjects_AMIWeights_H
|
||||
#define functionObjects_AMIWeights_H
|
||||
|
||||
#include "fvMeshFunctionObject.H"
|
||||
#include "writeFile.H"
|
||||
#include "cyclicAMIPolyPatch.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace functionObjects
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class AMIWeights Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class AMIWeights
|
||||
:
|
||||
public fvMeshFunctionObject,
|
||||
public writeFile
|
||||
{
|
||||
protected:
|
||||
|
||||
// Protected data
|
||||
|
||||
//- Flag to write AMI fields (as VTK files)
|
||||
bool writeFields_;
|
||||
|
||||
//- List of AMI patch IDs
|
||||
labelList patchIDs_;
|
||||
|
||||
|
||||
// Protected Member Functions
|
||||
|
||||
//- Output file header information
|
||||
virtual void writeFileHeader(Ostream& os);
|
||||
|
||||
//- Helper function to report patch information
|
||||
virtual void reportPatch(const cyclicAMIPolyPatch& pp);
|
||||
|
||||
void writeWeightField
|
||||
(
|
||||
const cyclicAMIPolyPatch& cpp,
|
||||
const scalarField& weightSum,
|
||||
const word& side
|
||||
) const;
|
||||
|
||||
void writeWeightFields(const cyclicAMIPolyPatch& cpp) const;
|
||||
|
||||
//- No copy construct
|
||||
AMIWeights(const AMIWeights&) = delete;
|
||||
|
||||
//- No copy assignment
|
||||
void operator=(const AMIWeights&) = delete;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("AMIWeights");
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from Time and dictionary
|
||||
AMIWeights
|
||||
(
|
||||
const word& name,
|
||||
const Time& runTime,
|
||||
const dictionary& dict
|
||||
);
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~AMIWeights() = default;
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Read the field min/max data
|
||||
virtual bool read(const dictionary&);
|
||||
|
||||
//- Execute, currently does nothing
|
||||
virtual bool execute();
|
||||
|
||||
//- Write the AMIWeights
|
||||
virtual bool write();
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace functionObjects
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,3 +1,5 @@
|
||||
AMIWeights/AMIWeights.C
|
||||
|
||||
fieldAverage/fieldAverage.C
|
||||
fieldAverage/fieldAverageItem/fieldAverageItem.C
|
||||
fieldAverage/fieldAverageItem/fieldAverageItemIO.C
|
||||
|
||||
@ -49,7 +49,7 @@ Description
|
||||
{
|
||||
box
|
||||
{
|
||||
action add;
|
||||
action use;
|
||||
source box;
|
||||
box (-0.1 -0.01 -0.1) (0.1 0.30 0.1);
|
||||
}
|
||||
@ -110,7 +110,7 @@ Description
|
||||
|
||||
Note
|
||||
The region of interest is defined by the selection dictionary
|
||||
as a set of actions (add,subtract,subset,invert).
|
||||
as a set of actions (use,add,subtract,subset,invert).
|
||||
Omitting the selection dictionary is the same as specifying the
|
||||
conversion of all cells (in the selected regions).
|
||||
Omitting the patches entry is the same as specifying the conversion of all
|
||||
|
||||
@ -35,6 +35,7 @@ namespace Foam
|
||||
// A limited selection of actions
|
||||
const Enum<topoSetSource::setAction> actionNames
|
||||
({
|
||||
{ topoSetSource::NEW, "use" }, // Reuse NEW for "use" action name
|
||||
{ topoSetSource::ADD, "add" },
|
||||
{ topoSetSource::SUBTRACT, "subtract" },
|
||||
{ topoSetSource::SUBSET, "subset" },
|
||||
@ -92,8 +93,15 @@ bool Foam::functionObjects::ensightWrite::updateSubset
|
||||
|
||||
switch (action)
|
||||
{
|
||||
case topoSetSource::NEW: // "use"
|
||||
case topoSetSource::ADD:
|
||||
case topoSetSource::SUBTRACT:
|
||||
if (topoSetSource::NEW == action)
|
||||
{
|
||||
// "use": only use this selection (clear + ADD)
|
||||
// NEW is handled like ADD in applyToSet()
|
||||
cellsToSelect.reset();
|
||||
}
|
||||
source->applyToSet(action, cellsToSelect);
|
||||
break;
|
||||
|
||||
@ -121,41 +129,6 @@ bool Foam::functionObjects::ensightWrite::updateSubset
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
Foam::labelList Foam::functionObjects::ensightWrite::getSelectedPatches
|
||||
(
|
||||
const polyBoundaryMesh& patches
|
||||
) const
|
||||
{
|
||||
DynamicList<label> patchIDs(patches.size());
|
||||
|
||||
for (const polyPatch& pp : patches)
|
||||
{
|
||||
if (isType<emptyPolyPatch>(pp))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
else if (isType<processorPolyPatch>(pp))
|
||||
{
|
||||
break; // No processor patches
|
||||
}
|
||||
|
||||
if
|
||||
(
|
||||
selectPatches_.size()
|
||||
? selectPatches_.match(pp.name())
|
||||
: true
|
||||
)
|
||||
{
|
||||
patchIDs.append(pp.index());
|
||||
}
|
||||
}
|
||||
|
||||
return patchIDs.shrink();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
bool Foam::functionObjects::ensightWrite::update()
|
||||
{
|
||||
if (meshState_ == polyMesh::UNCHANGED)
|
||||
|
||||
@ -41,6 +41,8 @@ void Foam::functionObjects::residuals::writeFileHeader
|
||||
|
||||
if (foundObject<fieldType>(fieldName))
|
||||
{
|
||||
writeTabbed(os, fieldName + "_solver");
|
||||
|
||||
typename pTraits<Type>::labelType validComponents
|
||||
(
|
||||
mesh_.validComponents<Type>()
|
||||
@ -50,13 +52,16 @@ void Foam::functionObjects::residuals::writeFileHeader
|
||||
{
|
||||
if (component(validComponents, cmpt) != -1)
|
||||
{
|
||||
writeTabbed
|
||||
(
|
||||
os,
|
||||
fieldName + word(pTraits<Type>::componentNames[cmpt])
|
||||
);
|
||||
const word cmptName(pTraits<Type>::componentNames[cmpt]);
|
||||
const word fieldBase(fieldName + cmptName);
|
||||
|
||||
writeTabbed(os, fieldBase + "_initial");
|
||||
writeTabbed(os, fieldBase + "_final");
|
||||
writeTabbed(os, fieldBase + "_iters");
|
||||
}
|
||||
}
|
||||
|
||||
writeTabbed(os, fieldName + "_converged");
|
||||
}
|
||||
}
|
||||
|
||||
@ -81,8 +86,10 @@ void Foam::functionObjects::residuals::initialiseField(const word& fieldName)
|
||||
{
|
||||
if (component(validComponents, cmpt) != -1)
|
||||
{
|
||||
const word resultName =
|
||||
fieldName + word(pTraits<Type>::componentNames[cmpt]);
|
||||
const word resultName
|
||||
(
|
||||
fieldName + word(pTraits<Type>::componentNames[cmpt])
|
||||
);
|
||||
|
||||
createField(resultName);
|
||||
}
|
||||
@ -96,6 +103,7 @@ template<class Type>
|
||||
void Foam::functionObjects::residuals::writeResidual(const word& fieldName)
|
||||
{
|
||||
typedef GeometricField<Type, fvPatchField, volMesh> volFieldType;
|
||||
typedef typename pTraits<Type>::labelType labelType;
|
||||
|
||||
if (foundObject<volFieldType>(fieldName))
|
||||
{
|
||||
@ -108,28 +116,41 @@ void Foam::functionObjects::residuals::writeResidual(const word& fieldName)
|
||||
solverDict.lookup(fieldName)
|
||||
);
|
||||
|
||||
const Type& residual = sp.first().initialResidual();
|
||||
const SolverPerformance<Type>& sp0 = sp.first();
|
||||
const word& solverName = sp0.solverName();
|
||||
const Type& initialResidual = sp0.initialResidual();
|
||||
const Type& finalResidual = sp0.finalResidual();
|
||||
const labelType nIterations = sp0.nIterations();
|
||||
const bool converged = sp0.converged();
|
||||
|
||||
typename pTraits<Type>::labelType validComponents
|
||||
(
|
||||
mesh_.validComponents<Type>()
|
||||
);
|
||||
const labelType validComponents(mesh_.validComponents<Type>());
|
||||
|
||||
file() << token::TAB << solverName;
|
||||
|
||||
for (direction cmpt=0; cmpt<pTraits<Type>::nComponents; ++cmpt)
|
||||
{
|
||||
if (component(validComponents, cmpt) != -1)
|
||||
{
|
||||
const scalar r = component(residual, cmpt);
|
||||
const scalar ri = component(initialResidual, cmpt);
|
||||
const scalar rf = component(finalResidual, cmpt);
|
||||
const label n = component(nIterations, cmpt);
|
||||
|
||||
file() << token::TAB << r;
|
||||
file()
|
||||
<< token::TAB << ri
|
||||
<< token::TAB << rf
|
||||
<< token::TAB << n;
|
||||
|
||||
const word resultName =
|
||||
fieldName + word(pTraits<Type>::componentNames[cmpt]);
|
||||
setResult(resultName, r);
|
||||
const word cmptName(pTraits<Type>::componentNames[cmpt]);
|
||||
const word resultName(fieldName + cmptName);
|
||||
setResult(resultName + "_initial", ri);
|
||||
setResult(resultName + "_final", rf);
|
||||
setResult(resultName + "_iters", n);
|
||||
|
||||
writeField(resultName);
|
||||
}
|
||||
}
|
||||
|
||||
file() << token::TAB << converged;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -49,7 +49,7 @@ Description
|
||||
{
|
||||
box
|
||||
{
|
||||
action add;
|
||||
action use;
|
||||
source box;
|
||||
box (-0.1 -0.01 -0.1) (0.1 0.30 0.1);
|
||||
}
|
||||
@ -112,7 +112,7 @@ Description
|
||||
|
||||
Note
|
||||
The region of interest is defined by the selection dictionary
|
||||
as a set of actions (add,subtract,subset,invert).
|
||||
as a set of actions (use,add,subtract,subset,invert).
|
||||
Omitting the selection dictionary is the same as specifying the
|
||||
conversion of all cells (in the selected regions).
|
||||
Omitting the patches entry is the same as specifying the conversion of all
|
||||
|
||||
@ -34,6 +34,7 @@ namespace Foam
|
||||
// A limited selection of actions
|
||||
const Enum<topoSetSource::setAction> actionNames
|
||||
({
|
||||
{ topoSetSource::NEW, "use" }, // Reuse NEW for "use" action name
|
||||
{ topoSetSource::ADD, "add" },
|
||||
{ topoSetSource::SUBTRACT, "subtract" },
|
||||
{ topoSetSource::SUBSET, "subset" },
|
||||
@ -90,8 +91,15 @@ bool Foam::functionObjects::vtkWrite::updateSubset
|
||||
|
||||
switch (action)
|
||||
{
|
||||
case topoSetSource::NEW: // "use"
|
||||
case topoSetSource::ADD:
|
||||
case topoSetSource::SUBTRACT:
|
||||
if (topoSetSource::NEW == action)
|
||||
{
|
||||
// "use": only use this selection (clear + ADD)
|
||||
// NEW is handled like ADD in applyToSet()
|
||||
cellsToSelect.reset();
|
||||
}
|
||||
source->applyToSet(action, cellsToSelect);
|
||||
break;
|
||||
|
||||
|
||||
@ -28,6 +28,7 @@ Description
|
||||
A topoSetCellSource to select cells belonging to a topological connected
|
||||
region (that contains given points)
|
||||
|
||||
Usage
|
||||
In dictionary input:
|
||||
\verbatim
|
||||
// optional name of cellSet delimiting search
|
||||
@ -41,7 +42,7 @@ Description
|
||||
insidePoints ((1 2 3));
|
||||
\endverbatim
|
||||
|
||||
\heading Dictionary parameters
|
||||
Dictionary parameters:
|
||||
\table
|
||||
Property | Description | Required | Default
|
||||
insidePoints | Points inside regions | yes |
|
||||
@ -151,7 +152,6 @@ public:
|
||||
const topoSetSource::setAction action,
|
||||
topoSet& set
|
||||
) const;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -82,7 +82,7 @@ public:
|
||||
enum setAction
|
||||
{
|
||||
ADD, //!< Add elements to the set
|
||||
SUBTRACT, //!< Remove elements from the set
|
||||
SUBTRACT, //!< Subtract elements from the set
|
||||
SUBSET, //!< Subset with elements in the set
|
||||
INVERT, //!< Invert the elements in the set
|
||||
CLEAR, //!< Clear the set, possibly creating it
|
||||
|
||||
@ -70,14 +70,14 @@ Description
|
||||
The \c rootdir normally corresponds to something like
|
||||
\c postProcessing/\<name\>
|
||||
|
||||
\subheading Geometry
|
||||
where the geometry is written as:
|
||||
\verbatim
|
||||
rootdir
|
||||
`-- surfaceName
|
||||
`-- "points"
|
||||
\endverbatim
|
||||
|
||||
\subheading Fields
|
||||
and field data:
|
||||
\verbatim
|
||||
rootdir
|
||||
`-- surfaceName
|
||||
|
||||
@ -16,6 +16,9 @@
|
||||
# Description
|
||||
# Quickly test the tutorials and write out the scheme/solver information
|
||||
#
|
||||
# Environment
|
||||
# The entire OpenFOAM environment (WM_PROJECT_DIR, etc)
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
cd ${0%/*} || exit 1 # Run from this directory
|
||||
|
||||
@ -128,24 +131,18 @@ EOF
|
||||
|
||||
|
||||
#
|
||||
# Location of the main controlDict
|
||||
# Location of the user or project controlDict
|
||||
#
|
||||
unset MAIN_CONTROL_DICT
|
||||
|
||||
for i in \
|
||||
$HOME/.$WM_PROJECT/$WM_PROJECT_VERSION \
|
||||
$HOME/.$WM_PROJECT \
|
||||
$WM_PROJECT_DIR/etc \
|
||||
;
|
||||
do
|
||||
if [ -f "$i/controlDict" ]
|
||||
if MAIN_CONTROL_DICT="$($WM_PROJECT_DIR/bin/foamEtcFile -mode=uo controlDict)"
|
||||
then
|
||||
if [ -e "${MAIN_CONTROL_DICT}.orig" ]
|
||||
then
|
||||
MAIN_CONTROL_DICT="$i/controlDict"
|
||||
break
|
||||
die "File ${MAIN_CONTROL_DICT}.orig already exists" \
|
||||
"Did Alltest fail in some way and then run again?"
|
||||
fi
|
||||
done
|
||||
|
||||
[ -f "$MAIN_CONTROL_DICT" ] || usage "Main controlDict not found"
|
||||
else
|
||||
die "No main (user or project) controlDict found"
|
||||
fi
|
||||
|
||||
|
||||
TUTORIALS_DIR=$ROOT
|
||||
@ -182,13 +179,6 @@ then
|
||||
rm -rf $buildDir
|
||||
fi
|
||||
|
||||
if [ -e ${MAIN_CONTROL_DICT}.orig ]
|
||||
then
|
||||
die "File ${MAIN_CONTROL_DICT}.orig already exists" \
|
||||
"Did Alltest fail in some way and then run again?"
|
||||
fi
|
||||
|
||||
|
||||
unset gitbase
|
||||
|
||||
if [ -n "$useGit" ]
|
||||
|
||||
@ -0,0 +1,31 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: plus |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
location "0";
|
||||
object nut;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 2 -1 0 0 0 0];
|
||||
|
||||
internalField uniform 0;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
".*"
|
||||
{
|
||||
type cyclic;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,31 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: plus |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
location "0";
|
||||
object p;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 2 -2 0 0 0 0];
|
||||
|
||||
internalField uniform 0;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
".*"
|
||||
{
|
||||
type cyclic;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
5
tutorials/incompressible/pimpleFoam/LES/decayIsoTurb/Allclean
Executable file
5
tutorials/incompressible/pimpleFoam/LES/decayIsoTurb/Allclean
Executable file
@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
cd ${0%/*} || exit 1 # run from this directory
|
||||
. $WM_PROJECT_DIR/bin/tools/CleanFunctions # Tutorial clean functions
|
||||
|
||||
cleanCase0
|
||||
13
tutorials/incompressible/pimpleFoam/LES/decayIsoTurb/Allrun
Executable file
13
tutorials/incompressible/pimpleFoam/LES/decayIsoTurb/Allrun
Executable file
@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
cd ${0%/*} || exit 1 # run from this directory
|
||||
. $WM_PROJECT_DIR/bin/tools/RunFunctions # Tutorial run functions
|
||||
|
||||
restore0Dir
|
||||
|
||||
runApplication -s createBlockMesh createBoxTurb -createBlockMesh
|
||||
|
||||
runApplication decomposePar
|
||||
|
||||
runParallel createBoxTurb
|
||||
|
||||
runParallel pimpleFoam
|
||||
16
tutorials/incompressible/pimpleFoam/LES/decayIsoTurb/README
Normal file
16
tutorials/incompressible/pimpleFoam/LES/decayIsoTurb/README
Normal file
@ -0,0 +1,16 @@
|
||||
Decay of homogenious incompressible isotropic turbulence
|
||||
|
||||
This case is based on the set-up of Comte-Bellot and S. Corrsin [1]
|
||||
|
||||
The mesh comprises a block-structured cube divided into 64x64x64 cells, with
|
||||
a box length of 9*pi cm.
|
||||
|
||||
Turbulence is initialised using the target energy spectrum supplied in [1] (see
|
||||
table 3).
|
||||
|
||||
For more information, see:
|
||||
|
||||
https://www.openfoam.com/documentation/cpp-guide/html/verification-validation-turbulent-decay-homogeneous-isotropic-turbulence.html
|
||||
|
||||
[1] G. Comte-Bellot and S. Corrsin, "The use of a contraction to improve the
|
||||
isotropy of grid-generated turbulence," J. Fluid Mech. 25, 657 (1966).
|
||||
@ -0,0 +1,54 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object createBoxTurbDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
N (64 64 64);
|
||||
//N (128 128 128);
|
||||
//N (256 256 256);
|
||||
|
||||
// Suggested box size of 9*2*pi [cm]
|
||||
L (0.56548667765 0.56548667765 0.56548667765);
|
||||
|
||||
nModes 5000;
|
||||
|
||||
// Energy as a function of wave number
|
||||
// Here using Comte-Bellot and Corrsin data at t.U_0/M = 42 (see Ref. table 3)
|
||||
Ek table
|
||||
(
|
||||
(15 0)
|
||||
(20 0.000129)
|
||||
(25 0.00023)
|
||||
(30 0.000322)
|
||||
(40 0.000435)
|
||||
(50 0.000457)
|
||||
(70 0.00038)
|
||||
(100 0.00027)
|
||||
(150 0.000168)
|
||||
(200 0.00012)
|
||||
(250 8.9e-05)
|
||||
(300 7.03e-05)
|
||||
(400 4.7e-05)
|
||||
(600 2.47e-05)
|
||||
(800 1.26e-05)
|
||||
(1000 7.42e-06)
|
||||
(1250 3.96e-06)
|
||||
(1500 2.33e-06)
|
||||
(1750 1.34e-06)
|
||||
(2000 8e-07)
|
||||
);
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,38 @@
|
||||
WALE
|
||||
{
|
||||
delta cubeRootVol;
|
||||
|
||||
cubeRootVolCoeffs
|
||||
{
|
||||
deltaCoeff 1;
|
||||
}
|
||||
}
|
||||
|
||||
kEqn
|
||||
{
|
||||
delta cubeRootVol;
|
||||
kEqnCoeffs
|
||||
{
|
||||
Ck 0.094;
|
||||
Ce 1.048;
|
||||
}
|
||||
}
|
||||
|
||||
dynamicKEqn
|
||||
{
|
||||
delta cubeRootVol;
|
||||
dynamicKEqnCoeffs
|
||||
{
|
||||
filter simple;
|
||||
}
|
||||
}
|
||||
|
||||
Smagorinsky
|
||||
{
|
||||
delta cubeRootVol;
|
||||
SmagorinskyCoeffs
|
||||
{
|
||||
Ck 0.094;
|
||||
Ce 1.048;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,22 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object transportProperties;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
transportModel Newtonian;
|
||||
|
||||
nu 1e-05;
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,36 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object turbulenceProperties;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#include "include/turbulenceModels"
|
||||
|
||||
simulationType LES;
|
||||
|
||||
|
||||
LES
|
||||
{
|
||||
turbulence on;
|
||||
|
||||
printCoeffs on;
|
||||
|
||||
LESModel kEqn;
|
||||
|
||||
${:$LESModel}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,115 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
object blockMeshDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
scale 1;
|
||||
|
||||
vertices
|
||||
(
|
||||
(0 0 0)
|
||||
(4 0 0)
|
||||
(0 1 0)
|
||||
(4 1 0)
|
||||
(0 2 0)
|
||||
(4 2 0)
|
||||
(0 0 2)
|
||||
(4 0 2)
|
||||
(0 1 2)
|
||||
(4 1 2)
|
||||
(0 2 2)
|
||||
(4 2 2)
|
||||
);
|
||||
|
||||
blocks
|
||||
(
|
||||
hex (0 1 3 2 6 7 9 8) (40 25 30) simpleGrading (1 10.7028 1)
|
||||
hex (2 3 5 4 8 9 11 10) (40 25 30) simpleGrading (1 0.0934 1)
|
||||
);
|
||||
|
||||
edges
|
||||
(
|
||||
);
|
||||
|
||||
boundary
|
||||
(
|
||||
bottomWall
|
||||
{
|
||||
type wall;
|
||||
faces ((0 1 7 6));
|
||||
}
|
||||
topWall
|
||||
{
|
||||
type wall;
|
||||
faces ((4 10 11 5));
|
||||
}
|
||||
|
||||
sides1_half0
|
||||
{
|
||||
type cyclic;
|
||||
neighbourPatch sides1_half1;
|
||||
faces ((0 2 3 1));
|
||||
}
|
||||
sides1_half1
|
||||
{
|
||||
type cyclic;
|
||||
neighbourPatch sides1_half0;
|
||||
faces ((6 7 9 8));
|
||||
}
|
||||
|
||||
sides2_half0
|
||||
{
|
||||
type cyclic;
|
||||
neighbourPatch sides2_half1;
|
||||
faces ((2 4 5 3));
|
||||
}
|
||||
sides2_half1
|
||||
{
|
||||
type cyclic;
|
||||
neighbourPatch sides2_half0;
|
||||
faces ((8 9 11 10));
|
||||
}
|
||||
|
||||
inout1_half0
|
||||
{
|
||||
type cyclic;
|
||||
neighbourPatch inout1_half1;
|
||||
faces ((1 3 9 7));
|
||||
}
|
||||
inout1_half1
|
||||
{
|
||||
type cyclic;
|
||||
neighbourPatch inout1_half0;
|
||||
faces ((0 6 8 2));
|
||||
}
|
||||
|
||||
inout2_half0
|
||||
{
|
||||
type cyclic;
|
||||
neighbourPatch inout2_half1;
|
||||
faces ((3 5 11 9));
|
||||
}
|
||||
inout2_half1
|
||||
{
|
||||
type cyclic;
|
||||
neighbourPatch inout2_half0;
|
||||
faces ((2 8 10 4));
|
||||
}
|
||||
);
|
||||
|
||||
mergePatchPairs
|
||||
(
|
||||
);
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,60 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object controlDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
application pimpleFoam;
|
||||
|
||||
startFrom startTime;
|
||||
|
||||
startTime 0;
|
||||
//startTime 0.28;
|
||||
//startTime 0.66;
|
||||
|
||||
stopAt endTime;
|
||||
|
||||
endTime 1;
|
||||
|
||||
deltaT 0.001;
|
||||
|
||||
writeControl timeStep;
|
||||
|
||||
writeInterval 10;
|
||||
|
||||
purgeWrite 0;
|
||||
|
||||
writeFormat binary;
|
||||
|
||||
writePrecision 6;
|
||||
|
||||
writeCompression off;
|
||||
|
||||
timeFormat general;
|
||||
|
||||
timePrecision 6;
|
||||
|
||||
runTimeModifiable true;
|
||||
|
||||
functions
|
||||
{
|
||||
energySpectrum1
|
||||
{
|
||||
type energySpectrum;
|
||||
libs ("librandomProcessesFunctionObjects.so");
|
||||
writeControl writeTime;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,28 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
note "mesh decomposition control dictionary";
|
||||
object decomposeParDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
numberOfSubdomains 8;
|
||||
|
||||
method simple;
|
||||
|
||||
simpleCoeffs
|
||||
{
|
||||
n (2 2 2);
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,61 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object fvSchemes;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
ddtSchemes
|
||||
{
|
||||
default backward;
|
||||
}
|
||||
|
||||
gradSchemes
|
||||
{
|
||||
default Gauss linear;
|
||||
}
|
||||
|
||||
divSchemes
|
||||
{
|
||||
default none;
|
||||
div(phi,U) Gauss linear;
|
||||
div(phi,k) Gauss limitedLinear 1;
|
||||
div(phi,B) Gauss limitedLinear 1;
|
||||
div(B) Gauss linear;
|
||||
div(U) Gauss linear;
|
||||
div(phi,nuTilda) Gauss limitedLinear 1;
|
||||
div((nuEff*dev2(T(grad(U))))) Gauss linear;
|
||||
}
|
||||
|
||||
laplacianSchemes
|
||||
{
|
||||
default Gauss linear corrected;
|
||||
}
|
||||
|
||||
interpolationSchemes
|
||||
{
|
||||
default linear;
|
||||
}
|
||||
|
||||
snGradSchemes
|
||||
{
|
||||
default corrected;
|
||||
}
|
||||
|
||||
wallDist
|
||||
{
|
||||
method meshWave;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,63 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object fvSolution;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
solvers
|
||||
{
|
||||
p
|
||||
{
|
||||
solver GAMG;
|
||||
tolerance 0;
|
||||
relTol 0.1;
|
||||
smoother GaussSeidel;
|
||||
}
|
||||
|
||||
pFinal
|
||||
{
|
||||
$p;
|
||||
smoother DICGaussSeidel;
|
||||
tolerance 1e-06;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
"(U|k|nuTilda)"
|
||||
{
|
||||
solver smoothSolver;
|
||||
smoother symGaussSeidel;
|
||||
tolerance 1e-05;
|
||||
relTol 0.1;
|
||||
minIter 1;
|
||||
}
|
||||
|
||||
"(U|k|nuTilda)Final"
|
||||
{
|
||||
$U;
|
||||
tolerance 1e-05;
|
||||
relTol 0;
|
||||
}
|
||||
}
|
||||
|
||||
PIMPLE
|
||||
{
|
||||
nOuterCorrectors 1;
|
||||
nCorrectors 2;
|
||||
nNonOrthogonalCorrectors 0;
|
||||
pRefCell 0;
|
||||
pRefValue 0;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,18 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
AMIWeights
|
||||
{
|
||||
type AMIWeights;
|
||||
libs ("libfieldFunctionObjects.so");
|
||||
writeControl writeTime;
|
||||
writeFields no;
|
||||
// writeFields yes;
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -57,6 +57,7 @@ functions
|
||||
#includeFunc Q
|
||||
#include "surfaces"
|
||||
#include "forces"
|
||||
#include "AMIWeights"
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -51,7 +51,7 @@ subset
|
||||
{
|
||||
dome
|
||||
{
|
||||
action add;
|
||||
action use;
|
||||
source sphere;
|
||||
origin (125 100 0);
|
||||
radius 100;
|
||||
|
||||
@ -22,7 +22,7 @@ vtkWrite
|
||||
{
|
||||
inletRegion
|
||||
{
|
||||
action add;
|
||||
action use;
|
||||
source zone;
|
||||
zones (leftFluid);
|
||||
}
|
||||
|
||||
49
tutorials/multiphase/interIsoFoam/iobasin/0.orig/U
Normal file
49
tutorials/multiphase/interIsoFoam/iobasin/0.orig/U
Normal file
@ -0,0 +1,49 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volVectorField;
|
||||
object U;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 1 -1 0 0 0 0];
|
||||
|
||||
internalField uniform (0.1 0 0);
|
||||
|
||||
boundaryField
|
||||
{
|
||||
inlet
|
||||
{
|
||||
type flowRateInletVelocity;
|
||||
volumetricFlowRate constant 0.1;
|
||||
}
|
||||
|
||||
walls
|
||||
{
|
||||
type slip;
|
||||
}
|
||||
|
||||
outlet
|
||||
{
|
||||
type flowRateOutletVelocity;
|
||||
volumetricFlowRate constant 0.1;
|
||||
}
|
||||
|
||||
atmosphere
|
||||
{
|
||||
type pressureInletOutletVelocity;
|
||||
value uniform (0 0 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
48
tutorials/multiphase/interIsoFoam/iobasin/0.orig/alpha.water
Normal file
48
tutorials/multiphase/interIsoFoam/iobasin/0.orig/alpha.water
Normal file
@ -0,0 +1,48 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
object alpha.water;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 0 0 0 0 0 0];
|
||||
|
||||
internalField uniform 0;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
inlet
|
||||
{
|
||||
type fixedValue;
|
||||
value uniform 1;
|
||||
}
|
||||
|
||||
walls
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
|
||||
outlet
|
||||
{
|
||||
type zeroGradient;
|
||||
value uniform 0;
|
||||
}
|
||||
|
||||
atmosphere
|
||||
{
|
||||
type inletOutlet;
|
||||
inletValue uniform 0;
|
||||
value uniform 0;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
47
tutorials/multiphase/interIsoFoam/iobasin/0.orig/p_rgh
Normal file
47
tutorials/multiphase/interIsoFoam/iobasin/0.orig/p_rgh
Normal file
@ -0,0 +1,47 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
object p_rgh;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [1 -1 -2 0 0 0 0];
|
||||
|
||||
internalField uniform 0;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
inlet
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
|
||||
walls
|
||||
{
|
||||
type fixedFluxPressure;
|
||||
value uniform 0;
|
||||
}
|
||||
|
||||
outlet
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
|
||||
atmosphere
|
||||
{
|
||||
type totalPressure;
|
||||
p0 uniform 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
7
tutorials/multiphase/interIsoFoam/iobasin/Allclean
Executable file
7
tutorials/multiphase/interIsoFoam/iobasin/Allclean
Executable file
@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
cd ${0%/*} || exit 1 # Run from this directory
|
||||
. $WM_PROJECT_DIR/bin/tools/CleanFunctions # Tutorial clean functions
|
||||
|
||||
cleanCase0
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
12
tutorials/multiphase/interIsoFoam/iobasin/Allrun
Executable file
12
tutorials/multiphase/interIsoFoam/iobasin/Allrun
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
cd ${0%/*} || exit 1 # Run from this directory
|
||||
. $WM_PROJECT_DIR/bin/tools/RunFunctions # Tutorial run functions
|
||||
|
||||
restore0Dir
|
||||
runApplication blockMesh
|
||||
runApplication createPatch -overwrite
|
||||
runApplication setFields
|
||||
runApplication decomposePar
|
||||
runParallel $(getApplication)
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
21
tutorials/multiphase/interIsoFoam/iobasin/constant/g
Normal file
21
tutorials/multiphase/interIsoFoam/iobasin/constant/g
Normal file
@ -0,0 +1,21 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class uniformDimensionedVectorField;
|
||||
location "constant";
|
||||
object g;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 1 -2 0 0 0 0];
|
||||
value (0 0 -9.81);
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,37 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object transportProperties;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
phases (water air);
|
||||
|
||||
water
|
||||
{
|
||||
transportModel Newtonian;
|
||||
nu 1e-06;
|
||||
rho 1000;
|
||||
}
|
||||
|
||||
air
|
||||
{
|
||||
transportModel Newtonian;
|
||||
nu 1.48e-05;
|
||||
rho 1;
|
||||
}
|
||||
|
||||
sigma 0.07;
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,20 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object turbulenceProperties;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
simulationType laminar;
|
||||
|
||||
// ************************************************************************* //
|
||||
179
tutorials/multiphase/interIsoFoam/iobasin/system/blockMeshDict
Normal file
179
tutorials/multiphase/interIsoFoam/iobasin/system/blockMeshDict
Normal file
@ -0,0 +1,179 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*/
|
||||
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
object blockMeshDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
scale 1;
|
||||
|
||||
// Basin
|
||||
x0 0;
|
||||
x1 1;
|
||||
y0 0;
|
||||
y1 1;
|
||||
z0 0;
|
||||
z1 1;
|
||||
|
||||
// Inlet
|
||||
x2 -0.3;
|
||||
x3 0;
|
||||
y2 0.35;
|
||||
y3 0.65;
|
||||
z2 0.6;
|
||||
z3 0.9;
|
||||
|
||||
// Outlet
|
||||
x4 1;
|
||||
x5 1.3;
|
||||
y4 0.35;
|
||||
y5 0.65;
|
||||
z4 0.1;
|
||||
z5 0.4;
|
||||
|
||||
|
||||
vertices
|
||||
(
|
||||
// Basin
|
||||
($x0 $y0 $z0)
|
||||
($x1 $y0 $z0)
|
||||
($x1 $y1 $z0)
|
||||
($x0 $y1 $z0)
|
||||
($x0 $y0 $z1)
|
||||
($x1 $y0 $z1)
|
||||
($x1 $y1 $z1)
|
||||
($x0 $y1 $z1)
|
||||
|
||||
// Inlet
|
||||
($x2 $y2 $z2)
|
||||
($x3 $y2 $z2)
|
||||
($x3 $y3 $z2)
|
||||
($x2 $y3 $z2)
|
||||
($x2 $y2 $z3)
|
||||
($x3 $y2 $z3)
|
||||
($x3 $y3 $z3)
|
||||
($x2 $y3 $z3)
|
||||
|
||||
// Outlet
|
||||
($x4 $y4 $z4)
|
||||
($x5 $y4 $z4)
|
||||
($x5 $y5 $z4)
|
||||
($x4 $y5 $z4)
|
||||
($x4 $y4 $z5)
|
||||
($x5 $y4 $z5)
|
||||
($x5 $y5 $z5)
|
||||
($x4 $y5 $z5)
|
||||
);
|
||||
|
||||
blocks
|
||||
(
|
||||
hex (0 1 2 3 4 5 6 7) (40 40 40) simpleGrading (1 1 1)
|
||||
hex (8 9 10 11 12 13 14 15) (12 12 12) simpleGrading (1 1 1)
|
||||
hex (16 17 18 19 20 21 22 23) (12 12 12) simpleGrading (1 1 1)
|
||||
);
|
||||
|
||||
boundary
|
||||
(
|
||||
inlet
|
||||
{
|
||||
type patch;
|
||||
faces
|
||||
(
|
||||
(8 12 15 11)
|
||||
);
|
||||
}
|
||||
|
||||
outlet
|
||||
{
|
||||
type patch;
|
||||
faces
|
||||
(
|
||||
(17 18 22 21)
|
||||
);
|
||||
}
|
||||
|
||||
walls
|
||||
{
|
||||
type patch;
|
||||
faces
|
||||
(
|
||||
// Basin
|
||||
(0 3 2 1)
|
||||
(0 1 5 4)
|
||||
(2 3 7 6)
|
||||
|
||||
// Inlet
|
||||
(8 11 10 9)
|
||||
(8 9 13 12)
|
||||
(10 11 15 14)
|
||||
(12 13 14 15)
|
||||
|
||||
// Outlet
|
||||
(16 19 18 17)
|
||||
(16 17 21 20)
|
||||
(18 19 23 22)
|
||||
(20 21 22 23)
|
||||
);
|
||||
}
|
||||
|
||||
atmosphere
|
||||
{
|
||||
type patch;
|
||||
faces
|
||||
(
|
||||
(4 5 6 7)
|
||||
);
|
||||
}
|
||||
|
||||
inletRightPatch
|
||||
{
|
||||
type patch;
|
||||
faces
|
||||
(
|
||||
(9 10 14 13)
|
||||
);
|
||||
}
|
||||
|
||||
basinLeftPatch
|
||||
{
|
||||
type patch;
|
||||
faces
|
||||
(
|
||||
(0 4 7 3)
|
||||
);
|
||||
}
|
||||
|
||||
outletLeftPatch
|
||||
{
|
||||
type patch;
|
||||
faces
|
||||
(
|
||||
(16 20 23 19)
|
||||
);
|
||||
}
|
||||
|
||||
basinRightPatch
|
||||
{
|
||||
type patch;
|
||||
faces
|
||||
(
|
||||
(1 2 6 5)
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
edges
|
||||
(
|
||||
);
|
||||
|
||||
mergePatchPairs
|
||||
(
|
||||
(inletRightPatch basinLeftPatch)
|
||||
(outletLeftPatch basinRightPatch)
|
||||
);
|
||||
|
||||
// ************************************************************************* //
|
||||
100
tutorials/multiphase/interIsoFoam/iobasin/system/controlDict
Normal file
100
tutorials/multiphase/interIsoFoam/iobasin/system/controlDict
Normal file
@ -0,0 +1,100 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object controlDict;
|
||||
}
|
||||
|
||||
application interIsoFoam;
|
||||
|
||||
startFrom latestTime;
|
||||
|
||||
startTime 0;
|
||||
|
||||
stopAt endTime;
|
||||
|
||||
endTime 3;
|
||||
|
||||
deltaT 0.005;
|
||||
//deltaT 0.001;
|
||||
|
||||
writeControl adjustableRunTime;
|
||||
|
||||
writeInterval 0.01;
|
||||
|
||||
purgeWrite 0;
|
||||
|
||||
writeFormat binary;
|
||||
|
||||
writePrecision 8;
|
||||
|
||||
writeCompression off;
|
||||
|
||||
timeFormat general;
|
||||
|
||||
timePrecision 6;
|
||||
|
||||
runTimeModifiable yes;
|
||||
|
||||
adjustTimeStep yes;
|
||||
|
||||
maxCo 0.8;
|
||||
|
||||
maxAlphaCo 0.8;
|
||||
|
||||
maxDeltaT 1;
|
||||
|
||||
|
||||
functions
|
||||
{
|
||||
inletFlux
|
||||
{
|
||||
type surfaceFieldValue;
|
||||
libs ( "libfieldFunctionObjects.so" );
|
||||
writeControl timeStep;
|
||||
log true;
|
||||
writeFields false;
|
||||
regionType patch;
|
||||
name inlet;
|
||||
operation sum;
|
||||
fields ( rhoPhi );
|
||||
}
|
||||
|
||||
outletFlux
|
||||
{
|
||||
type surfaceFieldValue;
|
||||
libs ( "libfieldFunctionObjects.so" );
|
||||
writeControl timeStep;
|
||||
log true;
|
||||
writeFields false;
|
||||
regionType patch;
|
||||
name outlet;
|
||||
operation sum;
|
||||
fields ( rhoPhi );
|
||||
}
|
||||
|
||||
atmosphereFlux
|
||||
{
|
||||
type surfaceFieldValue;
|
||||
libs ( "libfieldFunctionObjects.so" );
|
||||
writeControl timeStep;
|
||||
log true;
|
||||
writeFields false;
|
||||
regionType patch;
|
||||
name atmosphere;
|
||||
operation sum;
|
||||
fields ( rhoPhi );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,84 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
object createPatchDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
pointSync false;
|
||||
|
||||
// Patches to create.
|
||||
patches
|
||||
(
|
||||
{
|
||||
// Name of new patch
|
||||
name walls;
|
||||
|
||||
// Dictionary to construct new patch from
|
||||
patchInfo
|
||||
{
|
||||
type patch;
|
||||
}
|
||||
|
||||
// How to construct: either from 'patches' or 'set'
|
||||
constructFrom patches;
|
||||
|
||||
// If constructFrom = patches : names of patches. Wildcards allowed.
|
||||
patches (walls basinLeftPatch basinRightPatch);
|
||||
|
||||
// If constructFrom = set : name of faceSet
|
||||
set f0;
|
||||
}
|
||||
/*
|
||||
{
|
||||
// Name of new patch
|
||||
name walls;
|
||||
|
||||
// Dictionary to construct new patch from
|
||||
patchInfo
|
||||
{
|
||||
type wall;
|
||||
}
|
||||
|
||||
// How to construct: either from 'patches' or 'set'
|
||||
constructFrom patches;
|
||||
|
||||
// If constructFrom = patches : names of patches. Wildcards allowed.
|
||||
patches (originalPatch);
|
||||
|
||||
// If constructFrom = set : name of faceSet
|
||||
set f0;
|
||||
}
|
||||
|
||||
{
|
||||
// Name of new patch
|
||||
name frontAndBack;
|
||||
|
||||
// Dictionary to construct new patch from
|
||||
patchInfo
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
|
||||
// How to construct: either from 'patches' or 'set'
|
||||
constructFrom patches;
|
||||
|
||||
// If constructFrom = patches : names of patches. Wildcards allowed.
|
||||
patches (sides);
|
||||
|
||||
// If constructFrom = set : name of faceSet
|
||||
set f0;
|
||||
}
|
||||
*/
|
||||
);
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,28 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
note "mesh decomposition control dictionary";
|
||||
object decomposeParDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
numberOfSubdomains 8;
|
||||
|
||||
method simple;
|
||||
|
||||
simpleCoeffs
|
||||
{
|
||||
n (2 2 2);
|
||||
delta 0.001;
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
64
tutorials/multiphase/interIsoFoam/iobasin/system/fvSchemes
Normal file
64
tutorials/multiphase/interIsoFoam/iobasin/system/fvSchemes
Normal file
@ -0,0 +1,64 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object fvSchemes;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
ddtSchemes
|
||||
{
|
||||
default Euler;
|
||||
}
|
||||
|
||||
gradSchemes
|
||||
{
|
||||
default Gauss linear;
|
||||
}
|
||||
|
||||
divSchemes
|
||||
{
|
||||
default none;
|
||||
div(rhoPhi,U) Gauss limitedLinearV 1;
|
||||
div(phi,alpha) Gauss vanLeer;
|
||||
div(phirb,alpha) Gauss linear;
|
||||
|
||||
"div\(phi,(k|omega)\)" Gauss upwind;
|
||||
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
|
||||
|
||||
div(phi,s) Gauss vanLeer;
|
||||
div(phirb,s) Gauss linear;
|
||||
}
|
||||
|
||||
laplacianSchemes
|
||||
{
|
||||
default Gauss linear corrected;
|
||||
}
|
||||
|
||||
interpolationSchemes
|
||||
{
|
||||
default linear;
|
||||
}
|
||||
|
||||
snGradSchemes
|
||||
{
|
||||
default corrected;
|
||||
}
|
||||
|
||||
/*
|
||||
wallDist
|
||||
{
|
||||
method meshWave;
|
||||
}
|
||||
*/
|
||||
|
||||
// ************************************************************************* //
|
||||
89
tutorials/multiphase/interIsoFoam/iobasin/system/fvSolution
Normal file
89
tutorials/multiphase/interIsoFoam/iobasin/system/fvSolution
Normal file
@ -0,0 +1,89 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object fvSolution;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
solvers
|
||||
{
|
||||
"alpha.water.*"
|
||||
{
|
||||
nAlphaSubCycles 1;
|
||||
cAlpha 1;
|
||||
}
|
||||
|
||||
"pcorr.*"
|
||||
{
|
||||
solver PCG;
|
||||
preconditioner
|
||||
{
|
||||
preconditioner GAMG;
|
||||
tolerance 1e-5;
|
||||
relTol 0;
|
||||
smoother GaussSeidel;
|
||||
}
|
||||
tolerance 1e-5;
|
||||
relTol 0;
|
||||
maxIter 50;
|
||||
}
|
||||
|
||||
p_rgh
|
||||
{
|
||||
solver GAMG;
|
||||
tolerance 5e-9;
|
||||
relTol 0.01;
|
||||
|
||||
smoother GaussSeidel;
|
||||
|
||||
|
||||
|
||||
maxIter 50;
|
||||
};
|
||||
|
||||
p_rghFinal
|
||||
{
|
||||
$p_rgh;
|
||||
tolerance 5e-9;
|
||||
relTol 0;
|
||||
}
|
||||
|
||||
"(U|k|omega|s).*"
|
||||
{
|
||||
solver smoothSolver;
|
||||
smoother symGaussSeidel;
|
||||
nSweeps 1;
|
||||
tolerance 1e-6;
|
||||
relTol 0.1;
|
||||
};
|
||||
}
|
||||
|
||||
PIMPLE
|
||||
{
|
||||
momentumPredictor no;
|
||||
nCorrectors 2;
|
||||
nNonOrthogonalCorrectors 0;
|
||||
pRefCell 0;
|
||||
pRefValue 0;
|
||||
}
|
||||
|
||||
relaxationFactors
|
||||
{
|
||||
equations
|
||||
{
|
||||
".*" 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,46 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object setFieldsDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
defaultFieldValues
|
||||
(
|
||||
volScalarFieldValue alpha.water 0
|
||||
);
|
||||
|
||||
regions
|
||||
(
|
||||
boxToCell
|
||||
{
|
||||
box (-1e10 -1e10 -1e10) (1e10 1e10 0.45);
|
||||
fieldValues
|
||||
(
|
||||
volScalarFieldValue alpha.water 1
|
||||
);
|
||||
}
|
||||
|
||||
boxToCell
|
||||
{
|
||||
box (-1e10 -1e10 -1e10) (-.2 1e10 1e10);
|
||||
fieldValues
|
||||
(
|
||||
volScalarFieldValue alpha.water 1
|
||||
);
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,54 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volVectorField;
|
||||
location "0";
|
||||
object U;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 1 -1 0 0 0 0];
|
||||
|
||||
internalField uniform (0 0 0);
|
||||
|
||||
boundaryField
|
||||
{
|
||||
inlet
|
||||
{
|
||||
type waveVelocity;
|
||||
value uniform (0 0 0);
|
||||
}
|
||||
|
||||
outlet
|
||||
{
|
||||
type waveVelocity;
|
||||
value uniform (0 0 0);
|
||||
}
|
||||
|
||||
sides
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
|
||||
ground
|
||||
{
|
||||
type fixedValue;
|
||||
value uniform (0 0 0);
|
||||
}
|
||||
|
||||
top
|
||||
{
|
||||
type pressureInletOutletVelocity;
|
||||
value uniform (0 0 0);
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,52 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
object alpha.water;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 0 0 0 0 0 0];
|
||||
|
||||
internalField uniform 0;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
inlet
|
||||
{
|
||||
type waveAlpha;
|
||||
value uniform 0;
|
||||
}
|
||||
|
||||
outlet
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
|
||||
ground
|
||||
{
|
||||
type zeroGradient;
|
||||
}
|
||||
|
||||
sides
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
|
||||
top
|
||||
{
|
||||
type inletOutlet;
|
||||
inletValue uniform 0;
|
||||
value uniform 0;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,54 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: v1806 |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
object p_rgh;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [1 -1 -2 0 0 0 0];
|
||||
|
||||
internalField uniform 0;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
inlet
|
||||
{
|
||||
type fixedFluxPressure;
|
||||
value uniform 0;
|
||||
}
|
||||
|
||||
outlet
|
||||
{
|
||||
type fixedFluxPressure;
|
||||
value uniform 0;
|
||||
}
|
||||
|
||||
ground
|
||||
{
|
||||
type fixedFluxPressure;
|
||||
value uniform 0;
|
||||
}
|
||||
|
||||
sides
|
||||
{
|
||||
type empty;
|
||||
}
|
||||
|
||||
top
|
||||
{
|
||||
type totalPressure;
|
||||
p0 uniform 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
7
tutorials/multiphase/interIsoFoam/waveExampleStreamFunction/Allclean
Executable file
7
tutorials/multiphase/interIsoFoam/waveExampleStreamFunction/Allclean
Executable file
@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
cd ${0%/*} || exit 1 # Run from this directory
|
||||
. $WM_PROJECT_DIR/bin/tools/CleanFunctions # Tutorial clean functions
|
||||
|
||||
cleanCase0
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
15
tutorials/multiphase/interIsoFoam/waveExampleStreamFunction/Allrun
Executable file
15
tutorials/multiphase/interIsoFoam/waveExampleStreamFunction/Allrun
Executable file
@ -0,0 +1,15 @@
|
||||
#!/bin/sh
|
||||
cd ${0%/*} || exit 1 # Run from this directory
|
||||
. $WM_PROJECT_DIR/bin/tools/RunFunctions # Tutorial run functions
|
||||
|
||||
restore0Dir
|
||||
|
||||
runApplication blockMesh
|
||||
|
||||
runApplication decomposePar
|
||||
|
||||
runParallel setFields
|
||||
|
||||
runParallel $(getApplication)
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user