SSAGES  0.1
A MetaDynamics Package
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Groups Pages
Umbrella.h
1 
21 #pragma once
22 
23 #include "Method.h"
24 #include <fstream>
25 
26 namespace SSAGES
27 {
29 
35  class Umbrella : public Method
36  {
37  private:
39  std::vector<double> kspring_;
40 
42  std::vector<double> centers0_, centers1_;
43 
45  int time_;
46 
48  std::string filename_;
49 
51  int outfreq_;
52 
54  std::ofstream umbrella_;
55 
57  bool append_;
58 
59  double GetCurrentCenter(int iteration, unsigned i)
60  {
61  // We are at the end.
62  if(iteration >= time_) return centers1_[i];
63 
64  // Scale linearly.
65  return (centers1_[i] - centers0_[i])/time_*iteration + centers0_[i];
66  }
67 
69 
73  void PrintUmbrella(const CVList& cvs, uint iteration);
74 
75  public:
77 
89  Umbrella(const MPI_Comm& world,
90  const MPI_Comm& comm,
91  const std::vector<double>& kspring,
92  const std::vector<double>& centers,
93  std::string name,
94  unsigned int frequency) :
95  Method(frequency, world, comm), kspring_(kspring), centers0_(centers),
96  centers1_(centers), time_(0), filename_(name), outfreq_(1), append_(false)
97  {
98  }
99 
101 
115  Umbrella(const MPI_Comm& world,
116  const MPI_Comm& comm,
117  const std::vector<double>& kspring,
118  const std::vector<double>& centers0,
119  const std::vector<double>& centers1,
120  int timesteps,
121  std::string name,
122  unsigned int frequency) :
123  Method(frequency, world, comm), kspring_(kspring), centers0_(centers0),
124  centers1_(centers1), time_(timesteps), filename_(name), outfreq_(1)
125  {
126  }
127 
129 
133  void PreSimulation(Snapshot* snapshot, const class CVManager& cvmanager) override;
134 
136 
140  void PostIntegration(Snapshot* snapshot, const class CVManager& cvmanager) override;
141 
143 
147  void PostSimulation(Snapshot* snapshot, const class CVManager& cvmanager) override;
148 
150 
153  void SetOutputFrequency(int outfreq)
154  {
155  outfreq_ = outfreq;
156  }
157 
159 
162  void SetAppend(bool append)
163  {
164  append_ = append;
165  }
166 
168  static Umbrella* Build(const Json::Value& json,
169  const MPI_Comm& world,
170  const MPI_Comm& comm,
171  const std::string& path);
172  };
173 }
static Umbrella * Build(const Json::Value &json, const MPI_Comm &world, const MPI_Comm &comm, const std::string &path)
Definition: Umbrella.cpp:113
std::vector< double > centers0_
Vector of equilibrium distances.
Definition: Umbrella.h:42
Collective variable manager.
Definition: CVManager.h:40
std::vector< CollectiveVariable * > CVList
List of Collective Variables.
Definition: types.h:51
void SetOutputFrequency(int outfreq)
Set output frequency.
Definition: Umbrella.h:153
Class containing a snapshot of the current simulation in time.
Definition: Snapshot.h:43
Interface for Method implementations.
Definition: Method.h:43
void PostIntegration(Snapshot *snapshot, const class CVManager &cvmanager) override
Post-integration hook.
Definition: Umbrella.cpp:57
Umbrella sampling method.
Definition: Umbrella.h:35
Umbrella(const MPI_Comm &world, const MPI_Comm &comm, const std::vector< double > &kspring, const std::vector< double > &centers, std::string name, unsigned int frequency)
Constructor.
Definition: Umbrella.h:89
std::vector< double > kspring_
Vector of spring constants.
Definition: Umbrella.h:39
bool append_
Append to output files?
Definition: Umbrella.h:57
int time_
Amount of time over which to scale centers.
Definition: Umbrella.h:45
int outfreq_
Frequency of outputting data.
Definition: Umbrella.h:51
void PostSimulation(Snapshot *snapshot, const class CVManager &cvmanager) override
Post-simulation hook.
Definition: Umbrella.cpp:87
std::string filename_
Output filename.
Definition: Umbrella.h:48
void SetAppend(bool append)
Set append mode.
Definition: Umbrella.h:162
void PrintUmbrella(const CVList &cvs, uint iteration)
Print umbrella values.
Definition: Umbrella.cpp:93
Umbrella(const MPI_Comm &world, const MPI_Comm &comm, const std::vector< double > &kspring, const std::vector< double > &centers0, const std::vector< double > &centers1, int timesteps, std::string name, unsigned int frequency)
Constructor.
Definition: Umbrella.h:115
std::ofstream umbrella_
Output stream for umbrella data.
Definition: Umbrella.h:54
void PreSimulation(Snapshot *snapshot, const class CVManager &cvmanager) override
Pre-simulation hook.
Definition: Umbrella.cpp:33