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 #ifndef ThermoParcel_H
00040 #define ThermoParcel_H
00041
00042 #include <OpenFOAM/IOstream.H>
00043 #include <OpenFOAM/autoPtr.H>
00044 #include <finiteVolume/interpolationCellPoint.H>
00045 #include <OpenFOAM/contiguous.H>
00046
00047 #include <lagrangianIntermediate/KinematicParcel.H>
00048 #include <lagrangianIntermediate/ThermoCloud_.H>
00049
00050
00051
00052 namespace Foam
00053 {
00054
00055 template<class ParcelType>
00056 class ThermoParcel;
00057
00058 template<class ParcelType>
00059 Ostream& operator<<
00060 (
00061 Ostream&,
00062 const ThermoParcel<ParcelType>&
00063 );
00064
00065
00066
00067
00068
00069 template<class ParcelType>
00070 class ThermoParcel
00071 :
00072 public KinematicParcel<ParcelType>
00073 {
00074 public:
00075
00076
00077 class constantProperties
00078 :
00079 public KinematicParcel<ParcelType>::constantProperties
00080 {
00081
00082
00083
00084
00085 const scalar T0_;
00086
00087
00088 const scalar TMin_;
00089
00090
00091 const scalar cp0_;
00092
00093
00094 const scalar epsilon0_;
00095
00096
00097 const scalar f0_;
00098
00099
00100 const scalar Pr_;
00101
00102
00103 public:
00104
00105
00106 constantProperties(const dictionary& parentDict);
00107
00108
00109
00110
00111
00112
00113 inline scalar T0() const;
00114
00115
00116 inline scalar TMin() const;
00117
00118
00119
00120 inline scalar cp0() const;
00121
00122
00123
00124 inline scalar epsilon0() const;
00125
00126
00127
00128 inline scalar f0() const;
00129
00130
00131 inline scalar Pr() const;
00132 };
00133
00134
00135
00136 class trackData
00137 :
00138 public KinematicParcel<ParcelType>::trackData
00139 {
00140
00141
00142
00143
00144 ThermoCloud<ParcelType>& cloud_;
00145
00146
00147 const constantProperties& constProps_;
00148
00149
00150
00151
00152 const interpolation<scalar>& TInterp_;
00153
00154
00155 const interpolation<scalar>& cpInterp_;
00156
00157
00158 public:
00159
00160
00161
00162
00163 inline trackData
00164 (
00165 ThermoCloud<ParcelType>& cloud,
00166 const constantProperties& constProps,
00167 const interpolation<scalar>& rhoInterp,
00168 const interpolation<vector>& UInterp,
00169 const interpolation<scalar>& muInterp,
00170 const interpolation<scalar>& TInterp,
00171 const interpolation<scalar>& cpInterp,
00172 const vector& g
00173 );
00174
00175
00176
00177
00178
00179 inline ThermoCloud<ParcelType>& cloud();
00180
00181
00182 inline const constantProperties& constProps() const;
00183
00184
00185
00186 inline const interpolation<scalar>& TInterp() const;
00187
00188
00189
00190 inline const interpolation<scalar>& cpInterp() const;
00191 };
00192
00193
00194 protected:
00195
00196
00197
00198
00199
00200
00201 scalar T_;
00202
00203
00204 scalar cp_;
00205
00206
00207
00208
00209
00210 scalar Tc_;
00211
00212
00213 scalar cpc_;
00214
00215
00216
00217
00218
00219 template<class TrackData>
00220 scalar calcHeatTransfer
00221 (
00222 TrackData& td,
00223 const scalar dt,
00224 const label cellI,
00225 const scalar Re,
00226 const scalar Pr,
00227 const scalar kappa,
00228 const scalar d,
00229 const scalar rho,
00230 const scalar T,
00231 const scalar cp,
00232 const scalar NCpW,
00233 const scalar Sh,
00234 scalar& dhsTrans
00235 );
00236
00237
00238 public:
00239
00240
00241
00242
00243 static string propHeader;
00244
00245
00246 TypeName("ThermoParcel");
00247
00248
00249 friend class Cloud<ParcelType>;
00250
00251
00252
00253
00254
00255
00256 inline ThermoParcel
00257 (
00258 ThermoCloud<ParcelType>& owner,
00259 const vector& position,
00260 const label cellI
00261 );
00262
00263
00264 inline ThermoParcel
00265 (
00266 ThermoCloud<ParcelType>& owner,
00267 const vector& position,
00268 const label cellI,
00269 const label typeId,
00270 const scalar nParticle0,
00271 const scalar d0,
00272 const vector& U0,
00273 const constantProperties& constProps
00274 );
00275
00276
00277 ThermoParcel
00278 (
00279 const Cloud<ParcelType>& c,
00280 Istream& is,
00281 bool readFields = true
00282 );
00283
00284
00285 ThermoParcel(const ThermoParcel& p);
00286
00287
00288 autoPtr<ThermoParcel> clone() const
00289 {
00290 return autoPtr<ThermoParcel>(new ThermoParcel(*this));
00291 }
00292
00293
00294
00295
00296
00297
00298
00299 inline scalar T() const;
00300
00301
00302 inline scalar cp() const;
00303
00304
00305
00306
00307
00308 inline scalar& T();
00309
00310
00311 inline scalar& cp();
00312
00313
00314
00315
00316
00317 template<class TrackData>
00318 void setCellValues
00319 (
00320 TrackData& td,
00321 const scalar dt,
00322 const label cellI
00323 );
00324
00325
00326 template<class TrackData>
00327 void cellValueSourceCorrection
00328 (
00329 TrackData& td,
00330 const scalar dt,
00331 const label cellI
00332 );
00333
00334
00335 template<class TrackData>
00336 void calcSurfaceValues
00337 (
00338 TrackData& td,
00339 const label cellI,
00340 const scalar T,
00341 scalar& Ts,
00342 scalar& rhos,
00343 scalar& mus,
00344 scalar& Pr,
00345 scalar& kappa
00346 ) const;
00347
00348
00349 template<class TrackData>
00350 void calc
00351 (
00352 TrackData& td,
00353 const scalar dt,
00354 const label cellI
00355 );
00356
00357
00358
00359
00360
00361 static void readFields(Cloud<ParcelType>& c);
00362
00363
00364 static void writeFields(const Cloud<ParcelType>& c);
00365
00366
00367
00368
00369 friend Ostream& operator<< <ParcelType>
00370 (
00371 Ostream&,
00372 const ThermoParcel<ParcelType>&
00373 );
00374 };
00375
00376
00377
00378
00379 }
00380
00381
00382
00383 #include <lagrangianIntermediate/ThermoParcelI.H>
00384
00385
00386
00387 #ifdef NoRepository
00388 #include <lagrangianIntermediate/ThermoParcel.C>
00389 #endif
00390
00391
00392
00393 #endif
00394
00395