1#ifndef PSPG_PROPAGATOR_H
2#define PSPG_PROPAGATOR_H
11#include <pscf/solvers/PropagatorTmpl.h>
12#include <pspg/field/RDField.h>
13#include <util/containers/DArray.h>
15namespace Pscf {
template <
int D>
class Mesh; }
21 template <
int D>
class Block;
137 const cudaReal*
q(
int i)
const;
142 cudaReal*
head()
const;
147 const cudaReal*
tail()
const;
217 {
return qFields_d; }
225 {
return qFields_d + ((ns_-1) * meshPtr_->size()); }
233 {
return qFields_d + (i * meshPtr_->size()); }
268 {
return isAllocated_; }
276 { blockPtr_ = █ }
279 #ifndef PSPG_PROPAGATOR_TPP
Description of a regular grid of points in a periodic domain.
Template for propagator classes.
void setIsSolved(bool isSolved)
Set the isSolved flag to true or false.
const Propagator< D > & partner() const
Get partner propagator.
const Propagator< D > & source(int id) const
Get a source propagator.
bool isSolved() const
Has the modified diffusion equation been solved?
bool hasPartner() const
Does this have a partner propagator?
int nSource() const
Number of source / prerequisite propagators.
Block within a branched polymer.
MDE solver for one-direction of one block.
double computeQ()
Compute and return partition function for the molecule.
void solve()
Solve the modified diffusion equation (MDE) for this block.
int ns() const
Get the number of contour grid points.
cudaReal * head() const
Return q-field at beginning of block (initial condition).
RDField< D > WField
Chemical potential field type.
void computeHead()
Compute initial QField at head from tail QFields of sources.
RDField< D > QField
Propagator q-field type.
const cudaReal * tail() const
Return q-field at end of block.
void setBlock(Block< D > &block)
Associate this propagator with a block.
bool isAllocated() const
Has memory been allocated for this propagator?
Block< D > & block()
Get the associated Block object by reference.
void allocate(int ns, const Mesh< D > &mesh)
Associate this propagator with a block.
const cudaReal * q(int i) const
Return q-field at specified step.
RDField< D > CField
Monomer concentration field type.
RDField< D > Field
Generic field (function of position).
Field of real single precision values on an FFT mesh on a device.
C++ namespace for polymer self-consistent field theory (PSCF).
Utility classes for scientific computation.