PSCF v1.4.0
fts/analyzer/TrajectoryWriter.h
1#ifndef RP_TRAJECTORY_WRITER_H
2#define RP_TRAJECTORY_WRITER_H
3
4/*
5* PSCF - Polymer Self-Consistent Field
6*
7* Copyright 2015 - 2025, The Regents of the University of Minnesota
8* Distributed under the terms of the GNU General Public License.
9*/
10
11#include <iostream>
12#include <fstream>
13
14namespace Pscf {
15namespace Rp {
16
33 template <int D, class T>
34 class TrajectoryWriter : public T::Analyzer
35 {
36
37 public:
38
44 void readParameters(std::istream& in) override;
45
49 void setup() override;
50
56 void sample(long iStep) override;
57
61 void output() override;
62
63 protected:
64
71 TrajectoryWriter(typename T::Simulator& simulator,
72 typename T::System& system);
73
77 ~TrajectoryWriter() = default;
78
84 void writeHeader(std::ofstream& out);
85
92 void writeFrame(std::ofstream& out, long iStep);
93
94 // Alias for base class.
95 using AnalyzerT = typename T::Analyzer;
96
97 // Inherited protected member functions (selected).
98 using AnalyzerT::simulator;
99 using AnalyzerT::system;
100
101 private:
102
104 std::ofstream outputFile_;
105
107 long nSample_;
108
110 long isInitialized_;
111
112 };
113
114}
115}
116#endif
void setup() override
Setup before main simulation loop.
~TrajectoryWriter()=default
Destructor.
void output() override
Close trajectory file after run.
void writeFrame(std::ofstream &out, long iStep)
Write data that should appear in every frame.
void readParameters(std::istream &in) override
Read interval and output file name.
void sample(long iStep) override
Write a frame/snapshot to the trajectory file.
void writeHeader(std::ofstream &out)
Write data that should appear once, at beginning of the file.
TrajectoryWriter(typename T::Simulator &simulator, typename T::System &system)
Constructor.
Class templates for real-valued periodic fields.
PSCF package top-level namespace.