Simpatico  v1.10
ddMd/analyzers/trajectory/ConfigWriter.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 "ConfigWriter.h"
9 #include <util/mpi/MpiLoader.h>
10 #include <util/misc/ioUtil.h>
11 
12 #include <sstream>
13 
14 namespace DdMd
15 {
16 
17  using namespace Util;
18 
19  /*
20  * Constructor.
21  */
23  : Analyzer(simulation),
24  nSample_(0),
25  isInitialized_(false)
26  { setClassName("ConfigWriter"); }
27 
28  /*
29  * Read interval and outputFileName.
30  */
31  void ConfigWriter::readParameters(std::istream& in)
32  {
33  readInterval(in);
35  isInitialized_ = true;
36  }
37 
38  /*
39  * Load internal state from an archive.
40  */
42  {
43  loadInterval(ar);
45 
46  MpiLoader<Serializable::IArchive> loader(*this, ar);
47  loader.load(nSample_);
48 
49  isInitialized_ = true;
50  }
51 
52  /*
53  * Save internal state to an archive.
54  */
56  {
57  saveInterval(ar);
59  ar << nSample_;
60  }
61 
62  /*
63  * Read interval and outputFileName.
64  */
66  { nSample_ = 0; }
67 
68  /*
69  * Dump configuration to file
70  */
71  void ConfigWriter::sample(long iStep)
72  {
73  if (isAtInterval(iStep)) {
74 
75  // Construct new fileName: outputFileName + toString(nSample)
76  std::string filename;
77  filename = outputFileName();
78  filename += toString(nSample_);
79 
80  // Open output file, write data, and close file
81  //simulation().fileMaster().openOutputFile(filename, outputFile_);
82  simulation().writeConfig(filename);
83  //outputFile_.close();
84  ++nSample_;
85 
86  }
87  }
88 
89 }
void writeConfig(const std::string &filename)
Write configuration file.
Abstract base for periodic output and/or analysis actions.
Simulation & simulation()
Get the parent Simulation by reference.
std::string toString(int n)
Return string representation of an integer.
Definition: ioUtil.cpp:52
void readOutputFileName(std::istream &in)
Read outputFileName from file.
void saveInterval(Serializable::OArchive &ar)
Save interval parameter to an archive.
virtual void save(Serializable::OArchive &ar)
Save internal state to an archive.
void readInterval(std::istream &in)
Read parameter interval from file.
virtual void loadParameters(Serializable::IArchive &ar)
Load internal state from an archive.
Parallel domain decomposition (DD) MD simulation.
virtual void readParameters(std::istream &in)
Read parameters and initialize.
Main object for a domain-decomposition MD simulation.
Saving / output archive for binary ostream.
void loadOutputFileName(Serializable::IArchive &ar)
Load output file name to an archive.
virtual void sample(long iStep)
Dump configuration to file.
bool isAtInterval(long counter) const
Return true iff counter is a multiple of the interval.
Utility classes for scientific computation.
Definition: accumulators.mod:1
virtual void clear()
Clear nSample counter.
void load(Data &value)
Load and broadcast a single Data value.
Definition: MpiLoader.h:137
const std::string & outputFileName() const
Return outputFileName string.
Saving archive for binary istream.
Provides methods for MPI-aware loading of data from input archive.
Definition: MpiLoader.h:43
void setClassName(const char *className)
Set class name string.
void loadInterval(Serializable::IArchive &ar)
Load parameter interval from input archive.
ConfigWriter(Simulation &simulation)
Constructor.
void saveOutputFileName(Serializable::OArchive &ar)
Save output file name to an archive.