Merge branch 'master' of /home/dm4/OpenFOAM/OpenFOAM-dev

This commit is contained in:
mattijs
2013-06-06 06:04:37 +01:00
22 changed files with 1042 additions and 82 deletions

View File

@ -194,12 +194,24 @@ void Foam::conformalVoronoiMesh::insertPoints
}
}
label preReinsertionSize(number_of_vertices());
rangeInsertWithInfo
(
vertices.begin(),
vertices.end(),
true
false
);
const label nReinserted = returnReduce
(
label(number_of_vertices()) - preReinsertionSize,
sumOp<label>()
);
Info<< " Reinserted " << nReinserted << " vertices out of "
<< returnReduce(vertices.size(), sumOp<label>())
<< endl;
}
@ -787,8 +799,8 @@ Foam::face Foam::conformalVoronoiMesh::buildDualFace
<< "Dual face uses circumcenter defined by a "
<< "Delaunay tetrahedron with no internal "
<< "or boundary points. Defining Delaunay edge ends: "
<< topoint(vA->point()) << " "
<< topoint(vB->point()) << nl
<< vA->info() << " "
<< vB->info() << nl
<< exit(FatalError);
}
@ -1630,6 +1642,8 @@ void Foam::conformalVoronoiMesh::move()
);
}
DynamicList<Vertex_handle> pointsToRemove;
for
(
Delaunay::Finite_vertices_iterator vit = finite_vertices_begin();
@ -1640,15 +1654,18 @@ void Foam::conformalVoronoiMesh::move()
if
(
(vit->internalPoint() || vit->internalBoundaryPoint())
&& !vit->referred()
//&& !vit->referred()
)
{
bool inside = geometryToConformTo_.inside
(
topoint(vit->point())
);
const Foam::point& pt = topoint(vit->point());
if (!inside)
bool inside = geometryToConformTo_.inside(pt);
if
(
!inside
|| !geometryToConformTo_.globalBounds().contains(pt)
)
{
if
(
@ -1658,13 +1675,16 @@ void Foam::conformalVoronoiMesh::move()
{
str().write(topoint(vit->point()));
}
remove(vit);
pointsToRemove.append(vit);
internalPtIsOutside++;
}
}
}
Info<< " " << internalPtIsOutside
remove(pointsToRemove.begin(), pointsToRemove.end());
Info<< " " << returnReduce(internalPtIsOutside, sumOp<label>())
<< " internal points were inserted outside the domain. "
<< "They have been removed." << endl;
}

View File

@ -317,7 +317,7 @@ private:
void insertPoints
(
List<Vb>& vertices,
bool distribute = true
bool distribute
);
//- Create a point-pair at a ppDist distance either side of

View File

