11#include <util/param/ParamComposite.h>
12#include <fd1d/misc/FieldIo.h>
13#include <fd1d/solvers/Mixture.h>
14#include <fd1d/domain/Domain.h>
15#include <pscf/homogeneous/Mixture.h>
16#include <util/misc/FileMaster.h>
17#include <util/containers/DArray.h>
18#include <util/containers/Array.h>
28 class IteratorFactory;
103 virtual void readParam(std::istream& in);
161 int iterate(
bool isContinuation =
false);
236 void writeW(std::string
const & filename);
243 void writeC(std::string
const & filename);
267 int polymerId,
int blockId,
268 int directionId,
int segmentId)
const;
278 void writeQTail(std::string
const & filename,
int polymerId,
279 int blockId,
int directionId)
const;
289 void writeQ(std::string
const & filename,
int polymerId,
290 int blockId,
int directionId)
const;
310 void writeQAll(std::string
const & basename);
515 void allocateFields();
520 void initHomogeneous();
528 void readEcho(std::istream& in, std::string&
string)
const;
552 return *interactionPtr_;
561 return *interactionPtr_;
575 {
return homogeneous_; }
583 return *iteratorPtr_;
590 {
return fileMaster_; }
604 {
return wFields_[id]; }
617 {
return cFields_[id]; }
623 {
return fHelmholtz_; }
629 {
return pressure_; }
One-dimensional spatial domain and discretization grid.
Read and write fields to file.
Factory for subclasses of Iterator.
Base class for iterative solvers for SCF equations.
Mixture of polymers and solvents.
Default Factory for subclasses of Sweep.
Solve a sequence of problems along a line in parameter space.
Main class in SCFT simulation of one system.
void writeThermo(std::ostream &out)
Write thermodynamic properties to a file.
WField & wField(int monomerId)
Get chemical potential field for a specific monomer type.
DArray< double > CField
Monomer concentration / volume fraction field type.
Iterator & iterator()
Get the Iterator by reference.
int iterate(bool isContinuation=false)
Iteratively solve a SCFT problem.
void computeFreeEnergy()
Compute free energy density and pressure for current fields.
DArray< WField > & wFields()
Get array of all chemical potential fields.
Homogeneous::Mixture & homogeneous()
Get homogeneous mixture (for reference calculations).
void compute()
Solve the modified diffusion equation once, without iteration.
void writeQSlice(std::string const &filename, int polymerId, int blockId, int directionId, int segmentId) const
Write slice of a propagator at fixed s in r-grid format.
void readCommands()
Read commands from default command file.
Domain & domain()
Get spatial domain (including grid info) by reference.
virtual void readParameters(std::istream &in)
Read input parameters (without opening and closing lines).
void sweep()
Sweep in parameter space, solving an SCF problem at each point.
Mixture & mixture()
Get Mixture by reference.
DArray< CField > & cFields()
Get array of all chemical potential fields.
double fHelmholtz() const
Get precomputed Helmholtz free energy per monomer / kT.
void setOptions(int argc, char **argv)
Process command line options.
void writeBlockC(std::string const &filename)
Write c-fields for all blocks and solvents in r-grid format.
void writeQAll(std::string const &basename)
Write all propagators of all blocks, each to a separate file.
void readParam()
Read input parameters from default param file.
DArray< double > Field
Generic Field type.
void writeC(std::string const &filename)
Write concentration fields in symmetrized basis format.
void writeParamNoSweep(std::ostream &out) const
Write parameter file to an ostream, omitting any Sweep block.
double pressure() const
Get precomputed pressure x monomer volume kT.
Interaction & interaction()
Get interaction (i.e., excess free energy) by reference.
void writeQ(std::string const &filename, int polymerId, int blockId, int directionId) const
Write one propagator for one block, in r-grid format.
void writeW(std::string const &filename)
Write chemical potential fields in symmetrized basis format.
void writeQTail(std::string const &filename, int polymerId, int blockId, int directionId) const
Write the final slice of a propagator in r-grid format.
CField & cField(int monomerId)
Get chemical potential field for a specific monomer type.
FileMaster & fileMaster()
Get FileMaster by reference.
DArray< double > WField
Monomer chemical potential field type.
A spatially homogeneous mixture.
Flory-Huggins excess free energy model.
Dynamically allocatable contiguous array template.
A FileMaster manages input and output files for a simulation.
An object that can read multiple parameters from file.
#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.