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 #ifndef searchableCylinder_H
00036 #define searchableCylinder_H
00037
00038 #include <meshTools/treeBoundBox.H>
00039 #include "searchableSurface.H"
00040
00041
00042
00043 namespace Foam
00044 {
00045
00046
00047
00048
00049
00050
00051
00052 class searchableCylinder
00053 :
00054 public searchableSurface
00055 {
00056 private:
00057
00058
00059
00060
00061 const point point1_;
00062
00063
00064 const point point2_;
00065
00066
00067 const scalar magDir_;
00068
00069
00070 const vector unitDir_;
00071
00072
00073 const scalar radius_;
00074
00075
00076 mutable wordList regions_;
00077
00078
00079
00080
00081
00082 pointIndexHit findNearest
00083 (
00084 const point& sample,
00085 const scalar nearestDistSqr
00086 ) const;
00087
00088 scalar radius2(const point& pt) const;
00089
00090
00091 void findLineAll
00092 (
00093 const point& start,
00094 const point& end,
00095 pointIndexHit& near,
00096 pointIndexHit& far
00097 ) const;
00098
00099
00100
00101 searchableCylinder(const searchableCylinder&);
00102
00103
00104 void operator=(const searchableCylinder&);
00105
00106
00107 public:
00108
00109
00110 TypeName("searchableCylinder");
00111
00112
00113
00114
00115
00116 searchableCylinder
00117 (
00118 const IOobject& io,
00119 const point&,
00120 const point&,
00121 const scalar radius
00122 );
00123
00124
00125 searchableCylinder
00126 (
00127 const IOobject& io,
00128 const dictionary& dict
00129 );
00130
00131
00132
00133 virtual ~searchableCylinder();
00134
00135
00136
00137
00138 virtual const wordList& regions() const;
00139
00140
00141 virtual bool hasVolumeType() const
00142 {
00143 return true;
00144 }
00145
00146
00147 virtual label size() const
00148 {
00149 return 1;
00150 }
00151
00152
00153
00154 virtual pointField coordinates() const;
00155
00156
00157
00158
00159 virtual void findNearest
00160 (
00161 const pointField& sample,
00162 const scalarField& nearestDistSqr,
00163 List<pointIndexHit>&
00164 ) const;
00165
00166 virtual void findLine
00167 (
00168 const pointField& start,
00169 const pointField& end,
00170 List<pointIndexHit>&
00171 ) const;
00172
00173 virtual void findLineAny
00174 (
00175 const pointField& start,
00176 const pointField& end,
00177 List<pointIndexHit>&
00178 ) const;
00179
00180
00181 virtual void findLineAll
00182 (
00183 const pointField& start,
00184 const pointField& end,
00185 List<List<pointIndexHit> >&
00186 ) const;
00187
00188
00189 virtual void getRegion
00190 (
00191 const List<pointIndexHit>&,
00192 labelList& region
00193 ) const;
00194
00195
00196 virtual void getNormal
00197 (
00198 const List<pointIndexHit>&,
00199 vectorField& normal
00200 ) const;
00201
00202
00203
00204 virtual void getVolumeType
00205 (
00206 const pointField&,
00207 List<volumeType>&
00208 ) const;
00209
00210
00211
00212
00213 bool writeData(Ostream&) const
00214 {
00215 notImplemented("searchableCylinder::writeData(Ostream&) const");
00216 return false;
00217 }
00218
00219 };
00220
00221
00222
00223
00224 }
00225
00226
00227
00228 #endif
00229
00230