Feellgood
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
Fem Class Reference

#include <fem.h>

Public Member Functions

 Fem (Settings &mySets, timing &t_prm)
 
 ~Fem ()
 
void energy (double const t, Settings &settings)
 
void evolution (void)
 
void saver (Settings &settings, timing const &t_prm, std::ofstream &fout, const int nt, std::vector< Eigen::Vector3d > &s) const
 
bool recenter (double thres, char recentering_direction)
 
int time_integration (Settings &settings, LinAlgebra &linAlg, spinAcc &spinAcc_solver, scal_fmm::fmm &myFMM, timing &t_prm, int &nt)
 

Public Attributes

double vmax
 
std::array< double, NB_ENERGY_TERMSE
 
double DW_dir
 
double Etot0
 
double Etot
 
Mesh::mesh msh
 

Private Member Functions

void direction (enum Nodes::index idx_dir)
 
void compute_all (Settings &settings, spinAcc &spinAcc_solver, scal_fmm::fmm &myFMM, const double t)
 

Private Attributes

bool recenter_mem
 
ANNkd_tree * kdtree
 
ANNpointArray pts
 

Detailed Description

class container to grab altogether all parameters of a simulation, including mesh geometry, containers for the mesh

Constructor & Destructor Documentation

◆ Fem()

Fem::Fem ( Settings mySets,
timing t_prm 
)
inline

constructor: call mesh constructor, initialize pts,kdtree and many inner variables

◆ ~Fem()

Fem::~Fem ( )
inline

destructor

Member Function Documentation

◆ compute_all()

void Fem::compute_all ( Settings settings,
spinAcc spinAcc_solver,
scal_fmm::fmm myFMM,
const double  t 
)
inlineprivate

compute demagnetizing field, energies, and prepare for next time step quantitites at time t

Parameters
[in]settings
spinAcc_solver[in|out]
myFMM[in|out]
[in]t

◆ direction()

void Fem::direction ( enum Nodes::index  idx_dir)
private

find direction of motion of DW

Parameters
[in]idx_dir

◆ energy()

void Fem::energy ( double const  t,
Settings settings 
)

computes all the energies

Parameters
[in]ttime in second, used to compute zeeman contribution if applied field is time dependant
[in]settings

◆ evolution()

void Fem::evolution ( void  )
inline

time evolution : one step in time

◆ recenter()

bool Fem::recenter ( double  thres,
char  recentering_direction 
)

recentering algorithm for the study of the motion of a domain wall.

if \( D_i>0 \) if \( D_i<0 \)

<-------------—|----—> ----—>|<-------------— \( m_i = < u_i > < 0 \)

or or

-------------—>|<----— <----—|-------------—> \( m_i = <u_i> > 0 \)

Parameters
[in]thresthreshold parameter
[in]recentering_directionX|Y|Z

◆ saver()

void Fem::saver ( Settings settings,
timing const &  t_prm,
std::ofstream &  fout,
const int  nt,
std::vector< Eigen::Vector3d > &  s 
) const

saving function for a solution

Parameters
[in]settings
[in]t_prm
[out]fout
[in]nt
[in]s

◆ time_integration()

int Fem::time_integration ( Settings settings,
LinAlgebra linAlg,
spinAcc spinAcc_solver,
scal_fmm::fmm myFMM,
timing t_prm,
int &  nt 
)

performs the time integration of the LLG problem, with spin accumulation if any

Parameters
[in]settings
[in]linAlg
[in]spinAcc_solver
[in]myFMM
[in]t_prm
[out]ntnumber of time steps performed

Member Data Documentation

◆ DW_dir

double Fem::DW_dir

direction of the domain wall

◆ E

std::array<double,NB_ENERGY_TERMS> Fem::E

current iteration energies

◆ Etot

double Fem::Etot

total energy

◆ Etot0

double Fem::Etot0

initial total energy

◆ kdtree

ANNkd_tree* Fem::kdtree
private

ANN kdtree to find efficiently the closest set of nodes to a physical point in the mesh

◆ msh

Mesh::mesh Fem::msh

mesh object to store nodes, fac, tet, and others geometrical values related to the mesh

◆ pts

ANNpointArray Fem::pts
private

container for the building of the kdtree (handled by ANN library)

◆ recenter_mem

bool Fem::recenter_mem
private

flag to know if kdtree and pts are allocated

◆ vmax

double Fem::vmax

maximum speed of magnetization


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