API Documentation#
The montecarlo package exposes three top-level classes.
BitString#
IsingHamiltonian#
- class montecarlo.IsingHamiltonian(G: Graph)[source]#
Bases:
objectIsing Hamiltonian defined on a graph.
H = sum_{(i,j) in E} J_ij s_i s_j + sum_i mu_i s_i
where s_i = +1 if bit i is 1 (up) and s_i = -1 if bit i is 0 (down).
- compute_average_values(T: float)[source]#
Compute exact thermodynamic averages at temperature T.
Enumerates all 2^N configurations and computes Boltzmann-weighted averages of energy, magnetization, heat capacity, and magnetic susceptibility.
- Parameters:
T (float) – Temperature
- Returns:
E : average energy M : average magnetization HC : heat capacity MS : magnetic susceptibility
- Return type:
tuple of (E, M, HC, MS)
MonteCarlo#
- class montecarlo.MonteCarlo(ham: IsingHamiltonian)[source]#
Bases:
objectMetropolis Monte Carlo sampler for an Ising Hamiltonian.
- Parameters:
ham (IsingHamiltonian) – The Hamiltonian to sample
- run(T: float, n_samples: int = 1000, n_burn: int = 100)[source]#
Run Metropolis Monte Carlo sampling.
For each MC step, sweep over all sites proposing single spin flips. Accept or reject based on the Metropolis criterion:
If dE <= 0: accept
If dE > 0: accept with probability exp(-dE/T)
- Parameters:
T (float) – Temperature
n_samples (int) – Number of samples to collect after burn-in
n_burn (int) – Number of burn-in sweeps to discard
- Returns:
energies : np.ndarray of length n_samples magnetizations : np.ndarray of length n_samples
- Return type:
tuple of (energies, magnetizations)