ParticleSpecies Class Referenceabstract

#include <ParticleSpecies.h>

+ Inheritance diagram for ParticleSpecies:

Public Types

typedef BaseInteraction InteractionType
 
typedef BaseSpecies MixedSpeciesType
 

Public Member Functions

 ParticleSpecies ()
 The default constructor. More...
 
 ParticleSpecies (const ParticleSpecies &p)
 The default copy constructor. More...
 
 ParticleSpecies (BaseNormalForce *normalForce, BaseFrictionForce *frictionForce, BaseAdhesiveForce *adhesiveForce)
 
 ~ParticleSpecies ()
 The default destructor. More...
 
ParticleSpeciescopy () const override=0
 Creates a deep copy of the object from which it is called. More...
 
virtual BaseSpeciescopyMixed () const =0
 Creates a new MixedSpecies with the same force properties as the Species from which it is called. See Species::copyMixed for details. More...
 
void read (std::istream &is) override
 Reads the species properties from an input stream. More...
 
void write (std::ostream &os) const override
 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...
 
void setDensity (Mdouble density)
 
Mdouble getMassFromRadius (Mdouble radius) const
 
Mdouble getMassFromRadius (const Mdouble radius, SpeciesHandler &speciesHandler)
 
Mdouble getVolumeFromRadius (Mdouble radius) const
 
Mdouble getDensity () const
 Allows density_ to be accessed. More...
 
void computeMass (BaseParticle *p) const
 Compute Particle mass function, which required a reference to the Species vector. It computes the Particles mass, Inertia and the inverses. More...
 
void setTemperatureDependentDensity (const std::function< double(double)> &temperatureDependentDensity)
 
const std::function< double(double)> & getTemperatureDependentDensity () const
 
Mdouble getSmallestParticleMass () const
 Computes mass of the lightest particle (by mass) belonging to this species. This computation calls getLightestInverseParticleMassLocal, such that the computation is done on each node. More...
 
Mdouble getMaxInteractionDistance () const
 returns the largest separation distance at which adhesive short-range forces can occur. More...
 
void setMaxInteractionDistance (Mdouble interactionDistance=0)
 Sets maxInteractionDistance_. More...
 
const BaseSpeciesgetMixedSpecies (const ParticleSpecies *s) const
 
virtual void actionsAfterTimeStep (BaseParticle *particle) const
 
- Public Member Functions inherited from BaseSpecies
 BaseSpecies ()
 The default constructor. More...
 
 BaseSpecies (BaseNormalForce *normalForce, BaseFrictionForce *frictionForce_, BaseAdhesiveForce *adhesiveForce)
 
 BaseSpecies (const BaseSpecies &p)
 The copy constructor. More...
 
 ~BaseSpecies ()
 The default destructor. More...
 
virtual void copyInto (BaseSpecies *s) const =0
 
void setHandler (SpeciesHandler *handler)
 Sets the pointer to the handler to which this species belongs. More...
 
SpeciesHandlergetHandler () const
 Returns the pointer to the handler to which this species belongs. More...
 
virtual void mixAll (BaseSpecies *S, BaseSpecies *T)=0
 creates default values for mixed species More...
 
virtual bool getUseAngularDOFs () const =0
 Returns true if torques (i.e. angular degrees of freedom) have to be calculated. More...
 
virtual BaseInteractiongetNewInteraction (BaseInteractable *P, BaseInteractable *I, unsigned timeStamp) const =0
 returns new Interaction object. More...
 
virtual BaseInteractiongetEmptyInteraction () const =0
 
virtual void deleteEmptyInteraction (BaseInteraction *interaction) const =0
 
Mdouble getInteractionDistance () const
 returns the largest separation distance at which adhesive short-range forces can occur. More...
 
BaseNormalForcegetNormalForce () const
 
BaseFrictionForcegetFrictionForce () const
 
BaseAdhesiveForcegetAdhesiveForce () const
 
