11#include <pscf/solvers/BlockTmpl.h>
13#include <prdc/cpu/RField.h>
14#include <prdc/cpu/RFieldDft.h>
15#include <util/containers/FSArray.h>
19 template <
int D>
class Mesh;
23 template <
int D>
class FFT;
316 double stress(
int n)
const;
423 FFT<D> const & fft()
const;
434 void computeExpKsq();
453 {
return stress_[n]; }
459 inline Mesh<D> const & Block<D>::mesh()
const
467 inline FFT<D> const & Block<D>::fft()
const
478 return *unitCellPtr_;
486 return *waveListPtr_;
Class template for a block solver in a block copolymer.
Propagator< D > PropagatorT
Propagator< D > & propagator(int directionId)
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.
Fourier transform wrapper.
Fourier transform of a real field on an FFT mesh.
Field of real double precision values on an FFT mesh.
Class to compute and store properties associated with wavevectors.
Base template for UnitCell<D> classes, D=1, 2 or 3.
Block within a linear or branched block polymer.
void stepBondBead(RField< D > const &qin, RField< D > &qout) const
Apply a bond operator for the bead model.
void setLength(double newLength)
Set or reset block length (only used in thread model).
void computeConcentrationBead(double prefactor)
Compute the concentration for this block, using the bead model.
double stress(int n) const
Get derivative of free energy w/ respect to a unit cell parameter.
void setKuhn(double kuhn)
Set or reset monomer statistical segment length.
void clearUnitCellData()
Clear all internal data that depends on the unit cell parameters.
void setupSolver(RField< D > const &w)
Set up the MDE solver for this block.
void allocate(double ds)
Allocate memory and set contour step size.
void computeStressBead(double prefactor)
Compute stress contribution for this block, using bead model.
void associate(Mesh< D > const &mesh, FFT< D > const &fft, UnitCell< D > const &cell, WaveList< D > &waveList)
Create permanent associations with related objects.
void computeConcentrationThread(double prefactor)
Compute the concentration for this block, for the thread model.
void stepThread(RField< D > const &qin, RField< D > &qout) const
Compute one step of solution of MDE for the thread model.
void computeStressThread(double prefactor)
Compute stress contribution for this block, using thread model.
double ds() const
Get contour length step size.
int ns() const
Get the number of contour grid points, including end points.
void stepFieldBead(RField< D > &q) const
Apply the exponential field operator for the bead model.
void stepHalfBondBead(RField< D > const &qin, RField< D > &qout) const
Apply a half-bond operator for the bead model.
void stepBead(RField< D > const &qin, RField< D > &qout) const
Compute one step of solution of MDE for the bead model.
BlockTmpl< Propagator< D >, RField< D > > BlockTmplT
Direct (parent) base class.
MDE solver for one direction of one block.
A fixed capacity (static) contiguous array with a variable logical size.
#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.
Real periodic fields, SCFT and PS-FTS (CPU).
PSCF package top-level namespace.