25 constexpr
double u[
NPI] = {1. / 3.};
28 constexpr
double v[
NPI] = {1. / 3.};
31 constexpr
double pds[
NPI] = {1. / 2.};
36 constexpr
double a[
N][
NPI] = { {1. -
u[0] -
v[0]}, {
u[0]}, {
v[0]}};
39 const Eigen::Matrix<double,N,NPI>
eigen_a =
40 (Eigen::MatrixXd(
N,
NPI) <<
a[0][0],
a[1][0],
a[2][0] ).finished();
46 constexpr
double u[
NPI] = {1 / 3., 1 / 5., 3 / 5., 1 / 5.};
49 constexpr
double v[
NPI] = {1 / 3., 1 / 5., 1 / 5., 3 / 5.};
52 constexpr
double pds[
NPI] = {-27 / 96., 25 / 96., 25 / 96., 25 / 96.};
56 {1. -
u[0] -
v[0], 1. -
u[1] -
v[1], 1. -
u[2] -
v[2], 1. -
u[3] -
v[3]},
57 {
u[0],
u[1],
u[2],
u[3]},
58 {
v[0],
v[1],
v[2],
v[3]}};
61 const Eigen::Matrix<double,N,NPI>
eigen_a =
62 (Eigen::MatrixXd(
N,
NPI) <<
a[0][0],
a[0][1],
a[0][2],
a[0][3],
63 a[1][0],
a[1][1],
a[1][2],
a[1][3],
64 a[2][0],
a[2][1],
a[2][2],
a[2][3] ).finished();
86 std::cout <<
"surface region name = " <<
regName
91 std::cout <<
"Ks*a = " <<
Ks <<
"*[ " <<
uk <<
"]" << std::endl;
94 std::cout <<
"no surface anisotropy" << std::endl;
98 std::cout<<
"V= " <<
V <<
"; jn= " <<
jn <<
"; uP= " <<
uP <<
"; s= " <<
s << std::endl;
113 inline Tri(
const std::vector<Nodes::Node> &_p_node ,
115 std::initializer_list<int> _i )
122 for(
int i=0;i<
NPI;i++)
126 { std::cerr<<
"Error: Tri constructor has out of bound index\n"; }
143 Eigen::Ref<Eigen::Matrix<double,Nodes::DIM,NPI>> result )
const
145 Eigen::Matrix<double,Nodes::DIM,N> vec_nod;
146 for (
int i = 0; i <
N; i++) vec_nod.col(i) = getter(
getNode(i));
155 Eigen::Ref<Eigen::Matrix<double,NPI,1>> result )
const
157 Eigen::Matrix<double,N,1> scalar_nod;
158 for (
int i = 0; i <
N; i++) scalar_nod(i) = getter(
getNode(i));
160 result = scalar_nod.transpose() *
eigen_a;
169 const Eigen::Ref<
const Eigen::Matrix<double,Nodes::DIM,NPI>>
u )
const;
172 Eigen::Matrix<double,NPI,1>
charges(
const double &
dMs ,
173 const std::function<Eigen::Vector3d(
const Nodes::Node&)> &getter )
const override;
178 Eigen::Matrix<double,Triangle::NPI,1> &localCharges ,
179 std::vector<double> &corr )
const;
182 double demagEnergy(Eigen::Ref<Eigen::Matrix<double,Nodes::DIM,NPI>>
u ,
183 const Eigen::Ref<
const Eigen::Matrix<double,NPI,1>> phi )
const;
195 return std::find(
ind.begin(),
ind.end(), f.
ind[0]) !=
ind.end()
196 && std::find(
ind.begin(),
ind.end(), f.
ind[1]) !=
ind.end()
197 && std::find(
ind.begin(),
ind.end(), f.
ind[2]) !=
ind.end();
209 Eigen::Matrix<double,Nodes::DIM,NPI>
getPtGauss(
void)
const override
211 Eigen::Matrix<double,Nodes::DIM,N> vec_nod;
212 for (
int i = 0; i <
N; i++)
232 return p0p1.cross(p0p2);
Definition: triangle.h:109
void integrales(Triangle::prm const ¶ms)
Definition: triangle.cpp:6
double dMs
Definition: triangle.h:134
Eigen::Matrix< double, Nodes::DIM, NPI > getPtGauss(void) const override
Definition: triangle.h:209
double calc_surf(void) const
Definition: triangle.h:220
void interpolation(const std::function< double(Nodes::Node)> &getter, Eigen::Ref< Eigen::Matrix< double, NPI, 1 >> result) const
Definition: triangle.h:154
double anisotropyEnergy(Triangle::prm const ¶m, const Eigen::Ref< const Eigen::Matrix< double, Nodes::DIM, NPI >> u) const
Definition: triangle.cpp:38
Eigen::Vector3d n
Definition: triangle.h:137
void interpolation(const std::function< Eigen::Vector3d(Nodes::Node)> &getter, Eigen::Ref< Eigen::Matrix< double, Nodes::DIM, NPI >> result) const
Definition: triangle.h:142
double surf
Definition: triangle.h:130
double demagEnergy(Eigen::Ref< Eigen::Matrix< double, Nodes::DIM, NPI >> u, const Eigen::Ref< const Eigen::Matrix< double, NPI, 1 >> phi) const
Definition: triangle.cpp:80
double potential(const std::function< Eigen::Vector3d(Nodes::Node)> &getter, int i) const
Definition: triangle.cpp:87
void orientate(void) override
Definition: triangle.h:224
bool operator==(const Tri &f) const
Definition: triangle.h:191
Eigen::Vector3d calc_norm(void) const
Definition: triangle.h:201
Eigen::Vector3d normal_vect() const
Definition: triangle.h:227
void correctionCharges(const std::function< Eigen::Vector3d(Nodes::Node)> &getter, Eigen::Matrix< double, Triangle::NPI, 1 > &localCharges, std::vector< double > &corr) const
Definition: triangle.cpp:61
Tri(const std::vector< Nodes::Node > &_p_node, const int _idx, std::initializer_list< int > _i)
Definition: triangle.h:113
Eigen::Matrix< double, NPI, 1 > charges(const double &dMs, const std::function< Eigen::Vector3d(const Nodes::Node &)> &getter) const override
Definition: triangle.cpp:45
Template abstract class, mother class for tetraedrons and triangles.
Definition: element.h:30
Eigen::Matrix< double, NPI, 1 > weight
Definition: element.h:59
bool existNodes(void) const
Definition: element.h:119
const Nodes::Node & getNode(const int i) const
Definition: element.h:131
std::array< int, N > ind
Definition: element.h:53
Definition: spinAccumulationSolver.h:23
const Eigen::Matrix< double, N, NPI > eigen_a
Definition: triangle.h:61
constexpr double pds[NPI]
Definition: triangle.h:52
constexpr double u[NPI]
Definition: triangle.h:46
constexpr double v[NPI]
Definition: triangle.h:49
const int N
Definition: triangle.h:18
constexpr double a[N][NPI]
Definition: triangle.h:55
const int NPI
Definition: triangle.h:43
Eigen::Vector3d p
Definition: node.h:61
Definition: triangle.h:70
Eigen::Vector3d s
Definition: triangle.h:81
Eigen::Vector3d uP
Definition: triangle.h:79
double Ks
Definition: triangle.h:73
bool suppress_charges
Definition: triangle.h:72
Eigen::Vector3d uk
Definition: triangle.h:74
void infos(const bool spinAcc=false) const
Definition: triangle.h:84
double V
Definition: triangle.h:75
double jn
Definition: triangle.h:77
std::string regName
Definition: triangle.h:71