ENH: add new FO Streaming-Total Dynamic Mode Decomposition (STDMD)

STDMD (i.e. Streaming Total Dynamic Mode Decomposition) is a variant of
    a data-driven dimensionality reduction method.

    STDMD is being used as a mathematical post-processing tool to compute
    a set of dominant modes out of a given flow (or dataset) each of which is
    associated with a constant frequency and decay rate, so that dynamic
    features of a given flow may become interpretable, and tractable.
    Among other Dynamic Mode Decomposition (DMD) variants, STDMD is presumed
    to provide the general DMD method capabilities alongside economised and
    feasible memory and CPU usage.

    Please refer to the header file documentation for further details.

  ENH: add new STDMD tutorial, pimpleFoam/laminar/cylinder2D
This commit is contained in:
Kutalmis Bercin
2020-03-05 11:37:45 +00:00
committed by Andrew Heather
parent ef9ee7a8b1
commit 730233cd15
22 changed files with 3176 additions and 0 deletions

View File

@ -0,0 +1,51 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: 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.012984 0 0);
boundaryField
{
inlet
{
type fixedValue;
value $internalField;
}
outlet
{
type zeroGradient;
}
topAndBottom
{
type symmetry;
}
"left|right"
{
type empty;
}
cylinder
{
type noSlip;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,51 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0;
boundaryField
{
inlet
{
type zeroGradient;
}
outlet
{
type fixedValue;
value $internalField;
}
topAndBottom
{
type symmetry;
}
"left|right"
{
type empty;
}
cylinder
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,12 @@
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions
#------------------------------------------------------------------------------
cleanCase0
rm -rf dynamicCode
rm -rf constant/coarseMesh
rm -f system/coarseMesh/decomposeParDict
#------------------------------------------------------------------------------

View File

@ -0,0 +1,25 @@
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions
#------------------------------------------------------------------------------
./Allrun.pre
runApplication decomposePar
runParallel renumberMesh -overwrite
cp -f system/decomposeParDict system/coarseMesh
runApplication -s coarseMesh decomposePar -region coarseMesh
runParallel -s coarseMesh renumberMesh -overwrite -region coarseMesh
runParallel $(getApplication)
runParallel -s main redistributePar -reconstruct -latestTime
runParallel -s coarseMesh redistributePar -reconstruct \
-region coarseMesh -time '50,100,200'
#------------------------------------------------------------------------------

View File

@ -0,0 +1,20 @@
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions
#------------------------------------------------------------------------------
runApplication -s coarseMesh blockMesh -dict system/blockMeshDict.coarse
runApplication snappyHexMesh -overwrite
mkdir -p constant/coarseMesh
mv -f constant/polyMesh constant/coarseMesh
runApplication -s main blockMesh -dict system/blockMeshDict.main
runApplication mirrorMesh -overwrite
restore0Dir
#------------------------------------------------------------------------------

View File

@ -0,0 +1,23 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
transportModel Newtonian;
nu 1.558e-5;
// ************************************************************************* //

View File

@ -0,0 +1,21 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object turbulenceProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType laminar;
// ************************************************************************* //

View File

@ -0,0 +1,74 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
scale 1;
x0 -0.16;
x1 0.8;
y0 -0.24;
y1 0.24;
z0 -0.00375;
z1 0.00375;
nx 90;
ny 60;
nz 1;
vertices
(
($x0 $y0 $z0)
($x1 $y0 $z0)
($x1 $y1 $z0)
($x0 $y1 $z0)
($x0 $y0 $z1)
($x1 $y0 $z1)
($x1 $y1 $z1)
($x0 $y1 $z1)
);
blocks
(
hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 1 1)
);
edges
(
);
boundary
(
allPatches
{
type empty;
inGroups (allPatches);
faces
(
(3 7 6 2)
(1 5 4 0)
(0 4 7 3)
(2 6 5 1)
(0 3 2 1)
(4 5 6 7)
);
}
);
mergePatchPairs
(
);
// ************************************************************************* //

View File

@ -0,0 +1,277 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
scale 1;
R 0.06; // Cylinder radius
x0 #eval{ 0.5*$R };
x2 #eval{ 2.38732*$R };
x3 #eval{ 10.0*$R };
xOutlet #eval{ 18.6667*$R };
xInlet #eval{ -10.125*$R };
RsinPi8 #eval{ $R*sin(0.125*pi()) };
RsinPi8n #eval{ -$RsinPi8 };
RcosPi8 #eval{ $R*cos(0.125*pi()) };
RcosPi8n #eval{ -$RcosPi8 };
RsinPi4 #eval{ $R*sin(0.25*pi()) };
x2sinPi8 #eval{ $x2*sin(0.125*pi()) };
x2sinPi8n #eval{ -$x2sinPi8 };
x2cosPi8 #eval{ $x2*cos(0.125*pi()) };
x2cosPi8n #eval{ -$x2cosPi8 };
x2sinPi4 #eval{ $x2*sin(0.25*pi()) };
z0 -0.0075;
z1 0.0075;
nz 1;
vertices #codeStream
{
codeInclude
#{
#include "pointField.H"
#};
code
#{
pointField points(19);
points[0] = point($R, 0, $z0);
points[1] = point($x2, 0, $z0);
points[2] = point($x3, 0, $z0);
points[3] = point($x3, $x2sinPi4, $z0);
points[4] = point($x2sinPi4, $x2sinPi4, $z0);
points[5] = point($RsinPi4, $RsinPi4, $z0);
points[6] = point($x3, $x3, $z0);
points[7] = point($x2sinPi4, $x3, $z0);
// Mirror +x points to -x side
points[11] = point(-points[0].x(), points[0].y(), points[0].z());
points[12] = point(-points[1].x(), points[1].y(), points[1].z());
points[13] = point(-points[2].x(), points[2].y(), points[2].z());
points[14] = point(-points[3].x(), points[3].y(), points[3].z());
points[15] = point(-points[4].x(), points[4].y(), points[4].z());
points[16] = point(-points[5].x(), points[5].y(), points[5].z());
points[17] = point(-points[6].x(), points[6].y(), points[6].z());
points[18] = point(-points[7].x(), points[7].y(), points[7].z());
// Points on the y-z-plane
points[8] = point(0, $x3, $z0);
points[9] = point(0, $x2, $z0);
points[10] = point(0, $R, $z0);
// Mirror -z points to +z side
label sz = points.size();
points.setSize(2*sz);
for (label i = 0; i < sz; ++i)
{
const point& pt = points[i];
points[i + sz] = point(pt.x(), pt.y(), $z1);
}
// Add an inner cylinder
sz = points.size();
label nAdd = 6;
points.setSize(sz + nAdd);
// Points within the inner cylinder
points[sz] = point(0, 0, $z0);
points[sz + 1] = point(0, $x0, $z0);
points[sz + 2] = point($x0, $x0, $z0);
points[sz + 3] = point($x0, 0, $z0);
// Mirror points from +x side to -x side
points[sz + 4] =
point(-points[sz + 2].x(), points[sz + 2].y(), points[sz + 2].z());
points[sz + 5] =
point(-points[sz + 3].x(), points[sz + 3].y(), points[sz + 3].z());
// Mirror -z points to +z side
sz = points.size();
points.setSize(sz + nAdd);
for (label i = 0; i < nAdd; ++i)
{
const point& pt = points[i+sz-nAdd];
points[i+sz] = point(pt.x(), pt.y(), $z1);
}
// Add downstream and upstream blocks
sz = points.size();
nAdd = 6;
points.setSize(sz + nAdd);
// Points on outlet
points[sz] = point($xOutlet, 0, $z0);
points[sz + 1] = point($xOutlet, $x3, $z0);
points[sz + 4] = point($xOutlet, $x2sinPi4, $z0);
// Points on inlet
points[sz + 2] = point($xInlet, 0, $z0);
points[sz + 3] = point($xInlet, $x3, $z0);
points[sz + 5] = point($xInlet, $x2sinPi4, $z0);
// Mirror -z points to +z side
sz = points.size();
points.setSize(sz + nAdd);
for (label i = 0; i < nAdd; ++i)
{
const point& pt = points[i + sz - nAdd];
points[i + sz] = point(pt.x(), pt.y(), $z1);
}
os << points;
#};
};
blocks
(
hex ( 5 4 9 10 24 23 28 29) (16 15 $nz) simpleGrading (1.6 1 1)
hex ( 0 1 4 5 19 20 23 24) (16 15 $nz) simpleGrading (1.6 1 1)
hex ( 1 2 3 4 20 21 22 23) (61 15 $nz) simpleGrading (1 1 1)
hex ( 4 3 6 7 23 22 25 26) (61 61 $nz) simpleGrading (1 1 1)
hex ( 9 4 7 8 28 23 26 27) (15 61 $nz) simpleGrading (1 1 1)
hex (15 16 10 9 34 35 29 28) (16 15 $nz) simpleGrading (0.625 1 1)
hex (12 11 16 15 31 30 35 34) (16 15 $nz) simpleGrading (0.625 1 1)
hex (13 12 15 14 32 31 34 33) (61 15 $nz) simpleGrading (1 1 1)
hex (14 15 18 17 33 34 37 36) (61 61 $nz) simpleGrading (1 1 1)
hex (15 9 8 18 34 28 27 37) (15 61 $nz) simpleGrading (1 1 1)
hex (2 50 54 3 21 56 60 22) (69 15 $nz) simpleGrading (1 1 1) // downstream
hex (3 54 51 6 22 60 57 25) (69 61 $nz) simpleGrading (1 1 1)
hex (52 13 14 55 58 32 33 61) (1 15 $nz) simpleGrading (1 1 1) // upstream
hex (55 14 17 53 61 33 36 59) (1 61 $nz) simpleGrading (1 1 1)
);
edges
(
arc 0 5 ($RcosPi8 $RsinPi8 $z0)
arc 5 10 ($RsinPi8 $RcosPi8 $z0)
arc 1 4 ($x2cosPi8 $x2sinPi8 $z0)
arc 4 9 ($x2sinPi8 $x2cosPi8 $z0)
arc 19 24 ($RcosPi8 $RsinPi8 $z1)
arc 24 29 ($RsinPi8 $RcosPi8 $z1)
arc 20 23 ($x2cosPi8 $x2sinPi8 $z1)
arc 23 28 ($x2sinPi8 $x2cosPi8 $z1)
arc 11 16 ($RcosPi8n $RsinPi8 $z0)
arc 16 10 ($RsinPi8n $RcosPi8 $z0)
arc 12 15 ($x2cosPi8n $x2sinPi8 $z0)
arc 15 9 ($x2sinPi8n $x2cosPi8 $z0)
arc 30 35 ($RcosPi8n $RsinPi8 $z1)
arc 35 29 ($RsinPi8n $RcosPi8 $z1)
arc 31 34 ($x2cosPi8n $x2sinPi8 $z1)
arc 34 28 ($x2sinPi8n $x2cosPi8 $z1)
);
boundary
(
inlet
{
type patch;
faces
(
(53 59 61 55)
(55 61 58 52)
);
}
outlet
{
type patch;
faces
(
(60 57 51 54)
(56 60 54 50)
);
}
topAndBottom
{
type symmetry;
faces
(
(59 53 17 36)
(36 17 18 37)
(37 18 8 27)
(27 8 7 26)
(26 7 6 25)
(25 6 51 57)
(52 58 32 13)
(13 32 31 12)
(12 31 30 11)
(0 19 20 1)
(1 20 21 2)
(2 21 56 50)
);
}
left
{
type empty;
faces
(
(55 52 13 14)
(53 55 14 17)
(13 12 15 14)
(14 15 18 17)
(15 9 8 18)
(12 11 16 15)
(15 16 10 9)
(9 10 5 4)
(5 0 1 4)
(9 4 7 8)
(4 3 6 7)
(1 2 3 4)
(3 2 50 54)
(6 3 54 51)
);
}
right
{
type empty;
faces
(
(59 36 33 61)
(61 33 32 58)
(36 37 34 33)
(33 34 31 32)
(37 27 28 34)
(27 26 23 28)
(26 25 22 23)
(23 22 21 20)
(25 57 60 22)
(22 60 56 21)
(24 23 20 19)
(28 23 24 29)
(34 28 29 35)
(31 34 35 30)
);
}
cylinder
{
type wall;
faces
(
(29 24 5 10)
(24 19 0 5)
(30 35 16 11)
(35 29 10 16)
);
}
);
mergePatchPairs
();
// ************************************************************************* //

View File

@ -0,0 +1,47 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
}
gradSchemes
{
}
divSchemes
{
}
laplacianSchemes
{
}
interpolationSchemes
{
}
snGradSchemes
{
}
fluxRequired
{
}
// ************************************************************************* //

View File

@ -0,0 +1,27 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
}
PIMPLE
{
}
// ************************************************************************* //

