Go to the documentation of this file.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
00037 #ifndef refinementSurfaces_H
00038 #define refinementSurfaces_H
00039
00040 #include <triSurface/triSurfaceGeoMesh.H>
00041 #include <triSurface/triSurfaceFields.H>
00042 #include <OpenFOAM/vectorList.H>
00043 #include <meshTools/pointIndexHit.H>
00044
00045
00046
00047 namespace Foam
00048 {
00049
00050 class searchableSurfaces;
00051 class shellSurfaces;
00052 class triSurfaceMesh;
00053
00054
00055
00056
00057
00058 class refinementSurfaces
00059 {
00060
00061
00062
00063 const searchableSurfaces& allGeometry_;
00064
00065
00066 labelList surfaces_;
00067
00068
00069 wordList names_;
00070
00071
00072 wordList faceZoneNames_;
00073
00074
00075 wordList cellZoneNames_;
00076
00077
00078
00079 boolList zoneInside_;
00080
00081
00082
00083 labelList regionOffset_;
00084
00085
00086 labelList minLevel_;
00087
00088
00089 labelList maxLevel_;
00090
00091
00092 scalarField perpendicularAngle_;
00093
00094
00095
00096
00097
00098 refinementSurfaces(const refinementSurfaces&);
00099
00100
00101 void operator=(const refinementSurfaces&);
00102
00103
00104 public:
00105
00106
00107
00108
00109 refinementSurfaces
00110 (
00111 const searchableSurfaces& allGeometry,
00112 const PtrList<dictionary>&
00113 );
00114
00115
00116 refinementSurfaces
00117 (
00118 const searchableSurfaces& allGeometry,
00119 const dictionary&
00120 );
00121
00122
00123
00124
00125
00126
00127 const searchableSurfaces& geometry() const
00128 {
00129 return allGeometry_;
00130 }
00131
00132 const labelList& surfaces() const
00133 {
00134 return surfaces_;
00135 }
00136
00137
00138 const wordList& names() const
00139 {
00140 return names_;
00141 }
00142
00143
00144 const wordList& faceZoneNames() const
00145 {
00146 return faceZoneNames_;
00147 }
00148
00149
00150 const wordList& cellZoneNames() const
00151 {
00152 return cellZoneNames_;
00153 }
00154
00155
00156 labelList getUnnamedSurfaces() const;
00157
00158
00159 labelList getNamedSurfaces() const;
00160
00161
00162 labelList getClosedNamedSurfaces() const;
00163
00164
00165 const labelList& regionOffset() const
00166 {
00167 return regionOffset_;
00168 }
00169
00170
00171 const labelList& minLevel() const
00172 {
00173 return minLevel_;
00174 }
00175
00176
00177 const labelList& maxLevel() const
00178 {
00179 return maxLevel_;
00180 }
00181
00182
00183 const scalarField& perpendicularAngle() const
00184 {
00185 return perpendicularAngle_;
00186 }
00187
00188
00189
00190
00191
00192 label globalRegion(const label surfI, const label regionI) const
00193 {
00194 return regionOffset_[surfI]+regionI;
00195 }
00196
00197
00198 label minLevel(const label surfI, const label regionI) const
00199 {
00200 return minLevel_[globalRegion(surfI, regionI)];
00201 }
00202
00203
00204 label maxLevel(const label surfI, const label regionI) const
00205 {
00206 return maxLevel_[globalRegion(surfI, regionI)];
00207 }
00208
00209 label nRegions() const
00210 {
00211 return minLevel_.size();
00212 }
00213
00214
00215 void setMinLevelFields
00216 (
00217 const shellSurfaces& shells
00218 );
00219
00221
00222
00223
00224
00225
00226
00227
00228
00229 void findHigherIntersection
00230 (
00231 const pointField& start,
00232 const pointField& end,
00233 const labelList& currentLevel,
00234
00235 labelList& surfaces,
00236 labelList& surfaceLevel
00237 ) const;
00238
00239
00240 void findAllHigherIntersections
00241 (
00242 const pointField& start,
00243 const pointField& end,
00244 const labelList& currentLevel,
00245
00246 List<vectorList>& surfaceNormal,
00247 labelListList& surfaceLevel
00248 ) const;
00249
00250
00251
00252
00253
00254 void findNearestIntersection
00255 (
00256 const labelList& surfacesToTest,
00257 const pointField& start,
00258 const pointField& end,
00259
00260 labelList& surface1,
00261 List<pointIndexHit>& hit1,
00262 labelList& region1,
00263 labelList& surface2,
00264 List<pointIndexHit>& hit2,
00265 labelList& region2
00266 ) const;
00267
00268
00269 void findAnyIntersection
00270 (
00271 const pointField& start,
00272 const pointField& end,
00273 labelList& surfaces,
00274 List<pointIndexHit>&
00275 ) const;
00276
00277
00278 void findNearest
00279 (
00280 const labelList& surfacesToTest,
00281 const pointField& samples,
00282 const scalarField& nearestDistSqr,
00283 labelList& surfaces,
00284 List<pointIndexHit>&
00285 ) const;
00286
00287
00288
00289 void findNearestRegion
00290 (
00291 const labelList& surfacesToTest,
00292 const pointField& samples,
00293 const scalarField& nearestDistSqr,
00294 labelList& hitSurface,
00295 labelList& hitRegion
00296 ) const;
00297
00298
00299
00300 void findInside
00301 (
00302 const labelList& surfacesToTest,
00303 const pointField& pt,
00304 labelList& insideSurfaces
00305 ) const;
00306 };
00307
00308
00309
00310
00311 }
00312
00313
00314
00315 #endif
00316
00317