Skip to content
Snippets Groups Projects
Jonas Greitemann's avatar
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(...)`.
d1802f0d
History
Name Last commit Last update
..