11#include "Propagator.h"
12#include <pscf/solvers/BlockTmpl.h>
13#include <pscf/mesh/Mesh.h>
14#include <pscf/crystal/UnitCell.h>
15#include <pspc/field/RField.h>
16#include <pspc/field/RFieldDft.h>
17#include <pspc/field/FFT.h>
18#include <util/containers/FArray.h>
19#include <util/containers/DMatrix.h>
22 template <
int D>
class Mesh;
23 template <
int D>
class UnitCell;
181 double stress(
int n)
const;
264 {
return *unitCellPtr_; }
274 void computeExpKsq();
293 {
return stress_[n]; }
303 #ifndef PSPC_BLOCK_TPP
double length() const
Get the length (number of monomers) in this block.
int vertexId(int i) const
Get id of an associated vertex.
void setId(int id)
Set the id for this block.
int monomerId() const
Get the monomer type id.
const Pair< int > & vertexIds() const
Get the pair of associated vertex ids.
virtual void setLength(double length)
Set the length of this block.
void setVertexIds(int vertexAId, int vertexBId)
Set indices of associated vertices.
int id() const
Get the id of this block.
void setMonomerId(int monomerId)
Set the monomer id.
Class template for a block in a block copolymer.
double kuhn() const
Get monomer statistical segment length.
Propagator< D > & propagator(int directionId)
Get a Propagator for a specified direction.
TP::CField & cField()
Get the associated monomer concentration field.
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.
Block within a branched polymer.
void computeStress(double prefactor)
Compute stress contribution for this block.
double length() const
Get the length (number of monomers) in this block.
void step(RField< D > const &q, RField< D > &qNew)
Compute one step of solution of MDE, from step i to i+1.
Mesh< D > const & mesh() const
Get associated spatial Mesh by const reference.
void setDiscretization(double ds, const Mesh< D > &mesh)
Initialize discretization and allocate required memory.
double stress(int n) const
Get derivative of free energy w/ respect to unit cell parameter n.
void computeConcentration(double prefactor)
Compute concentration (volume fraction) for block by integration.
double ds() const
Get contour length step size.
void setLength(double newLength)
Set or reset block length.
void setupUnitCell(const UnitCell< D > &unitCell)
Setup parameters that depend on the unit cell.
void setKuhn(double kuhn)
Set or reset monomer statistical segment length.
int ns() const
Get the number of contour length steps in this block.
void setupSolver(RField< D > const &w)
Set solver for this block.
Fourier transform wrapper for real data.
Fourier transform of a real field on an FFT mesh.
Field of real double precision values on an FFT mesh.
Base template for UnitCell<D> classes, D=1, 2 or 3.
Dynamically allocated Matrix.
A fixed capacity (static) contiguous array with a variable logical size.
#define UTIL_ASSERT(condition)
Assertion macro suitable for debugging serial or parallel code.
C++ namespace for polymer self-consistent field theory (PSCF).
Utility classes for scientific computation.