void setInteractionDistance (Mdouble interactionDistance)
 
- Public Member Functions inherited from BaseObject
 BaseObject ()=default
 Default constructor. More...
 
 BaseObject (const BaseObject &p)=default
 Copy constructor, copies all the objects BaseObject contains. More...
 
virtual ~BaseObject ()=default
 virtual destructor More...
 
virtual std::string getName () const =0
 A purely virtual function. More...
 
virtual void moveInHandler (unsigned int index)
 Except that it is virtual, it does the same thing as setIndex() does. More...
 
void setIndex (unsigned int index)
 Allows one to assign an index to an object in the handler/container. More...
 
void setId (unsigned long id)
 Assigns a unique identifier to each object in the handler (container) which remains constant even after the object is deleted from the container/handler. More...
 
unsigned int getIndex () const
 Returns the index of the object in the handler. More...
 
unsigned int getId () const
 Returns the unique identifier of any particular object. More...
 
void setGroupId (unsigned groupId)
 
unsigned getGroupId () const
 

Private Member Functions

Mdouble getLargestInverseParticleMassLocal () const
 Computes inverse mass of the lightest particle (by mass) belonging to this species. If MPI is used, this computation is done locally on each node. More...
 

Private Attributes

Mdouble density_
 The mass density. More...
 
std::function< double(double temperature)> temperatureDependentDensity_
 
Mdouble maxInteractionDistance_
 

Additional Inherited Members

- Static Public Member Functions inherited from BaseSpecies
static Mdouble average (Mdouble a, Mdouble b)
 Returns the harmonic mean of two variables. More...
 
static Mdouble averageInf (Mdouble a, Mdouble b)
 Returns the harmonic mean of two variables, returning inf if either is inf. More...
 
- Protected Attributes inherited from BaseSpecies
BaseNormalForcenormalForce_
 A pointer to the normal force parameters. More...
 
BaseFrictionForcefrictionForce_
 A pointer to the friction force parameters. More...
 
BaseAdhesiveForceadhesiveForce_
 A pointer to the adhesive force parameters. More...
 

Member Typedef Documentation

◆ InteractionType

◆ MixedSpeciesType

Constructor & Destructor Documentation

◆ ParticleSpecies() [1/3]

ParticleSpecies::ParticleSpecies ( )

The default constructor.

18 {
19 #ifdef DEBUG_CONSTRUCTOR
20  std::cout<<"ParticleSpecies::ParticleSpecies() finished"<<std::endl;
21 #endif
22 }
BaseSpecies()
The default constructor.
Definition: BaseSpecies.cc:17
Mdouble maxInteractionDistance_
Definition: ParticleSpecies.h:126
Mdouble density_
The mass density.
Definition: ParticleSpecies.h:115

◆ ParticleSpecies() [2/3]

ParticleSpecies::ParticleSpecies ( const ParticleSpecies p)

The default copy constructor.

Parameters
[in]pthe species that is copied
37  : BaseSpecies(p)
38 {
39  density_ = p.density_;
40  temperatureDependentDensity_ = p.temperatureDependentDensity_;
41  maxInteractionDistance_ = p.maxInteractionDistance_;
42 #ifdef DEBUG_CONSTRUCTOR
43  std::cout<<"ParticleSpecies::ParticleSpecies(const ParticleSpecies &p) finished"<<std::endl;
44 #endif
45 }
float * p
Definition: Tutorial_Map_using.cpp:9
std::function< double(double temperature)> temperatureDependentDensity_
Definition: ParticleSpecies.h:121

References density_, maxInteractionDistance_, p, and temperatureDependentDensity_.

◆ ParticleSpecies() [3/3]

