Simpatico  v1.10
PerturbDerivative.h
1 #ifdef MCMD_PERTURB
2 #ifndef MCMD_PERTURB_DERIVATIVE_H
3 #define MCMD_PERTURB_DERIVATIVE_H
4 
5 /*
6 * Simpatico - Simulation Package for Polymeric and Molecular Liquids
7 *
8 * Copyright 2010 - 2017, The Regents of the University of Minnesota
9 * Distributed under the terms of the GNU General Public License.
10 */
11 
12 #include <mcMd/analyzers/SystemAnalyzer.h> // base class template
13 #include <mcMd/simulation/System.h> // base template parameter
14 #include <util/accumulators/Average.h> // member
15 
16 #include <cstdio>
17 
18 namespace McMd
19 {
20 
21  using namespace Util;
22 
28  class PerturbDerivative : public SystemAnalyzer<System>
29  {
30 
31  public:
32 
36  PerturbDerivative(System& system);
37 
41  virtual void readParameters(std::istream& in);
42 
48  virtual void loadParameters(Serializable::IArchive &ar);
49 
55  virtual void save(Serializable::OArchive &ar);
56 
63  template <class Archive>
64  void serialize(Archive& ar, const unsigned int version);
65 
69  virtual void setup();
70 
71  /*
72  * Evaluate derivative and add to ensemble.
73  */
74  virtual void sample(long iStep);
75 
79  virtual void output();
80 
81  private:
82 
84  std::ofstream outputFile_;
85 
87  Average accumulator_;
88 
90  int nSamplePerBlock_;
91 
93  int parameterIndex_;
94 
96  bool isInitialized_;
97 
98  };
99 
100  /*
101  * Serialize to/from an archive.
102  */
103  template <class Archive>
104  void PerturbDerivative::serialize(Archive& ar, const unsigned int version)
105  {
106  Analyzer::serialize(ar, version);
107  ar & nSamplePerBlock_;
108  ar & parameterIndex_;
109  ar & accumulator_;
110  }
111 
112 }
113 #endif // ifndef PERTURB_DERIVATIVE_H
114 #endif // ifdef MCMD_PERTURB
Calculates the average and variance of a sampled property.
Definition: Average.h:43
void serialize(Archive &ar, const unsigned int version)
Serialize to/from an archive.
A set of interacting Molecules enclosed by a Boundary.
Definition: System.h:115
void serialize(Archive &ar, PairSelector &selector, const unsigned int version)
Serialize a PairSelector.
Definition: PairSelector.h:167
Saving / output archive for binary ostream.
void serialize(Archive &ar, const unsigned int version)
Serialize to/from an archive.
Utility classes for scientific computation.
Definition: accumulators.mod:1
Template for Analyzer associated with one System.
PerturbDerivative returns average value of Perturbation::derivative().
Saving archive for binary istream.
Single-processor Monte Carlo (MC) and molecular dynamics (MD).