PSCF v1.4.0
Pscf::Rp::FourthOrderParameter< D, T > Class Template Referenceabstract

FourthOrderParameter is used to detect an order-disorder transition. More...

#include <FourthOrderParameter.h>

Inheritance diagram for Pscf::Rp::FourthOrderParameter< D, T >:

Public Member Functions

void setup () override
 Setup before the main loop.

Protected Member Functions

 FourthOrderParameter (typename T::Simulator &simulator, typename T::System &system)
 Constructor.
 ~FourthOrderParameter ()=default
 Destructor.
double compute () override
 Compute and return the order parameter.
void computePrefactor (Array< double > &prefactor)
 Compute prefactor for each Fourier wavevector.

Protected Attributes

T::RField prefactor_
 Prefactor for each Fourier component.
int kSize_
 Number of wavevectors in Fourier space (k-grid) mesh.

Detailed Description

template<int D, class T>
class Pscf::Rp::FourthOrderParameter< D, T >

FourthOrderParameter is used to detect an order-disorder transition.

This class evaluates and averages the sum of fourth power of the magnitude of the Fourier mode amplitudes of a fluctuating exchange field for a binary system.

The order parameter is defined as

\[ \Psi_{\text{fourth}} \equiv \left[ \sum_{\bf G} W_{-}({\bf G})^4 \right] ^{\frac{1}{4}} \]

where \(W_({\bf G})\) is a Fourier mode of fluctuating field.

Specializations of this template are used as base classes for two closely analogous class templates, also named FourthOrderParameter, that are defined in the Rpc and Rpg namespaces for use in the pscf_rpc and pscf_rpg programs, respectively.

Template parameters:

See also
Manual Page

Definition at line 51 of file fts/analyzer/FourthOrderParameter.h.

Constructor & Destructor Documentation

◆ FourthOrderParameter()

template<int D, class T>
Pscf::Rp::FourthOrderParameter< D, T >::FourthOrderParameter ( typename T::Simulator & simulator,
typename T::System & system )
protected

Constructor.

Parameters
simulatorparent Simulator object
systemparent System object

Definition at line 30 of file FourthOrderParameter.tpp.

References kSize_, and Util::ParamComposite::setClassName().

◆ ~FourthOrderParameter()

template<int D, class T>
Pscf::Rp::FourthOrderParameter< D, T >::~FourthOrderParameter ( )
protecteddefault

Destructor.

Member Function Documentation

◆ setup()

template<int D, class T>
void Pscf::Rp::FourthOrderParameter< D, T >::setup ( )
override

Setup before the main loop.

Definition at line 42 of file FourthOrderParameter.tpp.

References computePrefactor(), Pscf::VecOp::eqS(), kSize_, prefactor_, and UTIL_CHECK.

◆ compute()

template<int D, class T>
double Pscf::Rp::FourthOrderParameter< D, T >::compute ( )
overrideprotected

Compute and return the order parameter.

Definition at line 69 of file FourthOrderParameter.tpp.

References kSize_, Pscf::VecOp::mulEqV(), prefactor_, Pscf::VecOp::sqSqAbsV(), Pscf::Reduce::sum(), and UTIL_CHECK.

◆ computePrefactor()

template<int D, class T>
void Pscf::Rp::FourthOrderParameter< D, T >::computePrefactor ( Array< double > & prefactor)
protected

Compute prefactor for each Fourier wavevector.

For the real-valued function W_, each Fourier coefficient G satisfies W_(G) = W_(-G). This function uses Brillouin Zone (BZ) indices representation. After applying fftw, if both the wavevector G and its inverse -G exist in k-space, the prefactor is assigned to be 1/2 for both G and -G. Otherwise, it is assigned to be 1.

Definition at line 100 of file FourthOrderParameter.tpp.

References Util::DArray< Data >::allocate(), Pscf::MeshIterator< D >::atEnd(), Pscf::MeshIterator< D >::begin(), kSize_, Pscf::Vec< D, T >::negate(), Pscf::MeshIterator< D >::position(), and Pscf::MeshIterator< D >::rank().

Referenced by setup().

Member Data Documentation

◆ prefactor_

template<int D, class T>
T::RField Pscf::Rp::FourthOrderParameter< D, T >::prefactor_
protected

Prefactor for each Fourier component.

Definition at line 64 of file fts/analyzer/FourthOrderParameter.h.

Referenced by compute(), and setup().

◆ kSize_

template<int D, class T>
int Pscf::Rp::FourthOrderParameter< D, T >::kSize_
protected

Number of wavevectors in Fourier space (k-grid) mesh.

Definition at line 67 of file fts/analyzer/FourthOrderParameter.h.

Referenced by compute(), computePrefactor(), FourthOrderParameter(), and setup().


The documentation for this class was generated from the following files: