|
numerics
|
2D Ising model – classic mode + nucleation with umbrella sampling More...
#include "numerics.hpp"#include "stats/stats.hpp"#include "analysis/roots.hpp"#include "stochastic/markov.hpp"#include "spatial/pbc_lattice.hpp"#include "spatial/connected_components.hpp"#include <raylib.h>#include <cmath>#include <random>#include <vector>#include <algorithm>#include <cstring>Go to the source code of this file.
Classes | |
| struct | RingBuffer |
| struct | IsingLattice |
Functions | |
| int | main () |
2D Ising model – classic mode + nucleation with umbrella sampling
Absorbs ~/projects/IsingNucleation into the numerics project. Exact match to IsingNucleation parameters: n=300, J=1, beta=0.58 (T~=1.724), F=0.1 (nucleation), F=0 (classic) Random spin selection per sweep (n^2 picks with replacement) DeltaE = 2J*s*(Sigma nbrs) - 2F*s (same sign convention as mc_step_boltz.c)
Optimizations vs. the original C implementation:
Two modes (TAB to switch): Classic – free Metropolis; magnetisation and E/N^2 graphs Nucleation – umbrella sampling; tracks largest spin-down cluster (nucleus)
Definition in file main.cpp.
| int main | ( | ) |
Definition at line 290 of file main.cpp.
References IsingLattice::all_up(), RingBuffer::back(), IsingLattice::beta, num::RunningStats::count, IsingLattice::energy_per_spin(), IsingLattice::F, num::Histogram::fill(), IsingLattice::generate_nucleus(), num::ClusterResult::id, num::ClusterResult::largest_id, IsingLattice::magnetization(), num::RunningStats::mean, IsingLattice::mean_field_m(), RingBuffer::push(), IsingLattice::random_init(), num::RunningStats::reset(), num::Histogram::reset(), IsingLattice::set_field(), IsingLattice::set_temperature(), IsingLattice::spins, num::RunningStats::std_dev(), IsingLattice::sweep(), IsingLattice::sweep_umbrella(), and num::RunningStats::update().