00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef removeFaces_H
00037 #define removeFaces_H
00038
00039 #include "mathematicalConstants.H"
00040 #include "labelList.H"
00041 #include "Map.H"
00042 #include "labelHashSet.H"
00043 #include "boolList.H"
00044 #include "typeInfo.H"
00045
00046
00047
00048 namespace Foam
00049 {
00050
00051
00052 class primitiveMesh;
00053 class polyMesh;
00054 class polyTopoChange;
00055 class edge;
00056 class face;
00057 class mapPolyMesh;
00058
00059
00060
00061
00062
00063 class removeFaces
00064 {
00065
00066
00067
00068 const polyMesh& mesh_;
00069
00070
00071
00072 const scalar minCos_;
00073
00074
00075
00076
00077
00078 static label nexti(const label, const label index);
00079
00080
00081 static label previ(const label, const label index);
00082
00083
00084
00085 static bool sameFaceOrdering
00086 (
00087 const edge& e,
00088 const face& f0,
00089 const label f0Start,
00090 const face& f1,
00091 const label f1Start
00092 );
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102 scalar faceCos
00103 (
00104 const label face0I,
00105 const label face1I,
00106 const bool checkOrder,
00107 const label sharedEdgeI
00108 ) const;
00109
00110
00111
00112
00113 void getFaceInfo
00114 (
00115 const label faceI,
00116
00117 label& patchID,
00118 label& zoneID,
00119 label& zoneFlip
00120 ) const;
00121
00122
00123
00124 bool getUnremovedFaces
00125 (
00126 const labelHashSet& facesToRemove,
00127 const label edgeI,
00128
00129 label& face0I,
00130 label& face1I
00131 ) const;
00132
00133
00134
00135 bool getUnremovedEdges
00136 (
00137 const Map<edge>& edgesToRemove,
00138 const label vertI,
00139
00140 label& edge0I,
00141 label& edge1I
00142 ) const;
00143
00144
00145
00146 bool canBeRemoved
00147 (
00148 const Map<edge>& edgesToRemove,
00149 const label vertI
00150 ) const;
00151
00152
00153 labelHashSet getFacesAffected
00154 (
00155 const labelList& cellRegion,
00156 const labelList& cellRegionMaster,
00157 const labelHashSet& facesToRemove,
00158 const Map<edge>& edgesToRemove,
00159 const labelHashSet& pointsToRemove
00160 ) const;
00161
00162
00163
00164
00165
00166 face filterFace(const labelHashSet& pointsToRemove, const label)
00167 const;
00168
00169
00170
00171
00172 face mergeFace
00173 (
00174 const labelHashSet& pointsToRemove,
00175 const label face0I,
00176 const label face1I,
00177 const label sharedEdgeI
00178 ) const;
00179
00180
00181 void modFace
00182 (
00183 const face& f,
00184 const label masterFaceID,
00185 const label own,
00186 const label nei,
00187 const bool flipFaceFlux,
00188 const label newPatchID,
00189 const bool removeFromZone,
00190 const label zoneID,
00191 const bool zoneFlip,
00192
00193 polyTopoChange& meshMod
00194 ) const;
00195
00196
00197
00198
00199 void changeCellRegion
00200 (
00201 const label cellI,
00202 const label oldRegion,
00203 const label newRegion,
00204 labelList& cellRegion
00205 ) const;
00206
00207
00208
00209
00210 removeFaces(const removeFaces&);
00211
00212
00213 void operator=(const removeFaces&);
00214
00215
00216 public:
00217
00218
00219 ClassName("removeFaces");
00220
00221
00222
00223
00224
00225
00226 removeFaces
00227 (
00228 const polyMesh& mesh,
00229 const scalar minCos = Foam::cos(10.0/180.0 * mathematicalConstant::pi)
00230 );
00231
00232
00233
00234
00235
00236
00237 scalar minCos() const
00238 {
00239 return minCos_;
00240 }
00241
00242
00243
00244
00245
00246
00247
00248
00249
00250 label compatibleRemoves
00251 (
00252 const labelList& inPiercedFaces,
00253 labelList& cellRegion,
00254 labelList& cellRegionMaster,
00255 labelList& outPiercedFaces
00256 ) const;
00257
00258
00259
00260
00261
00262 void setRefinement
00263 (
00264 const labelList& piercedFaces,
00265 const labelList& cellRegion,
00266 const labelList& cellRegionMaster,
00267 polyTopoChange&
00268 ) const;
00269
00270
00271 void updateMesh(const mapPolyMesh&)
00272 {}
00273 };
00274
00275
00276
00277
00278 }
00279
00280
00281
00282 #endif
00283
00284