LinearViscoelasticNormalSpecies Class Reference

LinearViscoelasticNormalSpecies contains the parameters used to describe a linear elastic-dissipative normal force. More...

#include <LinearViscoelasticNormalSpecies.h>

+ Inheritance diagram for LinearViscoelasticNormalSpecies:

Public Types

typedef LinearViscoelasticInteraction InteractionType
 The correct Interaction type for this FrictionForceSpecies. More...
 

Public Member Functions

 LinearViscoelasticNormalSpecies ()
 The default constructor. More...
 
 LinearViscoelasticNormalSpecies (const LinearViscoelasticNormalSpecies &p)
 The default copy constructor. More...
 
 ~LinearViscoelasticNormalSpecies ()
 The default destructor. More...
 
void read (std::istream &is)
 Reads the species properties from an input stream. More...
 
void write (std::ostream &os) const
 Writes the species properties to an output stream. More...
 
std::string getBaseName () const
 Used in Species::getName to obtain a unique name for each Species. More...
 
Mdouble getMaximumVelocity (Mdouble radius, Mdouble mass) const
 Calculates the maximum velocity allowed for a collision of two copies of P (for higher velocities particles could pass through each other) More...
 
void setStiffnessAndRestitutionCoefficient (Mdouble k_, Mdouble eps, Mdouble mass)
 Sets k, disp such that it matches a given tc and eps for a collision of two copies of P. More...
 
void setRestitutionCoefficient (double eps, Mdouble mass)
 Sets disp to obtain a restitution coefficient eps for a collision of two particles of mass m. More...
 
void setCollisionTimeAndRestitutionCoefficient (Mdouble tc, Mdouble eps, BaseParticle *p)
 Sets k, disp such that it matches a given tc and eps for a collision of two copies of particle p. More...
 
void setCollisionTimeAndRestitutionCoefficient (Mdouble tc, Mdouble eps, Mdouble mass)
 Sets k, disp such that it matches a given tc and eps for a collision of two copies of equal mass m. More...
 
void setCollisionTimeAndRestitutionCoefficient (Mdouble collisionTime, Mdouble restitutionCoefficient, Mdouble mass1, Mdouble mass2)
 
Mdouble getCollisionTime (Mdouble mass) const
 Calculates collision time for two copies of a particle of given disp, k, mass. More...
 
Mdouble getRestitutionCoefficient (Mdouble mass) const
 Calculates restitution coefficient for two copies of given disp, k, mass. More...
 
void mix (LinearViscoelasticNormalSpecies *SBase, LinearViscoelasticNormalSpecies *TBase)
 creates default values for mixed species More...
 
void setStiffness (Mdouble new_k)
 Allows the spring constant to be changed. More...
 
Mdouble getStiffness () const
 Allows the spring constant to be accessed. More...
 
void setDissipation (Mdouble dissipation)
 Allows the normal dissipation to be changed. More...
 
Mdouble getDissipation () const
 Allows the normal dissipation to be accessed. More...
 
MERCURYDPM_DEPRECATED void setStiffnessAndDissipation (helpers::KAndDisp new_)
 Allows the spring and dissipation constants to be changed simultaneously. More...
 
Mdouble computeTimeStep (Mdouble mass)
 
- Public Member Functions inherited from BaseNormalForce
 BaseNormalForce ()
 
 BaseNormalForce (const BaseNormalForce &p)
 
bool getConstantRestitution () const
 
void setConstantRestitution (bool constantRestitution)
 
virtual void actionsAfterTimeStep (BaseParticle *particle) const
 
- Public Member Functions inherited from BaseForce
BaseSpeciesgetBaseSpecies () const
 
void setBaseSpecies (BaseSpecies *baseSpecies)
 

Private Attributes

Mdouble stiffness_
 (normal) spring constant More...
 
Mdouble dissipation_
 (normal) viscosity More...
 

Detailed Description

LinearViscoelasticNormalSpecies contains the parameters used to describe a linear elastic-dissipative normal force.

