oILAB
Loading...
Searching...
No Matches
Dislocations.h
Go to the documentation of this file.
1//
2// Created by Nikhil Chandra Admal on 2/18/24.
3//
4
5#ifndef OILAB_DISLOCATIONS_H
6#define OILAB_DISLOCATIONS_H
7
9#include<vector>
10
11namespace oILAB {
12class Dislocations : private std::vector<DislocationDipole> {
13 using Matrix2d = Eigen::Matrix2d;
14 using Vector2d = Eigen::Vector2d;
15 double line_search(const Vector2d &x, const Vector2d &dx, const Vector2d &y,
16 const int &branch) const;
17 Matrix2d jacobian(const Vector2d &x, const int &branch) const;
18 Vector2d inverseDeformationMap(const Vector2d &x, const int &branch) const;
19 const std::vector<DislocationDipole> &dislocations() const;
20
21public:
22 const double a2;
24 const int nImages;
25
26 Dislocations(const double &a2, const double &shiftSize, const int &nImages);
27
29 void removeDislocationDipole(const int &index);
30 Vector2d deformationMap(const Vector2d &X, const int &branch) const;
31 double edgeElasticEnergyKernel(const Vector2d &x1, const Vector2d &x2,
32 const Vector2d &b1, const Vector2d &b2) const;
33 double elasticEnergy() const;
34
35 };
36 } // namespace oILAB
37#endif //OILAB_DISLOCATIONS_H
const std::vector< DislocationDipole > & dislocations() const
Vector2d deformationMap(const Vector2d &X, const int &branch) const
double elasticEnergy() const
Eigen::Matrix2d Matrix2d
Eigen::Vector2d Vector2d
Dislocations(const double &a2, const double &shiftSize, const int &nImages)
const Vector2d shift
void removeDislocationDipole(const int &index)
double line_search(const Vector2d &x, const Vector2d &dx, const Vector2d &y, const int &branch) const
double edgeElasticEnergyKernel(const Vector2d &x1, const Vector2d &x2, const Vector2d &b1, const Vector2d &b2) const
Vector2d inverseDeformationMap(const Vector2d &x, const int &branch) const
void insertDislocationDipole(Matrix2d &ends, Vector2d &b)
Matrix2d jacobian(const Vector2d &x, const int &branch) const