View File

@ -0,0 +1,229 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application pimpleFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 200;
deltaT 0.05;
writeControl runTime;
writeInterval 50;
purgeWrite 0;
writeFormat ascii;
writePrecision 16;
timeFormat general;
timePrecision 8;
runTimeModifiable false;
functions
{
mapFields1
{
type mapFields;
libs (fieldFunctionObjects);
mapRegion coarseMesh;
mapMethod cellVolumeWeight;
consistent no;
patchMap ();
cuttingPatches ();
fields ( U p );
timeStart 10;
timeEnd 2000;
executeControl timeStep;
executeInterval 10;
writeControl timeStep;
writeInterval 50;
}
STDMD1U
{
// Mandatory entries
type STDMD;
libs (fieldFunctionObjects);
field U;
// Optional entries
modeSorter firstSnap;
// Optional (inherited) entries
region coarseMesh; // mapFields must be executed before.
timeStart 10;
executeControl timeStep;
executeInterval 10;
writeControl onEnd;
}
STDMD1p
{
// Mandatory entries
type STDMD;
libs (fieldFunctionObjects);
field p;
// Optional entries
modeSorter firstSnap;
// Optional (inherited) entries
region coarseMesh;
timeStart 10;
executeControl timeStep;
executeInterval 10;
writeControl onEnd;
}
STDMD2U
{
// Mandatory entries
type STDMD;
libs (fieldFunctionObjects);
field U;
// Optional entries
modeSorter firstSnap;
nModes 2;
maxRank 2;
nGramSchmidt 5;
fMin 0;
fMax 1000000000;
testEigen true;
dumpEigen true;
minBasis 0.00000001;
minEVal 0.00000001;
absTol 0.001;
relTol 0.0001;
// Optional (inherited) entries
timeStart 50;
timeEnd 2000;
executeControl timeStep;
executeInterval 10;
writeControl onEnd;
}
STDMD3U
{
// Mandatory entries
type STDMD;
libs (fieldFunctionObjects);
field U;
// Optional entries
modeSorter firstSnap;
// Optional (inherited) entries
region coarseMesh;
timeStart 10;
timeEnd 150;
executeControl timeStep;
executeInterval 10;
writeControl runTime;
writeInterval 50;
}
STDMD4U
{
// Mandatory entries
type STDMD;
libs (fieldFunctionObjects);
field U;
// Optional entries
modeSorter kiewat;
// Optional (inherited) entries
region coarseMesh;
timeStart 10;
executeControl timeStep;
executeInterval 10;
writeControl onEnd;
}
STDMD4p
{
// Mandatory entries
type STDMD;
libs (fieldFunctionObjects);
field p;
// Optional entries
modeSorter kiewat;
// Optional (inherited) entries
region coarseMesh;
timeStart 10;
executeControl timeStep;
executeInterval 10;
writeControl onEnd;
}
STDMD5U
{
// Mandatory entries
type STDMD;
libs (fieldFunctionObjects);
field U;
// Optional entries
modeSorter kouZhang;
// Optional (inherited) entries
region coarseMesh;
timeStart 10;
executeControl timeStep;
executeInterval 10;
writeControl onEnd;
}
STDMD5p
{
// Mandatory entries
type STDMD;
libs (fieldFunctionObjects);
field p;
// Optional entries
modeSorter kouZhang;
// Optional (inherited) entries
region coarseMesh;
timeStart 10;
executeControl timeStep;
executeInterval 10;
writeControl onEnd;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,28 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 8;
method hierarchical;
coeffs
{
n (8 1 1);
}
// ************************************************************************* //

View File

@ -0,0 +1,56 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: 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 Gauss linear;
div((nuEff*dev(T(grad(U))))) Gauss linear;
}
laplacianSchemes
{
default Gauss linear corrected;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default corrected;
}
fluxRequired
{
default no;
p ;
}
// ************************************************************************* //

View File

@ -0,0 +1,56 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
p
{
solver GAMG;
smoother DICGaussSeidel;
tolerance 1e-6;
relTol 0.01;
}
pFinal
{
$p;
relTol 0;
}
U
{
solver smoothSolver;
smoother symGaussSeidel;
tolerance 1e-05;
relTol 0.1;
}
UFinal
{
$U;
relTol 0;
}
}
PIMPLE
{
nNonOrthogonalCorrectors 0;
nCorrectors 2;
}
// ************************************************************************* //

