8#include "BinaryStructureFactor.h"
10#include <rpg/fts/simulator/Simulator.h>
11#include <rpg/system/System.h>
12#include <rpg/solvers/Mixture.h>
13#include <rpg/field/Domain.h>
14#include <rpg/field/WFields.h>
16#include <prdc/cuda/FFT.h>
17#include <prdc/cuda/WaveList.h>
19#include <pscf/cuda/VecOp.h>
20#include <pscf/cuda/complex.h>
22#include <rp/fts/analyzer/BinaryStructureFactor.tpp>
48 if (!wkHost_.isAllocated()) {
49 wkHost_.allocate(
wk_.capacity());
64 if (AnalyzerT::isAtInterval(iStep)) {
77 template class BinaryStructureFactor<1, Rpg::Types<1> >;
78 template class BinaryStructureFactor<2, Rpg::Types<2> >;
79 template class BinaryStructureFactor<3, Rpg::Types<3> >;
Template for dynamic array stored in host CPU memory.
Class to compute and store properties associated with wavevectors.
RField< D > const & kSq() const
Get the kSq array on the device by reference.
DeviceArray< bool > const & implicitInverse() const
Get the implicitInverse array by reference.
void computeS(Array< typename Types< D >::Complex > const &wk)
Types< D >::RFieldDft wk_
void findWaveBunches(Array< double > const &kSq, Array< bool > const &implicit)
Spherically averaged structure factor for a two-monomer system.
void setup() override
Setup before the main loop.
void sample(long iStep) override
Compute structure factors and add to accumulators.
BinaryStructureFactor(Simulator< D > &simulator, System< D > &system)
Constructor.
Field theoretic simulator (base class).
Main class, representing a complete physical system.
List of aliases for types used in the Rpg program-level namespace.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
Periodic fields and crystallography.
Class templates for real-valued periodic fields.
SCFT and PS-FTS with real periodic fields (GPU)
PSCF package top-level namespace.