TRIQS/TRIQS 4.0.0
Researching Interacting Quantum Systems
Loading...
Searching...
No Matches
MC concepts

Concepts that specify the requirements for MC moves and measurements.

The MC framework is generic: any user type that satisfies the relevant concept can be plugged into triqs::mc_tools::mc_generic. The concepts in this group spell out the minimal interface those types must expose:

  • triqs::mc_tools::DoubleOrComplex constrains the sign type to either double or std::complex<double>.
  • triqs::mc_tools::MCMove requires attempt() and accept() returning the sign type, with optional reject(), calibrate() and collect_statistics() hooks for adaptive moves and diagnostics.
  • triqs::mc_tools::MCMeasure requires accumulate(sign) and collect_results(mpi::communicator), leaving the storage of partial accumulators entirely to the user.

Because the framework relies on concepts rather than virtual inheritance, user moves and measurements remain plain, value-semantic types; the triqs::mc_tools::mc_generic engine wraps them through type erasure internally.

Concepts

concept  triqs::mc_tools::DoubleOrComplex
 Check if a type is either a double or a std::complex<double>.
concept  triqs::mc_tools::MCMeasure
 Check if a type can be used as a MC measure.
concept  triqs::mc_tools::MCMove
 Check if a type can be used as a MC move.