PSCF v1.4.0
fts/analyzer/MaxOrderParameter.h
1#ifndef RP_MAX_ORDER_PARAMETER_H
2#define RP_MAX_ORDER_PARAMETER_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 "AverageAnalyzer.h" // base class
12#include <pscf/math/IntVec.h> // member
13#include <util/containers/DArray.h> // member
14#include <iostream>
15
16namespace Pscf {
17namespace Rp {
18
19 using namespace Util;
20
48 template <int D, class T>
49 class MaxOrderParameter : public T::AverageAnalyzer
50 {
51
52 public:
53
57 void setup() override;
58
59 protected:
60
61 protected:
62
64 typename T::RField psi_;
65
67 double maxPsi_;
68
71
73 int kSize_;
74
81 MaxOrderParameter(typename T::Simulator& simulator,
82 typename T::System& system);
83
87 ~MaxOrderParameter() = default;
88
95 void outputValue(int step, double value) override;
96
101
112
113 // Alias for base class.
114 using AverageAnalyzerT = typename T::AverageAnalyzer;
115
116 // Inherited protected member variables (selected).
117 using AverageAnalyzerT::simulator;
118 using AverageAnalyzerT::system;
119
120 private:
121
123 typename T::RFieldDft wK_;
124
126 IntVec<D> meshDimensions_;
127
129 IntVec<D> kMeshDimensions_;
130
131 using FFTT = typename T::FFT;
132 };
133
134}
135}
136#endif
An IntVec<D, T> is a D-component vector of elements of integer type T.
Definition IntVec.h:27
void computePsi()
Compute the psi_ array of squared Fourier coefficients.
void outputValue(int step, double value) override
Output a sampled or block average value.
void findMaximum(Array< typename T::Real > const &psi)
Find the wavevector of maximum Fourier magnitude.
void setup() override
Setup before simulation loop.
MaxOrderParameter(typename T::Simulator &simulator, typename T::System &system)
Constructor.
~MaxOrderParameter()=default
Destructor.
Array container class template.
Definition Array.h:40
Class templates for real-valued periodic fields.
PSCF package top-level namespace.