See LinearViscoelasticNormalInteraction::computeForce for a description of the force law.

Member Typedef Documentation

◆ InteractionType

The correct Interaction type for this FrictionForceSpecies.

Constructor & Destructor Documentation

◆ LinearViscoelasticNormalSpecies() [1/2]

LinearViscoelasticNormalSpecies::LinearViscoelasticNormalSpecies ( )

The default constructor.

15  : BaseNormalForce()
16 {
17  stiffness_ = 0.0;
18  dissipation_ = 0.0;
19 #ifdef DEBUG_CONSTRUCTOR
20  std::cout<<"LinearViscoelasticNormalSpecies::LinearViscoelasticNormalSpecies() finished"<<std::endl;
21 #endif
22 }
BaseNormalForce()
Definition: BaseNormalForce.h:14
Mdouble dissipation_
(normal) viscosity
Definition: LinearViscoelasticNormalSpecies.h:102
Mdouble stiffness_
(normal) spring constant
Definition: LinearViscoelasticNormalSpecies.h:101

References dissipation_, and stiffness_.

◆ LinearViscoelasticNormalSpecies() [2/2]

LinearViscoelasticNormalSpecies::LinearViscoelasticNormalSpecies ( const LinearViscoelasticNormalSpecies p)

The default copy constructor.

Parameters
[in]thespecies that is copied
29 {
30  stiffness_ = p.stiffness_;
31  dissipation_ = p.dissipation_;
32 #ifdef DEBUG_CONSTRUCTOR
33  std::cout<<"LinearViscoelasticNormalSpecies::LinearViscoelasticNormalSpecies(const LinearViscoelasticNormalSpecies &p) finished"<<std::endl;
34 #endif
35 }
float * p
Definition: Tutorial_Map_using.cpp:9

References dissipation_, p, and stiffness_.

◆ ~LinearViscoelasticNormalSpecies()

LinearViscoelasticNormalSpecies::~LinearViscoelasticNormalSpecies ( )

The default destructor.

38 {
39 #ifdef DEBUG_DESTRUCTOR
40  std::cout<<"LinearViscoelasticNormalSpecies::~LinearViscoelasticNormalSpecies() finished"<<std::endl;
41 #endif
42 }

Member Function Documentation

◆ computeTimeStep()

Mdouble LinearViscoelasticNormalSpecies::computeTimeStep ( Mdouble  mass)
inline
95  {
96  return 0.02 * constants::pi /
97  std::sqrt(stiffness_ / (.5 * mass) - mathsFunc::square(dissipation_ / mass));
98  }
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
const Mdouble pi
Definition: ExtendedMath.h:23
T square(const T val)
squares a number
Definition: ExtendedMath.h:86

References dissipation_, constants::pi, sqrt(), mathsFunc::square(), and stiffness_.

◆ getBaseName()

std::string LinearViscoelasticNormalSpecies::getBaseName ( ) const

Used in Species::getName to obtain a unique name for each Species.

Returns
a string containing the name of the species (minus the word "Species")
67 {
68  return "LinearViscoelastic";
69 }

◆ getCollisionTime()

Mdouble LinearViscoelasticNormalSpecies::getCollisionTime ( Mdouble  mass) const

Calculates collision time for two copies of a particle of given disp, k, mass.

Calculates collision time for two copies of a particle of given disp, k, mass

