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 #ifndef searchableSurfaceCollection_H
00037 #define searchableSurfaceCollection_H
00038
00039 #include "searchableSurface.H"
00040 #include <meshTools/treeBoundBox.H>
00041 #include <meshTools/coordinateSystem.H>
00042 #include <OpenFOAM/UPtrList.H>
00043 #include <OpenFOAM/Switch.H>
00044
00045
00046
00047 namespace Foam
00048 {
00049
00050
00051
00052
00053
00054
00055
00056 class searchableSurfaceCollection
00057 :
00058 public searchableSurface
00059 {
00060 private:
00061
00062
00063
00064
00065
00066
00067 wordList instance_;
00068
00069
00070 vectorField scale_;
00071
00072
00073 PtrList<coordinateSystem> transform_;
00074
00075 UPtrList<searchableSurface> subGeom_;
00076
00077 Switch mergeSubRegions_;
00078
00079
00080
00081 labelList indexOffset_;
00082
00083
00084 mutable wordList regions_;
00085
00086 mutable labelList regionOffset_;
00087
00088
00089
00090
00091
00092
00093 void findNearest
00094 (
00095 const pointField& samples,
00096 scalarField& minDistSqr,
00097 List<pointIndexHit>& nearestInfo,
00098 labelList& nearestSurf
00099 ) const;
00100
00101
00102
00103 void sortHits
00104 (
00105 const List<pointIndexHit>& info,
00106 List<List<pointIndexHit> >& surfInfo,
00107 labelListList& infoMap
00108 ) const;
00109
00110
00111
00112 searchableSurfaceCollection(const searchableSurfaceCollection&);
00113
00114
00115 void operator=(const searchableSurfaceCollection&);
00116
00117
00118 public:
00119
00120
00121 TypeName("searchableSurfaceCollection");
00122
00123
00124
00125
00126
00127 searchableSurfaceCollection
00128 (
00129 const IOobject& io,
00130 const dictionary& dict
00131 );
00132
00133
00134
00135 virtual ~searchableSurfaceCollection();
00136
00137
00138
00139
00140 virtual const wordList& regions() const;
00141
00142
00143 virtual bool hasVolumeType() const
00144 {
00145 return false;
00146 }
00147
00148
00149 virtual label size() const;
00150
00151
00152
00153 virtual pointField coordinates() const;
00154
00155
00156
00157
00158 virtual void findNearest
00159 (
00160 const pointField& sample,
00161 const scalarField& nearestDistSqr,
00162 List<pointIndexHit>&
00163 ) const;
00164
00165 virtual void findLine
00166 (
00167 const pointField& start,
00168 const pointField& end,
00169 List<pointIndexHit>&
00170 ) const;
00171
00172 virtual void findLineAny
00173 (
00174 const pointField& start,
00175 const pointField& end,
00176 List<pointIndexHit>&
00177 ) const;
00178
00179
00180 virtual void findLineAll
00181 (
00182 const pointField& start,
00183 const pointField& end,
00184 List<List<pointIndexHit> >&
00185 ) const;
00186
00187
00188 virtual void getRegion
00189 (
00190 const List<pointIndexHit>&,
00191 labelList& region
00192 ) const;
00193
00194
00195 virtual void getNormal
00196 (
00197 const List<pointIndexHit>&,
00198 vectorField& normal
00199 ) const;
00200
00201
00202
00203 virtual void getVolumeType
00204 (
00205 const pointField&,
00206 List<volumeType>&
00207 ) const;
00208
00209
00210
00211
00212
00213
00214
00215 virtual void distribute
00216 (
00217 const List<treeBoundBox>&,
00218 const bool keepNonLocal,
00219 autoPtr<mapDistribute>& faceMap,
00220 autoPtr<mapDistribute>& pointMap
00221 );
00222
00223
00224 virtual void setField(const labelList& values);
00225
00226
00227
00228
00229 virtual void getField(const List<pointIndexHit>&, labelList&) const;
00230
00231
00232
00233 bool writeData(Ostream&) const
00234 {
00235 notImplemented
00236 (
00237 "searchableSurfaceCollection::writeData(Ostream&) const"
00238 );
00239 return false;
00240 }
00241
00242 };
00243
00244
00245
00246
00247 }
00248
00249
00250
00251 #endif
00252
00253