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 cfdemCloud_H
00038 #define cfdemCloud_H
00039
00040 #define version16
00041
00042
00043 #include "fvCFD.H"
00044 #include "IFstream.H"
00045
00046 #ifdef version16
00047 #include "turbulenceModel.H"
00048 #endif
00049 #ifdef version16comp
00050 #include "turbulenceModel.H"
00051 #endif
00052 #ifdef version15
00053 #include "RASModel.H"
00054 #endif
00055
00056
00057
00058 namespace Foam
00059 {
00060
00061
00062 class forceModel;
00063 class locateModel;
00064 class voidFractionModel;
00065 class dataExchangeModel;
00066 class IOModel;
00067 class averagingModel;
00068 class momCoupleModel;
00069 class regionModel;
00070 class meshMotionModel;
00071 class liggghtsCommandModel;
00072
00073
00074
00075
00076
00077 class cfdemCloud
00078 {
00079
00080
00081 protected:
00082 const fvMesh& mesh_;
00083
00084 IOdictionary couplingProperties_;
00085
00086 IOdictionary liggghtsCommandDict_;
00087
00088 bool verbous_;
00089
00090 bool ignore_;
00091
00092 const word modelType_;
00093
00094 mutable double **positions_;
00095
00096 mutable double **velocities_;
00097
00098 mutable double **impForces_;
00099
00100 mutable double **expForces_;
00101
00102 mutable double **DEMForces_;
00103
00104 mutable double **radii_;
00105
00106 mutable double **voidfractions_;
00107
00108 mutable double **cellIDs_;
00109
00110 mutable double **particleWeights_;
00111
00112 mutable double **particleVolumes_;
00113
00114 int numberOfParticles_;
00115
00116 bool numberOfParticlesChanged_;
00117
00118 mutable bool arraysReallocated_;
00119
00120 const wordList forceModels_;
00121
00122 const wordList momCoupleModels_;
00123
00124 const wordList liggghtsCommandModelList_;
00125
00126 const word turbulenceModelType_;
00127
00128 #ifdef version16
00129 const incompressible::turbulenceModel& turbulence_;
00130 #endif
00131 #ifdef version16comp
00132 const compressible::turbulenceModel& turbulence_;
00133 #endif
00134 #ifdef version15
00135 const incompressible::RASModel& turbulence_;
00136 #endif
00137
00138 autoPtr<forceModel>* forceModel_;
00139
00140 autoPtr<locateModel> locateModel_;
00141
00142 autoPtr<momCoupleModel>* momCoupleModel_;
00143
00144 autoPtr<dataExchangeModel> dataExchangeModel_;
00145
00146 autoPtr<IOModel> IOModel_;
00147
00148 autoPtr<voidFractionModel> voidFractionModel_;
00149
00150 autoPtr<averagingModel> averagingModel_;
00151
00152 autoPtr<regionModel> regionModel_;
00153
00154 autoPtr<meshMotionModel> meshMotionModel_;
00155
00156 autoPtr<liggghtsCommandModel>* liggghtsCommand_;
00157
00158
00159 virtual void getDEMdata();
00160
00161 virtual void giveDEMdata();
00162
00163
00164
00165 virtual void setNumberOfParticles(int);
00166
00167 virtual void findCells();
00168
00169 virtual void setForces();
00170
00171 public:
00172
00173 friend class dataExchangeModel;
00174 friend class voidFractionModel;
00175
00176
00177
00178
00179 cfdemCloud
00180 (
00181 const fvMesh& mesh
00182 );
00183
00184
00185 virtual ~cfdemCloud();
00186
00187
00188
00189
00190
00191 word modelType(){ return modelType_; };
00192
00193 label particleCell(int);
00194
00195 double d(int);
00196
00197 vector position(int);
00198
00199 vector velocity(int);
00200
00201 virtual const forceModel& forceM(int);
00202
00203 virtual int nrForceModels();
00204
00205 scalar radius(int);
00206
00207 scalar voidfraction(int);
00208
00209 label liggghtsCommandModelIndex(word);
00210
00211 inline const bool& ignore() const;
00212
00213 inline const fvMesh& mesh() const;
00214
00215 inline bool verbous() const;
00216
00217 inline const IOdictionary& couplingProperties() const;
00218
00219 inline double ** positions() const;
00220
00221 inline double ** velocities() const;
00222
00223 inline double ** impForces() const;
00224
00225 inline double ** expForces() const;
00226
00227 inline double ** radii() const;
00228
00229 inline double ** voidfractions() const;
00230
00231 inline void set_radii(double**&) const;
00232
00233 inline double ** cellIDs() const;
00234
00235 inline void set_cellIDs(double**&) const;
00236
00237 inline double ** particleWeights() const;
00238
00239 inline double ** particleVolumes() const;
00240
00241 inline int numberOfParticles() const;
00242
00243 inline bool numberOfParticlesChanged() const;
00244
00245 inline bool arraysReallocated() const;
00246
00247 inline const wordList& forceModels();
00248
00249 inline const voidFractionModel& voidFractionM() const;
00250
00251 inline const locateModel& locateM() const;
00252
00253 inline const momCoupleModel& momCoupleM(int) const;
00254
00255 inline const dataExchangeModel& dataExchangeM() const;
00256
00257 inline const IOModel& IOM() const;
00258
00259 inline const averagingModel& averagingM() const;
00260
00261 inline const regionModel& regionM() const;
00262
00263 inline const meshMotionModel& meshMotionM() const;
00264
00265 inline const wordList& liggghtsCommandModelList() const;
00266
00267 inline autoPtr<liggghtsCommandModel>* liggghtsCommand() const;
00268
00269 #ifdef version16
00270 inline const incompressible::turbulenceModel& turbulence() const;
00271 #endif
00272 #ifdef version16comp
00273 inline const compressible::turbulenceModel& turbulence() const;
00274 #endif
00275 #ifdef version15
00276 inline const incompressible::RASModel& turbulence() const;
00277 #endif
00278
00279
00280
00281
00282 virtual bool evolve(volScalarField&,volVectorField&,volVectorField&);
00283
00284 virtual bool reAllocArrays() const;
00285
00286
00287 void writeScalarFieldToTerminal(double**&);
00288
00289 void writeVectorFieldToTerminal(double**&);
00290
00291
00292 tmp<fvVectorMatrix> divVoidfractionTau(volVectorField& ,volScalarField&) const;
00293
00294 tmp<volScalarField> voidfractionNuEff(volScalarField&) const;
00295
00296 void resetArray(double**&,int,int,double resetVal=0.);
00297 };
00298
00299
00300
00301
00302 }
00303
00304
00305
00306 #include "cfdemCloudI.H"
00307
00308 #endif
00309
00310