A parallel C++ Library for Simulations in the Heisenberg Model
ising.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "model/model.h"
4 
5 namespace HB::Ising
6 {
7 class Ising : public Model
8 {
9  public:
10  using SimulationStrategy = std::function<void(const Ising&)>;
11 
12  Ising(float J, float3 B, SimulationStrategy s) : Model(J, B), mS(s) {};
13 
14  /****************************************************/
17  float calcEnergy(const Grid<short int> &grid) final;
18 
19  /***********************************************************/
22  float calcMagnetization(const Grid<short int> &grid) final;
23 
24  private:
25  /*******************************************************************/
28  float calcEnergy(const Grid<short int> &grid, const dim3 index) final;
29 
30  /*********************************************************************/
33  void flip(const dim3 index, Grid<short int> &grid) final;
34 
35  void simulate() const override
36  {
37  mS(*this);
38  }
39 
41 };
42 }
HB::Ising::Ising::mS
SimulationStrategy mS
Definition: ising.h:40
model.h
HB::Model
An abstract class representing the model describing the spins. A model class has to derive from it an...
Definition: model.h:41
HB::Ising::Ising::flip
void flip(const dim3 index, Grid< short int > &grid) final
Computes the energy difference, when a random point is flipped.
HB::Ising::Ising::calcEnergy
float calcEnergy(const Grid< short int > &grid) final
Computes the overall energy of the entire grid.
HB::Ising::Ising::Ising
Ising(float J, float3 B, SimulationStrategy s)
Definition: ising.h:12
HB::Ising::Ising::simulate
void simulate() const override
Definition: ising.h:35
HB::Ising::Ising::calcMagnetization
float calcMagnetization(const Grid< short int > &grid) final
Computes the overall magnetization of the entire grid.
HB::Ising::Ising
Definition: ising.h:8
HB::Ising
Definition: ising.h:6
HB::Ising::Ising::calcEnergy
float calcEnergy(const Grid< short int > &grid, const dim3 index) final
Computes the energy difference, when random_point is flipped.
HB::Ising::Ising::SimulationStrategy
std::function< void(const Ising &)> SimulationStrategy
Definition: ising.h:10
HB::Grid
A class storing spin values as a grid and certain meta information.
Definition: grid.h:36