Simpatico  v1.10
McStressAutoCorrelation.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 
9 #include "McStressAutoCorrelation.h" // class header
10 
11 namespace McMd
12 {
13 
14  /*
15  * Constructor.
16  */
18  : StressAutoCorrelation<McSystem>(system)
19  { setClassName("McStressAutoCorrelation"); }
20 
21  /*
22  * Destructor.
23  */
25  {}
26 
27  /*
28  * Evaluate pressure, and add to accumulator.
29  */
30  void McStressAutoCorrelation::sample(long iStep)
31  {
32  double pressure;
33  double temperature;
34  McSystem& sys=system();
35  sys.computeStress(pressure);
36 
37  DArray<double> elements;
38  elements.allocate(9);
39 
40  Tensor total;
41 
42  if (isAtInterval(iStep)){
43  sys.computeVirialStress(total);
44  temperature = sys.energyEnsemble().temperature();
45 
46  elements[0] = (total(0,0) - pressure / 3.0) / (10.0 * temperature);
47  elements[1] = (total(0,1) + total(1,0)) / 2.0 / (10.0 * temperature);
48  elements[2] = (total(0,2) + total(2,0)) / 2.0 / (10.0 * temperature);
49  elements[3] = elements[1];
50  elements[4] = (total(1,1) - pressure / 3.0) / (10.0 * temperature);
51  elements[5] = (total(1,2) + total(2,1)) / 2.0 / (10.0 * temperature);
52  elements[6] = elements[2];
53  elements[7] = elements[5];
54  elements[8] = (total(2,2) - pressure / 3.0) / (10.0 * temperature);
55 
56  accumulator_.sample(elements);
57  }
58  }
59 
60 }
A System for use in a Markov chain Monte Carlo simulation.
Definition: McSystem.h:52
EnergyEnsemble & energyEnsemble() const
Get the EnergyEnsemble by reference.
Definition: System.h:1095
A Tensor represents a Cartesian tensor.
Definition: Tensor.h:32
void computeStress(T &stress) const
Compute total pressure (T=double), xyz pressures (T=Vector) or stress (T=Tensor). ...
void computeVirialStress(T &stress) const
Compute total virial stress (excludes kinetic contribution).
McStressAutoCorrelation(McSystem &system)
Constructor.
Single-processor Monte Carlo (MC) and molecular dynamics (MD).
void allocate(int capacity)
Allocate the underlying C array.
Definition: DArray.h:191
double temperature() const
Return the temperature.