Jonas Greitemann
authored
Added a `parallel_tempering` update to the frustmag ising model. It defines parameters to control the PT update frequency and interface with the hamiltonian, but the actual PT logic and MPI communication is delegated to `pt::negotiate_update` which is model-agnostic. On the other side of the fence, the `pt_adapter` now spins up a thread running its static `manage(comm)` function. This manager thread acts like a central registry keeping track of pairs of processes (primary and secondary) which are currently involved in a PT update. The primary one is the process initiating the update and asking the manager for a partner, while the secondary one is that chosen partner. The manager makes sure both processes know their respective partner. Processes have to message the manager to deregister *before* they they can wrap up their simulation. The manager is free to reject deregistration if the thread has been scheduled to take part in an ongoing PT update as secondary partner. In this case, the process has to carry out additional updates and retry until deregistration is confirmed by the manager. This is done in `pt_adapter::run(...)`.
Name | Last commit | Last update |
---|---|---|
.. |