1#ifndef RPG_PROPAGATOR_H
2#define RPG_PROPAGATOR_H
11#include <prdc/cuda/RField.h>
12#include <pscf/cuda/DeviceArray.h>
13#include <pscf/solvers/PropagatorTmpl.h>
14#include <util/containers/DArray.h>
17namespace Pscf {
template <
int D>
class Mesh; }
23 template <
int D>
class Block;
280 return qFields_[ns_-1];
338 {
return isAllocated_; }
346 { blockPtr_ = &
block; }
348 #ifndef RPG_PROPAGATOR_TPP
Dynamic array on the GPU device with aligned data.
Description of a regular grid of points in a periodic domain.
Field of real double precision values on an FFT mesh.
void setIsSolved(bool isSolved)
const Propagator< D > & partner() const
const Propagator< D > & source(int id) const
Block within a branched polymer.
MDE solver for one-direction of one block.
Block< D > & block()
Get the associated Block object by reference.
int ns() const
Get the number of values of s (or slices), including head and tail.
void solve()
Solve the modified diffusion equation (MDE) for this block.
DeviceArray< cudaReal > const & qAll()
Return the full array of q-fields as an unrolled 1D array.
double computeQ()
Compute and return partition function for the molecule.
void allocate(int ns, const Mesh< D > &mesh)
Allocate propagator arrays.
RField< D > const & head()
Return q-field at initial (head) vertex.
bool isSolved() const
Has the modified diffusion equation been solved?
bool isTailEnd() const
Is the tail vertex a chain end?
PropagatorTmpl< Propagator< D > > Base
Base class type (partial template specialization).
RField< D > const & tail() const
Return q-field at terminal (tail) vertex.
RField< D > const & q(int i) const
Return q-field at specified slice.
bool isAllocated() const
Has memory been allocated for this propagator?
void setBlock(Block< D > &block)
Associate this propagator with a block.
RField< D > FieldT
Field type (function of position, defined on real space grid).
void reallocate(int ns)
Reallocate memory used by this propagator.
Dynamically allocatable contiguous array template.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
bool isThread()
Is the thread model in use ?
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.