@ -2458,6 +2458,54 @@ void Foam::conformalVoronoiMesh::createFacesOwnerNeighbourAndPatches
|| (vB->internalOrBoundaryPoint() && !vB->referred())
)
{
if
(
(vA->internalPoint() && vB->externalBoundaryPoint())
|| (vB->internalPoint() && vA->externalBoundaryPoint())
)
{
Cell_circulator ccStart = incident_cells(*eit);
Cell_circulator cc1 = ccStart;
Cell_circulator cc2 = cc1;
cc2++;
bool skipEdge = false;
do
{
if
(
cc1->hasFarPoint() || cc2->hasFarPoint()
|| is_infinite(cc1) || is_infinite(cc2)
)
{
Pout<< "Ignoring edge between internal and external: "
<< vA->info()
<< vB->info();
skipEdge = true;
break;
}
cc1++;
cc2++;
} while (cc1 != ccStart);
// Do not create faces if the internal point is outside!
// This occurs because the internal point is not determined to
// be outside in the inside/outside test. This is most likely
// due to the triangle.nearestPointClassify test not returning
// edge/point as the nearest type.
if (skipEdge)
{
continue;
}
}
face newDualFace = buildDualFace(eit);
if (newDualFace.size() >= 3)

View File

@ -569,7 +569,20 @@ void Foam::conformalVoronoiMesh::buildSurfaceConformation()
Vertex_handle vA = c->vertex(eit->second);
Vertex_handle vB = c->vertex(eit->third);
if (vA->referred() || vB->referred())
if
(
vA->referred()
|| vB->referred()
)
{
continue;
}
if
(
(vA->internalPoint() && vA->referred())
|| (vB->internalPoint() && vB->referred())
)
{
continue;
}
@ -2183,59 +2196,59 @@ void Foam::conformalVoronoiMesh::addSurfaceAndEdgeHits
pointIndexHitAndFeature(edHit, featureHit)
);
}
else if (firstPass)
{
label hitIndex = nearestEdgeHit.index();
// Calc new edge location
Foam::point newPt =
0.5
*(
nearestEdgeHit.hitPoint()
+ edHit.hitPoint()
);
pointIndexHit pHitOld =
edgeLocationTreePtr_().findNearest
(
nearestEdgeHit.hitPoint(), GREAT
);
pointIndexHit pHitNew =
edgeLocationTreePtr_().findNearest
(
edHit.hitPoint(), GREAT
);
if
(
magSqr(pHitNew.hitPoint() - edHit.hitPoint())
< magSqr
(
pHitOld.hitPoint()
- nearestEdgeHit.hitPoint()
)
)
{
edHit.setPoint(edHit.hitPoint());
featureEdgeHits[hitIndex] =
pointIndexHitAndFeature(edHit, featureHit);
existingEdgeLocations_[hitIndex] =
edHit.hitPoint();
// Change edge location in featureEdgeHits
// remove index from edge tree
// reinsert new point into tree
edgeLocationTreePtr_().remove(hitIndex);
edgeLocationTreePtr_().insert
(
hitIndex,
hitIndex + 1
);
}
}
// else if (firstPass)
// {
// label hitIndex = nearestEdgeHit.index();
//
// // Calc new edge location
//// Foam::point newPt =
//// 0.5
//// *(
//// nearestEdgeHit.hitPoint()
//// + edHit.hitPoint()
//// );
//
// pointIndexHit pHitOld =
// edgeLocationTreePtr_().findNearest
// (
// nearestEdgeHit.hitPoint(), GREAT
// );
//
// pointIndexHit pHitNew =
// edgeLocationTreePtr_().findNearest
// (
// edHit.hitPoint(), GREAT
// );
//
// if
// (
// magSqr(pHitNew.hitPoint() - edHit.hitPoint())
// < magSqr
// (
// pHitOld.hitPoint()
// - nearestEdgeHit.hitPoint()
// )
// )
// {
// edHit.setPoint(edHit.hitPoint());
//
// featureEdgeHits[hitIndex] =
// pointIndexHitAndFeature(edHit, featureHit);
//
// existingEdgeLocations_[hitIndex] =
// edHit.hitPoint();
//
// // Change edge location in featureEdgeHits
// // remove index from edge tree
// // reinsert new point into tree
// edgeLocationTreePtr_().remove(hitIndex);
// edgeLocationTreePtr_().insert
// (
// hitIndex,
// hitIndex + 1
// );
// }
// }
}
}
}

View File

@ -873,17 +873,7 @@ void Foam::conformalVoronoiMesh::reinsertFeaturePoints(bool distribute)
{
Info<< nl << "Reinserting stored feature points" << endl;
label preReinsertionSize(number_of_vertices());
insertPoints(featureVertices_, distribute);
const label nReinserted = returnReduce
(
label(number_of_vertices()) - preReinsertionSize,
sumOp<label>()
);
Info<< " Reinserted " << nReinserted << " vertices" << endl;
}
@ -1458,8 +1448,6 @@ void Foam::conformalVoronoiMesh::createFeaturePoints(DynamicList<Vb>& pts)
forAll(feMeshes, i)
{
Info<< indent << "Edge mesh = " << feMeshes[i].name() << nl << endl;
const extendedFeatureEdgeMesh& feMesh(feMeshes[i]);
for

View File

@ -101,7 +101,9 @@ void Foam::conformalVoronoiMesh::drawDelaunayCell
// Supply offset as tet number
offset *= 4;
os << "# cell index: " << label(c->cellIndex()) << endl;
os << "# cell index: " << label(c->cellIndex())
<< " INT_MIN = " << INT_MIN
<< endl;
os << "# circumradius "
<< mag(c->dual() - topoint(c->vertex(0)->point()))
@ -112,7 +114,15 @@ void Foam::conformalVoronoiMesh::drawDelaunayCell
os << "# index / type / procIndex: "
<< label(c->vertex(i)->index()) << " "
<< label(c->vertex(i)->type()) << " "
<< label(c->vertex(i)->procIndex()) << endl;
<< label(c->vertex(i)->procIndex())
<< (is_infinite(c->vertex(i)) ? " # This vertex is infinite!" : "")
<<
(
c->vertex(i)->uninitialised()
? " # This vertex is uninitialised!"
: ""
)
<< endl;
meshTools::writeOBJ(os, topoint(c->vertex(i)->point()));
}

