Simpatico  v1.10
PairEnergyAnalyzer.cpp
1 /*
2 * Simpatico - Simulation Package for Polymeric and Molecular Liquids
3 *
4 * Copyright 2010 - 2017, The Regents of the University of Minnesota
5 * Distributed under the terms of the GNU General Public License.
6 */
7 
8 #include "PairEnergyAnalyzer.h"
9 #include <ddMd/simulation/Simulation.h>
10 #include <ddMd/potentials/pair/PairPotential.h>
11 
12 #include <sstream>
13 
14 namespace DdMd
15 {
16 
17  using namespace Util;
18 
19  /*
20  * Constructor.
21  */
23  : AverageAnalyzer(simulation)
24  { setClassName("PairEnergyAnalyzer"); }
25 
26  /*
27  * Destructor.
28  */
30  {}
31 
32  /*
33  * Read interval and outputFileName.
34  */
35  void PairEnergyAnalyzer::readParameters(std::istream& in)
36  {
38  readFArray<int, 2>(in, "typeIdPair", typeIdPair_);
39  }
40 
41  /*
42  * Load internal state from an archive.
43  */
45  {
47  loadFArray<int, 2>(ar, "typeIdPair", typeIdPair_);
48  }
49 
50  /*
51  * Load internal state from an archive.
52  */
54  {
56  ar << typeIdPair_;
57  }
58 
59  /*
60  * Compute current value.
61  */
63  {
64  //simulation().computePairEnergies();
65  MPI::Intracomm& communicator = simulation().domain().communicator();
66  simulation().pairPotential().computePairEnergies(communicator);
67  }
68 
70  {
71  if (!simulation().domain().isMaster()) {
72  UTIL_THROW("Error: Not master processor");
73  }
74  int i = typeIdPair_[0];
75  int j = typeIdPair_[1];
77  return 0.5*(pair(i,j) + pair(j,i));
78  }
79 
80 }
virtual double value()
Current value, set by compute function.
Simulation & simulation()
Get the parent Simulation by reference.
virtual void loadParameters(Serializable::IArchive &ar)
Load internal state from an archive.
virtual void readParameters(std::istream &in)
Read interval, outputFileName and (optionally) nSamplePerBlock.
virtual void compute()
Function to compute value.
virtual void computePairEnergies(MPI::Intracomm &communicator)=0
Compute pair energies on all processors.
virtual ~PairEnergyAnalyzer()
Destructor.
virtual void loadParameters(Serializable::IArchive &ar)
Load internal state from an input archive.
Parallel domain decomposition (DD) MD simulation.
Main object for a domain-decomposition MD simulation.
PairEnergyAnalyzer(Simulation &simulation)
Constructor.
MPI::Intracomm & communicator() const
Return Cartesian communicator by reference.
Definition: Domain.h:257
Saving / output archive for binary ostream.
#define UTIL_THROW(msg)
Macro for throwing an Exception, reporting function, file and line number.
Definition: global.h:51
Analyze average and block averages of a single floating point variable.
Utility classes for scientific computation.
Definition: accumulators.mod:1
virtual void save(Serializable::OArchive &ar)
Save internal state to an archive.
const PairPotential & pairPotential() const
Get the PairPotential by const reference.
DMatrix< double > pairEnergies() const
Return total pair energies, from all processors.
Saving archive for binary istream.
virtual void save(Serializable::OArchive &ar)
Save internal state to an output archive.
void setClassName(const char *className)
Set class name string.
Domain & domain()
Get the Domain by reference.
virtual void readParameters(std::istream &in)
Read dumpPrefix and interval.