46 #include "OFversion.H"
52 #if defined(version21) || defined(version16ext)
53 #include "turbulenceModel.H"
54 #elif defined(version15)
66 class voidFractionModel;
67 class dataExchangeModel;
74 class meshMotionModel;
75 class liggghtsCommandModel;
88 IOdictionary couplingProperties_;
90 IOdictionary liggghtsCommandDict_;
98 const word modelType_;
100 mutable double **positions_;
102 mutable double **velocities_;
104 mutable double **fluidVel_;
106 mutable double **fAcc_;
108 mutable double **impForces_;
110 mutable double **expForces_;
112 mutable double **DEMForces_;
114 mutable double **Cds_;
116 mutable double **radii_;
118 mutable double **voidfractions_;
120 mutable double **cellIDs_;
122 mutable double **particleWeights_;
124 mutable double **particleVolumes_;
126 mutable double **particleV_;
128 int numberOfParticles_;
132 bool numberOfParticlesChanged_;
134 mutable bool arraysReallocated_;
136 const wordList forceModels_;
138 const wordList momCoupleModels_;
140 const wordList liggghtsCommandModelList_;
142 const word turbulenceModelType_;
152 mutable scalar imExSplitFactor_;
154 mutable bool treatVoidCellsAsExplicitForce_;
156 bool useDDTvoidfraction_;
158 mutable volScalarField ddtVoidfraction_;
160 #if defined(version21) || defined(version16ext)
162 const compressible::turbulenceModel& turbulence_;
164 const incompressible::turbulenceModel& turbulence_;
166 #elif defined(version15)
167 const incompressible::RASModel& turbulence_;
170 autoPtr<forceModel>* forceModel_;
172 autoPtr<locateModel> locateModel_;
174 autoPtr<momCoupleModel>* momCoupleModel_;
176 autoPtr<dataExchangeModel> dataExchangeModel_;
178 autoPtr<IOModel> IOModel_;
180 autoPtr<probeModel> probeModel_;
182 autoPtr<voidFractionModel> voidFractionModel_;
184 autoPtr<averagingModel> averagingModel_;
186 autoPtr<clockModel> clockModel_;
188 autoPtr<smoothingModel> smoothingModel_;
190 autoPtr<meshMotionModel> meshMotionModel_;
192 autoPtr<liggghtsCommandModel>* liggghtsCommand_;
195 virtual void getDEMdata();
197 virtual void giveDEMdata();
199 virtual void setNumberOfParticles(
int);
201 virtual void findCells();
203 virtual void setForces();
205 virtual void setParticleForceField();
207 virtual void setVectorAverages();
232 void setPos(
double **&);
234 word modelType(){
return modelType_; };
236 label particleCell(
int);
238 vector position(
int);
240 vector velocity(
int);
242 vector fluidVel(
int);
246 virtual int nrForceModels();
248 scalar voidfraction(
int);
250 label liggghtsCommandModelIndex(word);
252 inline void setCG(
double)
const;
254 inline const scalar& cg()
const;
256 inline const bool& impDEMdrag()
const;
258 inline const bool& impDEMdragAcc()
const;
260 inline const scalar& imExSplitFactor()
const;
262 inline const bool& treatVoidCellsAsExplicitForce()
const;
264 inline const bool& ignore()
const;
266 inline const fvMesh& mesh()
const;
268 inline bool solveFlow()
const;
270 inline bool verbose()
const;
272 inline const IOdictionary& couplingProperties()
const;
274 inline double ** positions()
const;
276 inline double ** velocities()
const;
278 inline double ** fluidVels()
const;
280 inline double ** fAccs()
const;
282 inline double ** impForces()
const;
284 inline double ** expForces()
const;
286 inline double ** DEMForces()
const;
288 inline double ** Cds()
const;
290 inline double ** radii()
const;
292 inline double ** voidfractions()
const;
294 inline void get_radii(
double**&)
const;
296 inline double ** cellIDs()
const;
298 inline void get_cellIDs(
double**&)
const;
300 inline double ** particleWeights()
const;
302 virtual inline label body(
int);
304 virtual inline double particleVolume(
int);
306 inline scalar radius(
int);
308 virtual inline double d(
int);
310 inline scalar d32(
bool recalc=
true);
311 virtual inline double dMin() {
return -1;}
312 virtual inline double dMax() {
return -1;}
313 virtual inline int minType() {
return -1;}
314 virtual inline int maxType() {
return -1;}
315 virtual inline bool multipleTypesDMax() {
return false;}
316 virtual inline bool multipleTypesDMin() {
return false;}
317 virtual inline double ** particleDensity()
const {
return NULL;};
318 virtual inline int ** particleTypes()
const {
return NULL;};
319 virtual label particleType(label index)
const {
return -1;};
322 virtual inline double ** DEMTorques()
const {
return NULL;};
323 virtual inline double ** omegaArray()
const {
return NULL;};
324 virtual vector omega(
int)
const {
return Foam::vector(0,0,0);};
327 virtual inline double ** exArray()
const {
return NULL;};
328 virtual vector ex(
int)
const {
return Foam::vector(0,0,0);};
331 virtual inline bool SRFOn(){
return false;}
333 inline int numberOfParticles()
const;
335 inline bool numberOfParticlesChanged()
const;
337 inline int numberOfClumps()
const;
339 inline bool arraysReallocated()
const;
341 inline const wordList& forceModels();
351 inline const IOModel& IOM()
const;
363 inline const wordList& liggghtsCommandModelList()
const;
365 inline autoPtr<liggghtsCommandModel>* liggghtsCommand()
const;
367 #if defined(version21) || defined(version16ext)
369 inline const compressible::turbulenceModel& turbulence()
const;
371 inline const incompressible::turbulenceModel& turbulence()
const;
373 #elif defined(version15)
374 inline const incompressible::RASModel& turbulence()
const;
380 virtual bool evolve(volScalarField&,volVectorField&,volVectorField&);
382 virtual bool reAllocArrays()
const;
384 virtual bool reAllocArrays(
int nP,
bool forceRealloc)
const;
388 void writeScalarFieldToTerminal(
double**&);
390 void writeVectorFieldToTerminal(
double**&);
393 tmp<fvVectorMatrix> divVoidfractionTau(volVectorField& ,volScalarField&)
const;
395 tmp<volScalarField> ddtVoidfraction()
const;
397 void calcDdtVoidfraction(volScalarField& voidfraction)
const;
401 tmp<volScalarField> voidfractionNuEff(volScalarField&)
const;
403 void resetArray(
double**&,
int,
int,
double resetVal=0.);
405 std::vector< std::vector<double*> >* getVprobe();
407 std::vector< std::vector<double> >* getSprobe();
418 #include "cfdemCloudI.H"
Definition: averagingModel.H:54
Definition: meshMotionModel.H:53
Definition: dataExchangeModel.H:53
Definition: momCoupleModel.H:54
Definition: clockModel.H:58
Definition: forceSubModel.H:54
Definition: smoothingModel.H:54
Definition: cfdemCloud.H:81
Definition: voidFractionModel.H:56
Definition: forceModel.H:55
Definition: probeModel.H:54
Definition: locateModel.H:53