12#include <prdc/cpu/RField.h>
40 for (
int j = 0; j <
nBlock(); ++j) {
41 block(j).clearUnitCellData();
55 for (
int j = 0; j <
nBlock(); ++j) {
56 monomerId =
block(j).monomerId();
57 block(j).setupSolver(wFields[monomerId]);
68 for (
int i = 0; i <
nBlock(); ++i) {
69 block(i).computeConcentrationThread(prefactor);
73 prefactor =
phi() / (
q() * (double)
nBead() );
74 for (
int i = 0; i <
nBlock(); ++i) {
75 block(i).computeConcentrationBead(prefactor);
92 for (
int i = 0; i <
nBlock(); ++i) {
93 block(i).computeStressThread(prefactor);
96 prefactor =
phi() / (
q() * (double)
nBead() );
97 for (
int i = 0; i <
nBlock(); ++i) {
98 block(i).computeStressBead(prefactor);
104 for (
int i = 0; i < nParam_; ++i) {
109 for (
int i = 0; i <
nBlock(); ++i) {
110 for (
int j = 0; j < nParam_ ; ++j){
111 stress_[j] +=
block(i).stress(j);
Field of real double precision values on an FFT mesh.
double phi() const
Get the overall volume fraction for this species.
void compute(DArray< RField< D > > const &wFields, double phiTot=1.0)
Compute solution to MDE and block concentrations.
void computeStress()
Compute SCFT stress contribution from this polymer species.
int nBead() const
Total number of beads in the polymer (bead model).
int nBlock() const
Number of blocks.
void clearUnitCellData()
Clear all data that depends on unit cell parameters.
Block< D > & block(int id)
Get a specified Block (solver and descriptor).
void setNParams(int nParam)
Set the number of unit cell parameters.
double length() const
Sum of the lengths of all blocks in the polymer (thread model).
double q() const
Get the molecular partition function for this species.
Dynamically allocatable contiguous array template.
void setClassName(const char *className)
Set class name string.
bool isThread()
Is the thread model in use ?
bool isBead()
Is the bead model in use ?
Real periodic fields, SCFT and PS-FTS (CPU).
PSCF package top-level namespace.