Parameters
[in]massmass of a typical particle
117 {
118  if (getConstantRestitution()) mass = 1;
119  if (mass <= 0)
120  {
121  logger(ERROR, "Warning in getCollisionTime(%) mass is not set or has an unexpected value, "
122  "(getCollisionTime(%)", mass, mass);
123  }
124  if (stiffness_ <= 0)
125  {
126  logger(ERROR, "Error in getCollisionTime(%) stiffness=% is not set or has an unexpected value "
127  "(getCollisionTime(%), with stiffness=%)",
128  mass, stiffness_, mass, stiffness_);
129  }
130  if (dissipation_ < 0)
131  {
132  logger(ERROR, "Error in getCollisionTime(%) dissipation=% is not set or has an unexpected value "
133  "(getCollisionTime(%), with dissipation=%)",
134  mass, dissipation_, mass, dissipation_);
135  }
136  Mdouble tosqrt = stiffness_ / (.5 * mass) - mathsFunc::square(dissipation_ / mass);
137  if (tosqrt <= 0)
138  {
139  logger(ERROR, "Warning in getCollisionTime(%) values for mass, stiffness and dissipation would lead to an "
140  "overdamped system, (getCollisionTime(%), with stiffness=% and dissipation=%",
141  mass, mass, stiffness_, dissipation_);
142  }
143  return constants::pi / std::sqrt(tosqrt);
144 }
double Mdouble
Definition: GeneralDefine.h:13
Logger< MERCURYDPM_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here.
@ ERROR
bool getConstantRestitution() const
Definition: BaseNormalForce.h:25

References dissipation_, ERROR, BaseNormalForce::getConstantRestitution(), logger, constants::pi, sqrt(), mathsFunc::square(), and stiffness_.

Referenced by RotatingDrumBidisperseInitialise::actionsAfterTimeStep(), getRestitutionCoefficient(), main(), MaserRepeatedOutInMPI2Test::MaserRepeatedOutInMPI2Test(), ParticleCreation::ParticleCreation(), RotatingDrumBidisperseInitialise::RotatingDrumBidisperseInitialise(), ShiftingConstantMassFlowMaserBoundarySelfTest::setupInitialConditions(), ShiftingMaserBoundarySelfTest::setupInitialConditions(), ConstantMassFlowMaserBoundaryMixedSpeciesSelfTest::setupInitialConditions(), ConstantMassFlowMaserSelfTest::setupInitialConditions(), SubcriticalMaserBoundarySelfTest::setupInitialConditions(), EllipsoidsBouncingOnWallDemo::setupInitialConditions(), EllipticalSuperQuadricCollision::setupInitialConditions(), SphericalSuperQuadricCollision::setupInitialConditions(), VisualisationTest::setupInitialConditions(), Packing::setupInitialConditions(), Siegen::Siegen(), SubcriticalMaserBoundaryTESTMPI2Test::SubcriticalMaserBoundaryTESTMPI2Test(), and viscoElasticUnitTest::viscoElasticUnitTest().

◆ getDissipation()

◆ getMaximumVelocity()

Mdouble LinearViscoelasticNormalSpecies::getMaximumVelocity ( Mdouble  radius,
Mdouble  mass 
) const

Calculates the maximum velocity allowed for a collision of two copies of P (for higher velocities particles could pass through each other)

155 {
156  return radius * std::sqrt(stiffness_ / (.5 * mass));
157 }
radius
Definition: UniformPSDSelfTest.py:15

References UniformPSDSelfTest::radius, sqrt(), and stiffness_.

Referenced by main().

◆ getRestitutionCoefficient()

Mdouble LinearViscoelasticNormalSpecies::getRestitutionCoefficient ( Mdouble  mass) const

Calculates restitution coefficient for two copies of given disp, k, mass.

148 {
149  if (getConstantRestitution()) mass = 1;
150  return std::exp(-dissipation_ / mass * getCollisionTime(mass));
151 }
Mdouble getCollisionTime(Mdouble mass) const
Calculates collision time for two copies of a particle of given disp, k, mass.
Definition: LinearViscoelasticNormalSpecies.cc:116
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 exp(const bfloat16 &a)
Definition: BFloat16.h:615

References dissipation_, Eigen::bfloat16_impl::exp(), getCollisionTime(), and BaseNormalForce::getConstantRestitution().

Referenced by main(), RotatingDrumBidisperseInitialise::RotatingDrumBidisperseInitialise(), CubicCell::setupInitialConditions(), and SubcriticalMaserBoundaryTESTMPI2Test::SubcriticalMaserBoundaryTESTMPI2Test().

