8 #ifndef IMPMPI_REPLICA_EXCHANGE_H
9 #define IMPMPI_REPLICA_EXCHANGE_H
11 #include <IMP/mpi/mpi_config.h>
15 #include <cereal/access.hpp>
16 #include <cereal/types/base_class.hpp>
19 #ifndef MPICH_SKIP_MPICXX
20 #define MPICH_SKIP_MPICXX
22 #ifndef OMPI_SKIP_MPICXX
23 #define OMPI_SKIP_MPICXX
30 IMPMPI_BEGIN_NAMESPACE
46 std::map<std::string, Floats> parameters_;
48 friend class cereal::access;
50 template<
class Archive>
void serialize(Archive &ar) {
51 ar(cereal::base_class<Object>(
this), myrank_, nproc_, index_, exarray_,
57 Ints create_indexes();
60 Ints create_exarray();
62 bool get_acceptance(
double myscore,
double fscore);
64 int get_rank(
int index);
69 void set_my_parameter(std::string key,
Floats values);
71 Floats get_my_parameter(std::string key);
73 int get_friend_index(
int istep);
75 Ints get_exchange_array();
77 Floats get_friend_parameter(std::string key,
int findex);
79 bool do_exchange(
double myscore0,
double myscore1,
int findex);
82 Floats create_temperatures(
double tmin,
double tmax,
int nrep);
A class to implement Hamiltonian Replica Exchange.
#define IMP_OBJECT_METHODS(Name)
Define the basic things needed by any Object.
Common base class for heavy weight IMP objects.
int get_my_index() const
Get replica index.
int get_number_of_replicas() const
Get number of replicas.
Include all non-deprecated headers in IMP.mpi.
A shared base class to help in debugging and things.