Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
GrainBoundaryMobility.h
Go to the documentation of this file.
1/* This file is part of MoDELib, the Mechanics Of Defects Evolution Library.
2 *
3 *
4 * MoDELib is distributed without any warranty under the
5 * GNU General Public License (GPL) v2 <http://www.gnu.org/licenses/>.
6 */
7
8#ifndef _model_GrainBoundaryMobility_h_
9#define _model_GrainBoundaryMobility_h_
10
11#include <iostream>
12#include <cmath>
13#include <assert.h>
14#include <Eigen/Dense>
15#include <Eigen/Geometry>
16#include <BCClattice.h>
17#include <FCClattice.h>
18 // defines mode::cout
19#include <TerminalColors.h> // defines mode::cout
20
21namespace model
22{
23
24
25
26
27 /**************************************************************************/
28 /**************************************************************************/
30 {
31
33 static constexpr double kB=8.617e-5;
34
35
36 typedef Eigen::Matrix<double,3,3> MatrixDim;
37 typedef Eigen::Matrix<double,3,1> VectorDim;
38
39 const double B0;
40 const double B1;
41 const double dH0;
42 const double tauP;
43
44 /**********************************************************************/
45 template<typename DislocationMobilityType>
46 GrainBoundaryMobility(const DislocationMobilityType& dm,
47 const double& spacing,
48 const double& gbE) :
49
50 /* init */ B0(dm.B0*100.0),
51 /* init */ B1(dm.B1*100.0),
52 /* init */ dH0(0.0),
53 /* init */ tauP(1.0)
54 {
56 }
57
58 /**********************************************************************/
59 double velocity(const MatrixDim& S,
60 const VectorDim& b,
61 const VectorDim& , // xi
62 const VectorDim& n,
63 const double& T) const
64 {
65 const double tauB=std::fabs(b.transpose()*S*n);
66 const double tau=tauB/b.norm();
67 const double num(1.0-tau/tauP);
68 double exponential=1.0;
69 if(num>0.0)
70 {
71 exponential=exp(-dH0*num/(kB*T));
72 }
73
74
75 return tauB/(B0+B1*T)*exponential;
76 }
77
78
79
80 };
81
82
83}
84
85#endif
86
87
the tangent vector S
b
Definition int_R.m:16
double velocity(const MatrixDim &S, const VectorDim &b, const VectorDim &, const VectorDim &n, const double &T) const
Eigen::Matrix< double, 3, 3 > MatrixDim
static constexpr double kB
Boltzmann constant in [eV].
Eigen::Matrix< double, 3, 1 > VectorDim
GrainBoundaryMobility(const DislocationMobilityType &dm, const double &spacing, const double &gbE)