◆ getStiffness()

◆ mix()

void LinearViscoelasticNormalSpecies::mix ( LinearViscoelasticNormalSpecies SBase,
LinearViscoelasticNormalSpecies TBase 
)

creates default values for mixed species

For all parameters we assume that the harmonic mean of the parameters of the original two species is a sensible default.

Parameters
[in]S,Tthe two species whose properties are mixed to create the new species
247 {
248  stiffness_ = BaseSpecies::average(S->getStiffness(), T->getStiffness());
249  dissipation_ = BaseSpecies::average(S->getDissipation(), T->getDissipation());
250 }
static Mdouble average(Mdouble a, Mdouble b)
Returns the harmonic mean of two variables.
Definition: BaseSpecies.cc:89
@ S
Definition: quadtree.h:62

References BaseSpecies::average(), dissipation_, oomph::QuadTreeNames::S, and stiffness_.

◆ read()

void LinearViscoelasticNormalSpecies::read ( std::istream &  is)

Reads the species properties from an input stream.

Parameters
[in]inputstream (typically the restart file)
57 {
58  std::string dummy;
59  is >> dummy >> stiffness_
60  >> dummy >> dissipation_;
61 }
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286

References dissipation_, stiffness_, and oomph::Global_string_for_annotation::string().

◆ setCollisionTimeAndRestitutionCoefficient() [1/3]

void LinearViscoelasticNormalSpecies::setCollisionTimeAndRestitutionCoefficient ( Mdouble  collisionTime,
Mdouble  restitutionCoefficient,
Mdouble  mass1,
Mdouble  mass2 
)

Set k, disp such that is matches a given tc and eps for a collision of two different masses. Recall the resitution constant is a function of k, disp and the mass of each particle in the collision See also setCollisionTimeAndRestitutionCoefficient(Mdouble tc, Mdouble eps, Mdouble mass)

Set k, disp such that is matches a given tc and eps for a collision of two different masses. Recall the resitution constant is a function of k, disp and the mass of each particle in the collision See also setCollisionTimeAndRestitutionCoefficient(Mdouble tc, Mdouble eps, Mdouble mass)

Parameters
[in]collisiontime
235 {
236  Mdouble reduced_mass = mass1 * mass2 / (mass1 + mass2);
237  setCollisionTimeAndRestitutionCoefficient(collisionTime, restitutionCoefficient, 2.0 * reduced_mass);
238 }
void setCollisionTimeAndRestitutionCoefficient(Mdouble tc, Mdouble eps, BaseParticle *p)
Sets k, disp such that it matches a given tc and eps for a collision of two copies of particle p.
Definition: LinearViscoelasticNormalSpecies.cc:191

References setCollisionTimeAndRestitutionCoefficient().

◆ setCollisionTimeAndRestitutionCoefficient() [2/3]

void LinearViscoelasticNormalSpecies::setCollisionTimeAndRestitutionCoefficient ( Mdouble  tc,
Mdouble  eps,
BaseParticle p 
)

Sets k, disp such that it matches a given tc and eps for a collision of two copies of particle p.

192 {
193  Mdouble mass = p->getSpecies()->getDensity() * p->getVolume();
195 }
double eps
Definition: crbond_bessel.cc:24

References CRBond_Bessel::eps, and p.

