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 trackedParticle_H
00038 #define trackedParticle_H
00039
00040 #include "ExactParticle.H"
00041 #include <OpenFOAM/autoPtr.H>
00042
00043
00044
00045 namespace Foam
00046 {
00047
00048 class trackedParticleCloud;
00049
00050
00051
00052
00053
00054 class trackedParticle
00055 :
00056 public ExactParticle<trackedParticle>
00057 {
00058
00059
00060
00061 point end_;
00062
00063
00064 label level_;
00065
00066
00067 label i_;
00068
00069
00070 label j_;
00071
00072 public:
00073
00074 friend class Cloud<trackedParticle>;
00075
00076
00077 class trackData
00078 {
00079
00080 Cloud<trackedParticle>& cloud_;
00081
00082 labelList& maxLevel_;
00083
00084 public:
00085
00086 bool switchProcessor;
00087 bool keepParticle;
00088
00089
00090
00091
00092 trackData(Cloud<trackedParticle>& cloud, labelList& maxLevel)
00093 :
00094 cloud_(cloud),
00095 maxLevel_(maxLevel)
00096 {}
00097
00098
00099
00100
00101 Cloud<trackedParticle>& cloud()
00102 {
00103 return cloud_;
00104 }
00105
00106 labelList& maxLevel()
00107 {
00108 return maxLevel_;
00109 }
00110 };
00111
00112
00113
00114
00115
00116
00117 trackedParticle
00118 (
00119 const Cloud<trackedParticle>& c,
00120 const vector& position,
00121 const label celli,
00122 const point& end,
00123 const label level,
00124 const label i,
00125 const label j
00126 );
00127
00128
00129 trackedParticle
00130 (
00131 const Cloud<trackedParticle>& c,
00132 Istream& is,
00133 bool readFields = true
00134 );
00135
00136
00137 autoPtr<trackedParticle> clone() const
00138 {
00139 return autoPtr<trackedParticle>(new trackedParticle(*this));
00140 }
00141
00142
00143
00144
00145
00146 point& end()
00147 {
00148 return end_;
00149 }
00150
00151
00152 label& i()
00153 {
00154 return i_;
00155 }
00156
00157
00158 label& j()
00159 {
00160 return j_;
00161 }
00162
00163
00164
00165
00166
00167
00168 bool move(trackData&);
00169
00170
00171
00172
00173 bool hitPatch
00174 (
00175 const polyPatch&,
00176 trackedParticle::trackData& td,
00177 const label patchI
00178 );
00179 bool hitPatch
00180 (
00181 const polyPatch&,
00182 int&,
00183 const label patchI
00184 );
00185
00186
00187 void hitWedgePatch
00188 (
00189 const wedgePolyPatch&,
00190 trackedParticle::trackData& td
00191 );
00192 void hitWedgePatch
00193 (
00194 const wedgePolyPatch&,
00195 int&
00196 );
00197
00198
00199
00200 void hitSymmetryPatch
00201 (
00202 const symmetryPolyPatch&,
00203 trackedParticle::trackData& td
00204 );
00205 void hitSymmetryPatch
00206 (
00207 const symmetryPolyPatch&,
00208 int&
00209 );
00210
00211
00212 void hitCyclicPatch
00213 (
00214 const cyclicPolyPatch&,
00215 trackedParticle::trackData& td
00216 );
00217 void hitCyclicPatch
00218 (
00219 const cyclicPolyPatch&,
00220 int&
00221 );
00222
00223
00224
00225 void hitProcessorPatch
00226 (
00227 const processorPolyPatch&,
00228 trackedParticle::trackData& td
00229 );
00230 void hitProcessorPatch
00231 (
00232 const processorPolyPatch&,
00233 int&
00234 );
00235
00236
00237 void hitWallPatch
00238 (
00239 const wallPolyPatch&,
00240 trackedParticle::trackData& td
00241 );
00242 void hitWallPatch
00243 (
00244 const wallPolyPatch&,
00245 int&
00246 );
00247
00248
00249 void hitPatch
00250 (
00251 const polyPatch&,
00252 trackedParticle::trackData& td
00253 );
00254 void hitPatch
00255 (
00256 const polyPatch&,
00257 int&
00258 );
00259
00260
00261
00262
00263 friend Ostream& operator<<(Ostream&, const trackedParticle&);
00264
00265
00266 };
00267
00268
00269 template<>
00270 inline bool contiguous<trackedParticle>()
00271 {
00272 return true;
00273 }
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284 }
00285
00286
00287
00288 #endif
00289
00290