ParticleSpecies::ParticleSpecies ( BaseNormalForce normalForce,
BaseFrictionForce frictionForce,
BaseAdhesiveForce adhesiveForce 
)
25  : BaseSpecies(normalForce,frictionForce, adhesiveForce), density_(1.0), maxInteractionDistance_(0.0)
26 {
27 #ifdef DEBUG_CONSTRUCTOR
28  std::cout<<"ParticleSpecies::ParticleSpecies(n,f,a) finished"<<std::endl;
29 #endif
30 }

◆ ~ParticleSpecies()

ParticleSpecies::~ParticleSpecies ( )

The default destructor.

48 {
49 #ifdef DEBUG_DESTRUCTOR
50  std::cout<<"ParticleSpecies::~ParticleSpecies() finished"<<std::endl;
51 #endif
52 }

Member Function Documentation

◆ actionsAfterTimeStep()

◆ computeMass()

void ParticleSpecies::computeMass ( BaseParticle p) const

Compute Particle mass function, which required a reference to the Species vector. It computes the Particles mass, Inertia and the inverses.

Compute BaseParticle mass function, which required a reference to the Species vector. It computes the Particles mass, Inertia and the inverses. this function is called, if BaseParticleHandler::addObject, SpeciesHandler::addObject, ParticleSpecies::setDensity, BaseParticle::setRadius or DPMBase::setParticleDimensions is called

148 {
149  p->computeMass(*this);
150 }

References p.

Referenced by SuperQuadricParticle::setAxes(), SuperQuadricParticle::setExponents(), BaseParticle::setRadius(), WallParticleCollision::setupInitialConditions(), and BaseParticle::unfix().

◆ copy()

◆ copyMixed()

◆ getBaseName()

std::string ParticleSpecies::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")
81 {
82  return "Particle";
83 }

◆ getDensity()

◆ getLargestInverseParticleMassLocal()

Mdouble ParticleSpecies::getLargestInverseParticleMassLocal ( ) const
private

Computes inverse mass of the lightest particle (by mass) belonging to this species. If MPI is used, this computation is done locally on each node.

Returns
A pointer to the to the lightest BaseParticle (by mass) in this ParticleHandler.
169 {
170  Mdouble maxInvMass = 0;
171  logger.assert_debug(getHandler() != nullptr && getHandler()->getDPMBase() != nullptr,"speciesHandler must be set");
172  for (BaseParticle* const p : getHandler()->getDPMBase()->particleHandler)
173  {
174  if (p->getSpecies()==this && !(p->isFixed() || p->isMPIParticle() || p->isPeriodicGhostParticle()) && p->getInvMass() > maxInvMass)
175  {
176  maxInvMass = p->getInvMass();
177  }
178  }
179  return maxInvMass;
180 }
Logger< MERCURYDPM_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here.
Definition: BaseParticle.h:33
SpeciesHandler * getHandler() const
Returns the pointer to the handler to which this species belongs.
Definition: BaseSpecies.cc:78

References BaseSpecies::getHandler(), logger, and p.

Referenced by getSmallestParticleMass().

◆ getMassFromRadius() [1/2]

Mdouble ParticleSpecies::getMassFromRadius ( const Mdouble  radius,
SpeciesHandler speciesHandler 
)
109 {
110  setHandler(&speciesHandler);
111  return getMassFromRadius(radius);
112 }
void setHandler(SpeciesHandler *handler)
Sets the pointer to the handler to which this species belongs.
Definition: BaseSpecies.cc:70
Mdouble getMassFromRadius(Mdouble radius) const
Definition: ParticleSpecies.cc:103
radius
Definition: UniformPSDSelfTest.py:15

References getMassFromRadius(), UniformPSDSelfTest::radius, and BaseSpecies::setHandler().

◆ getMassFromRadius() [2/2]

◆ getMaxInteractionDistance()

Mdouble ParticleSpecies::getMaxInteractionDistance ( ) const
inline

returns the largest separation distance at which adhesive short-range forces can occur.

