File simulation.hpp

Typedefs

using d3 = std::array<double, 3>
using rng_vec = std::vector<std::shared_ptr<Rng>, std::allocator<std::shared_ptr<Rng>>>
using sde_jac = std::function<void(double *, double *, double *, double *, const double *, const double, const double)>
namespace simulation

Functions

std::vector<struct results> full_dynamics(const std::vector<double> thermal_field_strengths, const std::vector<double> reduced_anisotropy_constants, const std::vector<double> reduced_particle_volumes, const std::vector<d3> anisotropy_unit_axes, const std::vector<d3> initial_magnetisations, const std::vector<std::vector<d3>> interparticle_unit_distances, const std::vector<std::vector<double>> interparticle_reduced_distance_magnitudes, const std::function<double(const double)> applied_field, const double average_anisotropy, const double average_volume, const double damping_constant, const double saturation_magnetisation, const double time_step, const double end_time, Rng &rng, const bool renorm, const bool interactions, const bool use_implicit, const double eps, const int max_samples, )
std::vector<results> full_dynamics(const std::vector<double> radius, const std::vector<double> anisotropy, const std::vector<d3> anisotropy_axes, const std::vector<d3> magnetisation_direction, const std::vector<d3> location, const double magnetisation, const double damping, const double temperature, const bool renorm, const bool interactions, const bool use_implicit, const double eps, const double time_step, const double end_time, const size_t max_samples, const long seed, const field::options field_option = field::CONSTANT, const double field_amplitude = 0.0, const double field_frequency = 0.0)
struct results dom_ensemble_dynamics(const double volume, const double anisotropy, const double temperature, const double magnetisation, const double alpha, const std::function<double(double)> applied_field, const std::array<double, 2> initial_mags, const double time_step, const double end_time, const int max_samples, )
void save_results(const std::string fname, const struct results &res)

Save results to disk.

Saves the contents of a results struct to disk. Given a file name ‘foo’ the following files are written to disk ‘foo.mx’, ‘foo.my’, ‘foo.mz’, ‘foo.field’, ‘foo.time’, ‘foo.energy’.

Parameters
  • fname: /path/to/filename prefix for files
  • res: results struct to save

void zero_results(struct results &res)

Initialise results memory to zero.

Parameters
  • res: results struct to zero

void reduce_to_system_magnetisation(double *mag, const double *particle_mags, const size_t N_particles)
struct results

Public Functions

results(size_t _N)

Public Members

std::unique_ptr<double[]> mx
std::unique_ptr<double[]> my
std::unique_ptr<double[]> mz
std::unique_ptr<double[]> field
std::unique_ptr<double[]> time
size_t N