WallSpringSliderDashpot.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-2016 OpenFOAM Foundation
9 -------------------------------------------------------------------------------
10 License
11  This file is part of OpenFOAM.
12 
13  OpenFOAM is free software: you can redistribute it and/or modify it
14  under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21  for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 
26 Class
27  Foam::WallSpringSliderDashpot
28 
29 Description
30  Forces between particles and walls, interacting with a spring,
31  slider, damper model
32 
33  Reference:
34  \verbatim
35  "Lagrangian numerical simulation of plug flow of cohesionless
36  particles in a horizontal pipe"
37  Tsuji, Y., Tanaka, T., Ishida, T.,
38  Powder Technology
39  Volume 73, Issue 3, September 1992, pp. 239-250
40  \endverbatim
41 
42 \*---------------------------------------------------------------------------*/
43 
44 #ifndef WallSpringSliderDashpot_H
45 #define WallSpringSliderDashpot_H
46 
47 #include "WallModel.H"
48 
49 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
50 
51 namespace Foam
52 {
53 /*---------------------------------------------------------------------------*\
54  Class WallSpringSliderDashpot Declaration
55 \*---------------------------------------------------------------------------*/
56 
57 template<class CloudType>
59 :
60  public WallModel<CloudType>
61 {
62  // Private data
63 
64  //- Effective Young's modulus value
65  scalar Estar_;
66 
67  //- Effective shear modulus value
68  scalar Gstar_;
69 
70  //- alpha-coefficient, related to coefficient of restitution
71  scalar alpha_;
72 
73  //- Spring power (b = 1 for linear, b = 3/2 for Hertzian)
74  scalar b_;
75 
76  //- Coefficient of friction in for tangential sliding
77  scalar mu_;
78 
79  //- Cohesion energy density [J/m^3]
80  scalar cohesionEnergyDensity_;
81 
82  // Switch cohesion on and off
83  bool cohesion_;
84 
85  //- The number of steps over which to resolve the minimum
86  // harmonic approximation of the collision period
87  scalar collisionResolutionSteps_;
88 
89  //- Volume factor for determining the equivalent size of a
90  // parcel where nParticles is not 1. The equivalent size of
91  // the parcel is
92  // parcelEquivVolume = volumeFactor*nParticles*p.volume()
93  // so
94  // parcelEquivD = cbrt(volumeFactor*nParticles)*p.d()
95  // + When volumeFactor = 1, the particles are compressed
96  // together so that the equivalent volume of the parcel is
97  // the sum of the constituent particles
98  // + When volumeFactor = 3*sqrt(2)/pi, the particles are
99  // close packed, but uncompressed.
100  // + When volumeFactor > 3*sqrt(2)/pi, the particles loosely
101  // grouped.
102  // 3*sqrt(2)/pi = 1.350474 is the volume factor for close
103  // packing, i.e pi/(3*sqrt(2)) is the maximum close packing
104  // factor
105  scalar volumeFactor_;
106 
107  //- Switch to control use of equivalent size particles. Used
108  // because the calculation can be very expensive.
109  bool useEquivalentSize_;
110 
111 
112  // Private Member Functions
113 
114  //- Find the appropriate properties for determining the minimum
115  // allowable timestep
116  void findMinMaxProperties
117  (
118  scalar& rMin,
119  scalar& rhoMax,
120  scalar& vMagMax
121  ) const;
122 
123  //- Calculate the wall interaction for a parcel at a given site
124  void evaluateWall
125  (
126  typename CloudType::parcelType& p,
127  const point& site,
128  const WallSiteData<vector>& data,
129  scalar pREff,
130  scalar kN,
131  bool cohesion
132  ) const;
133 
134 
135 public:
136 
137  //- Runtime type information
138  TypeName("wallSpringSliderDashpot");
139 
140 
141  // Constructors
142 
143  //- Construct from dictionary
145 
146 
147  //- Destructor
148  virtual ~WallSpringSliderDashpot();
149 
150 
151  // Member Functions
152 
153  //- Return the volumeFactor
154  inline scalar volumeFactor() const
155  {
156  return volumeFactor_;
157  }
158 
159  //- Return the effective radius for a particle for the model
160  virtual scalar pREff(const typename CloudType::parcelType& p) const;
161 
162  //- Whether the WallModel has a timestep limit that will
163  // require subCycling
164  virtual bool controlsTimestep() const;
165 
166  //- For WallModels that control the timestep, calculate the
167  // number of subCycles needed to satisfy the minimum
168  // allowable timestep
169  virtual label nSubCycles() const;
170 
171  //- Calculate the wall interaction for a parcel
172  virtual void evaluateWall
173  (
174  typename CloudType::parcelType& p,
175  const List<point>& flatSitePoints,
176  const List<WallSiteData<vector>>& flatSiteData,
177  const List<point>& sharpSitePoints,
178  const List<WallSiteData<vector>>& sharpSiteData
179  ) const;
180 };
181 
182 
183 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
184 
185 } // End namespace Foam
186 
187 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
188 
189 #ifdef NoRepository
190  #include "WallSpringSliderDashpot.C"
191 #endif
192 
193 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
194 
195 #endif
196 
197 // ************************************************************************* //
Foam::WallSpringSliderDashpot::~WallSpringSliderDashpot
virtual ~WallSpringSliderDashpot()
Destructor.
Definition: WallSpringSliderDashpot.C:207
p
volScalarField & p
Definition: createFieldRefs.H:8
WallModel.H
Foam::WallSpringSliderDashpot::controlsTimestep
virtual bool controlsTimestep() const
Whether the WallModel has a timestep limit that will.
Definition: WallSpringSliderDashpot.C:229
WallSpringSliderDashpot.C
Foam::WallSpringSliderDashpot::pREff
virtual scalar pREff(const typename CloudType::parcelType &p) const
Return the effective radius for a particle for the model.
Definition: WallSpringSliderDashpot.C:215
Foam::DSMCCloud
Templated base class for dsmc cloud.
Definition: DSMCCloud.H:71
Foam::WallSpringSliderDashpot::nSubCycles
virtual label nSubCycles() const
For WallModels that control the timestep, calculate the.
Definition: WallSpringSliderDashpot.C:236
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:123
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::WallModel
Templated wall interaction class.
Definition: PairCollision.H:56
Foam::WallSiteData
Stores the patch ID and templated data to represent a collision with a wall to be passed to the wall ...
Definition: WallSiteData.H:52
Foam::WallSpringSliderDashpot::TypeName
TypeName("wallSpringSliderDashpot")
Runtime type information.
Foam::cloud
A cloud is a registry collection of lagrangian particles.
Definition: cloud.H:57
Foam::WallSpringSliderDashpot
Forces between particles and walls, interacting with a spring, slider, damper model.
Definition: WallSpringSliderDashpot.H:57
rhoMax
const dimensionedScalar rhoMax
Definition: setRegionFluidFields.H:66
Foam::Vector< scalar >
Foam::List
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Definition: BitOps.H:63
Foam::DSMCCloud::parcelType
ParcelType parcelType
Type of parcel the cloud was instantiated for.
Definition: DSMCCloud.H:220
Foam::WallModel::dict
const dictionary & dict() const
Return the dictionary.
Definition: WallModel.C:72
Foam::WallSpringSliderDashpot::WallSpringSliderDashpot
WallSpringSliderDashpot(const dictionary &dict, CloudType &cloud)
Construct from dictionary.
Definition: WallSpringSliderDashpot.C:160
Foam::WallSpringSliderDashpot::volumeFactor
scalar volumeFactor() const
Return the volumeFactor.
Definition: WallSpringSliderDashpot.H:153
Foam::data
Database for solution data, solver performance and other reduced data.
Definition: data.H:55