Referenced by BouncingSuperQuadric::BouncingSuperQuadric(), BoundariesSelfTest::BoundariesSelfTest(), CGDisplacementFieldUnitTest::CGDisplacementFieldUnitTest(), CGExactOverlapUnitTest::CGExactOverlapUnitTest(), CGForceDensityUnitTest::CGForceDensityUnitTest(), ChutePeriodicDemo::ChutePeriodicDemo(), ChuteWithWedge::ChuteWithWedge(), FluxAndPeriodicBoundarySelfTest::FluxAndPeriodicBoundarySelfTest(), FluxBoundaryPrescribedDistanceUnitTest::FluxBoundaryPrescribedDistanceUnitTest(), FluxBoundarySelfTest::FluxBoundarySelfTest(), FluxBoundaryUnitTest::FluxBoundaryUnitTest(), main(), MaserRepeatedOutInMPI2Test::MaserRepeatedOutInMPI2Test(), MinimalExampleDrum::MinimalExampleDrum(), SilbertPeriodic::set_study(), SlidingFrictionSpecies::setCollisionTimeAndNormalAndTangentialRestitutionCoefficient(), SlidingFrictionSpecies::setCollisionTimeAndNormalAndTangentialRestitutionCoefficientNoDispt(), setCollisionTimeAndRestitutionCoefficient(), ChutePeriodic::setup(), MarbleRun::setupInitialConditions(), ShiftingConstantMassFlowMaserBoundarySelfTest::setupInitialConditions(), ShiftingMaserBoundarySelfTest::setupInitialConditions(), PolydisperseInsertionBoundarySelfTest::setupInitialConditions(), Packing::setupInitialConditions(), MovingIntersectionOfWallsUnitTest_Basic::setupInitialConditions(), WallSpecies::setupInitialConditions(), and SubcriticalMaserBoundaryTESTMPI2Test::SubcriticalMaserBoundaryTESTMPI2Test().

◆ setCollisionTimeAndRestitutionCoefficient() [3/3]

void LinearViscoelasticNormalSpecies::setCollisionTimeAndRestitutionCoefficient ( Mdouble  tc,
Mdouble  eps,
Mdouble  mass 
)

Sets k, disp such that it matches a given tc and eps for a collision of two copies of equal mass m.

Sets k, disp such that it matches a given tc and eps for a collision of two copies of equal mass m

Parameters
[in]tccollision time
[in]epsrestitution coefficient
[in]massharmonic average particle mass, \(\frac{2}{1/m1+1/m2}\)
205 {
206  logger.assert_always(tc>0, "collision time has to be positive");
207  logger.assert_always(eps>=0 && eps<=1, "restitution has to be in [0,1]");
208  logger.assert_always(mass>0, "mass has to be positive");
209  if (getConstantRestitution()) mass = 1;
210  if (eps == 0.0)
211  {
212  stiffness_ = .5 * mass * mathsFunc::square(constants::pi / tc);
213  dissipation_ = std::sqrt(2.0 * mass * stiffness_);
214  }
215  else
216  {
217  dissipation_ = -mass / tc * mathsFunc::log(eps);
218  stiffness_ = .5 * mass * (mathsFunc::square(constants::pi / tc)
219  + mathsFunc::square(dissipation_ / mass));
220  }
221  logger(INFO,
222  "setCollisionTimeAndRestitutionCoefficient: set stiffness to % and dissipation to % to obtain a collision time of % and a restitution coefficient of % for two particles of mass %",
223  getStiffness(), getDissipation(), tc, eps, mass);
224 }
@ INFO
Mdouble getStiffness() const
Allows the spring constant to be accessed.
Definition: LinearViscoelasticNormalSpecies.cc:83
Mdouble getDissipation() const
Allows the normal dissipation to be accessed.
Definition: LinearViscoelasticNormalSpecies.cc:109
Mdouble log(Mdouble Power)
Definition: ExtendedMath.cc:83

References dissipation_, CRBond_Bessel::eps, BaseNormalForce::getConstantRestitution(), getDissipation(), getStiffness(), INFO, mathsFunc::log(), logger, constants::pi, sqrt(), mathsFunc::square(), and stiffness_.

◆ setDissipation()

void LinearViscoelasticNormalSpecies::setDissipation ( Mdouble  dissipation)

Allows the normal dissipation to be changed.

97 {
98  if (dissipation >= 0)
99  {
100  dissipation_ = dissipation;
101  }
102  else
103  {
104  logger(ERROR, "Error in setDissipation(%)", dissipation);
105  }
106 }

References dissipation_, ERROR, and logger.