returns the largest separation distance (negative overlap) at which (adhesive) short-range forces can occur (needed for contact detection). Defined in each of the AdhesiveForceSpecies It is defined as a virtual function here to allow the function to be called from a BaseSpecies pointer (which is the kind of pointer used for MixedSpecies).

References maxInteractionDistance_.

Referenced by BaseParticle::getMaxInteractionRadius().

◆ getMixedSpecies()

const BaseSpecies * ParticleSpecies::getMixedSpecies ( const ParticleSpecies s) const
218  {
219  return (getIndex()==s->getIndex())?this:getHandler()->getMixedObject(getIndex(),s->getIndex());
220 }
unsigned int getIndex() const
Returns the index of the object in the handler.
Definition: BaseObject.h:97
std::enable_if<!std::is_pointer< typename U::MixedSpeciesType >::value, typename U::MixedSpeciesType * >::type getMixedObject(const U *S, const U *T)
Definition: SpeciesHandler.h:52
RealScalar s
Definition: level1_cplx_impl.h:130

References BaseSpecies::getHandler(), BaseObject::getIndex(), SpeciesHandler::getMixedObject(), and s.

Referenced by BaseParticle::getInteractionDistance().

◆ getSmallestParticleMass()

Mdouble ParticleSpecies::getSmallestParticleMass ( ) const

Computes mass of the lightest particle (by mass) belonging to this species. This computation calls getLightestInverseParticleMassLocal, such that the computation is done on each node.

183 {
184 #ifdef MERCURYDPM_USE_MPI
185  Mdouble maxInvMass = 0;
187  //Obtain the global value
188  MPIContainer::Instance().allReduce(invMassLocal, maxInvMass, MPI_MAX);
189  //return value
190  return 1.0 / maxInvMass;
191 #else
192  return 1.0 / getLargestInverseParticleMassLocal();
193 #endif
194 
195 }
static MPIContainer & Instance()
fetch the instance to be used for communication
Definition: MpiContainer.h:113
Mdouble getLargestInverseParticleMassLocal() const
Computes inverse mass of the lightest particle (by mass) belonging to this species....
Definition: ParticleSpecies.cc:168

References getLargestInverseParticleMassLocal(), and MPIContainer::Instance().

◆ getTemperatureDependentDensity()

const std::function< double(double)> & ParticleSpecies::getTemperatureDependentDensity ( ) const
153 {
155 }

References temperatureDependentDensity_.

◆ getVolumeFromRadius()

Mdouble ParticleSpecies::getVolumeFromRadius ( Mdouble  radius) const
Todo:
this should depend on the particle shape; thus, it should be a static function of BaseParticle
116 {
117  if (getHandler() == nullptr)
118  {
119  logger(ERROR,
120  "[Species::VolumeFromRadius()] No handler has been set, therefore, I can't figure out the dimensions.");
121  return 0;
122  }
123 
124  unsigned int particleDimensions = getHandler()->getDPMBase()->getParticleDimensions();
125  if (particleDimensions == 3)
126  {
127  return 4.0 / 3.0 * constants::pi * radius * radius * radius;
128  }
129  else if (particleDimensions == 2)
130  {
131  return constants::pi * radius * radius;
132  }
133  else if (particleDimensions == 1)
134  {
135  return 2.0 * radius;
136  }
137  else
138  {
139  logger(ERROR, "[Species::VolumeFromRadius()] the dimension of the particle is wrongly set to %",
140  particleDimensions);
141  return 0.0;
142  }
143 }
@ ERROR
DPMBase * getDPMBase()
Gets the problem that is solved using this handler.
Definition: BaseHandler.h:733
unsigned int getParticleDimensions() const
Returns the particle dimensionality.
Definition: DPMBase.cc:1458
const Mdouble pi
Definition: ExtendedMath.h:23

References ERROR, BaseHandler< T >::getDPMBase(), BaseSpecies::getHandler(), DPMBase::getParticleDimensions(), logger, constants::pi, and UniformPSDSelfTest::radius.

