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
00038
00039
00040
00041
00042 #ifndef searchableSurfaceWithGaps_H
00043 #define searchableSurfaceWithGaps_H
00044
00045 #include "searchableSurface.H"
00046 #include <OpenFOAM/UPtrList.H>
00047 #include <OpenFOAM/Pair.H>
00048
00049
00050
00051 namespace Foam
00052 {
00053
00054
00055
00056
00057
00058
00059
00060 class searchableSurfaceWithGaps
00061 :
00062 public searchableSurface
00063 {
00064 private:
00065
00066
00067
00068
00069 const scalar gap_;
00070
00071
00072 UPtrList<searchableSurface> subGeom_;
00073
00074
00075
00076
00077 Pair<vector> offsetVecs(const point&, const point&) const;
00078
00079 void offsetVecs
00080 (
00081 const pointField& start,
00082 const pointField& end,
00083 pointField& offset0,
00084 pointField& offset1
00085 ) const;
00086
00087 static label countMisses
00088 (
00089 const List<pointIndexHit>& info,
00090 labelList& missMap
00091 );
00092
00093 static label countMisses
00094 (
00095 const List<pointIndexHit>& plusInfo,
00096 const List<pointIndexHit>& minInfo,
00097 labelList& missMap
00098 );
00099
00100
00101
00102 searchableSurfaceWithGaps(const searchableSurfaceWithGaps&);
00103
00104
00105 void operator=(const searchableSurfaceWithGaps&);
00106
00107
00108 public:
00109
00110
00111 TypeName("searchableSurfaceWithGaps");
00112
00113
00114
00115
00116
00117 searchableSurfaceWithGaps
00118 (
00119 const IOobject& io,
00120 const dictionary& dict
00121 );
00122
00123
00124
00125 virtual ~searchableSurfaceWithGaps();
00126
00127
00128
00129
00130 const searchableSurface& surface() const
00131 {
00132 return subGeom_[0];
00133 }
00134
00135
00136 virtual const wordList& regions() const
00137 {
00138 return surface().regions();
00139 }
00140
00141
00142 virtual bool hasVolumeType() const
00143 {
00144 return surface().hasVolumeType();
00145 }
00146
00147
00148 virtual label size() const
00149 {
00150 return surface().size();
00151 }
00152
00153
00154
00155 virtual pointField coordinates() const
00156 {
00157 return surface().coordinates();
00158 }
00159
00160
00161
00162
00163
00164
00165 virtual void findNearest
00166 (
00167 const pointField& sample,
00168 const scalarField& nearestDistSqr,
00169 List<pointIndexHit>& info
00170 ) const
00171 {
00172 surface().findNearest
00173 (
00174 sample,
00175 nearestDistSqr,
00176 info
00177 );
00178 }
00179
00180 virtual void findLine
00181 (
00182 const pointField& start,
00183 const pointField& end,
00184 List<pointIndexHit>&
00185 ) const;
00186
00187 virtual void findLineAny
00188 (
00189 const pointField& start,
00190 const pointField& end,
00191 List<pointIndexHit>&
00192 ) const;
00193
00194
00195 virtual void findLineAll
00196 (
00197 const pointField& start,
00198 const pointField& end,
00199 List<List<pointIndexHit> >&
00200 ) const;
00201
00202
00203 virtual void getRegion
00204 (
00205 const List<pointIndexHit>& info,
00206 labelList& region
00207 ) const
00208 {
00209 surface().getRegion(info, region);
00210 }
00211
00212
00213 virtual void getNormal
00214 (
00215 const List<pointIndexHit>& info,
00216 vectorField& normal
00217 ) const
00218 {
00219 surface().getNormal(info, normal);
00220 }
00221
00222
00223
00224 virtual void getVolumeType
00225 (
00226 const pointField& samples,
00227 List<volumeType>& info
00228 ) const
00229 {
00230 surface().getVolumeType(samples, info);
00231 }
00232
00233
00234
00235
00236
00237
00238
00239
00240 virtual void distribute
00241 (
00242 const List<treeBoundBox>& bbs,
00243 const bool keepNonLocal,
00244 autoPtr<mapDistribute>& faceMap,
00245 autoPtr<mapDistribute>& pointMap
00246 )
00247 {
00248 subGeom_[0].distribute(bbs, keepNonLocal, faceMap, pointMap);
00249 }
00250
00251
00252 virtual void setField(const labelList& values)
00253 {
00254 subGeom_[0].setField(values);
00255 }
00256
00257
00258
00259
00260 virtual void getField
00261 (
00262 const List<pointIndexHit>& info,
00263 labelList& values
00264 ) const
00265 {
00266 surface().getField(info, values);
00267 }
00268
00269
00270
00271 bool writeData(Ostream& os) const
00272 {
00273 return surface().writeData(os);
00274 }
00275
00276 };
00277
00278
00279
00280
00281 }
00282
00283
00284
00285 #endif
00286
00287