MercuryDPM  Alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
ParhamiMcMeekingSinterSpecies Class Reference

ParhamiMcMeekingSinterSpecies contains the parameters used to describe a linear reversible short-range force. More...

#include <ParhamiMcMeekingSinterSpecies.h>

+ Inheritance diagram for ParhamiMcMeekingSinterSpecies:

Public Types

typedef
ParhamiMcMeekingSinterInteraction 
InteractionType
 The correct Interaction type for this AdhesiveForceSpecies. More...
 

Public Member Functions

 ParhamiMcMeekingSinterSpecies ()
 The default constructor. More...
 
 ParhamiMcMeekingSinterSpecies (const ParhamiMcMeekingSinterSpecies &s)
 The default constructor. More...
 
virtual ~ParhamiMcMeekingSinterSpecies ()
 The default constructor. 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...
 
void mix (ParhamiMcMeekingSinterSpecies *const S, ParhamiMcMeekingSinterSpecies *const T)
 creates default values for mixed species More...
 
Mdouble getInteractionDistance () const
 returns the largest separation distance at which adhesive short-range forces can occur. More...
 
void set (Mdouble alpha, Mdouble beta, Mdouble atomicVolume, Mdouble surfaceEnergy, Mdouble thicknessDiffusion, Mdouble activationEnergy, Mdouble temperature, Mdouble pseudoSlidingFrictionCoefficient)
 
Mdouble getViscosityCoefficient () const
 
Mdouble getAdhesionCoefficient () const
 
Mdouble getSlidingFrictionCoefficient () const
 
- Public Member Functions inherited from BaseSpecies
 BaseSpecies ()
 The default constructor. More...
 
 BaseSpecies (const BaseSpecies &p)
 The copy constructor. More...
 
virtual ~BaseSpecies ()
 The default destructor. More...
 
virtual BaseSpeciescopy () const =0
 Creates a deep copy of the object from which it is called. More...
 
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...
 
Mdouble average (Mdouble a, Mdouble b)
 defines the average of two variables by the harmonic mean. More...
 
virtual void mixAll (BaseSpecies *const S, BaseSpecies *const 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, Mdouble timeStamp) const =0
 returns new Interaction object. More...
 
- Public Member Functions inherited from BaseObject
 BaseObject ()
 Default constructor. More...
 
 BaseObject (const BaseObject &p)
 Copy constructor, copies all the objects BaseObject contains. More...
 
virtual ~BaseObject ()
 virtual destructor More...
 
virtual std::string getName () const =0
 A purely virtual function. More...
 
virtual void moveInHandler (const unsigned int index)
 Except that it is virtual, it does the same thing as setIndex() does. More...
 
void setIndex (const unsigned int index)
 Allows one to assign an index to an object in the handler/container. More...
 
