PSCF v1.4.0
fts/trajectory/RGridTrajectoryReader.h
1#ifndef RP_RGRID_TRAJECTORY_READER_H
2#define RP_RGRID_TRAJECTORY_READER_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 "TrajectoryReader.h" // base class
12#include <pscf/math/IntVec.h> // member
13#include <util/containers/DArray.h> // member
14#include <fstream> // member
15#include <string> // function parameter
16
17namespace Pscf {
18namespace Rp {
19
20 using namespace Util;
21
37 template <int D, class T>
38 class RGridTrajectoryReader : public T::TrajectoryReader
39 {
40
41 public:
42
43 // Protected constructor and destructor (see below).
44
55 void open(std::string filename) override;
56
60 void readHeader() override;
61
67 bool readFrame() override;
68
72 void close() override;
73
74 protected:
75
81 RGridTrajectoryReader(typename T::System& system);
82
87
88 using TrajectoryReaderT = typename T::TrajectoryReader;
89 using TrajectoryReaderT::system;
90
91 private:
92
93 // Field configuration
95
96 // Dimensions of computational mesh (# of points in each direction)
97 IntVec<D> meshDimensions_;
98
99 // Trajectory file.
100 std::ifstream inputfile_;
101
102 // Has wField_ been allocated?
103 bool isAllocated_;
104
108 void allocate();
109
110 };
111
112}
113}
114#endif
An IntVec<D, T> is a D-component vector of elements of integer type T.
Definition IntVec.h:27
bool readFrame() override
Read a single frame from the trajectory file.
RGridTrajectoryReader(typename T::System &system)
Constructor.
void readHeader() override
Read header of trajectory file (if any).
void close() override
Close the trajectory file.
~RGridTrajectoryReader()=default
Destructor.
void open(std::string filename) override
Open trajectory file and read header, if any.
Class templates for real-valued periodic fields.
PSCF package top-level namespace.