MercuryDPM  Alpha
 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-2014, 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 #include "Species/BaseSpecies.h"
29 #include "Math/ExtendedMath.h"
31 
37 {
38 public:
41 
44 
47 
50 
52  void read(std::istream& is);
53 
55  void write(std::ostream& os) const;
56 
58  std::string getBaseName() const;
59 
61  Mdouble getCollisionTime(Mdouble particleDiameter, Mdouble particleDensity, Mdouble relativeVelocity) const;
62 
63 // Species-specific functions
64 
65 // ///Calculates the maximum velocity allowed for a collision of two copies of P (for higher velocities particles could pass through each other)
66 // Mdouble getMaximumVelocity(Mdouble radius, Mdouble mass);
67 //
68 // ///Sets k, disp such that it matches a given tc and eps for a collision of two copies of P
69 // void setStiffnessAndRestitutionCoefficient(Mdouble k_, Mdouble eps, Mdouble mass);
70 //
71 // ///Sets k, disp such that it matches a given tc and eps for a collision of two copies of equal mass m
72 // void setCollisionTimeAndRestitutionCoefficient(Mdouble tc, Mdouble eps, Mdouble mass);
73 //
74 // ///Set k, disp such that is matches a given tc and eps for a collision of two different masses.
75 // ///Recall the resitution constant is a function of k, disp and the mass of each particle in the collision
76 // /// See also setCollisionTimeAndRestitutionCoefficient(Mdouble tc, Mdouble eps, Mdouble mass)
77 // void setCollisionTimeAndRestitutionCoefficient(Mdouble collisionTime, Mdouble restitutionCoefficient, Mdouble mass1, Mdouble mass2);
78 //
79 // /*!
80 // * \brief Calculates collision time for two copies of a particle of given disp, k, mass
81 // */
82 // Mdouble getCollisionTime(Mdouble mass);
83 //
84 // /*!
85 // * \brief Calculates restitution coefficient for two copies of given disp, k, mass
86 // */
87 // Mdouble getRestitutionCoefficient(Mdouble mass);
88 
91 
92 //setters and getters
93 
95  void setElasticModulus(Mdouble elasticModulus);
96 
98 
100  Mdouble getElasticModulus() const;
101 
103  void setDissipation(Mdouble dissipation);
104 
106  Mdouble getDissipation() const;
107 
108 private:
111 
114 };
115 #endif
void setElasticModulus(Mdouble elasticModulus)
Allows the spring constant to be changed.
BaseSpecies is the class from which all other species are derived.
Definition: BaseSpecies.h:44
Mdouble getElasticModulus() const
Allows the spring constant to be accessed.
void mix(HertzianViscoelasticNormalSpecies *const SBase, HertzianViscoelasticNormalSpecies *const TBase)
Calculates collision time for two copies of a particle of given disp, k, mass.
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.
double Mdouble
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 setElasticModulusAndRestitutionCoefficient(Mdouble elasticModulus, Mdouble rest)
Allows the spring constant to be changed.
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...
virtual ~HertzianViscoelasticNormalSpecies()
The default destructor.