PSCF v1.4.0
fts/analyzer/FourthOrderParameter.h
1#ifndef RP_FOURTH_ORDER_PARAMETER_H
2#define RP_FOURTH_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 <pscf/math/IntVec.h> // member
12
13// Forward declaration
14namespace Util {
15 template <typename T> class Array;
16}
17
18namespace Pscf {
19namespace Rp {
20
21 using namespace Util;
22
50 template <int D, class T>
51 class FourthOrderParameter : public T::AverageAnalyzer
52 {
53
54 public:
55
59 void setup() override;
60
61 protected:
62
64 typename T::RField prefactor_;
65
67 int kSize_;
68
75 FourthOrderParameter(typename T::Simulator& simulator,
76 typename T::System& system);
77
82
86 double compute() override;
87
100
101 // Alias for base class
102 using AverageAnalyzerT = typename T::AverageAnalyzer;
103
104 // Inherited protected member functions (selected).
105 using AverageAnalyzerT::simulator;
106 using AverageAnalyzerT::system;
107
108 private:
109
111 typename T::RFieldDft wK_;
112
114 typename T::RField psi_;
115
117 IntVec<D> kMeshDimensions_;
118
120 bool isInitialized_;
121
128 virtual void computePrefactor() = 0;
129
130 using FFTT = typename T::FFT;
131
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
double compute() override
Compute and return the order parameter.
void setup() override
Setup before the main loop.
FourthOrderParameter(typename T::Simulator &simulator, typename T::System &system)
Constructor.
~FourthOrderParameter()=default
Destructor.
void computePrefactor(Array< double > &prefactor)
Compute prefactor for each Fourier wavevector.
Array container class template.
Definition Array.h:40
Class templates for real-valued periodic fields.
PSCF package top-level namespace.
Utility classes for scientific computation.