ParhamiMcMeekingSinterSpecies.h
Go to the documentation of this file.
1 // This file is part of the MercuryDPM project (https://www.mercurydpm.org).
2 // Copyright (c), The MercuryDPM Developers Team. All rights reserved.
3 // License: BSD 3-Clause License; see the LICENSE file in the root directory.
4 
5 #ifndef PARHAMIMCMEEKINGSINTERSPECIES_H
6 #define PARHAMIMCMEEKINGSINTERSPECIES_H
7 
9 #include "Math/ExtendedMath.h"
11 
17 {
18 public:
21 
24 
27 
30 
32  void read(std::istream& is);
33 
35  void write(std::ostream& os) const;
36 
38  std::string getBaseName() const;
39 
42 
43 //adhesion-specific functions
44 
45  //setters and getters
46  void set(Mdouble alpha, Mdouble beta, Mdouble atomicVolume /*Omega*/, Mdouble surfaceEnergy /*gamma_s*/,
47  Mdouble thicknessDiffusion /*deltaB*D0B*/, Mdouble activationEnergy /*QB*/, Mdouble temperature /*T*/,
48  Mdouble pseudoSlidingFrictionCoefficient /*\etaPart*/)
49  {
50  alpha_ = alpha;
51  beta_ = beta;
52  atomicVolume_ = atomicVolume;
53  surfaceEnergy_ = surfaceEnergy;
54  thicknessDiffusion_ = thicknessDiffusion;
55  activationEnergy_ = activationEnergy;
56  temperature_ = temperature;
57  pseudoSlidingFrictionCoefficient_ = pseudoSlidingFrictionCoefficient;
58 
59  Mdouble boltzmannConstant /*k_B*/ = 1.38064852e-23;
60  Mdouble gasConstant /*R_g*/ = 8.314459848;
61  Mdouble thicknessDiffusionVacancy /*DB*/ =
63  logger(INFO, "%|%", thicknessDiffusionVacancy, thicknessDiffusion_);
64  Mdouble diffusionParameter /*DeltaB*/ =
65  atomicVolume_ / boltzmannConstant / temperature_ * thicknessDiffusionVacancy;
66  viscosityCoefficient_ = constants::pi / (2.0 * beta * diffusionParameter);
69  pseudoSlidingFrictionCoefficient_ * constants::pi / (2.0 * beta * diffusionParameter);
70  }
71 
73  { return viscosityCoefficient_; }
74 
76  { return adhesionCoefficient_; }
77 
79  { return slidingFrictionCoefficient_; }
80 
81 private:
82 
87  Mdouble surfaceEnergy_; /*gamma_s*/
88  Mdouble thicknessDiffusion_; /*deltaB*D0B*/
92 
95 
98 
101 };
102 
103 #endif
Logger< MERCURYDPM_LOGLEVEL > logger("MercuryKernel")
Definition of different loggers with certain modules. A user can define its own custom logger here.
@ INFO
Definition: BaseAdhesiveForce.h:10
Definition: ParhamiMcMeekingSinterInteraction.h:22
ParhamiMcMeekingSinterSpecies contains the parameters used to describe a linear reversible short-rang...
Definition: ParhamiMcMeekingSinterSpecies.h:17
std::string getBaseName() const
Used in Species::getName to obtain a unique name for each Species.
Definition: ParhamiMcMeekingSinterSpecies.cc:68
Mdouble atomicVolume_
Definition: ParhamiMcMeekingSinterSpecies.h:86
Mdouble surfaceEnergy_
Definition: ParhamiMcMeekingSinterSpecies.h:87
Mdouble getViscosityCoefficient() const
Definition: ParhamiMcMeekingSinterSpecies.h:72
void write(std::ostream &os) const
Writes the species properties to an output stream.
Definition: ParhamiMcMeekingSinterSpecies.cc:49
Mdouble temperature_
Definition: ParhamiMcMeekingSinterSpecies.h:90
void mix(ParhamiMcMeekingSinterSpecies *S, ParhamiMcMeekingSinterSpecies *T)
creates default values for mixed species
Definition: ParhamiMcMeekingSinterSpecies.cc:78
Mdouble slidingFrictionCoefficient_
tangential force is slidingFrictionCoefficient_*contactRadius^2*radius*tangentialRelativeVelocity
Definition: ParhamiMcMeekingSinterSpecies.h:100
~ParhamiMcMeekingSinterSpecies()
The default constructor.
Definition: ParhamiMcMeekingSinterSpecies.cc:39
Mdouble getSlidingFrictionCoefficient() const
Definition: ParhamiMcMeekingSinterSpecies.h:78
Mdouble thicknessDiffusion_
Definition: ParhamiMcMeekingSinterSpecies.h:88
Mdouble viscosityCoefficient_
viscous force is viscosityCoefficient_*contactRadius^4*normalRelativeVelocity
Definition: ParhamiMcMeekingSinterSpecies.h:94
Mdouble adhesionCoefficient_
adhesion force is adhesionCoefficient_*radius
Definition: ParhamiMcMeekingSinterSpecies.h:97
ParhamiMcMeekingSinterSpecies()
The default constructor.
Definition: ParhamiMcMeekingSinterSpecies.cc:9
Mdouble beta_
Definition: ParhamiMcMeekingSinterSpecies.h:85
Mdouble pseudoSlidingFrictionCoefficient_
Definition: ParhamiMcMeekingSinterSpecies.h:91
Mdouble getAdhesionCoefficient() const
Definition: ParhamiMcMeekingSinterSpecies.h:75
Mdouble alpha_
viscous force is adhesionCoefficient_*temperature*contactRadius^4*normalRelativeVelocity
Definition: ParhamiMcMeekingSinterSpecies.h:84
void read(std::istream &is)
Reads the species properties from an input stream.
Definition: ParhamiMcMeekingSinterSpecies.cc:58
void set(Mdouble alpha, Mdouble beta, Mdouble atomicVolume, Mdouble surfaceEnergy, Mdouble thicknessDiffusion, Mdouble activationEnergy, Mdouble temperature, Mdouble pseudoSlidingFrictionCoefficient)
Definition: ParhamiMcMeekingSinterSpecies.h:46
ParhamiMcMeekingSinterInteraction InteractionType
The correct Interaction type for this AdhesiveForceSpecies.
Definition: ParhamiMcMeekingSinterSpecies.h:20
Mdouble activationEnergy_
Definition: ParhamiMcMeekingSinterSpecies.h:89
RealScalar s
Definition: level1_cplx_impl.h:130
RealScalar alpha
Definition: level1_cplx_impl.h:151
Scalar beta
Definition: level2_cplx_impl.h:36
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 exp(const bfloat16 &a)
Definition: BFloat16.h:615
const Mdouble pi
Definition: ExtendedMath.h:23
std::string string(const unsigned &i)
Definition: oomph_definitions.cc:286
@ S
Definition: quadtree.h:62