Referenced by getMassFromRadius().

◆ read()

void ParticleSpecies::read ( std::istream &  is)
overridevirtual

Reads the species properties from an input stream.

Parameters
[in]isinput stream (typically the restart file)

Reimplemented from BaseSpecies.

Reimplemented in Species< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >, Species< LinearViscoelasticNormalSpecies >, Species< LinearViscoelasticNormalSpecies, FrictionSpecies >, Species< LinearPlasticViscoelasticNormalSpecies, SlidingFrictionSpecies, IrreversibleAdhesiveSpecies >, and Species< LinearViscoelasticNormalSpecies, SlidingFrictionSpecies, IrreversibleAdhesiveSpecies >.

70 {
71  BaseObject::read(is);
72  std::string dummy;
73  is >> dummy >> density_;
75 }
virtual void read(std::istream &is)=0
Definition: BaseObject.cc:59
void read(std::istream &is) override
Definition: BaseSpecies.cc:119
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286

References density_, BaseSpecies::read(), BaseObject::read(), and oomph::Global_string_for_annotation::string().

Referenced by Species< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >::read().

◆ setDensity()

void ParticleSpecies::setDensity ( Mdouble  density)

Allows density_ to be changed

Todo:
recalculate masses when setting dim_particle or rho
Parameters
[in]densitythe particle density
89 {
90  logger.assert_always(density > 0, "[ParticleSpecies::setDensity(%)] value has to be positive", density);
91  density_ = density;
93 }
ParticleHandler particleHandler
An object of the class ParticleHandler, contains the pointers to all the particles created.
Definition: DPMBase.h:1443
void computeAllMasses(unsigned int indSpecies)
Computes the mass for all BaseParticle of the given species in this ParticleHandler.
Definition: ParticleHandler.cc:1213
density
Definition: UniformPSDSelfTest.py:19

References ParticleHandler::computeAllMasses(), UniformPSDSelfTest::density, density_, BaseHandler< T >::getDPMBase(), BaseSpecies::getHandler(), BaseObject::getIndex(), logger, and DPMBase::particleHandler.