View File

@ -706,8 +706,8 @@ Foam::Field<bool> Foam::conformationSurfaces::wellInside
// Info<< surface.name() << " = "
// << volumeType::names[surfaceVolumeTests[s][i]] << endl;
//if (surfaceVolumeTests[s][i] == volumeType::OUTSIDE)
if (surfaceVolumeTests[s][i] != volumeType::INSIDE)
if (surfaceVolumeTests[s][i] == volumeType::OUTSIDE)
// if (surfaceVolumeTests[s][i] != volumeType::INSIDE)
{
insidePoint[i] = false;

View File

@ -0,0 +1,11 @@
#!/bin/sh
cd ${0%/*} || exit 1 # run from this directory
# Source tutorial run functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
rm -r constant/internalDelaunayVertices constant/targetCellSize > /dev/null 2>&1
cleanCase
# ----------------------------------------------------------------- end-of-file

View File

@ -0,0 +1,56 @@
#!/bin/sh
cd ${0%/*} || exit 1 # run from this directory
# Source tutorial run functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions
nProcs=$(getNumberOfProcessors)
# copy flange surface from resources folder
cp $FOAM_TUTORIALS/resources/geometry/mixerVessel.tar.gz constant/triSurface/
tar zxf constant/triSurface/mixerVessel.tar.gz -C constant/triSurface/rawSurfaces
# Run the surface preparation script
./constant/triSurface/surfaceProcess.sh > log.surfaceProcess 2>&1
runApplication surfaceBooleanFeatures \
intersection \
constant/triSurface/vessel.stl \
constant/triSurface/spargerShaft.stl -perturb
mv log.surfaceBooleanFeatures log.surfaceBooleanFeatures.vessel_spargerShaft
runApplication surfaceBooleanFeatures \
intersection \
constant/triSurface/vessel.stl \
constant/triSurface/shaftStatic.stl -perturb
mv log.surfaceBooleanFeatures log.surfaceBooleanFeatures.vessel_shaftStatic
runApplication surfaceBooleanFeatures \
intersection \
constant/triSurface/spargerShaft.stl \
constant/triSurface/spargerInlet.stl -perturb
mv log.surfaceBooleanFeatures log.surfaceBooleanFeatures.spargerShaft_spargerInlet
runApplication surfaceBooleanFeatures \
intersection \
constant/triSurface/stirrer.stl \
constant/triSurface/shaftRotating.stl -perturb
mv log.surfaceBooleanFeatures log.surfaceBooleanFeatures.stirrer_shaftRotating
runApplication surfaceFeatureExtract
runApplication blockMesh
runApplication decomposePar
runParallel foamyHexMesh $nProcs
runParallel collapseEdges $nProcs -collapseFaces -latestTime
runParallel checkMesh $nProcs -latestTime -allTopology -allGeometry
# ----------------------------------------------------------------- end-of-file

View File

@ -0,0 +1,58 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 1;
vertices
(
( -300 -300 -250)
( 300 -300 -250)
( 300 300 -250)
( -300 300 -250)
( -300 -300 1500)
( 300 -300 1500)
( 300 300 1500)
( -300 300 1500)
);
blocks
(
hex (0 1 2 3 4 5 6 7) (30 30 67) simpleGrading (1 1 1)
);
edges
(
);
boundary
(
allBoundary
{
type patch;
faces
(
(3 7 6 2)
(0 4 7 3)
(2 6 5 1)
(1 5 4 0)
(0 3 2 1)
(4 5 6 7)
);
}
);
// ************************************************************************* //

View File

@ -0,0 +1,4 @@
Folder to house tri-surfaces
The Allrun script copies the surface from the $FOAM_TUTORIALS/resources/geometry
folder

View File

@ -0,0 +1,36 @@
#!/bin/bash
cd ${0%/*} || exit 1 # run from this directory
#cp rawSurfaces/MRF.stl MRF.stl
#cp rawSurfaces/baffles.stl baffles.stl
cp rawSurfaces/vessel.stl vessel.stl
cp rawSurfaces/sparger.stl sparger.stl
cp rawSurfaces/shaftRotating.stl shaftRotating.stl
cp rawSurfaces/shaftStatic.stl shaftStatic.stl
cp rawSurfaces/gasInlet.stl gasInlet.stl
cp rawSurfaces/stirrer.stl stirrer.stl
# Vessel surface
surfaceAutoPatch vessel.stl vessel.stl 120
# Sparger
surfaceCheck sparger.stl
surfaceAdd gasInlet.stl sparger_0.obj spargerInlet.stl
surfaceConvert sparger_1.obj spargerShaft.stl
surfaceOrient -inside spargerInlet.stl "(-100 -50 500)" spargerInlet.stl
surfaceOrient -inside spargerShaft.stl "(-50 -20 -100)" spargerShaft.stl
# Rotating shaft
surfaceOrient -inside shaftRotating.stl "(-100 -50 500)" shaftRotating.stl
# Static shaft
surfaceOrient -inside shaftStatic.stl "(15 -200 1000)" shaftStatic.stl
# Stirrer
surfaceSplitByTopology stirrer.stl stirrer.stl
surfaceOrient -inside stirrer.stl "(15 -200 1000)" stirrer.stl
# ----------------------------------------------------------------- end-of-file

View File

@ -0,0 +1,85 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object collapseDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// If on, after collapsing check the quality of the mesh. If bad faces are
// generated then redo the collapsing with stricter filtering.
controlMeshQuality on;
collapseEdgesCoeffs
{
// Edges shorter than this absolute value will be merged
minimumEdgeLength 1e-6;
// The maximum angle between two edges that share a point attached to
// no other edges
maximumMergeAngle 180;
}
collapseFacesCoeffs
{
// The initial face length factor
initialFaceLengthFactor 0.3;
// If the face can't be collapsed to an edge, and it has a span less than
// the target face length multiplied by this coefficient, collapse it
// to a point.
maxCollapseFaceToPointSideLengthCoeff 0.3;
// Allow early collapse of edges to a point
allowEarlyCollapseToPoint on;
// Fraction to premultiply maxCollapseFaceToPointSideLengthCoeff by if
// allowEarlyCollapseToPoint is enabled
allowEarlyCollapseCoeff 0.2;
// Defining how close to the midpoint (M) of the projected
// vertices line a projected vertex (X) can be before making this
// an invalid edge collapse
//
// X---X-g----------------M----X-----------g----X--X
//
// Only allow a collapse if all projected vertices are outwith
// guardFraction (g) of the distance form the face centre to the
// furthest vertex in the considered direction
guardFraction 0.1;
}
controlMeshQualityCoeffs
{
// Name of the dictionary that has the mesh quality coefficients used
// by motionSmoother::checkMesh
#include "meshQualityDict";
// The amount that minimumEdgeLength will be reduced by for each
// edge if that edge's collapse generates a poor quality face
edgeReductionFactor 0.5;
// The amount that initialFaceLengthFactor will be reduced by for each
// face if its collapse generates a poor quality face
faceReductionFactor 0.5;
// Maximum number of outer iterations is mesh quality checking is enabled
maximumIterations 10;
maximumSmoothingIterations 2;
maxPointErrorCount 3;
}
// ************************************************************************* //

View File

@ -0,0 +1,49 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application icoFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 100;
deltaT 1;
writeControl timeStep;
writeInterval 100;
purgeWrite 0;
writeFormat binary;
writePrecision 10;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
// ************************************************************************* //

View File

@ -0,0 +1,47 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 8;
//method ptscotch;
//method hierarchical;
method scotch;
simpleCoeffs
{
n ( 2 2 1 );
delta 0.001;
}
hierarchicalCoeffs
{
n ( 2 2 2 );
delta 0.001;
order xyz;
}
manualCoeffs
{
dataFile "";
}
distributed no;
roots ( );
// ************************************************************************* //

View File

@ -0,0 +1,278 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object foamyHexMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#include "$WM_PROJECT_DIR/etc/caseDicts/foamyHexMeshDict"
geometry
{
#include "meshDict.geometry"
}
initialPoints
{
initialPointsMethod autoDensity;
autoDensityCoeffs
{
minLevels 2;
maxSizeRatio 2.0;
sampleResolution 5;
surfaceSampleResolution 5;
}
}
surfaceConformation
{
locationInMesh (200 0 10);
geometryToConformTo
{
spargerInlet
{
featureMethod extendedFeatureEdgeMesh;
extendedFeatureEdgeMesh "spargerInlet.extendedFeatureEdgeMesh";
}
spargerShaft
{
featureMethod none;
}
vessel
{
featureMethod extendedFeatureEdgeMesh;
extendedFeatureEdgeMesh "vessel.extendedFeatureEdgeMesh";
regions
{
vessel_wall {}
vessel_outletPipe {}
vessel_outlet {}
}
}
shaftRotating
{
featureMethod extendedFeatureEdgeMesh;
extendedFeatureEdgeMesh "shaftRotating.extendedFeatureEdgeMesh";
}
shaftStatic
{
featureMethod none;
}
stirrer
{
featureMethod extendedFeatureEdgeMesh;
extendedFeatureEdgeMesh "stirrer.extendedFeatureEdgeMesh";
}
}
additionalFeatures
{
spargerShaft_spargerInlet_intersection
{
featureMethod extendedFeatureEdgeMesh;
extendedFeatureEdgeMesh "spargerShaft_spargerInlet_intersection.extendedFeatureEdgeMesh";
}
vessel_shaftStatic_intersection
{
featureMethod extendedFeatureEdgeMesh;
extendedFeatureEdgeMesh "vessel_shaftStatic_intersection.extendedFeatureEdgeMesh";
}
vessel_spargerShaft_intersection
{
featureMethod extendedFeatureEdgeMesh;
extendedFeatureEdgeMesh "vessel_spargerShaft_intersection.extendedFeatureEdgeMesh";
}
stirrer_shaftRotating_intersection
{
featureMethod extendedFeatureEdgeMesh;
extendedFeatureEdgeMesh "stirrer_shaftRotating_intersection.extendedFeatureEdgeMesh";
}
}
}
motionControl
{
defaultCellSize 10;
minimumCellSizeCoeff 0.1;
maxRefinementIterations 0;
maxSmoothingIterations 100;
shapeControlFunctions
{
vessel
{
type searchableSurfaceControl;
priority 1;
mode inside;
forceInitialPointInsertion off;
surfaceCellSizeFunction uniformValue;
uniformValueCoeffs
{
surfaceCellSizeCoeff 1;
}
cellSizeFunction uniform;
uniformCoeffs{}
regions
{
vessel_wall
{
surfaceCellSizeFunction uniformValue;
uniformValueCoeffs
{
surfaceCellSizeCoeff 1;
}
cellSizeFunction uniform;
uniformCoeffs{}
}
vessel_outletPipe
{
priority 2;
surfaceCellSizeFunction uniformValue;
uniformValueCoeffs
{
surfaceCellSizeCoeff 0.5;
}
cellSizeFunction uniformDistance;
uniformDistanceCoeffs
{
distanceCoeff 5;
}
}
vessel_outlet
{
priority 2;
surfaceCellSizeFunction uniformValue;
uniformValueCoeffs
{
surfaceCellSizeCoeff 0.5;
}
cellSizeFunction uniformDistance;
uniformDistanceCoeffs
{
distanceCoeff 2;
}
}
}
}
shaftRotating
{
type searchableSurfaceControl;
priority 2;
mode inside;
forceInitialPointInsertion off;
surfaceCellSizeFunction uniformValue;
uniformValueCoeffs
{
surfaceCellSizeCoeff 0.25;
}
cellSizeFunction linearDistance;
linearDistanceCoeffs
{
distanceCellSizeCoeff 1;
distanceCoeff 4;
}
}
shaftStatic
{
${shaftRotating};
}
stirrer
{
${shaftRotating};
}
spargerInlet
{
type searchableSurfaceControl;
priority 2;
mode inside;
forceInitialPointInsertion off;
surfaceCellSizeFunction uniformValue;
uniformValueCoeffs
{
surfaceCellSizeCoeff 0.25;
}
cellSizeFunction linearDistance;
linearDistanceCoeffs
{
distanceCellSizeCoeff 1;
distanceCoeff 4;
}
}
spargerShaft
{
${spargerInlet}
}
}
objOutput no;
timeChecks no;
}
backgroundMeshDecomposition
{
minLevels 1;
sampleResolution 4;
spanScale 20;
maxCellWeightCoeff 20;
}
polyMeshFiltering
{
writeTetDualMesh false;
filterEdges on;
filterFaces off;
}
meshQualityControls
{
#include "meshQualityDict"
}
// ************************************************************************* //

View File

@ -0,0 +1,30 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
gradSchemes
{
}
divSchemes
{
}
laplacianSchemes
{
}
// ************************************************************************* //

View File

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

View File

@ -0,0 +1,66 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object meshDict.geometry;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
vessel.stl
{
name vessel;
type triSurfaceMesh;
regions
{
patch0 {name vessel_wall;}
patch1 {name vessel_outletPipe;}
patch2 {name vessel_outlet;}
}
}
spargerInlet.stl
{
name spargerInlet;
type triSurfaceMesh;
}
spargerShaft.stl
{
name spargerShaft;
type triSurfaceMesh;
}
shaftRotating.stl
{
name shaftRotating;
type triSurfaceMesh;
}
shaftStatic.stl
{
name shaftStatic;
type triSurfaceMesh;
}
stirrer.stl
{
name stirrer;
type triSurfaceMesh;
}
// ************************************************************************* //

View File

@ -0,0 +1,30 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object meshQualityControls;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
maxNonOrtho 60;
maxBoundarySkewness 50;
maxInternalSkewness 10;
maxConcave 80;
minVol 1e-20;
minTetQuality 1e-30;
minArea -1;
minTwist 0.0;
minDeterminant 0.001;
minFaceWeight 0.02;
minVolRatio 0.01;
minTriangleTwist -1;
// ************************************************************************* //

View File

@ -0,0 +1,113 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object surfaceFeatureExtractDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
shaftRotating.stl
{
extractionMethod extractFromSurface;
extractFromSurfaceCoeffs
{
// Mark edges whose adjacent surface normals are at an angle less
// than includedAngle as features
// - 0 : selects no edges
// - 180: selects all edges
includedAngle 100;
}
subsetFeatures
{
// Remove the top feature
insideBox (-100 -100 -100)(100 100 100);
}
// Write options
// Write features to obj format for postprocessing
writeObj no;
}
vessel.stl
{
extractionMethod extractFromSurface;
extractFromSurfaceCoeffs
{
// Mark edges whose adjacent surface normals are at an angle less
// than includedAngle as features
// - 0 : selects no edges
// - 180: selects all edges
includedAngle 120;
}
subsetFeatures
{
// Keep nonManifold edges (edges with >2 connected faces where
// the faces form more than two different normal planes)
nonManifoldEdges no;
// Keep open edges (edges with 1 connected face)
openEdges no;
}
// Write options
// Write features to obj format for postprocessing
writeObj no;
}
spargerInlet.stl
{
extractionMethod extractFromSurface;
extractFromSurfaceCoeffs
{
// Mark edges whose adjacent surface normals are at an angle less
// than includedAngle as features
// - 0 : selects no edges
// - 180: selects all edges
includedAngle 120;
}
// Write options
// Write features to obj format for postprocessing
writeObj no;
}
stirrer.stl
{
extractionMethod extractFromSurface;
extractFromSurfaceCoeffs
{
// Mark edges whose adjacent surface normals are at an angle less
// than includedAngle as features
// - 0 : selects no edges
// - 180: selects all edges
includedAngle 120;
}
// Write options
// Write features to obj format for postprocessing
writeObj no;
}
// ************************************************************************* //

Binary file not shown.