mirror of
https://github.com/OpenFOAM/OpenFOAM-6.git
synced 2025-12-08 06:57:46 +00:00
Surfaces are specified as a list and the controls applied to each, e.g. in the
rhoPimpleFoam/RAS/annularThermalMixer tutorial:
surfaces
(
"AMI.obj"
"shaft.obj"
"wall.obj"
"statorBlades.obj"
"rotorBlades.obj"
);
includedAngle 150; // Identifes a feature when angle
// between faces < includedAngle
trimFeatures
{
minElem 10; // minimum edges within a feature
}
writeObj yes; // writes out _edgeMesh.obj files to view features
If different controls are required for different surfaces multiple
sub-dictionaries can be used:
AMIsurfaces
{
surfaces
(
"AMI.obj"
);
includedAngle 140; // Identifes a feature when angle
// between faces < includedAngle
trimFeatures
{
minElem 8; // minimum edges within a feature
}
writeObj yes; // writes out _edgeMesh.obj files to view features
}
otherSurfaces
{
surfaces
(
"shaft.obj"
"wall.obj"
"statorBlades.obj"
"rotorBlades.obj"
);
includedAngle 150; // Identifes a feature when angle
// between faces < includedAngle
trimFeatures
{
minElem 10; // minimum edges within a feature
}
writeObj yes; // writes out _edgeMesh.obj files to view features
}
Existing feature edge files corresponding to particular surfaces can be specified using
the "files" association list:
surfaces
(
"AMI.obj"
"shaft.obj"
"wall.obj"
"statorBlades.obj"
"rotorBlades.obj"
);
files
(
"AMI.obj" "constant/triSurface/AMI.obj.eMesh";
);
includedAngle 150; // Identifes a feature when angle
// between faces < includedAngle
trimFeatures
{
minElem 10; // minimum edges within a feature
}
writeObj yes; // writes out _edgeMesh.obj files to view features
119 lines
3.3 KiB
C++
119 lines
3.3 KiB
C++
/*--------------------------------*- 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;
|
|
}
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
surface1
|
|
{
|
|
surfaces
|
|
(
|
|
"surface1.stl"
|
|
);
|
|
|
|
// 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;
|
|
|
|
// Do not mark region edges
|
|
geometricTestOnly yes;
|
|
|
|
// Write options
|
|
|
|
// Write features to obj format for postprocessing
|
|
writeObj yes;
|
|
verboseObj no;
|
|
}
|
|
|
|
|
|
surface2
|
|
{
|
|
surfaces
|
|
(
|
|
"surface2.nas"
|
|
);
|
|
|
|
// Load from an existing feature edge file
|
|
files
|
|
(
|
|
"surface2.nas" "constant/triSurface/featureEdges.nas";
|
|
);
|
|
|
|
trimFeatures
|
|
{
|
|
// Remove features with fewer than the specified number of edges
|
|
minElem 0;
|
|
|
|
// Remove features shorter than the specified cumulative length
|
|
minLen 0.0;
|
|
}
|
|
|
|
subsetFeatures
|
|
{
|
|
// Use a plane to select feature edges
|
|
// (normal)(basePoint)
|
|
// Keep only edges that intersect the plane will be included
|
|
plane (1 0 0)(0 0 0);
|
|
|
|
// Select feature edges using a box
|
|
// (minPt)(maxPt)
|
|
// Keep edges inside the box:
|
|
insideBox (0 0 0)(1 1 1);
|
|
// Keep edges outside the box:
|
|
outsideBox (0 0 0)(1 1 1);
|
|
|
|
// Keep nonManifold edges (edges with >2 connected faces where
|
|
// the faces form more than two different normal planes)
|
|
nonManifoldEdges yes;
|
|
|
|
// Keep open edges (edges with 1 connected face)
|
|
openEdges yes;
|
|
}
|
|
|
|
addFeatures
|
|
{
|
|
// Add (without merging) another extendedFeatureEdgeMesh
|
|
name axZ.extendedFeatureEdgeMesh;
|
|
|
|
// Optionally flip features (invert all normals, making
|
|
// convex<->concave etc)
|
|
//flip false;
|
|
}
|
|
|
|
// Output the curvature of the surface
|
|
curvature no;
|
|
|
|
// Output the proximity of feature points and edges to each other
|
|
featureProximity no;
|
|
|
|
// The maximum search distance to use when looking for other feature
|
|
// points and edges
|
|
maxFeatureProximity 1;
|
|
|
|
// Out put the closeness of surface elements to other surface elements.
|
|
closeness no;
|
|
|
|
// Write features to obj format for postprocessing
|
|
writeObj yes;
|
|
verboseObj no;
|
|
|
|
// Write surface proximity and curvature fields to vtk format
|
|
// for postprocessing
|
|
writeVTK no;
|
|
}
|
|
|
|
|
|
// ************************************************************************* //
|