1#ifndef PRDC_CPU_WAVE_LIST_H
2#define PRDC_CPU_WAVE_LIST_H
11#include <prdc/cpu/RField.h>
12#include <prdc/crystal/UnitCell.h>
14#include <pscf/mesh/Mesh.h>
15#include <pscf/math/IntVec.h>
17#include <util/containers/DArray.h>
168 {
return isAllocated_; }
174 {
return hasMinImages_; }
192 {
return isRealField_; }
249 {
return *unitCellPtr_; }
253 {
return *meshPtr_; }
300 return implicitInverse_;
303 #ifndef PRDC_CPU_WAVE_LIST_TPP
An IntVec<D, T> is a D-component vector of elements of integer type T.
Description of a regular grid of points in a periodic domain.
Field of real double precision values on an FFT mesh.
Class to calculate and store properties of wavevectors.
void clearUnitCellData()
Clear all internal data that depends on lattice parameters.
DArray< IntVec< D > > const & minImages() const
Get the array of minimum image vectors by const reference.
void computedKSq()
Compute derivatives of |k|^2 w/ respect to unit cell parameters.
WaveList(bool isRealField=true)
Constructor.
void computeMinimumImages()
Compute minimum images of wavevectors.
bool hasMinImages() const
Have minimum images been computed?
void allocate(Mesh< D > const &m, UnitCell< D > const &c)
Allocate memory and set association with a Mesh and UnitCell object.
void computeKSq()
Compute sq.
bool isRealField() const
Does this WaveList correspond to real-valued fields?
bool hasKSq() const
Has the kSq array been computed?
RField< D > const & kSq() const
Get the kSq array on the device by const reference.
bool isAllocated() const
Has memory been allocated for arrays?
bool hasdKSq() const
Has the dKSq array been computed?
DArray< RField< D > > const & dKSq() const
Get all derivatives of kSq with respect to unit cell parameters.
DArray< bool > const & implicitInverse() const
Get the implicitInverse array by reference.
Base template for UnitCell<D> classes, D=1, 2 or 3.
Dynamically allocatable contiguous array template.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
Fields and FFTs for periodic boundary conditions (CPU)
Periodic fields and crystallography.
PSCF package top-level namespace.