Referenced by FreeCooling2DinWallsDemo::actionsAfterTimeStep(), FreeCooling3DDemoProblem::actionsAfterTimeStep(), FreeCooling3DinWallsDemo::actionsAfterTimeStep(), FreeCoolingDemoProblem::actionsAfterTimeStep(), Slide::create_rough_wall(), ParameterStudy1DDemo::createSpecies(), ParameterStudy2DDemo::createSpecies(), InsertionBoundaryMPI2Test::InsertionBoundaryMPI2Test(), main(), ParticleInclusion::ParticleInclusion(), protectiveWall::protectiveWall(), SpeciesHandler::readOldObject(), RotatingDrumBidisperseInitialise::RotatingDrumBidisperseInitialise(), GranularJet::setSilbert(), setStiffnessAndDissipation(), Drum::setupInitialConditions(), CubicCell::setupInitialConditions(), ConstantMassFlowMaserBoundaryMixedSpeciesSelfTest::setupInitialConditions(), ConstantMassFlowMaserSelfTest::setupInitialConditions(), SubcriticalMaserBoundarySelfTest::setupInitialConditions(), EllipsoidsBouncingOnWallDemo::setupInitialConditions(), EllipticalSuperQuadricCollision::setupInitialConditions(), SphericalSuperQuadricCollision::setupInitialConditions(), VisualisationTest::setupInitialConditions(), ContactDetectionWithWallTester::setupParticleAndWall(), ContactDetectionTester::setupParticles(), SilbertPeriodic::SilbertPeriodic(), and T_protectiveWall::T_protectiveWall().

◆ setRestitutionCoefficient()

void LinearViscoelasticNormalSpecies::setRestitutionCoefficient ( double  eps,
Mdouble  mass 
)

Sets disp to obtain a restitution coefficient eps for a collision of two particles of mass m.

Sets k, disp such that it matches a given tc and eps for a collision of two copies of P

Parameters
[in]stiffnessstiffness
[in]epsrestitution coefficient
[in]masseffective particle mass, \(\frac{2}{1/m1+1/m2}\)
179 {
180  if (getConstantRestitution()) mass = 1;
181  if (eps == 0.0) {
182  dissipation_ = std::sqrt(2.0 * mass * getStiffness());
183  } else {
184  const Mdouble logEps = log(eps);
185  dissipation_ = -std::sqrt(2.0 * mass * getStiffness()
186  / (constants::sqr_pi + mathsFunc::square(logEps))) * logEps;
187  }
188 }
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 log(const bfloat16 &a)
Definition: BFloat16.h:618
const Mdouble sqr_pi
Definition: ExtendedMath.h:25

References dissipation_, CRBond_Bessel::eps, BaseNormalForce::getConstantRestitution(), getStiffness(), Eigen::bfloat16_impl::log(), constants::sqr_pi, sqrt(), and mathsFunc::square().

Referenced by setStiffnessAndRestitutionCoefficient().

◆ setStiffness()

void LinearViscoelasticNormalSpecies::setStiffness ( Mdouble  new_k)

Allows the spring constant to be changed.

73 {
74  if (new_k >= 0)
75  stiffness_ = new_k;
76  else
77  {
78  logger(ERROR, "setStiffness(%) argument has to be non-negative!", new_k);
79  }
80 }

References ERROR, logger, and stiffness_.

