41 searchableSurfaceFeatures,
42 searchableBoxFeatures,
51 Foam::searchableBoxFeatures::searchableBoxFeatures
53 const searchableSurface& surface,
54 const dictionary&
dict
57 searchableSurfaceFeatures(surface,
dict),
60 extendedFeatureEdgeMesh::sideVolumeTypeNames_
62 dict.getOrDefault<word>(
"meshableSide",
"inside")
67 <<
" Meshable region = "
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;
110 tmp<pointField> surfacePointsTmp(surface().
points());
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
179 surface().
name() +
".extendedFeatureEdgeMesh",
180 surface().instance(),
181 "extendedFeatureEdgeMesh",
191 List<extendedFeatureEdgeMesh::sideVolumeType>(12, mode_),