MercuryDPM  Trunk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
HertzianViscoelasticNormalSpecies.h
Go to the documentation of this file.
1 //Copyright (c) 2013-2020, The MercuryDPM Developers Team. All rights reserved.
2 //For the list of developers, see <http://www.MercuryDPM.org/Team>.
3 //
4 //Redistribution and use in source and binary forms, with or without
5 //modification, are permitted provided that the following conditions are met:
6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above copyright
9 // notice, this list of conditions and the following disclaimer in the
10 // documentation and/or other materials provided with the distribution.
11 // * Neither the name MercuryDPM nor the
12 // names of its contributors may be used to endorse or promote products
13 // derived from this software without specific prior written permission.
14 //
15 //THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16 //ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 //WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 //DISCLAIMED. IN NO EVENT SHALL THE MERCURYDPM DEVELOPERS TEAM BE LIABLE FOR ANY
19 //DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 //(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 //LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22 //ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 //(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24 //SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 
26 #ifndef HertzianViscoelasticNormalSpecies_H
27 #define HertzianViscoelasticNormalSpecies_H
28 
30 #include "Math/ExtendedMath.h"
32 
38 {
39 public:
42 
45 
48 
51 
53  void read(std::istream& is);
54 
56  void write(std::ostream& os) const;
57 
59  std::string getBaseName() const;
60 
62  Mdouble getCollisionTime(Mdouble particleDiameter, Mdouble particleDensity, Mdouble relativeVelocity) const;
63 
64 // Species-specific functions
65 
66 // ///Calculates the maximum velocity allowed for a collision of two copies of P (for higher velocities particles could pass through each other)
67 // Mdouble getMaximumVelocity(Mdouble radius, Mdouble mass);
68 //
69 // ///Sets k, disp such that it matches a given tc and eps for a collision of two copies of P
70 // void setStiffnessAndRestitutionCoefficient(Mdouble k_, Mdouble eps, Mdouble mass);
71 //
72 // ///Sets k, disp such that it matches a given tc and eps for a collision of two copies of equal mass m
73 // void setCollisionTimeAndRestitutionCoefficient(Mdouble tc, Mdouble eps, Mdouble mass);
74 //
75 // ///Set k, disp such that is matches a given tc and eps for a collision of two different masses.
76 // ///Recall the resitution constant is a function of k, disp and the mass of each particle in the collision
77 // /// See also setCollisionTimeAndRestitutionCoefficient(Mdouble tc, Mdouble eps, Mdouble mass)
78 // void setCollisionTimeAndRestitutionCoefficient(Mdouble collisionTime, Mdouble restitutionCoefficient, Mdouble mass1, Mdouble mass2);
79 //
80 // /*!
81 // * \brief Calculates collision time for two copies of a particle of given disp, k, mass
82 // */
83 // Mdouble getCollisionTime(Mdouble mass);
84 //
85 // /*!
86 // * \brief Calculates restitution coefficient for two copies of given disp, k, mass
87 // */
88 // Mdouble getRestitutionCoefficient(Mdouble mass);
89 
92 
93 //setters and getters
94 
96  void setEffectiveElasticModulus(Mdouble elasticModulus);
97 
99 
102 
104  void setEffectiveElasticModulusAndPoissonRatio(Mdouble elasticModulus, Mdouble poissonRatio);
105 
107  void setEffectiveElasticModulusAndEffectiveShearModulus(Mdouble elasticModulus, Mdouble shearModulus);
108 
110  void setDissipation(Mdouble dissipation);
111 
113  Mdouble getDissipation() const;
114 
115 private:
118 
121 };
122 
123 #endif
void setEffectiveElasticModulusAndPoissonRatio(Mdouble elasticModulus, Mdouble poissonRatio)
Allows the elastic modulus and the poisson ratio to be changed in order to compute the shear modulus...
double Mdouble
Definition: GeneralDefine.h:34
void setEffectiveElasticModulusAndEffectiveShearModulus(Mdouble elasticModulus, Mdouble shearModulus)
Allows the elastic modulus and the shear modulus to be changed in order to compute the poisson ratio...
Mdouble getCollisionTime(Mdouble particleDiameter, Mdouble particleDensity, Mdouble relativeVelocity) const
Used in Species::getName to obtain a unique name for each Species.
Computes normal forces for a Herztian visco-elastic interaction.
void read(std::istream &is)
Reads the species properties from an input stream.
void setDissipation(Mdouble dissipation)
Allows the normal dissipation to be changed.
HertzianViscoelasticInteraction InteractionType
The correct Interaction type for this FrictionForceSpecies.
HertzianViscoelasticNormalSpecies()
The default constructor.
Mdouble getDissipation() const
Allows the normal dissipation to be accessed.
void setEffectiveElasticModulus(Mdouble elasticModulus)
Allows the spring constant to be changed.
void mix(HertzianViscoelasticNormalSpecies *SBase, HertzianViscoelasticNormalSpecies *TBase)
Calculates collision time for two copies of a particle of given disp, k, mass.
void setEffectiveElasticModulusAndRestitutionCoefficient(Mdouble elasticModulus, Mdouble rest)
Allows the spring constant to be changed.
Mdouble getEffectiveElasticModulus() const
Allows the spring constant to be accessed.
Mdouble dissipation_
normal dissipation constant
std::string getBaseName() const
Used in Species::getName to obtain a unique name for each Species.
void write(std::ostream &os) const
Writes the species properties to an output stream.
HertzianViscoelasticNormalSpecies contains the parameters used to describe a Hertzian normal force (T...
~HertzianViscoelasticNormalSpecies()
The default destructor.