Feellgood
Public Member Functions | Public Attributes | Private Member Functions | List of all members
Triangle::Tri Class Reference

#include <triangle.h>

Inheritance diagram for Triangle::Tri:
element< N, NPI >

Public Member Functions

 Tri (const std::vector< Nodes::Node > &_p_node, const int _idx, std::initializer_list< int > _i)
 
void interpolation (const std::function< Eigen::Vector3d(Nodes::Node)> &getter, Eigen::Ref< Eigen::Matrix< double, Nodes::DIM, NPI >> result) const
 
void interpolation (const std::function< double(Nodes::Node)> &getter, Eigen::Ref< Eigen::Matrix< double, NPI, 1 >> result) const
 
void integrales (Triangle::prm const &params)
 
double anisotropyEnergy (Triangle::prm const &param, const Eigen::Ref< const Eigen::Matrix< double, Nodes::DIM, NPI >> u) const
 
Eigen::Matrix< double, NPI, 1 > charges (const double &dMs, const std::function< Eigen::Vector3d(const Nodes::Node &)> &getter) const override
 
void correctionCharges (const std::function< Eigen::Vector3d(Nodes::Node)> &getter, Eigen::Matrix< double, Triangle::NPI, 1 > &localCharges, std::vector< double > &corr) const
 
double demagEnergy (Eigen::Ref< Eigen::Matrix< double, Nodes::DIM, NPI >> u, const Eigen::Ref< const Eigen::Matrix< double, NPI, 1 >> phi) const
 
double potential (const std::function< Eigen::Vector3d(Nodes::Node)> &getter, int i) const
 
bool operator== (const Tri &f) const
 
Eigen::Vector3d calc_norm (void) const
 
Eigen::Matrix< double, Nodes::DIM, NPIgetPtGauss (void) const override
 
double calc_surf (void) const
 
- Public Member Functions inherited from element< N, NPI >
 element (const std::vector< Nodes::Node > &_p_node, const int _idx, const std::initializer_list< int > &_i)
 
constexpr int getN (void) const
 
constexpr int getNPI (void) const
 
void buildMatP (Eigen::Ref< Eigen::Matrix< double, 2 *N, 3 *N >> P)
 
void infos (void) const
 
bool existNodes (void) const
 

Public Attributes

double surf
 
double dMs
 
Eigen::Vector3d n
 
- Public Attributes inherited from element< N, NPI >
std::array< int, N > ind
 
int idxPrm
 
Eigen::Matrix< double, NPI, 1 > weight
 
Eigen::Matrix< double, 2 *N, 2 *N > Kp
 
Eigen::Matrix< double, 2 *N, 1 > Lp
 

Private Member Functions

void orientate (void) override
 
Eigen::Vector3d normal_vect () const
 

Additional Inherited Members

- Protected Member Functions inherited from element< N, NPI >
const Nodes::NodegetNode (const int i) const
 

Detailed Description

Tri is a class containing the index references to nodes, its surface and its normal unit vector, it has a triangular shape and should not be degenerated, orientation must be defined in adequation with the mesh

Constructor & Destructor Documentation

◆ Tri()

Triangle::Tri::Tri ( const std::vector< Nodes::Node > &  _p_node,
const int  _idx,
std::initializer_list< int >  _i 
)
inline

constructor used by readMesh

Parameters
[in]_p_nodevector of nodes
[in]_idxregion index in region vector
[in]_inode index

Member Function Documentation

◆ anisotropyEnergy()

double Tri::anisotropyEnergy ( Triangle::prm const &  param,
const Eigen::Ref< const Eigen::Matrix< double, Nodes::DIM, NPI >>  u 
) const

anisotropy energy of the triangle

Parameters
[in]param
[in]u

◆ calc_norm()

Eigen::Vector3d Triangle::Tri::calc_norm ( void  ) const
inline

computes the norm to the triangle, returns a unit vector

◆ calc_surf()

double Triangle::Tri::calc_surf ( void  ) const
inline

computes surface of the triangle

◆ charges()

Eigen::Matrix< double, NPI, 1 > Tri::charges ( const double &  dMs,
const std::function< Eigen::Vector3d(const Nodes::Node &)> &  getter 
) const
overridevirtual

computes surface charges, return result on NPI

Parameters
[in]dMs
[in]getter

Implements element< N, NPI >.

◆ correctionCharges()

void Tri::correctionCharges ( const std::function< Eigen::Vector3d(Nodes::Node)> &  getter,
Eigen::Matrix< double, Triangle::NPI, 1 > &  localCharges,
std::vector< double > &  corr 
) const

computes correction on surface charges from localCharges input, result directly stored in corr

Parameters
[in]getter
[in]localCharges
corr[in|out]

◆ demagEnergy()

double Tri::demagEnergy ( Eigen::Ref< Eigen::Matrix< double, Nodes::DIM, NPI >>  u,
const Eigen::Ref< const Eigen::Matrix< double, NPI, 1 >>  phi 
) const

demagnetizing energy of the triangle

Parameters
[in]u
[in]phi

◆ getPtGauss()

Eigen::Matrix<double,Nodes::DIM,NPI> Triangle::Tri::getPtGauss ( void  ) const
inlineoverridevirtual

returns Gauss points

Implements element< N, NPI >.

◆ integrales()

void Tri::integrales ( Triangle::prm const &  params)

computes the integral contribution of the triangular triangle, the only contribution comes from Neel surface anisotropy

Parameters
[in]params

◆ interpolation() [1/2]

void Triangle::Tri::interpolation ( const std::function< double(Nodes::Node)> &  getter,
Eigen::Ref< Eigen::Matrix< double, NPI, 1 >>  result 
) const
inline

interpolation function on the output of the getter, mind the transposition: result = transpose(scalar_nod) * a

Parameters
[in]getter
[out]result

◆ interpolation() [2/2]

void Triangle::Tri::interpolation ( const std::function< Eigen::Vector3d(Nodes::Node)> &  getter,
Eigen::Ref< Eigen::Matrix< double, Nodes::DIM, NPI >>  result 
) const
inline

interpolation function on the output of the getter. result = vec_nod * a

Parameters
[in]getter
[out]result

◆ normal_vect()

Eigen::Vector3d Triangle::Tri::normal_vect ( ) const
inlineprivate

return normal to the triangle, not normalized

◆ operator==()

bool Triangle::Tri::operator== ( const Tri f) const
inline

Two triangles are equal if they have the same set of vertices, i.e. if their lists of node indices are the same to within a permutation. Warning: two equal triangles may have different orientations.

◆ orientate()

void Triangle::Tri::orientate ( void  )
inlineoverrideprivatevirtual

do nothing function: the orientation of the triangles does not change

Implements element< N, NPI >.

◆ potential()

double Tri::potential ( const std::function< Eigen::Vector3d(Nodes::Node)> &  getter,
int  i 
) const

computes correction on potential

Member Data Documentation

◆ dMs

double Triangle::Tri::dMs

difference (d for delta) of magnetization at the triangle between corresponding tetrahedrons

◆ n

Eigen::Vector3d Triangle::Tri::n

normal vector (unit vector)

◆ surf

double Triangle::Tri::surf

surface of the element


The documentation for this class was generated from the following files: