NanoMagMC  v0.2
Monte Carlo Simulation Software for Atomistic Models of Magnetic Materials
thermodynamics.hpp
Go to the documentation of this file.
1 #ifndef _TDFUNCS
2 #define _TDFUNCS
3 
4 #include "field_type.hpp"
5 
6 #include <vector>
7 #include <functional>
8 
9 namespace particle{ namespace td {
11  {
12  private:
13  std::function<double(field::field_type&,
14  xt::xtensorf<double, xt::xshape<4>>&)> E_func;
15  std::function<double(field::field_type&, int,
16  xt::xtensorf<double, xt::xshape<4>>&)> dE_func;
17 
18  public:
25  void setup(bool useJ, bool useD);
26 
34  double calc_E(field::field_type& lattice,
35  xt::xtensorf<double, xt::xshape<4>>& H) {return E_func(lattice, H);}
36 
45  double calc_dE(field::field_type& lattice,
46  int position, xt::xtensorf<double, xt::xshape<4>>& H)
47  {return dE_func(lattice, position, H);}
48 
55  xt::xtensorf<double, xt::xshape<4>> calc_M(field::field_type& lattice);
56 
64  xt::xtensorf<double, xt::xshape<4>> calc_subM(
65  field::field_type& lattice,
66  int subnumber);
67 
74  xt::xtensorf<double, xt::xshape<4>> calc_sub4M(
75  field::field_type& lattice);
76 
84  std::vector<double> calc_TC(field::field_type& lattice);
85  };
86 
95  double solid_angle(const xt::xtensorf<double, xt::xshape<4>>& s1,
96  const xt::xtensorf<double, xt::xshape<4>>& s2,
97  const xt::xtensorf<double, xt::xshape<4>>& s3);
98 }}
99 
100 #endif
xt::xtensorf< double, xt::xshape< 4 > > calc_subM(field::field_type &lattice, int subnumber)
Definition: field_type.hpp:10
Base class for fields.
Definition: field_type.hpp:14
double calc_E(field::field_type &lattice, xt::xtensorf< double, xt::xshape< 4 >> &H)
Definition: thermodynamics.hpp:34
xt::xtensorf< double, xt::xshape< 4 > > calc_sub4M(field::field_type &lattice)
xt::xtensorf< double, xt::xshape< 4 > > calc_M(field::field_type &lattice)
double solid_angle(const xt::xtensorf< double, xt::xshape< 4 >> &s1, const xt::xtensorf< double, xt::xshape< 4 >> &s2, const xt::xtensorf< double, xt::xshape< 4 >> &s3)
void setup(bool useJ, bool useD)
double calc_dE(field::field_type &lattice, int position, xt::xtensorf< double, xt::xshape< 4 >> &H)
Definition: thermodynamics.hpp:45
Definition: thermodynamics.hpp:10
std::vector< double > calc_TC(field::field_type &lattice)