Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
PolyhedronInclusion_yang.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_PolyhedronInclusion_H_
9#define model_PolyhedronInclusion_H_
10
11
12#include <Eigen/Dense>
13//#include <Material.h>
14#include <StaticID.h>
15
16// http://solidmechanics.org/text/Chapter5_4/Chapter5_4.htm
17#include <SlipSystem.h>
18#include <SecondPhase.h>
21#include <Plane.h>
22#include <Math/VoigtTraits.h>
23
24namespace model
25{
26
27struct Psi_I1
28{
29
30 double I1_a_a_a;
31 double I1_b_b_b;
32 double I1_le_le_le;
33 double I1_a_a_b;
34 double I1_a_a_le;
35 double I1_a_b_b;
36 double I1_b_b_le;
37 double I1_a_le_le;
38 double I1_b_le_le;
39 double I1_a_b_le;
40};
41
42 template <int dim>
44 /* */, private std::map<size_t,Plane<dim>>
45 {
46 static constexpr int voigtSize=SymmetricVoigtTraits<dim>::voigtSize;
47
48 typedef Eigen::Matrix<double,voigtSize,voigtSize> MatrixVoigtSize;
49 typedef Eigen::Matrix<double,dim,dim> MatrixDim;
50 typedef Eigen::Matrix<double,dim,1> VectorDim;
51
52 public:
53
54 static const SymmetricVoigtTraits<dim> voigtTraits;
55
56 static std::map<size_t,std::vector<std::pair<size_t,VectorDim>>> getFaces(const std::map<size_t,PolyhedronInclusionNodeIO<dim>>& nodesMap,
57 const std::map<size_t,std::vector<size_t>>& faceIDs);
58
59 static double Phi_u_II_a(double a, double b, double le);
60 static double Phi_u_II_b(double a, double b, double le);
61 static double Phi_u_II_le(double a, double b, double le);
62
63// static double PHI_ij(int i, int j, double a, double b, double lm, double lp, const VectorDim& Svnorm, const VectorDim& Vnorm, const VectorDim& Vdir);
64// double PHI_ij(int i, int j,const VectorDim& x) const;
65
66 static double Psi_I1_a_a_a(double a, double b, double le);
67 static double Psi_I1_a_a_b(double a, double b, double le);
68 static double Psi_I1_a_a_le(double a, double b, double le);
69 static double Psi_I1_a_b_b(double a, double b, double le);
70 static double Psi_I1_a_b_le(double a, double b, double le);
71 static double Psi_I1_a_le_le(double a, double b, double le);
72 static double Psi_I1_b_b_b(double a, double b, double le);
73 static double Psi_I1_b_b_le(double a, double b, double le);
74 static double Psi_I1_b_le_le(double a, double b, double le);
75 static double Psi_I1_le_le_le(double a, double b, double le);
76
77// static double PSI_ijkl(int i, int j, int k, int l, double a, double b, double lm, double lp, const VectorDim& Svnorm, const VectorDim& Vnorm, const VectorDim& Vdir);
78// double PSI_ijkl(int i, int j, int k, int l, const VectorDim& x) const;
79
80 const MatrixDim delta;
81
82 public:
83
84 const std::map<size_t,PolyhedronInclusionNodeIO<dim>>& nodes;
85 const std::map<size_t,std::vector<std::pair<size_t,VectorDim>>> faces;
86 const int masterID;
87
88// static std::map<const GammaSurface*,GammaSurface> gammaSurfaceMap;
89//
90// static void addSlipSystems(const std::vector<std::shared_ptr<SlipSystem>>& slipSystems);
91
92
93// double misfitEnergy(const Eigen::Matrix<double,3,1>& b, const GammaSurface* const matrixGammaSurface) const;
94
95
96 /**********************************************************************/
97 PolyhedronInclusion(const std::map<size_t,PolyhedronInclusionNodeIO<dim>>& nodesMap,
98 const std::map<size_t,std::vector<size_t>>& faceIDs,
99 const MatrixDim& _eT,
100 const double& _nu,
101 const double& _mu,
102 const double& _mobilityReduction,
103 const int& _phaseID,
104 const int& _masterID,
105 const std::shared_ptr<SecondPhase<dim>>& sph);
106
107
108 bool contains(const VectorDim& x) const override;
109 MatrixDim stress(const VectorDim& x) const override;
110 MatrixDim elasticStrain(const VectorDim& x) const ;
111 MatrixDim strain(const VectorDim& x) const ;
112 double eshelbyTensorComponent(const int&i,const int&j,const int&k,const int&l,const MatrixDim& PHI,const MatrixDim& delta, const Psi_I1& psi,const VectorDim& Svnorm,const VectorDim& Vnorm,const VectorDim& Vdir) const;
113 MatrixVoigtSize eshelbyTensorVoigt(const VectorDim& x) const ;
114 const std::map<size_t,Plane<dim>>& planes() const;
115 VectorDim center() const;
116
117
118 };
119
120// template <int dim>
121// std::map<const GammaSurface*,GammaSurface> PolyhedronInclusion<dim>::gammaSurfaceMap;
122}
123#endif
const std::map< size_t, std::vector< std::pair< size_t, VectorDim > > > faces
static double Psi_I1_a_le_le(double a, double b, double le)
static double Psi_I1_b_b_le(double a, double b, double le)
static double Psi_I1_a_a_a(double a, double b, double le)
MatrixDim elasticStrain(const VectorDim &x) const
static double Psi_I1_b_b_b(double a, double b, double le)
const std::map< size_t, PolyhedronInclusionNodeIO< dim > > & nodes
static double Phi_u_II_b(double a, double b, double le)
static std::map< size_t, std::vector< std::pair< size_t, VectorDim > > > getFaces(const std::map< size_t, PolyhedronInclusionNodeIO< dim > > &nodesMap, const std::map< size_t, std::vector< size_t > > &faceIDs)
static double Phi_u_II_a(double a, double b, double le)
static double Phi_u_II_le(double a, double b, double le)
static double Psi_I1_le_le_le(double a, double b, double le)
static double Psi_I1_a_a_le(double a, double b, double le)
static const SymmetricVoigtTraits< dim > voigtTraits
const std::map< size_t, Plane< dim > > & planes() const
static double Psi_I1_a_b_le(double a, double b, double le)
MatrixVoigtSize eshelbyTensorVoigt(const VectorDim &x) const
MatrixDim strain(const VectorDim &x) const
PolyhedronInclusion(const std::map< size_t, PolyhedronInclusionNodeIO< dim > > &nodesMap, const std::map< size_t, std::vector< size_t > > &faceIDs, const MatrixDim &_eT, const double &_nu, const double &_mu, const double &_mobilityReduction, const int &_phaseID, const std::shared_ptr< SecondPhase< dim > > &sph)
double eshelbyTensorComponent(const int &i, const int &j, const int &k, const int &l, const MatrixDim &PHI, const MatrixDim &delta, const Psi_I1 &psi, const VectorDim &Svnorm, const VectorDim &Vnorm, const VectorDim &Vdir) const
static double Psi_I1_b_le_le(double a, double b, double le)
MatrixDim stress(const VectorDim &x) const override
bool contains(const VectorDim &x) const override
static double Psi_I1_a_a_b(double a, double b, double le)
static double Psi_I1_a_b_b(double a, double b, double le)
a
Definition int_R.m:14
b
Definition int_R.m:16
x
Definition int_R.m:12
static constexpr int voigtSize
Definition VoigtTraits.h:21
int j
int k
int i