Referenced by AngledPeriodicBoundarySecondUnitTest::AngledPeriodicBoundarySecondUnitTest(), AngledPeriodicBoundaryUnitTest::AngledPeriodicBoundaryUnitTest(), AngleOfRepose::AngleOfRepose(), BouncingSuperQuadric::BouncingSuperQuadric(), BoundariesSelfTest::BoundariesSelfTest(), Membrane::buildMesh(), CGDisplacementFieldUnitTest::CGDisplacementFieldUnitTest(), CGExactOverlapUnitTest::CGExactOverlapUnitTest(), CGForceDensityUnitTest::CGForceDensityUnitTest(), ChutePeriodicDemo::ChutePeriodicDemo(), ChuteWithWedge::ChuteWithWedge(), ClosedCSCWalls::ClosedCSCWalls(), ParameterStudy1DDemo::createSpecies(), ParameterStudy2DDemo::createSpecies(), ParameterStudy3DDemo::createSpecies(), CSCWalls::CSCWalls(), FluxAndPeriodicBoundarySelfTest::FluxAndPeriodicBoundarySelfTest(), FluxBoundaryPrescribedDistanceUnitTest::FluxBoundaryPrescribedDistanceUnitTest(), FluxBoundarySelfTest::FluxBoundarySelfTest(), FluxBoundaryUnitTest::FluxBoundaryUnitTest(), ForceLawsMPI2Test::ForceLawsMPI2Test(), MembraneDemo::initializeSpecies(), MembraneSelfTest::initializeSpecies(), InsertionBoundaryMPI2Test::InsertionBoundaryMPI2Test(), InsertionBoundarySelfTest::InsertionBoundarySelfTest(), LaserOnLayer::LaserOnLayer(), LiquidMigrationMPI2Test::LiquidMigrationMPI2Test(), main(), MaserRepeatedOutInMPI2Test::MaserRepeatedOutInMPI2Test(), MinimalExampleDrum::MinimalExampleDrum(), MultiParticlesInsertion::MultiParticlesInsertion(), ParticleCreation::ParticleCreation(), ParticleInclusion::ParticleInclusion(), protectiveWall::protectiveWall(), FileReader::read(), SpeciesHandler::readOldObject(), regimeForceUnitTest::regimeForceUnitTest(), RotatingDrumBidisperseInitialise::RotatingDrumBidisperseInitialise(), FlowRule::setDensityVariation(), MercuryOS::setMaterialProperties(), MarbleRun::setParticleDensity(), GranularJet::setSilbert(), ChutePeriodic::setup(), NozzleDemo::setupInitialConditions(), Drum::setupInitialConditions(), CubicCell::setupInitialConditions(), FreeCooling2DinWallsDemo::setupInitialConditions(), FreeCoolingDemoProblem::setupInitialConditions(), ShiftingConstantMassFlowMaserBoundarySelfTest::setupInitialConditions(), ShiftingMaserBoundarySelfTest::setupInitialConditions(), GetDistanceAndNormalForIntersectionOfWalls::setupInitialConditions(), GetDistanceAndNormalForScrew::setupInitialConditions(), GetDistanceAndNormalForTriangleWall::setupInitialConditions(), ConstantMassFlowMaserBoundaryMixedSpeciesSelfTest::setupInitialConditions(), ConstantMassFlowMaserSelfTest::setupInitialConditions(), DistributionSelfTest::setupInitialConditions(), DistributionToPSDSelfTest::setupInitialConditions(), InsertionBoundarySelfTest::setupInitialConditions(), MultiplePSDSelfTest::setupInitialConditions(), NozzleSelfTest::setupInitialConditions(), PolydisperseInsertionBoundarySelfTest::setupInitialConditions(), PSDManualInsertionSelfTest::setupInitialConditions(), StressStrainControl::setupInitialConditions(), SubcriticalMaserBoundarySelfTest::setupInitialConditions(), ParticleParticleCollision::setupInitialConditions(), WallParticleCollision::setupInitialConditions(), ContactDetectionIntersectionOfWallsTest::setupInitialConditions(), GetDistanceAndNormalForTriangleWalls::setupInitialConditions(), RollingOverTriangleWalls::setupInitialConditions(), UnionOfWalls::setupInitialConditions(), EllipsoidsBouncingOnWallDemo::setupInitialConditions(), EllipticalSuperQuadricCollision::setupInitialConditions(), SlidingSpheresUnitTest::setupInitialConditions(), ShapesDemo::setupInitialConditions(), ParticleParticleInteraction::setupInitialConditions(), ParticleParticleInteractionWithPlasticForces::setupInitialConditions(), ParticleWallInteraction::setupInitialConditions(), Packing::setupInitialConditions(), CreateDataAndFStatFiles::setupInitialConditions(), PSDSelfTest::setupInitialConditions(), RandomClusterInsertionBoundarySelfTest::setupInitialConditions(), HertzianSinterForceUnitTest::setupInitialConditions(), MovingIntersectionOfWallsUnitTest_Basic::setupInitialConditions(), MovingWalls::setupInitialConditions(), MovingWall::setupInitialConditions(), PeriodicWallsWithSlidingFrictionUnitTest::setupInitialConditions(), PlasticForceUnitTest::setupInitialConditions(), SeparateFilesSelfTest::setupInitialConditions(), WallSpecies::setupInitialConditions(), Siegen::Siegen(), SilbertPeriodic::SilbertPeriodic(), SingleParticleSegregation::SingleParticleSegregation(), StressStrainControl::StressStrainControl(), SubcriticalMaserBoundaryTESTMPI2Test::SubcriticalMaserBoundaryTESTMPI2Test(), T_protectiveWall::T_protectiveWall(), and viscoElasticUnitTest::viscoElasticUnitTest().

