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...
 
 ~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 *S, ParhamiMcMeekingSinterSpecies *T)
 creates default values for mixed species 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 BaseForce
BaseSpeciesgetBaseSpecies () const
 
void setBaseSpecies (BaseSpecies *baseSpecies)
 

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.

Member Typedef Documentation

◆ InteractionType

The correct Interaction type for this AdhesiveForceSpecies.

Constructor & Destructor Documentation

◆ ParhamiMcMeekingSinterSpecies() [1/2]

ParhamiMcMeekingSinterSpecies::ParhamiMcMeekingSinterSpecies ( )

The default constructor.

Todo:
: implement initial/read/write values
31 {
32 // adhesionForceMax_ = 0;
33 // adhesionStiffness_ = 0;
34 #ifdef DEBUG_CONSTRUCTOR
35  std::cout<<"ParhamiMcMeekingSinterSpecies::ParhamiMcMeekingSinterSpecies() finished"<<std::endl;
36 #endif
37 }

◆ ParhamiMcMeekingSinterSpecies() [2/2]

ParhamiMcMeekingSinterSpecies::ParhamiMcMeekingSinterSpecies ( const ParhamiMcMeekingSinterSpecies s)

The default constructor.

Parameters
[in]sthe species that is copied
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 atomicVolume_
Definition: ParhamiMcMeekingSinterSpecies.h:107
Mdouble surfaceEnergy_
Definition: ParhamiMcMeekingSinterSpecies.h:108
Mdouble temperature_
Definition: ParhamiMcMeekingSinterSpecies.h:111
Mdouble slidingFrictionCoefficient_
tangential force is slidingFrictionCoefficient_*contactRadius^2*radius*tangentialRelativeVelocity
Definition: ParhamiMcMeekingSinterSpecies.h:121
Mdouble thicknessDiffusion_
Definition: ParhamiMcMeekingSinterSpecies.h:109
Mdouble viscosityCoefficient_
viscous force is viscosityCoefficient_*contactRadius^4*normalRelativeVelocity
Definition: ParhamiMcMeekingSinterSpecies.h:115
Mdouble adhesionCoefficient_
adhesion force is adhesionCoefficient_*radius
Definition: ParhamiMcMeekingSinterSpecies.h:118
Mdouble beta_
Definition: ParhamiMcMeekingSinterSpecies.h:106
Mdouble pseudoSlidingFrictionCoefficient_
Definition: ParhamiMcMeekingSinterSpecies.h:112
Mdouble alpha_
viscous force is adhesionCoefficient_*temperature*contactRadius^4*normalRelativeVelocity
Definition: ParhamiMcMeekingSinterSpecies.h:105
Mdouble activationEnergy_
Definition: ParhamiMcMeekingSinterSpecies.h:110

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

◆ ~ParhamiMcMeekingSinterSpecies()

ParhamiMcMeekingSinterSpecies::~ParhamiMcMeekingSinterSpecies ( )

The default constructor.

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

Member Function Documentation

◆ getAdhesionCoefficient()

Mdouble ParhamiMcMeekingSinterSpecies::getAdhesionCoefficient ( ) const
inline

◆ getBaseName()

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")
90 {
91  return "ParhamiMcMeekingSinter";
92 }

◆ getSlidingFrictionCoefficient()

Mdouble ParhamiMcMeekingSinterSpecies::getSlidingFrictionCoefficient ( ) const
inline

◆ getViscosityCoefficient()

Mdouble ParhamiMcMeekingSinterSpecies::getViscosityCoefficient ( ) const
inline

◆ mix()

