41 searchableSurfaceFeatures,
42 searchablePlateFeatures,
47const Foam::label edgesArray[4][2] =
65 const label edgesArray[4][2]
71 edges[edgeI][0] = edgesArray[edgeI][0];
72 edges[edgeI][1] = edgesArray[edgeI][1];
82 const searchableSurface& surface,
83 const dictionary&
dict
89 extendedFeatureEdgeMesh::sideVolumeTypeNames_
91 dict.getOrDefault<word>(
"meshableSide",
"inside")
96 <<
" Meshable region = "
97 << extendedFeatureEdgeMesh::sideVolumeTypeNames_[mode_]
113 autoPtr<extendedFeatureEdgeMesh> features;
124 edgeNormals[eI].setSize(2, 0);
126 edgeNormals[0][0] = 0; edgeNormals[0][1] = 0;
127 edgeNormals[1][0] = 0; edgeNormals[1][1] = 0;
128 edgeNormals[2][0] = 0; edgeNormals[2][1] = 0;
129 edgeNormals[3][0] = 0; edgeNormals[3][1] = 0;
131 forAll(edgeDirections, eI)
135 -
surface().points()()[edges[eI].start()];
138 for (label j = 0; j < 2; ++j)
141 (
faceNormals[edgeNormals[eI][j]] ^ edgeDirections[eI]);
144 -
surface().points()()[edges[eI].start()];
146 normalDirections[eI][j] =
150 & (fC0tofE0/(
mag(fC0tofE0)+ VSMALL))
161 forAll(featurePointNormals, pI)
163 labelList& ftPtEdges = featurePointEdges[pI];
169 const edge&
e = edges[eI];
173 ftPtEdges[edgeI++] = eI;
175 else if (
e.
end() == pI)
177 ftPtEdges[edgeI++] = eI;
181 labelList& ftPtNormals = featurePointNormals[pI];
184 ftPtNormals[0] = edgeNormals[ftPtEdges[0]][0];
191 new extendedFeatureEdgeMesh
197 "extendedFeatureEdgeMesh",
207 List<extendedFeatureEdgeMesh::sideVolumeType>(4, 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 edgeList edges
Edge to point addressing.
virtual autoPtr< extendedFeatureEdgeMesh > features() const
Return an extendedFeatureEdgeMesh containing the features.
virtual ~searchablePlateFeatures()
Destructor.
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)
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)
List< edge > edgeList
A List of edges.
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)
constexpr auto end(C &c) -> decltype(c.end())
Return iterator to the end of the container c.
#define forAll(list, i)
Loop across all elements in list.