1#ifndef RPG_W_FIELD_CONTAINER_TPP
2#define RPG_W_FIELD_CONTAINER_TPP
12#include <prdc/field/WFieldsTmpl.tpp>
13#include <prdc/cuda/VecOp.h>
14#include <pscf/cuda/DeviceArray.h>
33 for (
int i = 0; i <
nMonomer(); i++) {
Dynamic array on the GPU device with aligned data.
Field of real double precision values on an FFT mesh.
void setRGrid(DArray< RField< D > > const &fields, bool isSymmetric=false)
int meshSize() const
Get mesh size (number of grid points), set on r-grid allocation.
IntVec< D > const & meshDimensions() const
Get mesh dimensions in each direction, set on r-grid allocation.
void setRGrid(DeviceArray< cudaReal > &fields)
Set new w fields, in unfolded real-space (r-grid) format.
bool isSymmetric() const
Are fields symmetric under all elements of the space group?
int nMonomer() const
Get number of monomer types.
int capacity() const
Return allocated size.
Dynamically allocatable contiguous array template.
void allocate(int capacity)
Allocate the underlying C array.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
void eqV(DeviceArray< cudaReal > &a, DeviceArray< cudaReal > const &b, const int beginIdA, const int beginIdB, const int n)
Vector assignment, a[i] = b[i], kernel wrapper (cudaReal).
Fields, FFTs, and utilities for periodic boundary conditions (CUDA)
Periodic fields and crystallography.
SCFT and PS-FTS with real periodic fields (GPU)
PSCF package top-level namespace.