◆ setMaxInteractionDistance()

void ParticleSpecies::setMaxInteractionDistance ( Mdouble  interactionDistance = 0)

Sets maxInteractionDistance_.

Parameters
interactionDistancethe interaction distance that has been changed

Sets maxInteractionDistance_

Parameters
interactionDistancethe interaction distance that has been changed
201  {
202  // if maxInteractionDistance_ has increased it's simple
203  if (interactionDistance>=maxInteractionDistance_) {
204  maxInteractionDistance_ = interactionDistance;
205  } else /*else we need to recompute*/ {
207  int j = getIndex();
208  for (int i=0; i<getHandler()->getSize(); ++i) {
209  const auto mixedSpecies = getHandler()->getMixedObject(i,j);
210  if (mixedSpecies) { //this check is necessary because the mixed species handler might not yet be built fully
212  mixedSpecies->getInteractionDistance());
213  }
214  }
215  }
216 }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
unsigned int getSize() const
Gets the size of the particleHandler (including mpi and periodic particles)
Definition: BaseHandler.h:663
#define max(a, b)
Definition: datatypes.h:23
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References BaseSpecies::getHandler(), BaseObject::getIndex(), SpeciesHandler::getMixedObject(), BaseHandler< T >::getSize(), i, j, max, and maxInteractionDistance_.

Referenced by BaseSpecies::setInteractionDistance().

◆ setTemperatureDependentDensity()

void ParticleSpecies::setTemperatureDependentDensity ( const std::function< double(double)> &  temperatureDependentDensity)
159 {
160  temperatureDependentDensity_ = temperatureDependentDensity;
161 // density_ = temperatureDependentDensity_(0);
162 // logger(INFO,"Setting initial density to %",temperature_);
163 }

References temperatureDependentDensity_.

◆ write()

void ParticleSpecies::write ( std::ostream &  os) const
overridevirtual

Writes the species properties to an output stream.

Parameters
[out]osoutput stream (typically the restart file)

Reimplemented from BaseSpecies.

Reimplemented in Species< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >, Species< LinearViscoelasticNormalSpecies >, Species< LinearViscoelasticNormalSpecies, FrictionSpecies >, Species< LinearPlasticViscoelasticNormalSpecies, SlidingFrictionSpecies, IrreversibleAdhesiveSpecies >, and Species< LinearViscoelasticNormalSpecies, SlidingFrictionSpecies, IrreversibleAdhesiveSpecies >.

58 {
59  //note we inherit from BaseObject, not BaseParticle
61  os << " density " << density_;
63  //todo flip the two values
64 }
virtual void write(std::ostream &os) const =0
A purely virtual function which has an implementation which writes the name and the object id_ to the...
Definition: BaseObject.cc:69
void write(std::ostream &os) const override
Sets the boolean constantRestitution_.
Definition: BaseSpecies.cc:110

References density_, BaseObject::write(), and BaseSpecies::write().

Referenced by Species< NormalForceSpecies, FrictionForceSpecies, AdhesiveForceSpecies >::write().

Member Data Documentation

◆ density_

Mdouble ParticleSpecies::density_
private

The mass density.

Referenced by getDensity(), ParticleSpecies(), read(), setDensity(), and write().

◆ maxInteractionDistance_

Mdouble ParticleSpecies::maxInteractionDistance_
private

Returns the max distance between particles of this species and any other species below which adhesive forces can occur (needed for contact detection)

Referenced by getMaxInteractionDistance(), ParticleSpecies(), and setMaxInteractionDistance().

◆ temperatureDependentDensity_

std::function<double(double temperature)> ParticleSpecies::temperatureDependentDensity_
private

Change this function to let the particles expand due to temperature. The default value (empty) stands for constant density.

Referenced by getTemperatureDependentDensity(), ParticleSpecies(), and setTemperatureDependentDensity().


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