mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge branch 'master' of /home/dm4/OpenFOAM/OpenFOAM-dev
This commit is contained in:
@ -194,12 +194,24 @@ void Foam::conformalVoronoiMesh::insertPoints
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
label preReinsertionSize(number_of_vertices());
|
||||||
|
|
||||||
rangeInsertWithInfo
|
rangeInsertWithInfo
|
||||||
(
|
(
|
||||||
vertices.begin(),
|
vertices.begin(),
|
||||||
vertices.end(),
|
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 "
|
<< "Dual face uses circumcenter defined by a "
|
||||||
<< "Delaunay tetrahedron with no internal "
|
<< "Delaunay tetrahedron with no internal "
|
||||||
<< "or boundary points. Defining Delaunay edge ends: "
|
<< "or boundary points. Defining Delaunay edge ends: "
|
||||||
<< topoint(vA->point()) << " "
|
<< vA->info() << " "
|
||||||
<< topoint(vB->point()) << nl
|
<< vB->info() << nl
|
||||||
<< exit(FatalError);
|
<< exit(FatalError);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1630,6 +1642,8 @@ void Foam::conformalVoronoiMesh::move()
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DynamicList<Vertex_handle> pointsToRemove;
|
||||||
|
|
||||||
for
|
for
|
||||||
(
|
(
|
||||||
Delaunay::Finite_vertices_iterator vit = finite_vertices_begin();
|
Delaunay::Finite_vertices_iterator vit = finite_vertices_begin();
|
||||||
@ -1640,15 +1654,18 @@ void Foam::conformalVoronoiMesh::move()
|
|||||||
if
|
if
|
||||||
(
|
(
|
||||||
(vit->internalPoint() || vit->internalBoundaryPoint())
|
(vit->internalPoint() || vit->internalBoundaryPoint())
|
||||||
&& !vit->referred()
|
//&& !vit->referred()
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
bool inside = geometryToConformTo_.inside
|
const Foam::point& pt = topoint(vit->point());
|
||||||
(
|
|
||||||
topoint(vit->point())
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!inside)
|
bool inside = geometryToConformTo_.inside(pt);
|
||||||
|
|
||||||
|
if
|
||||||
|
(
|
||||||
|
!inside
|
||||||
|
|| !geometryToConformTo_.globalBounds().contains(pt)
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if
|
if
|
||||||
(
|
(
|
||||||
@ -1658,13 +1675,16 @@ void Foam::conformalVoronoiMesh::move()
|
|||||||
{
|
{
|
||||||
str().write(topoint(vit->point()));
|
str().write(topoint(vit->point()));
|
||||||
}
|
}
|
||||||
remove(vit);
|
|
||||||
|
pointsToRemove.append(vit);
|
||||||
internalPtIsOutside++;
|
internalPtIsOutside++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Info<< " " << internalPtIsOutside
|
remove(pointsToRemove.begin(), pointsToRemove.end());
|
||||||
|
|
||||||
|
Info<< " " << returnReduce(internalPtIsOutside, sumOp<label>())
|
||||||
<< " internal points were inserted outside the domain. "
|
<< " internal points were inserted outside the domain. "
|
||||||
<< "They have been removed." << endl;
|
<< "They have been removed." << endl;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -317,7 +317,7 @@ private:
|
|||||||
void insertPoints
|
void insertPoints
|
||||||
(
|
(
|
||||||
List<Vb>& vertices,
|
List<Vb>& vertices,
|
||||||
bool distribute = true
|
bool distribute
|
||||||
);
|
);
|
||||||
|
|
||||||
//- Create a point-pair at a ppDist distance either side of
|
//- Create a point-pair at a ppDist distance either side of
|
||||||
|
|||||||
@ -2458,6 +2458,54 @@ void Foam::conformalVoronoiMesh::createFacesOwnerNeighbourAndPatches
|
|||||||
|| (vB->internalOrBoundaryPoint() && !vB->referred())
|
|| (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);
|
face newDualFace = buildDualFace(eit);
|
||||||
|
|
||||||
if (newDualFace.size() >= 3)
|
if (newDualFace.size() >= 3)
|
||||||
|
|||||||
@ -569,7 +569,20 @@ void Foam::conformalVoronoiMesh::buildSurfaceConformation()
|
|||||||
Vertex_handle vA = c->vertex(eit->second);
|
Vertex_handle vA = c->vertex(eit->second);
|
||||||
Vertex_handle vB = c->vertex(eit->third);
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
@ -2183,59 +2196,59 @@ void Foam::conformalVoronoiMesh::addSurfaceAndEdgeHits
|
|||||||
pointIndexHitAndFeature(edHit, featureHit)
|
pointIndexHitAndFeature(edHit, featureHit)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else if (firstPass)
|
// else if (firstPass)
|
||||||
{
|
// {
|
||||||
label hitIndex = nearestEdgeHit.index();
|
// label hitIndex = nearestEdgeHit.index();
|
||||||
|
//
|
||||||
// Calc new edge location
|
// // Calc new edge location
|
||||||
Foam::point newPt =
|
//// Foam::point newPt =
|
||||||
0.5
|
//// 0.5
|
||||||
*(
|
//// *(
|
||||||
nearestEdgeHit.hitPoint()
|
//// nearestEdgeHit.hitPoint()
|
||||||
+ edHit.hitPoint()
|
//// + edHit.hitPoint()
|
||||||
);
|
//// );
|
||||||
|
//
|
||||||
pointIndexHit pHitOld =
|
// pointIndexHit pHitOld =
|
||||||
edgeLocationTreePtr_().findNearest
|
// edgeLocationTreePtr_().findNearest
|
||||||
(
|
// (
|
||||||
nearestEdgeHit.hitPoint(), GREAT
|
// nearestEdgeHit.hitPoint(), GREAT
|
||||||
);
|
// );
|
||||||
|
//
|
||||||
pointIndexHit pHitNew =
|
// pointIndexHit pHitNew =
|
||||||
edgeLocationTreePtr_().findNearest
|
// edgeLocationTreePtr_().findNearest
|
||||||
(
|
// (
|
||||||
edHit.hitPoint(), GREAT
|
// edHit.hitPoint(), GREAT
|
||||||
);
|
// );
|
||||||
|
//
|
||||||
if
|
// if
|
||||||
(
|
// (
|
||||||
magSqr(pHitNew.hitPoint() - edHit.hitPoint())
|
// magSqr(pHitNew.hitPoint() - edHit.hitPoint())
|
||||||
< magSqr
|
// < magSqr
|
||||||
(
|
// (
|
||||||
pHitOld.hitPoint()
|
// pHitOld.hitPoint()
|
||||||
- nearestEdgeHit.hitPoint()
|
// - nearestEdgeHit.hitPoint()
|
||||||
)
|
// )
|
||||||
)
|
// )
|
||||||
{
|
// {
|
||||||
edHit.setPoint(edHit.hitPoint());
|
// edHit.setPoint(edHit.hitPoint());
|
||||||
|
//
|
||||||
featureEdgeHits[hitIndex] =
|
// featureEdgeHits[hitIndex] =
|
||||||
pointIndexHitAndFeature(edHit, featureHit);
|
// pointIndexHitAndFeature(edHit, featureHit);
|
||||||
|
//
|
||||||
existingEdgeLocations_[hitIndex] =
|
// existingEdgeLocations_[hitIndex] =
|
||||||
edHit.hitPoint();
|
// edHit.hitPoint();
|
||||||
|
//
|
||||||
// Change edge location in featureEdgeHits
|
// // Change edge location in featureEdgeHits
|
||||||
// remove index from edge tree
|
// // remove index from edge tree
|
||||||
// reinsert new point into tree
|
// // reinsert new point into tree
|
||||||
edgeLocationTreePtr_().remove(hitIndex);
|
// edgeLocationTreePtr_().remove(hitIndex);
|
||||||
edgeLocationTreePtr_().insert
|
// edgeLocationTreePtr_().insert
|
||||||
(
|
// (
|
||||||
hitIndex,
|
// hitIndex,
|
||||||
hitIndex + 1
|
// hitIndex + 1
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -873,17 +873,7 @@ void Foam::conformalVoronoiMesh::reinsertFeaturePoints(bool distribute)
|
|||||||
{
|
{
|
||||||
Info<< nl << "Reinserting stored feature points" << endl;
|
Info<< nl << "Reinserting stored feature points" << endl;
|
||||||
|
|
||||||
label preReinsertionSize(number_of_vertices());
|
|
||||||
|
|
||||||
insertPoints(featureVertices_, distribute);
|
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)
|
forAll(feMeshes, i)
|
||||||
{
|
{
|
||||||
Info<< indent << "Edge mesh = " << feMeshes[i].name() << nl << endl;
|
|
||||||
|
|
||||||
const extendedFeatureEdgeMesh& feMesh(feMeshes[i]);
|
const extendedFeatureEdgeMesh& feMesh(feMeshes[i]);
|
||||||
|
|
||||||
for
|
for
|
||||||
|
|||||||
@ -101,7 +101,9 @@ void Foam::conformalVoronoiMesh::drawDelaunayCell
|
|||||||
// Supply offset as tet number
|
// Supply offset as tet number
|
||||||
offset *= 4;
|
offset *= 4;
|
||||||
|
|
||||||
os << "# cell index: " << label(c->cellIndex()) << endl;
|
os << "# cell index: " << label(c->cellIndex())
|
||||||
|
<< " INT_MIN = " << INT_MIN
|
||||||
|
<< endl;
|
||||||
|
|
||||||
os << "# circumradius "
|
os << "# circumradius "
|
||||||
<< mag(c->dual() - topoint(c->vertex(0)->point()))
|
<< mag(c->dual() - topoint(c->vertex(0)->point()))
|
||||||
@ -112,7 +114,15 @@ void Foam::conformalVoronoiMesh::drawDelaunayCell
|
|||||||
os << "# index / type / procIndex: "
|
os << "# index / type / procIndex: "
|
||||||
<< label(c->vertex(i)->index()) << " "
|
<< label(c->vertex(i)->index()) << " "
|
||||||
<< label(c->vertex(i)->type()) << " "
|
<< 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()));
|
meshTools::writeOBJ(os, topoint(c->vertex(i)->point()));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -706,8 +706,8 @@ Foam::Field<bool> Foam::conformationSurfaces::wellInside
|
|||||||
// Info<< surface.name() << " = "
|
// Info<< surface.name() << " = "
|
||||||
// << volumeType::names[surfaceVolumeTests[s][i]] << endl;
|
// << volumeType::names[surfaceVolumeTests[s][i]] << endl;
|
||||||
|
|
||||||
//if (surfaceVolumeTests[s][i] == volumeType::OUTSIDE)
|
if (surfaceVolumeTests[s][i] == volumeType::OUTSIDE)
|
||||||
if (surfaceVolumeTests[s][i] != volumeType::INSIDE)
|
// if (surfaceVolumeTests[s][i] != volumeType::INSIDE)
|
||||||
{
|
{
|
||||||
insidePoint[i] = false;
|
insidePoint[i] = false;
|
||||||
|
|
||||||
|
|||||||
11
tutorials/mesh/foamyHexMesh/mixerVessel/Allclean
Executable file
11
tutorials/mesh/foamyHexMesh/mixerVessel/Allclean
Executable 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
|
||||||
56
tutorials/mesh/foamyHexMesh/mixerVessel/Allrun
Executable file
56
tutorials/mesh/foamyHexMesh/mixerVessel/Allrun
Executable 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
|
||||||
@ -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)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,4 @@
|
|||||||
|
Folder to house tri-surfaces
|
||||||
|
|
||||||
|
The Allrun script copies the surface from the $FOAM_TUTORIALS/resources/geometry
|
||||||
|
folder
|
||||||
@ -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
|
||||||
85
tutorials/mesh/foamyHexMesh/mixerVessel/system/collapseDict
Normal file
85
tutorials/mesh/foamyHexMesh/mixerVessel/system/collapseDict
Normal 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
49
tutorials/mesh/foamyHexMesh/mixerVessel/system/controlDict
Normal file
49
tutorials/mesh/foamyHexMesh/mixerVessel/system/controlDict
Normal 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;
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -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 ( );
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
278
tutorials/mesh/foamyHexMesh/mixerVessel/system/foamyHexMeshDict
Normal file
278
tutorials/mesh/foamyHexMesh/mixerVessel/system/foamyHexMeshDict
Normal 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"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
30
tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes
Normal file
30
tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes
Normal 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
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
18
tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSolution
Normal file
18
tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSolution
Normal 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;
|
||||||
|
}
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -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;
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
BIN
tutorials/resources/geometry/mixerVessel.tar.gz
Normal file
BIN
tutorials/resources/geometry/mixerVessel.tar.gz
Normal file
Binary file not shown.
Reference in New Issue
Block a user