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 #ifndef meshTools_H
00036 #define meshTools_H
00037
00038 #include <OpenFOAM/label.H>
00039 #include <OpenFOAM/vector.H>
00040 #include <OpenFOAM/labelList.H>
00041 #include <OpenFOAM/pointField.H>
00042 #include <OpenFOAM/faceList.H>
00043 #include <OpenFOAM/cellList.H>
00044 #include <OpenFOAM/primitivePatch.H>
00045
00046
00047
00048 namespace Foam
00049 {
00050
00051 class primitiveMesh;
00052 class polyMesh;
00053
00054
00055
00056
00057
00058 namespace meshTools
00059 {
00060
00061
00062 static const label mXmYmZ = 0;
00063 static const label pXmYmZ = 1;
00064 static const label mXpYmZ = 2;
00065 static const label pXpYmZ = 3;
00066
00067 static const label mXmYpZ = 4;
00068 static const label pXmYpZ = 5;
00069 static const label mXpYpZ = 6;
00070 static const label pXpYpZ = 7;
00071
00072 static const label mXmYmZMask = 1 << mXmYmZ;
00073 static const label pXmYmZMask = 1 << pXmYmZ;
00074 static const label mXpYmZMask = 1 << mXpYmZ;
00075 static const label pXpYmZMask = 1 << pXpYmZ;
00076
00077 static const label mXmYpZMask = 1 << mXmYpZ;
00078 static const label pXmYpZMask = 1 << pXmYpZ;
00079 static const label mXpYpZMask = 1 << mXpYpZ;
00080 static const label pXpYpZMask = 1 << pXpYpZ;
00081
00082
00083
00084
00085
00086 bool visNormal
00087 (
00088 const vector& n,
00089 const vectorField& faceNormals,
00090 const labelList& faceLabels
00091 );
00092
00093
00094
00095 vectorField calcBoxPointNormals(const primitivePatch& pp);
00096
00097
00098 vector normEdgeVec(const primitiveMesh&, const label edgeI);
00099
00100
00101
00102
00103
00104 void writeOBJ
00105 (
00106 Ostream& os,
00107 const point& pt
00108 );
00109
00110
00111 void writeOBJ
00112 (
00113 Ostream& os,
00114 const faceList&,
00115 const pointField&,
00116 const labelList& faceLabels
00117 );
00118
00119
00120 void writeOBJ
00121 (
00122 Ostream& os,
00123 const faceList&,
00124 const pointField&
00125 );
00126
00127
00128 void writeOBJ
00129 (
00130 Ostream& os,
00131 const cellList&,
00132 const faceList&,
00133 const pointField&,
00134 const labelList& cellLabels
00135 );
00136
00137
00138
00139
00140
00141 bool edgeOnCell
00142 (
00143 const primitiveMesh&,
00144 const label cellI,
00145 const label edgeI
00146 );
00147
00148
00149 bool edgeOnFace
00150 (
00151 const primitiveMesh&,
00152 const label faceI,
00153 const label edgeI
00154 );
00155
00156
00157 bool faceOnCell
00158 (
00159 const primitiveMesh&,
00160 const label cellI,
00161 const label faceI
00162 );
00163
00164
00165 label findEdge
00166 (
00167 const edgeList& edges,
00168 const labelList& candidates,
00169 const label v0,
00170 const label v1
00171 );
00172
00173
00174 label findEdge
00175 (
00176 const primitiveMesh&,
00177 const label v0,
00178 const label v1
00179 );
00180
00181
00182 label getSharedEdge
00183 (
00184 const primitiveMesh&,
00185 const label f0,
00186 const label f1
00187 );
00188
00189
00190 label getSharedFace
00191 (
00192 const primitiveMesh&,
00193 const label cell0,
00194 const label cell1
00195 );
00196
00197
00198 void getEdgeFaces
00199 (
00200 const primitiveMesh&,
00201 const label cellI,
00202 const label edgeI,
00203 label& face0,
00204 label& face1
00205 );
00206
00207
00208
00209 label otherEdge
00210 (
00211 const primitiveMesh&,
00212 const labelList& edgeLabels,
00213 const label edgeI,
00214 const label vertI
00215 );
00216
00217
00218
00219 label otherFace
00220 (
00221 const primitiveMesh&,
00222 const label cellI,
00223 const label faceI,
00224 const label edgeI
00225 );
00226
00227
00228
00229 label otherCell
00230 (
00231 const primitiveMesh&,
00232 const label cellI,
00233 const label faceI
00234 );
00235
00236
00237
00238 label walkFace
00239 (
00240 const primitiveMesh&,
00241 const label faceI,
00242 const label startEdgeI,
00243 const label startVertI,
00244 const label nEdges
00245 );
00246
00247
00248
00249
00250
00251 void constrainToMeshCentre
00252 (
00253 const polyMesh& mesh,
00254 point& pt
00255 );
00256 void constrainToMeshCentre
00257 (
00258 const polyMesh& mesh,
00259 pointField& pt
00260 );
00261
00262
00263 void constrainDirection
00264 (
00265 const polyMesh& mesh,
00266 const Vector<label>& dirs,
00267 vector& d
00268 );
00269 void constrainDirection
00270 (
00271 const polyMesh& mesh,
00272 const Vector<label>& dirs,
00273 vectorField& d
00274 );
00275
00276
00277
00278
00279
00280 void getParallelEdges
00281 (
00282 const primitiveMesh&,
00283 const label cellI,
00284 const label e0,
00285 label&,
00286 label&,
00287 label&
00288 );
00289
00290
00291
00292 vector edgeToCutDir
00293 (
00294 const primitiveMesh&,
00295 const label cellI,
00296 const label edgeI
00297 );
00298
00299
00300
00301 label cutDirToEdge
00302 (
00303 const primitiveMesh&,
00304 const label cellI,
00305 const vector& cutDir
00306 );
00307
00308 }
00309
00310
00311
00312
00313 }
00314
00315
00316
00317 #endif
00318
00319