View File

@ -0,0 +1,27 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object mirrorMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
planeType pointAndNormal;
pointAndNormalDict
{
point (0 0 0);
normal (0 -1 0);
}
planeTolerance 1e-3;
// ************************************************************************* //

View File

@ -0,0 +1,83 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1912 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object snappyHexMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
castellatedMesh true;
snap false;
addLayers false;
geometry
{
cylinder
{
type searchableCylinder;
point1 (0 0 -0.00375);
point2 (0 0 0.00375);
radius 0.06;
}
}
castellatedMeshControls
{
maxLocalCells 100000;
maxGlobalCells 100000000;
minRefinementCells 10;
maxLoadUnbalance 0.10;
nCellsBetweenLevels 1;
resolveFeatureAngle 30;
allowFreeStandingZoneFaces true;
features
();
refinementSurfaces
{
cylinder
{
level (0 0);
patchInfo
{
type empty;
inGroups (allPatches);
}
}
};
refinementRegions{};
locationInMesh (-0.1 -0.2 0);
}
snapControls
{
nSmoothPatch 3;
tolerance 2.0;
nSolveIter 100;
nRelaxIter 5;
}
addLayersControls
{}
meshQualityControls
{
#includeEtc "caseDicts/meshQualityDict"
}
debug 0;
mergeTolerance 1e-6;
// ************************************************************************* //