KinematicParcel.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2011-2017 OpenFOAM Foundation
9  Copyright (C) 2016-2019 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 Class
28  Foam::KinematicParcel
29 
30 Group
31  grpLagrangianIntermediateParcels
32 
33 Description
34  Kinematic parcel class with rotational motion (as spherical
35  particles only) and one/two-way coupling with the continuous
36  phase.
37 
38  Sub-models include:
39  - drag
40  - turbulent dispersion
41  - wall interactions
42 
43 SourceFiles
44  KinematicParcelI.H
45  KinematicParcel.C
46  KinematicParcelIO.C
47 
48 \*---------------------------------------------------------------------------*/
49 
50 #ifndef KinematicParcel_H
51 #define KinematicParcel_H
52 
53 #include "particle.H"
54 #include "IOstream.H"
55 #include "autoPtr.H"
56 #include "interpolation.H"
57 #include "demandDrivenEntry.H"
58 
59 // #include "ParticleForceList.H" // TODO
60 
61 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
62 
63 namespace Foam
64 {
65 
66 template<class ParcelType>
67 class KinematicParcel;
68 
69 // Forward declaration of friend functions
70 
71 template<class ParcelType>
72 Ostream& operator<<
73 (
74  Ostream&,
76 );
77 
78 /*---------------------------------------------------------------------------*\
79  Class KinematicParcel Declaration
80 \*---------------------------------------------------------------------------*/
81 
82 template<class ParcelType>
83 class KinematicParcel
84 :
85  public ParcelType
86 {
87  // Private data
88 
89  //- Number of particle tracking attempts before we assume that it stalls
90  static label maxTrackAttempts;
91 
92 public:
93 
94  //- Size in bytes of the fields
95  static const std::size_t sizeofFields;
96 
97 
98  //- Class to hold kinematic particle constant properties
99  class constantProperties
100  {
101  protected:
102 
103  // Protected data
104 
105  //- Constant properties dictionary
106  const dictionary dict_;
107 
108 
109  private:
110 
111  // Private data
112 
113  //- Parcel type id - used for post-processing to flag the type
114  //- of parcels issued by this cloud
115  demandDrivenEntry<label> parcelTypeId_;
116 
117  //- Minimum density [kg/m3]
119 
120  //- Particle density [kg/m3] (constant)
122 
123  //- Minimum parcel mass [kg]
124  demandDrivenEntry<scalar> minParcelMass_;
125 
126 
127  public:
128 
129  // Constructors
130 
131  //- Null constructor
133 
134  //- Copy constructor
136 
137  //- Construct from dictionary
138  constantProperties(const dictionary& parentDict);
139 
140 
141  // Member functions
142 
143  //- Return const access to the constant properties dictionary
144  inline const dictionary& dict() const;
145 
146  //- Return const access to the parcel type id
147  inline label parcelTypeId() const;
148 
149  //- Return const access to the minimum density
150  inline scalar rhoMin() const;
151 
152  //- Return const access to the particle density
153  inline scalar rho0() const;
154 
155  //- Return const access to the minimum parcel mass
156  inline scalar minParcelMass() const;
157  };
158 
159 
160  class trackingData
161  :
162  public ParcelType::trackingData
163  {
164  public:
165 
166  enum trackPart
167  {
171  };
172 
173 
174  private:
175 
176  // Private data
177 
178  // Interpolators for continuous phase fields
179 
180  //- Density interpolator
181  autoPtr<interpolation<scalar>> rhoInterp_;
182 
183  //- Velocity interpolator
185 
186  //- Dynamic viscosity interpolator
188 
189 
190  // Cached continuous phase properties
191 
192  //- Density [kg/m3]
193  scalar rhoc_;
194 
195  //- Velocity [m/s]
196  vector Uc_;
197 
198  //- Viscosity [Pa.s]
199  scalar muc_;
200 
201 
202  //- Local gravitational or other body-force acceleration
203  const vector& g_;
204 
205  //- label specifying which part of the integration
206  //- algorithm is taking place
207  trackPart part_;
208 
209 
210  public:
211 
212  // Constructors
213 
214  //- Construct from components
215  template <class TrackCloudType>
216  inline trackingData
217  (
218  const TrackCloudType& cloud,
220  );
221 
222 
223  // Member functions
224 
225  //- Return const access to the interpolator for continuous
226  //- phase density field
227  inline const interpolation<scalar>& rhoInterp() const;
228 
229  //- Return const access to the interpolator for continuous
230  //- phase velocity field
231  inline const interpolation<vector>& UInterp() const;
232 
233  //- Return const access to the interpolator for continuous
234  //- phase dynamic viscosity field
235  inline const interpolation<scalar>& muInterp() const;
236 
237  //- Return the continuous phase density
238  inline scalar rhoc() const;
239 
240  //- Access the continuous phase density
241  inline scalar& rhoc();
242 
243  //- Return the continuous phase velocity
244  inline const vector& Uc() const;
245 
246  //- Access the continuous phase velocity
247  inline vector& Uc();
248 
249  //- Return the continuous phase viscosity
250  inline scalar muc() const;
251 
252  //- Access the continuous phase viscosity
253  inline scalar& muc();
254 
255  // Return const access to the gravitational acceleration vector
256  inline const vector& g() const;
257 
258  //- Return the part of the tracking operation taking place
259  inline trackPart part() const;
260 
261  //- Return access to the part of the tracking operation taking place
262  inline trackPart& part();
263  };
264 
265 
266 protected:
267 
268  // Protected data
269 
270  // Parcel properties
271 
272  //- Active flag - tracking inactive when active = false
273  // Store as label for data alignment, but only has bool states
274  label active_;
275 
276  //- Parcel type id
277  label typeId_;
278 
279  //- Number of particles in Parcel
280  scalar nParticle_;
281 
282  //- Diameter [m]
283  scalar d_;
284 
285  //- Target diameter [m]
286  scalar dTarget_;
287 
288  //- Velocity of Parcel [m/s]
289  vector U_;
290 
291  //- Density [kg/m3]
292  scalar rho_;
293 
294  //- Age [s]
295  scalar age_;
296 
297  //- Time spent in turbulent eddy [s]
298  scalar tTurb_;
299 
300  //- Turbulent velocity fluctuation [m/s]
301  vector UTurb_;
302 
303 
304  // Protected Member Functions
305 
306  //- Calculate new particle velocity
307  template<class TrackCloudType>
308  const vector calcVelocity
309  (
310  TrackCloudType& cloud,
311  trackingData& td,
312  const scalar dt, // timestep
313  const scalar Re, // Reynolds number
314  const scalar mu, // local carrier viscosity
315  const scalar mass, // mass
316  const vector& Su, // explicit particle momentum source
317  vector& dUTrans, // momentum transfer to carrier
318  scalar& Spu // linearised drag coefficient
319  ) const;
320 
321 
322 public:
323 
324  // Static data members
325 
326  //- Runtime type information
327  TypeName("KinematicParcel");
328 
329  //- String representation of properties
331  (
332  ParcelType,
333  " active"
334  + " typeId"
335  + " nParticle"
336  + " d"
337  + " dTarget"
338  + " (Ux Uy Uz)"
339  + " rho"
340  + " age"
341  + " tTurb"
342  + " (UTurbx UTurby UTurbz)"
343  );
344 
345 
346  // Constructors
347 
348  //- Construct from mesh, coordinates and topology
349  // Other properties initialised as null
350  inline KinematicParcel
351  (
352  const polyMesh& mesh,
353  const barycentric& coordinates,
354  const label celli,
355  const label tetFacei,
356  const label tetPti
357  );
358 
359  //- Construct from a position and a cell, searching for the rest of the
360  // required topology. Other properties are initialised as null.
361  inline KinematicParcel
362  (
363  const polyMesh& mesh,
364  const vector& position,
365  const label celli
366  );
367 
368  //- Construct from components
369  inline KinematicParcel
370  (
371  const polyMesh& mesh,
372  const barycentric& coordinates,
373  const label celli,
374  const label tetFacei,
375  const label tetPti,
376  const label typeId,
377  const scalar nParticle0,
378  const scalar d0,
379  const scalar dTarget0,
380  const vector& U0,
381  const constantProperties& constProps
382  );
383 
384  //- Construct from Istream
386  (
387  const polyMesh& mesh,
388  Istream& is,
389  bool readFields = true,
390  bool newFormat = true
391  );
392 
393  //- Construct as a copy
395 
396  //- Construct as a copy
398 
399  //- Construct and return a (basic particle) clone
400  virtual autoPtr<particle> clone() const
401  {
402  return autoPtr<particle>(new KinematicParcel(*this));
403  }
404 
405  //- Construct and return a (basic particle) clone
406  virtual autoPtr<particle> clone(const polyMesh& mesh) const
407  {
408  return autoPtr<particle>(new KinematicParcel(*this, mesh));
409  }
410 
411  //- Factory class to read-construct particles used for
412  // parallel transfer
413  class iNew
414  {
415  const polyMesh& mesh_;
416 
417  public:
418 
419  iNew(const polyMesh& mesh)
420  :
421  mesh_(mesh)
422  {}
423 
425  {
427  (
428  new KinematicParcel<ParcelType>(mesh_, is, true)
429  );
430  }
431  };
432 
433 
434  // Member Functions
435 
436  // Access
437 
438  //- Return const access to active flag
439  inline bool active() const;
440 
441  //- Return const access to type id
442  inline label typeId() const;
443 
444  //- Return const access to number of particles
445  inline scalar nParticle() const;
446 
447  //- Return const access to diameter
448  inline scalar d() const;
449 
450  //- Return const access to target diameter
451  inline scalar dTarget() const;
452 
453  //- Return const access to velocity
454  inline const vector& U() const;
455 
456  //- Return const access to density
457  inline scalar rho() const;
458 
459  //- Return const access to the age
460  inline scalar age() const;
461 
462  //- Return const access to time spent in turbulent eddy
463  inline scalar tTurb() const;
464 
465  //- Return const access to turbulent velocity fluctuation
466  inline const vector& UTurb() const;
467 
468 
469  // Edit
470 
471  //- Set active flag to the specified state
472  inline void active(const bool state);
473 
474  //- Return access to type id
475  inline label& typeId();
476 
477  //- Return access to number of particles
478  inline scalar& nParticle();
479 
480  //- Return access to diameter
481  inline scalar& d();
482 
483  //- Return access to target diameter
484  inline scalar& dTarget();
485 
486  //- Return access to velocity
487  inline vector& U();
488 
489  //- Return access to density
490  inline scalar& rho();
491 
492  //- Return access to the age
493  inline scalar& age();
494 
495  //- Return access to time spent in turbulent eddy
496  inline scalar& tTurb();
497 
498  //- Return access to turbulent velocity fluctuation
499  inline vector& UTurb();
500 
501 
502  // Helper functions
503 
504  //- Cell owner mass
505  inline scalar massCell(const trackingData& td) const;
506 
507  //- Particle mass
508  inline scalar mass() const;
509 
510  //- Particle moment of inertia around diameter axis
511  inline scalar momentOfInertia() const;
512 
513  //- Particle volume
514  inline scalar volume() const;
515 
516  //- Particle volume for a given diameter
517  inline static scalar volume(const scalar d);
518 
519  //- Particle projected area
520  inline scalar areaP() const;
521 
522  //- Projected area for given diameter
523  inline static scalar areaP(const scalar d);
524 
525  //- Particle surface area
526  inline scalar areaS() const;
527 
528  //- Surface area for given diameter
529  inline static scalar areaS(const scalar d);
530 
531  //- Reynolds number
532  inline scalar Re(const trackingData& td) const;
533 
534  //- Reynolds number for given conditions
535  inline static scalar Re
536  (
537  const scalar rhoc,
538  const vector& U,
539  const vector& Uc,
540  const scalar d,
541  const scalar muc
542  );
543 
544  //- Weber number
545  inline scalar We
546  (
547  const trackingData& td,
548  const scalar sigma
549  ) const;
550 
551  //- Weber number for given conditions
552  inline static scalar We
553  (
554  const scalar rhoc,
555  const vector& U,
556  const vector& Uc,
557  const scalar d,
558  const scalar sigma
559  );
560 
561  //- Eotvos number
562  inline scalar Eo
563  (
564  const trackingData& td,
565  const scalar sigma
566  ) const;
567 
568  //- Eotvos number for given conditions
569  inline static scalar Eo
570  (
571  const vector& g,
572  const scalar rho,
573  const scalar rhoc,
574  const vector& U,
575  const scalar d,
576  const scalar sigma
577  );
578 
579 
580  // Main calculation loop
581 
582  //- Set cell values
583  template<class TrackCloudType>
584  void setCellValues(TrackCloudType& cloud, trackingData& td);
585 
586  //- Apply dispersion to the carrier phase velocity and update
587  // parcel turbulence parameters
588  template<class TrackCloudType>
589  void calcDispersion
590  (
591  TrackCloudType& cloud,
592  trackingData& td,
593  const scalar dt
594  );
595 
596  //- Correct cell values using latest transfer information
597  template<class TrackCloudType>
599  (
600  TrackCloudType& cloud,
601  trackingData& td,
602  const scalar dt
603  );
604 
605  //- Update parcel properties over the time interval
606  template<class TrackCloudType>
607  void calc
608  (
609  TrackCloudType& cloud,
610  trackingData& td,
611  const scalar dt
612  );
613 
614 
615  // Tracking
616 
617  //- Move the parcel
618  template<class TrackCloudType>
619  bool move
620  (
621  TrackCloudType& cloud,
622  trackingData& td,
623  const scalar trackTime
624  );
625 
626 
627  // Patch interactions
628 
629  //- Overridable function to handle the particle hitting a patch
630  // Executed before other patch-hitting functions
631  template<class TrackCloudType>
632  bool hitPatch(TrackCloudType& cloud, trackingData& td);
633 
634  //- Overridable function to handle the particle hitting a
635  // processorPatch
636  template<class TrackCloudType>
637  void hitProcessorPatch(TrackCloudType& cloud, trackingData& td);
638 
639  //- Overridable function to handle the particle hitting a wallPatch
640  template<class TrackCloudType>
641  void hitWallPatch(TrackCloudType& cloud, trackingData& td);
642 
643  //- Transform the physical properties of the particle
644  // according to the given transformation tensor
645  virtual void transformProperties(const tensor& T);
646 
647  //- Transform the physical properties of the particle
648  // according to the given separation vector
649  virtual void transformProperties(const vector& separation);
650 
651 
652  // I-O
653 
654  //- Read
655  template<class TrackCloudType>
656  static void readFields(TrackCloudType& c);
657 
658  //- Write
659  template<class TrackCloudType>
660  static void writeFields(const TrackCloudType& c);
661 
662  //- Write individual parcel properties to stream
663  void writeProperties
664  (
665  Ostream& os,
666  const wordRes& filters,
667  const word& delim,
668  const bool namesOnly = false
669  ) const;
670 
671  //- Read particle fields as objects from the obr registry
672  template<class CloudType>
673  static void readObjects(CloudType& c, const objectRegistry& obr);
674 
675  //- Write particle fields as objects into the obr registry
676  template<class CloudType>
677  static void writeObjects(const CloudType& c, objectRegistry& obr);
678 
679 
680  // Ostream Operator
681 
682  friend Ostream& operator<< <ParcelType>
683  (
684  Ostream&,
686  );
687 };
688 
689 
690 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
691 
692 } // End namespace Foam
693 
694 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
695 
696 #include "KinematicParcelI.H"
698 
699 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
700 
701 #ifdef NoRepository
702  #include "KinematicParcel.C"
703 #endif
704 
705 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
706 
707 #endif
708 
709 // ************************************************************************* //
Foam::KinematicParcel::iNew
Factory class to read-construct particles used for.
Definition: KinematicParcel.H:412
Foam::Tensor< scalar >
Foam::KinematicParcel::constantProperties::parcelTypeId
label parcelTypeId() const
Return const access to the parcel type id.
Definition: KinematicParcelI.H:163
Foam::KinematicParcel::typeId
label typeId() const
Return const access to type id.
Definition: KinematicParcelI.H:203
Foam::KinematicParcel::tTurb_
scalar tTurb_
Time spent in turbulent eddy [s].
Definition: KinematicParcel.H:297
p
volScalarField & p
Definition: createFieldRefs.H:8
Foam::KinematicParcel::trackingData::Uc
const vector & Uc() const
Return the continuous phase velocity.
Definition: KinematicParcelTrackingDataI.H:118
Foam::KinematicParcel::UTurb
const vector & UTurb() const
Return const access to turbulent velocity fluctuation.
Definition: KinematicParcelI.H:259
Foam::KinematicParcel::cellValueSourceCorrection
void cellValueSourceCorrection(TrackCloudType &cloud, trackingData &td, const scalar dt)
Correct cell values using latest transfer information.
Definition: KinematicParcel.C:96
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:62
Foam::constant::physicoChemical::mu
const dimensionedScalar mu
Atomic mass unit.
Definition: createFieldRefs.H:4
Foam::KinematicParcel::Re
scalar Re(const trackingData &td) const
Reynolds number.
Definition: KinematicParcelI.H:403
Foam::KinematicParcel::trackingData::tpVelocityHalfStep
Definition: KinematicParcel.H:167
Foam::KinematicParcel::nParticle
scalar nParticle() const
Return const access to number of particles.
Definition: KinematicParcelI.H:210
Foam::KinematicParcel::trackingData::trackPart
trackPart
Definition: KinematicParcel.H:165
Foam::KinematicParcel::dTarget_
scalar dTarget_
Target diameter [m].
Definition: KinematicParcel.H:285
Foam::KinematicParcel::trackingData
Definition: KinematicParcel.H:159
Foam::KinematicParcel::U
const vector & U() const
Return const access to velocity.
Definition: KinematicParcelI.H:231
Foam::KinematicParcel::tTurb
scalar tTurb() const
Return const access to time spent in turbulent eddy.
Definition: KinematicParcelI.H:252
demandDrivenEntry.H
Foam::KinematicParcel::dTarget
scalar dTarget() const
Return const access to target diameter.
Definition: KinematicParcelI.H:224
Foam::KinematicParcel::calcDispersion
void calcDispersion(TrackCloudType &cloud, trackingData &td, const scalar dt)
Apply dispersion to the carrier phase velocity and update.
Definition: KinematicParcel.C:75
Foam::KinematicParcel::hitWallPatch
void hitWallPatch(TrackCloudType &cloud, trackingData &td)
Overridable function to handle the particle hitting a wallPatch.
Definition: KinematicParcel.C:431
Foam::KinematicParcel::constantProperties::rho0
scalar rho0() const
Return const access to the particle density.
Definition: KinematicParcelI.H:179
interpolation.H
Foam::KinematicParcel::trackingData::g
const vector & g() const
Definition: KinematicParcelTrackingDataI.H:95
Foam::KinematicParcel::Eo
scalar Eo(const trackingData &td, const scalar sigma) const
Eotvos number.
Definition: KinematicParcelI.H:452
Foam::KinematicParcel::clone
virtual autoPtr< particle > clone(const polyMesh &mesh) const
Construct and return a (basic particle) clone.
Definition: KinematicParcel.H:405
Foam::KinematicParcel::trackingData::part
trackPart part() const
Return the part of the tracking operation taking place.
Definition: KinematicParcelTrackingDataI.H:147
Foam::polyMesh
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:77
KinematicParcelI.H
Foam::KinematicParcel::age_
scalar age_
Age [s].
Definition: KinematicParcel.H:294
Foam::objectRegistry
Registry of regIOobjects.
Definition: objectRegistry.H:60
Foam::KinematicParcel::trackingData::tpRotationalTrack
Definition: KinematicParcel.H:169
Foam::KinematicParcel::trackingData::trackingData
trackingData(const TrackCloudType &cloud, trackPart part=tpLinearTrack)
Construct from components.
Definition: KinematicParcelTrackingDataI.H:31
Su
zeroField Su
Definition: alphaSuSp.H:1
Foam::KinematicParcel::writeFields
static void writeFields(const TrackCloudType &c)
Write.
Foam::KinematicParcel::age
scalar age() const
Return const access to the age.
Definition: KinematicParcelI.H:245
Foam::KinematicParcel::calc
void calc(TrackCloudType &cloud, trackingData &td, const scalar dt)
Update parcel properties over the time interval.
Definition: KinematicParcel.C:109
Foam::KinematicParcel::iNew::operator()
autoPtr< KinematicParcel< ParcelType > > operator()(Istream &is) const
Definition: KinematicParcel.H:423
Foam::Istream
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Definition: Istream.H:61
Foam::KinematicParcel::KinematicParcel
KinematicParcel(const polyMesh &mesh, const barycentric &coordinates, const label celli, const label tetFacei, const label tetPti)
Construct from mesh, coordinates and topology.
Definition: KinematicParcelI.H:77
Foam::KinematicParcel::UTurb_
vector UTurb_
Turbulent velocity fluctuation [m/s].
Definition: KinematicParcel.H:300
Foam::KinematicParcel::readObjects
static void readObjects(CloudType &c, const objectRegistry &obr)
Read particle fields as objects from the obr registry.
Definition: KinematicParcelIO.C:302
coordinates
PtrList< coordinateSystem > coordinates(solidRegions.size())
IOstream.H
Foam::T
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
Definition: FieldFieldFunctions.C:58
Foam::Barycentric< scalar >
Foam::KinematicParcel::momentOfInertia
scalar momentOfInertia() const
Particle moment of inertia around diameter axis.
Definition: KinematicParcelI.H:353
Foam::KinematicParcel::volume
scalar volume() const
Particle volume.
Definition: KinematicParcelI.H:360
Foam::KinematicParcel::constantProperties::minParcelMass
scalar minParcelMass() const
Return const access to the minimum parcel mass.
Definition: KinematicParcelI.H:187
Foam::KinematicParcel::areaP
scalar areaP() const
Particle projected area.
Definition: KinematicParcelI.H:374
Foam::DSMCCloud
Templated base class for dsmc cloud.
Definition: DSMCCloud.H:71
Foam::KinematicParcel::trackingData::UInterp
const interpolation< vector > & UInterp() const
Definition: KinematicParcelTrackingDataI.H:79
Foam::interpolation< scalar >
Foam::KinematicParcel::U_
vector U_
Velocity of Parcel [m/s].
Definition: KinematicParcel.H:288
Foam::KinematicParcel::d_
scalar d_
Diameter [m].
Definition: KinematicParcel.H:282
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:121
Foam::KinematicParcel::hitPatch
bool hitPatch(TrackCloudType &cloud, trackingData &td)
Overridable function to handle the particle hitting a patch.
Definition: KinematicParcel.C:376
Foam::KinematicParcel::We
scalar We(const trackingData &td, const scalar sigma) const
Weber number.
Definition: KinematicParcelI.H:427
mesh
dynamicFvMesh & mesh
Definition: createDynamicFvMesh.H:6
Foam::KinematicParcel::nParticle_
scalar nParticle_
Number of particles in Parcel.
Definition: KinematicParcel.H:279
g
const uniformDimensionedVectorField & g
Definition: createFluidFields.H:24
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::KinematicParcel::rho_
scalar rho_
Density [kg/m3].
Definition: KinematicParcel.H:291
Foam::KinematicParcel::writeObjects
static void writeObjects(const CloudType &c, objectRegistry &obr)
Write particle fields as objects into the obr registry.
Definition: KinematicParcelIO.C:345
Foam::KinematicParcel::sizeofFields
static const std::size_t sizeofFields
Size in bytes of the fields.
Definition: KinematicParcel.H:94
Foam::KinematicParcel::active
bool active() const
Return const access to active flag.
Definition: KinematicParcelI.H:196
Foam::KinematicParcel::typeId_
label typeId_
Parcel type id.
Definition: KinematicParcel.H:276
Foam::KinematicParcel::areaS
scalar areaS() const
Particle surface area.
Definition: KinematicParcelI.H:388
Foam::KinematicParcel::hitProcessorPatch
void hitProcessorPatch(TrackCloudType &cloud, trackingData &td)
Overridable function to handle the particle hitting a.
Definition: KinematicParcel.C:419
Foam::KinematicParcel::constantProperties::rhoMin
scalar rhoMin() const
Return const access to the minimum density.
Definition: KinematicParcelI.H:171
Foam::autoPtr
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: HashPtrTable.H:53
Foam::cloud
A cloud is a registry collection of lagrangian particles.
Definition: cloud.H:57
Foam::KinematicParcel::trackingData::muInterp
const interpolation< scalar > & muInterp() const
Definition: KinematicParcelTrackingDataI.H:87
Foam::KinematicParcel::move
bool move(TrackCloudType &cloud, trackingData &td, const scalar trackTime)
Move the parcel.
Definition: KinematicParcel.C:282
Foam::cp
bool cp(const fileName &src, const fileName &dst, const bool followLink=true)
Copy the source to the destination (recursively if necessary).
Definition: MSwindows.C:802
KinematicParcel.C
Foam::KinematicParcel::trackingData::tpLinearTrack
Definition: KinematicParcel.H:168
Foam::Vector< scalar >
Foam::demandDrivenEntry< label >
Foam::KinematicParcel::trackingData::rhoc
scalar rhoc() const
Return the continuous phase density.
Definition: KinematicParcelTrackingDataI.H:103
Foam::KinematicParcel::trackingData::muc
scalar muc() const
Return the continuous phase viscosity.
Definition: KinematicParcelTrackingDataI.H:132
Foam::KinematicParcel::readFields
static void readFields(TrackCloudType &c)
Read.
Foam::wordRes
A List of wordRe with additional matching capabilities.
Definition: wordRes.H:51
Foam::KinematicParcel
Kinematic parcel class with rotational motion (as spherical particles only) and one/two-way coupling ...
Definition: KinematicParcel.H:66
Foam::KinematicParcel::TypeName
TypeName("KinematicParcel")
Runtime type information.
particle.H
Foam::KinematicParcel::constantProperties::dict
const dictionary & dict() const
Return const access to the constant properties dictionary.
Definition: KinematicParcelI.H:155
Foam::KinematicParcel::transformProperties
virtual void transformProperties(const tensor &T)
Transform the physical properties of the particle.
Definition: KinematicParcel.C:441
Foam::constant::universal::c
const dimensionedScalar c
Speed of light in a vacuum.
Foam::KinematicParcel::d
scalar d() const
Return const access to diameter.
Definition: KinematicParcelI.H:217
Foam::KinematicParcel::rho
scalar rho() const
Return const access to density.
Definition: KinematicParcelI.H:238
Foam::KinematicParcel::massCell
scalar massCell(const trackingData &td) const
Cell owner mass.
Definition: KinematicParcelI.H:337
Foam::KinematicParcel::writeProperties
void writeProperties(Ostream &os, const wordRes &filters, const word &delim, const bool namesOnly=false) const
Write individual parcel properties to stream.
Definition: KinematicParcelIO.C:271
Foam::Ostream
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:56
sigma
dimensionedScalar sigma("sigma", dimMass/sqr(dimTime), transportProperties)
Foam::KinematicParcel::setCellValues
void setCellValues(TrackCloudType &cloud, trackingData &td)
Set cell values.
Definition: KinematicParcel.C:45
Foam::KinematicParcel::constantProperties::dict_
const dictionary dict_
Constant properties dictionary.
Definition: KinematicParcel.H:105
Foam::KinematicParcel::clone
virtual autoPtr< particle > clone() const
Construct and return a (basic particle) clone.
Definition: KinematicParcel.H:399
Foam::KinematicParcel::active_
label active_
Active flag - tracking inactive when active = false.
Definition: KinematicParcel.H:273
Foam::KinematicParcel::AddToPropertyList
AddToPropertyList(ParcelType, " active"+" typeId"+" nParticle"+" d"+" dTarget"+" (Ux Uy Uz)"+" rho"+" age"+" tTurb"+" (UTurbx UTurby UTurbz)")
String representation of properties.
Foam::KinematicParcel::constantProperties::constantProperties
constantProperties()
Null constructor.
Definition: KinematicParcelI.H:37
Foam::KinematicParcel::mass
scalar mass() const
Particle mass.
Definition: KinematicParcelI.H:346
Foam::KinematicParcel::trackingData::rhoInterp
const interpolation< scalar > & rhoInterp() const
Definition: KinematicParcelTrackingDataI.H:71
Foam::KinematicParcel::constantProperties
Class to hold kinematic particle constant properties.
Definition: KinematicParcel.H:98
KinematicParcelTrackingDataI.H
Foam::KinematicParcel::iNew::iNew
iNew(const polyMesh &mesh)
Definition: KinematicParcel.H:418
Foam::KinematicParcel::calcVelocity
const vector calcVelocity(TrackCloudType &cloud, trackingData &td, const scalar dt, const scalar Re, const scalar mu, const scalar mass, const vector &Su, vector &dUTrans, scalar &Spu) const
Calculate new particle velocity.
autoPtr.H