41 searchableSurfaceFeatures,
42 searchableBoxFeatures,
53 const searchableSurface& surface,
54 const dictionary&
dict
60 extendedFeatureEdgeMesh::sideVolumeTypeNames_
62 dict.getOrDefault<word>(
"meshableSide",
"inside")
67 <<
" Meshable region = "
68 << extendedFeatureEdgeMesh::sideVolumeTypeNames_[mode_]
84 autoPtr<extendedFeatureEdgeMesh> features;
95 edgeNormals[eI].setSize(2, 0);
97 edgeNormals[0][0] = 2; edgeNormals[0][1] = 4;
98 edgeNormals[1][0] = 1; edgeNormals[1][1] = 4;
99 edgeNormals[2][0] = 3; edgeNormals[2][1] = 4;
100 edgeNormals[3][0] = 0; edgeNormals[3][1] = 4;
101 edgeNormals[4][0] = 2; edgeNormals[4][1] = 5;
102 edgeNormals[5][0] = 1; edgeNormals[5][1] = 5;
103 edgeNormals[6][0] = 3; edgeNormals[6][1] = 5;
104 edgeNormals[7][0] = 0; edgeNormals[7][1] = 5;
105 edgeNormals[8][0] = 0; edgeNormals[8][1] = 2;
106 edgeNormals[9][0] = 2; edgeNormals[9][1] = 1;
107 edgeNormals[10][0] = 1; edgeNormals[10][1] = 3;
108 edgeNormals[11][0] = 3; edgeNormals[11][1] = 0;
111 pointField& surfacePoints = surfacePointsTmp.ref();
113 forAll(edgeDirections, eI)
120 for (label j = 0; j < 2; ++j)
123 (
faceNormals[edgeNormals[eI][j]] ^ edgeDirections[eI]);
125 0.5*(
max(surfacePoints +
min(surfacePoints)))
128 normalDirections[eI][j] =
132 & (fC0tofE0/(
mag(fC0tofE0)+ VSMALL))
143 forAll(featurePointNormals, pI)
145 labelList& ftPtEdges = featurePointEdges[pI];
155 ftPtEdges[edgeI++] = eI;
157 else if (
e.
end() == pI)
159 ftPtEdges[edgeI++] = eI;
163 labelList& ftPtNormals = featurePointNormals[pI];
166 ftPtNormals[0] = edgeNormals[ftPtEdges[0]][0];
167 ftPtNormals[1] = edgeNormals[ftPtEdges[0]][1];
168 ftPtNormals[2] = edgeNormals[ftPtEdges[1]][0];
175 new extendedFeatureEdgeMesh
181 "extendedFeatureEdgeMesh",
191 List<extendedFeatureEdgeMesh::sideVolumeType>(12, mode_),
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
void setSize(const label n)
Alias for resize()
iterator end() noexcept
Return an iterator to end traversing the UList.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
static const FixedList< vector, 6 > faceNormals
The unit normal per face.
virtual ~searchableBoxFeatures()
Destructor.
virtual autoPtr< extendedFeatureEdgeMesh > features() const
Return an extendedFeatureEdgeMesh containing the features.
static const edgeList edges
Edge to point addressing.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
surfaceVectorField faceNormals(mesh.Sf()/mesh.magSf())
const wordList surface
Standard surface field types (scalar, vector, tensor, etc)
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
List< label > labelList
A List of labels.
messageStream Info
Information stream (stdout output on master, null elsewhere)
vectorField pointField
pointField is a vectorField.
Ostream & endl(Ostream &os)
Add newline and flush stream.
Ostream & indent(Ostream &os)
Indent stream.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
List< labelList > labelListList
A List of labelList.
label min(const labelHashSet &set, label minValue=labelMax)
Find the min value in labelHashSet, optionally limited by second argument.
Field< vector > vectorField
Specialisation of Field<T> for vector.
static constexpr const zero Zero
Global zero (0)
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
void cross(FieldField< Field1, typename crossProduct< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
#define forAll(list, i)
Loop across all elements in list.