I am learning Monte Carlo simulation for the classical spin systems. I am wondering if there is an efficient way to do classical Monte Carlo simulation for $O(3)$ Heisenberg spins(i.e. unlike the Ising model, spin direction is continuous)?
Especially, I am wondering what's the best cluster update algorithm for the continuous case. For Ising case, I know Swendsen-Wang or Wolff cluster update algorithm, but for the continuous cases it's not very clear how to do non-local(cluster) updates.
I googled it for a while but cannot easily find a good resolution. Maybe the natural first step is discretizing the direction, but I am stuck on how to connect it with the existing cluster update scheme. Usual single-site Metropolis takes too much time to converge, especially near the critical point.
Thank you very much!