1#ifndef RP_BD_SIMULATOR_H
2#define RP_BD_SIMULATOR_H
17 template <
class T>
class Factory;
41 template <
int D,
class T>
42 class BdSimulator :
public T::Simulator
50 BdSimulator(BdSimulator<D,T>
const &) =
delete;
51 BdSimulator<D,T>& operator = (BdSimulator<D,T>
const &) =
delete;
90 virtual void analyze(
int min,
int max,
91 std::string classname,
92 std::string filename);
150 using SimulatorT::state;
153 using SimulatorT::iStep_;
154 using SimulatorT::iTotalStep_;
159 using AnalyzerT =
typename T::Analyzer;
164 typename T::AnalyzerManager* analyzerManagerPtr_;
169 typename T::BdStep* bdStepPtr_;
188 void setup(
int nStep);
195 template <
int D,
class T>
inline
197 {
return (
bool)bdStepPtr_; }
200 template <
int D,
class T>
inline
208 template <
int D,
class T>
inline
209 typename T::AnalyzerManager
const&
211 {
return *analyzerManagerPtr_; }
214 template <
int D,
class T>
inline
216 {
return *analyzerManagerPtr_; }
virtual void readParameters(std::istream &in)
Read parameter file block.
T::BdStep & bdStep()
Get the BdStep by non-const reference.
T::AnalyzerManager & analyzerManager()
Get the AnalyzerManager (const).
typename T::BdSimulator BdSimulatorT
Alias for BdSimulator class in program-level namespace.
Factory< typename T::TrajectoryReader > & trajectoryReaderFactory()
Get the trajectory reader factory by reference.
~BdSimulator()
Destructor.
typename T::System SystemT
Alias for System class in program-level namespace.
virtual void analyze(int min, int max, std::string classname, std::string filename)
Read and analyze a trajectory file.
typename T::Simulator SimulatorT
Alias for Simulator class in program-level namespace.
bool hasBdStep() const
Does this BdSimulator have a BdStep object?
void simulate(int nStep)
Perform a field theoretic Brownian dynamics (BD) simulation.
File containing preprocessor macros for error handling.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
Class templates for real-valued periodic fields.
PSCF package top-level namespace.
Utility classes for scientific computation.