8 #include "AutoCorrAnalyzer.h" 9 #include <ddMd/simulation/Simulation.h> 10 #include <util/accumulators/AutoCorrelation.tpp> 11 #include <util/misc/ioUtil.h> 12 #include <util/format/Int.h> 13 #include <util/format/Dbl.h> 25 template <
typename Data,
typename Product>
37 template <
typename Data,
typename Product>
42 read<int>(in,
"bufferCapacity", bufferCapacity_);
45 accumulatorPtr_->setParam(bufferCapacity_, maxStageId_);
47 isInitialized_ =
true;
54 template <
typename Data,
typename Product>
63 ar >> *accumulatorPtr_;
66 isInitialized_ =
true;
72 template <
typename Data,
typename Product>
79 if (!accumulatorPtr_) {
82 ar << *accumulatorPtr_;
89 template <
typename Data,
typename Product>
92 if (!isInitialized_) {
96 if (!accumulatorPtr_) {
99 accumulatorPtr_->clear();
106 template <
typename Data,
typename Product>
109 if (!isInitialized_) {
118 template <
typename Data,
typename Product>
122 UTIL_THROW(
"Time step index is not a multiple of interval");
126 if (!accumulatorPtr_) {
130 accumulatorPtr_->sample(value);
137 template <
typename Data,
typename Product>
141 if (!accumulatorPtr_) {
147 outputFile_ << std::endl;
148 outputFile_ <<
"bufferCapacity " << accumulatorPtr_->bufferCapacity() << std::endl;
149 outputFile_ <<
"nSample " << accumulatorPtr_->nSample() << std::endl;
150 outputFile_ << std::endl;
151 outputFile_ <<
"Format of *.dat file" << std::endl;
152 outputFile_ <<
"[int time delay (samples)] [double autocorrelation function]" 154 outputFile_ << std::endl;
159 accumulatorPtr_->output(outputFile_);
Abstract base for periodic output and/or analysis actions.
Simulation & simulation()
Get the parent Simulation by reference.
void readOutputFileName(std::istream &in)
Read outputFileName from file.
void saveInterval(Serializable::OArchive &ar)
Save interval parameter to an archive.
virtual void output()
Dump configuration to file.
void openOutputFile(const std::string &filename, std::ofstream &out, std::ios_base::openmode mode=std::ios_base::out) const
Open an output file.
void readInterval(std::istream &in)
Read parameter interval from file.
Parallel domain decomposition (DD) MD simulation.
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.
FileMaster & fileMaster()
Get the associated FileMaster by reference.
virtual void sample(long iStep)
Compute new Data value and update accumulator.
#define UTIL_THROW(msg)
Macro for throwing an Exception, reporting function, file and line number.
virtual void loadParameters(Serializable::IArchive &ar)
Load internal state from an input archive.
virtual void writeParam(std::ostream &out)
Write all parameters to an output stream.
bool isAtInterval(long counter) const
Return true iff counter is a multiple of the interval.
Utility classes for scientific computation.
virtual void save(Serializable::OArchive &ar)
Save internal state to an output archive.
ScalarParam< Type > & loadParameter(Serializable::IArchive &ar, const char *label, Type &value, bool isRequired)
Add and load a new ScalarParam < Type > object.
const std::string & outputFileName() const
Return outputFileName string.
virtual Data data()=0
Get current Data value, call only on master.
bool isMaster() const
Is this the master processor (gridRank == 0) ?
virtual void computeData()
Compute Data value, call on all processors.
Saving archive for binary istream.
void setClassName(const char *className)
Set class name string.
void loadInterval(Serializable::IArchive &ar)
Load parameter interval from input archive.
void saveOutputFileName(Serializable::OArchive &ar)
Save output file name to an archive.
virtual void clear()
Clear nSample counter.
Domain & domain()
Get the Domain by reference.
virtual void setup()
Setup accumulator.
virtual void readParameters(std::istream &in)
Read interval, outputFileName and bufferCapacity from parameter file.
AutoCorrAnalyzer(Simulation &simulation)
Constructor.