WallLocalSpringSliderDashpot.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  Copyright (C) 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::WallLocalSpringSliderDashpot
29 
30 Description
31  Forces between particles and walls, interacting with a spring,
32  slider, damper model
33 
34  Reference:
35  \verbatim
36  "Lagrangian numerical simulation of plug flow of cohesionless
37  particles in a horizontal pipe"
38  Tsuji, Y., Tanaka, T., Ishida, T.,
39  Powder Technology
40  Volume 73, Issue 3, September 1992, pp. 239-250
41  \endverbatim
42 
43 \*---------------------------------------------------------------------------*/
44 
45 #ifndef WallLocalSpringSliderDashpot_H
46 #define WallLocalSpringSliderDashpot_H
47 
48 #include "WallModel.H"
49 
50 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
51 
52 namespace Foam
53 {
54 /*---------------------------------------------------------------------------*\
55  Class WallLocalSpringSliderDashpot Declaration
56 \*---------------------------------------------------------------------------*/
57 
58 template<class CloudType>
60 :
61  public WallModel<CloudType>
62 {
63  // Private data
64 
65  //- Effective Young's modulus value
66  scalarList Estar_;
67 
68  //- Effective shear modulus value
69  scalarList Gstar_;
70 
71  //- alpha-coefficient, related to coefficient of restitution
72  scalarList alpha_;
73 
74  //- Spring power (b = 1 for linear, b = 3/2 for Hertzian)
75  scalarList b_;
76 
77  //- Coefficient of friction in for tangential sliding
78  scalarList mu_;
79 
80  //- Cohesion energy density [J/m^3]
81  scalarList cohesionEnergyDensity_;
82 
83  //- Switch cohesion on and off
84  boolList cohesion_;
85 
86  //- Mapping the patch index to the model data
87  labelList patchMap_;
88 
89  //- Index of the maximum value of Estar_
90  label maxEstarIndex_;
91 
92  //- The number of steps over which to resolve the minimum
93  // harmonic approximation of the collision period
94  scalar collisionResolutionSteps_;
95 
96  //- Volume factor for determining the equivalent size of a
97  // parcel where nParticles is not 1. The equivalent size of
98  // the parcel is
99  // parcelEquivVolume = volumeFactor*nParticles*p.volume()
100  // so
101  // parcelEquivD = cbrt(volumeFactor*nParticles)*p.d()
102  // + When volumeFactor = 1, the particles are compressed
103  // together so that the equivalent volume of the parcel is
104  // the sum of the constituent particles
105  // + When volumeFactor = 3*sqrt(2)/pi, the particles are
106  // close packed, but uncompressed.
107  // + When volumeFactor > 3*sqrt(2)/pi, the particles loosely
108  // grouped.
109  // 3*sqrt(2)/pi = 1.350474 is the volume factor for close
110  // packing, i.e pi/(3*sqrt(2)) is the maximum close packing
111  // factor
112  scalar volumeFactor_;
113 
114  //- Switch to control use of equivalent size particles. Used
115  // because the calculation can be very expensive.
116  bool useEquivalentSize_;
117 
118 
119  // Private Member Functions
120 
121  //- Find the appropriate properties for determining the minimum
122  // allowable timestep
123  void findMinMaxProperties
124  (
125  scalar& rMin,
126  scalar& rhoMax,
127  scalar& vMagMax
128  ) const;
129 
130  //- Calculate the wall interaction for a parcel at a given site
131  void evaluateWall
132  (
133  typename CloudType::parcelType& p,
134  const point& site,
135  const WallSiteData<vector>& data,
136  scalar pREff,
137  bool cohesion
138  ) const;
139 
140 
141 public:
142 
143  //- Runtime type information
144  TypeName("wallLocalSpringSliderDashpot");
145 
146 
147  // Constructors
148 
149  //- Construct from dictionary
151 
152 
153  //- Destructor
154  virtual ~WallLocalSpringSliderDashpot() = default;
155 
156 
157  // Member Functions
158 
159  //- Return the volumeFactor
160  inline scalar volumeFactor() const
161  {
162  return volumeFactor_;
163  }
164 
165  //- Return the effective radius for a particle for the model
166  virtual scalar pREff(const typename CloudType::parcelType& p) const;
167 
168  //- Whether the WallModel has a timestep limit that will
169  // require subCycling
170  virtual bool controlsTimestep() const;
171 
172  //- For WallModels that control the timestep, calculate the
173  // number of subCycles needed to satisfy the minimum
174  // allowable timestep
175  virtual label nSubCycles() const;
176 
177  //- Calculate the wall interaction for a parcel
178  virtual void evaluateWall
179  (
180  typename CloudType::parcelType& p,
181  const List<point>& flatSitePoints,
182  const List<WallSiteData<vector>>& flatSiteData,
183  const List<point>& sharpSitePoints,
184  const List<WallSiteData<vector>>& sharpSiteData
185  ) const;
186 };
187 
188 
189 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
190 
191 } // End namespace Foam
192 
193 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
194 
195 #ifdef NoRepository
197 #endif
198 
199 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
200 
201 #endif
202 
203 // ************************************************************************* //
Foam::WallLocalSpringSliderDashpot::nSubCycles
virtual label nSubCycles() const
For WallModels that control the timestep, calculate the.
Definition: WallLocalSpringSliderDashpot.C:298
p
volScalarField & p
Definition: createFieldRefs.H:8
WallModel.H
WallLocalSpringSliderDashpot.C
Foam::WallLocalSpringSliderDashpot
Forces between particles and walls, interacting with a spring, slider, damper model.
Definition: WallLocalSpringSliderDashpot.H:58
Foam::DSMCCloud
Templated base class for dsmc cloud.
Definition: DSMCCloud.H:71
Foam::WallLocalSpringSliderDashpot::WallLocalSpringSliderDashpot
WallLocalSpringSliderDashpot(const dictionary &dict, CloudType &cloud)
Construct from dictionary.
Definition: WallLocalSpringSliderDashpot.C:176
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::cloud
A cloud is a registry collection of lagrangian particles.
Definition: cloud.H:57
Foam::WallLocalSpringSliderDashpot::TypeName
TypeName("wallLocalSpringSliderDashpot")
Runtime type information.
rhoMax
const dimensionedScalar rhoMax
Definition: setRegionFluidFields.H:66
Foam::Vector< scalar >
Foam::WallLocalSpringSliderDashpot::controlsTimestep
virtual bool controlsTimestep() const
Whether the WallModel has a timestep limit that will.
Definition: WallLocalSpringSliderDashpot.C:291
Foam::List< scalar >
Foam::WallLocalSpringSliderDashpot::~WallLocalSpringSliderDashpot
virtual ~WallLocalSpringSliderDashpot()=default
Destructor.
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::WallLocalSpringSliderDashpot::volumeFactor
scalar volumeFactor() const
Return the volumeFactor.
Definition: WallLocalSpringSliderDashpot.H:159
Foam::data
Database for solution data, solver performance and other reduced data.
Definition: data.H:55
Foam::WallLocalSpringSliderDashpot::pREff
virtual scalar pREff(const typename CloudType::parcelType &p) const
Return the effective radius for a particle for the model.
Definition: WallLocalSpringSliderDashpot.C:277