void ParhamiMcMeekingSinterSpecies::mix ( ParhamiMcMeekingSinterSpecies S,
ParhamiMcMeekingSinterSpecies 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
100 {
101 // adhesionForceMax_ = BaseSpecies::average(S->getAdhesionForceMax(), T->getAdhesionForceMax());
102 // adhesionStiffness_ = BaseSpecies::average(S->getAdhesionStiffness(), T->getAdhesionStiffness());
103 }

◆ read()

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

Reads the species properties from an input stream.

Parameters
[in]isinput stream (typically the restart file)
80 {
81 // std::string dummy;
82 // is >> dummy >> adhesionForceMax_;
83 // is >> dummy >> adhesionStiffness_;
84 }

◆ set()

void ParhamiMcMeekingSinterSpecies::set ( Mdouble  alpha,
Mdouble  beta,
Mdouble  atomicVolume,
Mdouble  surfaceEnergy,
Mdouble  thicknessDiffusion,
Mdouble  activationEnergy,
Mdouble  temperature,
Mdouble  pseudoSlidingFrictionCoefficient 
)
inline
70  {
71  alpha_ = alpha;
72  beta_ = beta;
73  atomicVolume_ = atomicVolume;
74  surfaceEnergy_ = surfaceEnergy;
75  thicknessDiffusion_ = thicknessDiffusion;
76  activationEnergy_ = activationEnergy;
77  temperature_ = temperature;
78  pseudoSlidingFrictionCoefficient_ = pseudoSlidingFrictionCoefficient;
79 
80  Mdouble boltzmannConstant /*k_B*/ = 1.38064852e-23;
81  Mdouble gasConstant /*R_g*/ = 8.314459848;
82  Mdouble thicknessDiffusionVacancy /*DB*/ =
84  logger(INFO, "%|%", thicknessDiffusionVacancy, thicknessDiffusion_);
85  Mdouble diffusionParameter /*DeltaB*/ =
86  atomicVolume_ / boltzmannConstant / temperature_ * thicknessDiffusionVacancy;
87  viscosityCoefficient_ = constants::pi / (2.0 * beta * diffusionParameter);
90  pseudoSlidingFrictionCoefficient_ * constants::pi / (2.0 * beta * diffusionParameter);
91  }
double Mdouble
Definition: GeneralDefine.h:34
Logger< MERCURYDPM_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here.
@ INFO
const Mdouble pi
Definition: ExtendedMath.h:45
Mdouble beta(Mdouble z, Mdouble w)
This is the beta function, returns the approximation based on cmath's implementation of ln(gamma)
Definition: ExtendedMath.cc:164
Mdouble exp(Mdouble Exponent)
Definition: ExtendedMath.cc:84

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

◆ write()

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

Writes the species properties to an output stream.

Parameters
[out]osoutput stream (typically the restart file)
71 {
72 // os << " adhesionForceMax " << adhesionForceMax_;
73 // os << " adhesionStiffness " << adhesionStiffness_;
74 }

Member Data Documentation

◆ activationEnergy_

Mdouble ParhamiMcMeekingSinterSpecies::activationEnergy_
private

◆ adhesionCoefficient_

Mdouble ParhamiMcMeekingSinterSpecies::adhesionCoefficient_
private

adhesion force is adhesionCoefficient_*radius

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

◆ alpha_

Mdouble ParhamiMcMeekingSinterSpecies::alpha_
private

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

Referenced by ParhamiMcMeekingSinterSpecies(), and set().

◆ atomicVolume_

Mdouble ParhamiMcMeekingSinterSpecies::atomicVolume_
private

◆ beta_

Mdouble ParhamiMcMeekingSinterSpecies::beta_
private

◆ pseudoSlidingFrictionCoefficient_

Mdouble ParhamiMcMeekingSinterSpecies::pseudoSlidingFrictionCoefficient_
private

◆ slidingFrictionCoefficient_

Mdouble ParhamiMcMeekingSinterSpecies::slidingFrictionCoefficient_
private

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

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

◆ surfaceEnergy_

Mdouble ParhamiMcMeekingSinterSpecies::surfaceEnergy_
private

◆ temperature_

Mdouble ParhamiMcMeekingSinterSpecies::temperature_
private

◆ thicknessDiffusion_

Mdouble ParhamiMcMeekingSinterSpecies::thicknessDiffusion_
private

◆ viscosityCoefficient_

Mdouble ParhamiMcMeekingSinterSpecies::viscosityCoefficient_
private

viscous force is viscosityCoefficient_*contactRadius^4*normalRelativeVelocity

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


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