|
PSCF v1.4.0
|
FourthOrderParameter is used to detect an order-disorder transition. More...
#include <FourthOrderParameter.h>
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. | |
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:
Definition at line 51 of file fts/analyzer/FourthOrderParameter.h.
|
protected |
Constructor.
Definition at line 30 of file FourthOrderParameter.tpp.
References kSize_, and Util::ParamComposite::setClassName().
|
protecteddefault |
Destructor.
|
override |
Setup before the main loop.
Definition at line 42 of file FourthOrderParameter.tpp.
References computePrefactor(), Pscf::VecOp::eqS(), kSize_, prefactor_, and UTIL_CHECK.
|
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.
|
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().
|
protected |
Prefactor for each Fourier component.
Definition at line 64 of file fts/analyzer/FourthOrderParameter.h.
|
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().