|
Feellgood
|
#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_TERMS > | E |
| 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 |
class container to grab altogether all parameters of a simulation, including mesh geometry, containers for the mesh
constructor: call mesh constructor, initialize pts,kdtree and many inner variables
|
inline |
destructor
|
inlineprivate |
compute demagnetizing field, energies, and prepare for next time step quantitites at time t
| [in] | settings | |
| spinAcc_solver | [in|out] | |
| myFMM | [in|out] | |
| [in] | t |
|
private |
find direction of motion of DW
| [in] | idx_dir |
| void Fem::energy | ( | double const | t, |
| Settings & | settings | ||
| ) |
computes all the energies
| [in] | t | time in second, used to compute zeeman contribution if applied field is time dependant |
| [in] | settings |
|
inline |
time evolution : one step in time
| 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 \)
| [in] | thres | threshold parameter |
| [in] | recentering_direction | X|Y|Z |
| 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
| [in] | settings | |
| [in] | t_prm | |
| [out] | fout | |
| [in] | nt | |
| [in] | s |
| 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
| [in] | settings | |
| [in] | linAlg | |
| [in] | spinAcc_solver | |
| [in] | myFMM | |
| [in] | t_prm | |
| [out] | nt | number of time steps performed |
| double Fem::DW_dir |
direction of the domain wall
| std::array<double,NB_ENERGY_TERMS> Fem::E |
current iteration energies
| double Fem::Etot |
total energy
| double Fem::Etot0 |
initial total energy
|
private |
ANN kdtree to find efficiently the closest set of nodes to a physical point in the mesh
| Mesh::mesh Fem::msh |
mesh object to store nodes, fac, tet, and others geometrical values related to the mesh
|
private |
container for the building of the kdtree (handled by ANN library)
|
private |
flag to know if kdtree and pts are allocated
| double Fem::vmax |
maximum speed of magnetization