Referenced by RotatingDrumBidisperseInitialise::actionsAfterTimeStep(), Slide::create_rough_wall(), ParameterStudy1DDemo::createSpecies(), ParameterStudy2DDemo::createSpecies(), InsertionBoundaryMPI2Test::InsertionBoundaryMPI2Test(), InsertionBoundarySelfTest::InsertionBoundarySelfTest(), main(), ParticleInclusion::ParticleInclusion(), protectiveWall::protectiveWall(), SpeciesHandler::readOldObject(), RotatingDrumBidisperseInitialise::RotatingDrumBidisperseInitialise(), GranularJet::setSilbert(), setStiffnessAndDissipation(), Drum::setupInitialConditions(), CubicCell::setupInitialConditions(), ConstantMassFlowMaserBoundaryMixedSpeciesSelfTest::setupInitialConditions(), ConstantMassFlowMaserSelfTest::setupInitialConditions(), DistributionSelfTest::setupInitialConditions(), DistributionToPSDSelfTest::setupInitialConditions(), InsertionBoundarySelfTest::setupInitialConditions(), MultiplePSDSelfTest::setupInitialConditions(), PSDManualInsertionSelfTest::setupInitialConditions(), SubcriticalMaserBoundarySelfTest::setupInitialConditions(), EllipsoidsBouncingOnWallDemo::setupInitialConditions(), EllipticalSuperQuadricCollision::setupInitialConditions(), SphericalSuperQuadricCollision::setupInitialConditions(), VisualisationTest::setupInitialConditions(), ParticleParticleInteraction::setupInitialConditions(), ParticleWallInteraction::setupInitialConditions(), PSDSelfTest::setupInitialConditions(), PeriodicWallsWithSlidingFrictionUnitTest::setupInitialConditions(), SeparateFilesSelfTest::setupInitialConditions(), ContactDetectionWithWallTester::setupParticleAndWall(), ContactDetectionTester::setupParticles(), SilbertPeriodic::SilbertPeriodic(), and T_protectiveWall::T_protectiveWall().

◆ setStiffnessAndDissipation()

void LinearViscoelasticNormalSpecies::setStiffnessAndDissipation ( helpers::KAndDisp  new_)

Allows the spring and dissipation constants to be changed simultaneously.

90 {
91  setStiffness(new_.k);
92  setDissipation(new_.disp);
93 }
void setDissipation(Mdouble dissipation)
Allows the normal dissipation to be changed.
Definition: LinearViscoelasticNormalSpecies.cc:96
void setStiffness(Mdouble new_k)
Allows the spring constant to be changed.
Definition: LinearViscoelasticNormalSpecies.cc:72
Mdouble k
Definition: FormulaHelpers.h:18
Mdouble disp
Definition: FormulaHelpers.h:19

References helpers::KAndDisp::disp, helpers::KAndDisp::k, setDissipation(), and setStiffness().

◆ setStiffnessAndRestitutionCoefficient()

void LinearViscoelasticNormalSpecies::setStiffnessAndRestitutionCoefficient ( Mdouble  stiffness,
Mdouble  eps,
Mdouble  mass 
)

Sets k, disp such that it matches a given tc and eps for a collision of two copies of P.

Sets k, disp such that it matches a given tc and eps for a collision of two copies of P

Parameters
[in]stiffnessstiffness
[in]epsrestitution coefficient
[in]harmonicmean of particle masses, \(\frac{2}{1/m1+1/m2}\)
166 {
167  if (getConstantRestitution()) mass = 1;
168  stiffness_ = stiffness;
170 }
void setRestitutionCoefficient(double eps, Mdouble mass)
Sets disp to obtain a restitution coefficient eps for a collision of two particles of mass m.
Definition: LinearViscoelasticNormalSpecies.cc:178

References CRBond_Bessel::eps, BaseNormalForce::getConstantRestitution(), setRestitutionCoefficient(), and stiffness_.

Referenced by main(), ParticleCreation::ParticleCreation(), SilbertPeriodic::set_study(), Packing::setupInitialConditions(), Siegen::Siegen(), StressStrainControl::StressStrainControl(), and viscoElasticUnitTest::viscoElasticUnitTest().

◆ write()

void LinearViscoelasticNormalSpecies::write ( std::ostream &  os) const

Writes the species properties to an output stream.

Parameters
[out]outputstream (typically the restart file)
48 {
49  os << " stiffness " << stiffness_
50  << " dissipation " << dissipation_;
51 }

References dissipation_, and stiffness_.

Member Data Documentation

◆ dissipation_

◆ stiffness_


The documentation for this class was generated from the following files: