13#include "Propagator.h"
14#include <prdc/cpu/CField.h>
15#include <pscf/cpu/complex.h>
40 for (
int j = 0; j <
nBlock(); ++j) {
41 block(j).clearUnitCellData();
53 for (
int j = 0; j <
nBlock(); ++j) {
54 monomerId =
block(j).monomerId();
55 block(j).setupSolver(wFields[monomerId]);
64 std::complex<double> ratio;
65 fftw_complex prefactor;
70 for (
int i = 0; i <
nBlock(); ++i) {
71 block(i).computeConcentrationThread(prefactor);
75 double len = (double)
nBead();
79 for (
int i = 0; i <
nBlock(); ++i) {
80 block(i).computeConcentrationBead(prefactor);
int nBlock() const
Number of blocks.
void compute(DArray< CField< D > > const &wFields)
Compute solution to MDE and block concentrations.
std::complex< double > q() const
Get the molecular partition function for this species.
double length() const
Sum of the lengths of all blocks in the polymer (thread model).
Block< D > & block(int id)
Get a specified Block (solver and descriptor).
int nBead() const
Total number of beads in the polymer (bead model).
std::complex< double > phi() const
Get the overall volume fraction for this species.
void clearUnitCellData()
Clear all data that depends on unit cell parameters.
Field of complex double precision values on an FFT mesh.
Dynamically allocatable contiguous array template.
void setClassName(const char *className)
Set class name string.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
void assign(fftw_complex &z, double const &a, double const &b)
Create an fftw_complex from real and imaginary parts, z = a + ib.
Complex periodic fields, CL-FTS (CPU).
bool isThread()
Is the thread model in use ?
bool isBead()
Is the bead model in use ?
PSCF package top-level namespace.