void setId (const unsigned int 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...
 

Private Attributes

Mdouble alpha_
 viscous force is adhesionCoefficient_*temperature*contactRadius^4*normalRelativeVelocity More...
 
Mdouble beta_
 
Mdouble atomicVolume_
 
Mdouble surfaceEnergy_
 
Mdouble thicknessDiffusion_
 
Mdouble activationEnergy_
 
Mdouble temperature_
 
Mdouble pseudoSlidingFrictionCoefficient_
 
Mdouble viscosityCoefficient_
 viscous force is viscosityCoefficient_*contactRadius^4*normalRelativeVelocity More...
 
Mdouble adhesionCoefficient_
 adhesion force is adhesionCoefficient_*radius More...
 
Mdouble slidingFrictionCoefficient_
 tangential force is slidingFrictionCoefficient_*contactRadius^2*radius*tangentialRelativeVelocity More...
 

Detailed Description

ParhamiMcMeekingSinterSpecies contains the parameters used to describe a linear reversible short-range force.

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

Definition at line 36 of file ParhamiMcMeekingSinterSpecies.h.

Member Typedef Documentation

Constructor & Destructor Documentation

ParhamiMcMeekingSinterSpecies::ParhamiMcMeekingSinterSpecies ( )

The default constructor.

Todo:
: implement initial/read/write values

Definition at line 30 of file ParhamiMcMeekingSinterSpecies.cc.

31 {
32 // adhesionForceMax_ = 0;
33 // adhesionStiffness_ = 0;
34 #ifdef DEBUG_CONSTRUCTOR
35  std::cout<<"ParhamiMcMeekingSinterSpecies::ParhamiMcMeekingSinterSpecies() finished"<<std::endl;
36 #endif
37 }
ParhamiMcMeekingSinterSpecies::ParhamiMcMeekingSinterSpecies ( const ParhamiMcMeekingSinterSpecies s)

The default constructor.

Parameters
[in]sthe species that is copied

Definition at line 42 of file ParhamiMcMeekingSinterSpecies.cc.

References activationEnergy_, adhesionCoefficient_, alpha_, atomicVolume_, beta_, pseudoSlidingFrictionCoefficient_, slidingFrictionCoefficient_, surfaceEnergy_, temperature_, thicknessDiffusion_, and viscosityCoefficient_.

43 {
44  alpha_= s.alpha_;
45  beta_ = s.beta_;
46  atomicVolume_ = s.atomicVolume_; /*Omega*/
47  surfaceEnergy_ = s.surfaceEnergy_; /*gamma_s*/
48  thicknessDiffusion_ = s.thicknessDiffusion_; /*deltaB*D0B*/
50  temperature_ = s.temperature_; /*T*/
55 #ifdef DEBUG_CONSTRUCTOR
56  std::cout<<"ParhamiMcMeekingSinterSpecies::ParhamiMcMeekingSinterSpecies(const ParhamiMcMeekingSinterSpecies &p) finished"<<std::endl;
57 #endif
58 }
Mdouble viscosityCoefficient_
viscous force is viscosityCoefficient_*contactRadius^4*normalRelativeVelocity
Mdouble adhesionCoefficient_
adhesion force is adhesionCoefficient_*radius
Mdouble slidingFrictionCoefficient_
tangential force is slidingFrictionCoefficient_*contactRadius^2*radius*tangentialRelativeVelocity ...
Mdouble alpha_
viscous force is adhesionCoefficient_*temperature*contactRadius^4*normalRelativeVelocity ...
ParhamiMcMeekingSinterSpecies::~ParhamiMcMeekingSinterSpecies ( )
virtual

The default constructor.

Definition at line 60 of file ParhamiMcMeekingSinterSpecies.cc.

61 {
62 #ifdef DEBUG_DESTRUCTOR
63  std::cout<<"ParhamiMcMeekingSinterSpecies::~ParhamiMcMeekingSinterSpecies() finished"<<std::endl;
64 #endif
65 }

Member Function Documentation

Mdouble ParhamiMcMeekingSinterSpecies::getAdhesionCoefficient ( ) const
inline

Definition at line 92 of file ParhamiMcMeekingSinterSpecies.h.

References adhesionCoefficient_.

Referenced by ParhamiMcMeekingSinterInteraction::computeAdhesionForce().

92 {return adhesionCoefficient_;}
Mdouble adhesionCoefficient_
adhesion force is adhesionCoefficient_*radius
std::string ParhamiMcMeekingSinterSpecies::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")

Definition at line 89 of file ParhamiMcMeekingSinterSpecies.cc.

90 {
91  return "ParhamiMcMeekingSinter";
92 }
Mdouble ParhamiMcMeekingSinterSpecies::getInteractionDistance ( ) const
virtual

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

Returns
the maximum separation distance below which adhesive forces can occur (needed for contact detection)

Implements BaseSpecies.

Definition at line 106 of file ParhamiMcMeekingSinterSpecies.cc.

107 {
108  return 0.0;
109 }
Mdouble ParhamiMcMeekingSinterSpecies::getSlidingFrictionCoefficient ( ) const
inline

Definition at line 93 of file ParhamiMcMeekingSinterSpecies.h.

References slidingFrictionCoefficient_.

Referenced by ParhamiMcMeekingSinterInteraction::computeAdhesionForce().

Mdouble slidingFrictionCoefficient_
tangential force is slidingFrictionCoefficient_*contactRadius^2*radius*tangentialRelativeVelocity ...
Mdouble ParhamiMcMeekingSinterSpecies::getViscosityCoefficient ( ) const
inline

Definition at line 91 of file ParhamiMcMeekingSinterSpecies.h.

References viscosityCoefficient_.

Referenced by ParhamiMcMeekingSinterInteraction::computeAdhesionForce().

91 {return viscosityCoefficient_;}
Mdouble viscosityCoefficient_
viscous force is viscosityCoefficient_*contactRadius^4*normalRelativeVelocity
void ParhamiMcMeekingSinterSpecies::mix ( ParhamiMcMeekingSinterSpecies *const  S,
ParhamiMcMeekingSinterSpecies *const  T 
)

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

Definition at line 99 of file ParhamiMcMeekingSinterSpecies.cc.

100 {
101 // adhesionForceMax_ = average(S->getAdhesionForceMax(), T->getAdhesionForceMax());
102 // adhesionStiffness_ = average(S->getAdhesionStiffness(), T->getAdhesionStiffness());
103 }
void ParhamiMcMeekingSinterSpecies::read ( std::istream &  is)
virtual

Reads the species properties from an input stream.

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

Implements BaseObject.

Definition at line 79 of file ParhamiMcMeekingSinterSpecies.cc.

80 {
81 // std::string dummy;
82 // is >> dummy >> adhesionForceMax_;
83 // is >> dummy >> adhesionStiffness_;
84 }
void ParhamiMcMeekingSinterSpecies::set ( Mdouble  alpha,
Mdouble  beta,
Mdouble  atomicVolume,
Mdouble  surfaceEnergy,
Mdouble  thicknessDiffusion,
Mdouble  activationEnergy,
Mdouble  temperature,
Mdouble  pseudoSlidingFrictionCoefficient 
)
inline

Definition at line 69 of file ParhamiMcMeekingSinterSpecies.h.

References activationEnergy_, adhesionCoefficient_, alpha_, atomicVolume_, beta_, mathsFunc::exp(), constants::pi, pseudoSlidingFrictionCoefficient_, slidingFrictionCoefficient_, surfaceEnergy_, temperature_, thicknessDiffusion_, and viscosityCoefficient_.

71  {
72  alpha_ = alpha;
73  beta_ = beta;
74  atomicVolume_ = atomicVolume;
75  surfaceEnergy_ = surfaceEnergy;
76  thicknessDiffusion_ = thicknessDiffusion;
77  activationEnergy_ = activationEnergy;
78  temperature_ = temperature;
79  pseudoSlidingFrictionCoefficient_ = pseudoSlidingFrictionCoefficient;
80 
81  Mdouble boltzmannConstant /*k_B*/ = 1.38064852e-23;
82  Mdouble gasConstant /*R_g*/ = 8.314459848;
83  Mdouble thicknessDiffusionVacancy /*DB*/ = thicknessDiffusion_*exp(-activationEnergy_/gasConstant/temperature_);
84  std::cout << thicknessDiffusionVacancy << "|" << thicknessDiffusion_ << std::endl;
85  Mdouble diffusionParameter /*DeltaB*/ = atomicVolume_/boltzmannConstant/temperature_*thicknessDiffusionVacancy;
86  viscosityCoefficient_ = constants::pi/(2.0*beta*diffusionParameter);
89  }
Mdouble exp(Mdouble Exponent)
Definition: ExtendedMath.cc:78
double Mdouble
Mdouble viscosityCoefficient_
viscous force is viscosityCoefficient_*contactRadius^4*normalRelativeVelocity
Mdouble adhesionCoefficient_
adhesion force is adhesionCoefficient_*radius
const Mdouble pi
Definition: ExtendedMath.h:42
Mdouble slidingFrictionCoefficient_
tangential force is slidingFrictionCoefficient_*contactRadius^2*radius*tangentialRelativeVelocity ...
Mdouble alpha_
viscous force is adhesionCoefficient_*temperature*contactRadius^4*normalRelativeVelocity ...
void ParhamiMcMeekingSinterSpecies::write ( std::ostream &  os) const
virtual

Writes the species properties to an output stream.

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

Implements BaseObject.

Definition at line 70 of file ParhamiMcMeekingSinterSpecies.cc.

71 {
72 // os << " adhesionForceMax " << adhesionForceMax_;
73 // os << " adhesionStiffness " << adhesionStiffness_;
74 }

Member Data Documentation

Mdouble ParhamiMcMeekingSinterSpecies::activationEnergy_
private

Definition at line 103 of file ParhamiMcMeekingSinterSpecies.h.

Referenced by ParhamiMcMeekingSinterSpecies(), and set().

Mdouble ParhamiMcMeekingSinterSpecies::adhesionCoefficient_
private

adhesion force is adhesionCoefficient_*radius

Definition at line 111 of file ParhamiMcMeekingSinterSpecies.h.

Referenced by getAdhesionCoefficient(), ParhamiMcMeekingSinterSpecies(), and set().

Mdouble ParhamiMcMeekingSinterSpecies::alpha_
private

viscous force is adhesionCoefficient_*temperature*contactRadius^4*normalRelativeVelocity

Definition at line 98 of file ParhamiMcMeekingSinterSpecies.h.

Referenced by ParhamiMcMeekingSinterSpecies(), and set().

Mdouble ParhamiMcMeekingSinterSpecies::atomicVolume_
private

Definition at line 100 of file ParhamiMcMeekingSinterSpecies.h.

Referenced by ParhamiMcMeekingSinterSpecies(), and set().

Mdouble ParhamiMcMeekingSinterSpecies::beta_
private

Definition at line 99 of file ParhamiMcMeekingSinterSpecies.h.

Referenced by ParhamiMcMeekingSinterSpecies(), and set().

Mdouble ParhamiMcMeekingSinterSpecies::pseudoSlidingFrictionCoefficient_
private

Definition at line 105 of file ParhamiMcMeekingSinterSpecies.h.

Referenced by ParhamiMcMeekingSinterSpecies(), and set().

Mdouble ParhamiMcMeekingSinterSpecies::slidingFrictionCoefficient_
private

tangential force is slidingFrictionCoefficient_*contactRadius^2*radius*tangentialRelativeVelocity

Definition at line 114 of file ParhamiMcMeekingSinterSpecies.h.

Referenced by getSlidingFrictionCoefficient(), ParhamiMcMeekingSinterSpecies(), and set().

Mdouble ParhamiMcMeekingSinterSpecies::surfaceEnergy_
private

Definition at line 101 of file ParhamiMcMeekingSinterSpecies.h.

Referenced by ParhamiMcMeekingSinterSpecies(), and set().

Mdouble ParhamiMcMeekingSinterSpecies::temperature_
private

Definition at line 104 of file ParhamiMcMeekingSinterSpecies.h.

Referenced by ParhamiMcMeekingSinterSpecies(), and set().

Mdouble ParhamiMcMeekingSinterSpecies::thicknessDiffusion_
private

Definition at line 102 of file ParhamiMcMeekingSinterSpecies.h.

Referenced by ParhamiMcMeekingSinterSpecies(), and set().

Mdouble ParhamiMcMeekingSinterSpecies::viscosityCoefficient_
private

viscous force is viscosityCoefficient_*contactRadius^4*normalRelativeVelocity

Definition at line 108 of file ParhamiMcMeekingSinterSpecies.h.

Referenced by getViscosityCoefficient(), ParhamiMcMeekingSinterSpecies(), and set().


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