1#ifndef PSPC_PROPAGATOR_H
2#define PSPC_PROPAGATOR_H
11#include <pscf/solvers/PropagatorTmpl.h>
12#include <pspc/field/RField.h>
13#include <util/containers/DArray.h>
14#include <util/containers/FArray.h>
16namespace Pscf {
template <
int D>
class Mesh; }
22 template <
int D>
class Block;
247 {
return qFields_[0]; }
255 {
return qFields_[ns_-1]; }
263 {
return qFields_[i]; }
285 {
return isAllocated_; }
292 { blockPtr_ = █ }
294 #ifndef PSPC_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.
RField< D > CField
Monomer concentration field type (r-grid format)
void computeHead()
Compute initial QField at head from tail QFields of sources.
RField< D > WField
Chemical potential field type (r-grid format)
RField< D > QField
Propagator q-field type, i.e., q(r,s) at fixed s.
int ns() const
Number of values of s (or slices), including head and tail.
bool isAllocated() const
Has memory been allocated for this propagator?
void setBlock(Block< D > &block)
Associate this propagator with a unique block.
Block< D > & block()
Get the associated Block object by reference.
void solve()
Solve the modified diffusion equation (MDE) for this block.
void reallocate(int ns)
Reallocate memory used by this propagator.
RField< D > Field
Generic field (function of position, defined on regular grid).
double computeQ()
Compute and return partition function for the polymer.
const QField & q(int i) const
Return q-field at specified step.
const QField & tail() const
Return q-field at the end of the block.
void allocate(int ns, const Mesh< D > &mesh)
Allocate memory used by this propagator.
const QField & head() const
Return q-field at beginning of the block (initial condition).
Field of real double precision values on an FFT mesh.
Dynamically allocatable contiguous array template.
C++ namespace for polymer self-consistent field theory (PSCF).
Utility classes for scientific computation.