12#include <util/param/ParamComposite.h>
13#include <r1d/field/FieldIo.h>
14#include <r1d/solvers/Mixture.h>
15#include <r1d/field/Domain.h>
16#include <util/misc/FileMaster.h>
17#include <util/containers/DArray.h>
18#include <util/containers/Array.h>
107 virtual void readParam(std::istream& in);
165 int iterate(
bool isContinuation =
false);
240 void writeW(std::string
const & filename)
const;
247 void writeC(std::string
const & filename)
const;
259 void writeBlockC(std::string
const & filename)
const;
271 int polymerId,
int blockId,
272 int directionId,
int segmentId)
const;
282 void writeQTail(std::string
const & filename,
int polymerId,
283 int blockId,
int directionId)
const;
293 void writeQ(std::string
const & filename,
int polymerId,
294 int blockId,
int directionId)
const;
314 void writeQAll(std::string
const & basename)
const;
537 void allocateFields();
545 void readEcho(std::istream& in, std::string&
string)
const;
569 return *interactionPtr_;
578 return *interactionPtr_;
593 return *iteratorPtr_;
600 {
return fileMaster_; }
621 {
return wFields_[id]; }
628 {
return wFields_[id]; }
648 {
return cFields_[id]; }
654 {
return cFields_[id]; }
660 {
return fHelmholtz_; }
666 {
return pressure_; }
Interaction model for complex Langevin FTS.
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.
Solver and descriptor for a mixture of polymers and solvents.
Default Factory for subclasses of Sweep.
Solve a sequence of problems along a line in parameter space.
DArray< double > Field
Generic Field type.
DArray< Field > & cFields()
Get array of all chemical potential fields.
void compute()
Solve the modified diffusion equation once, without iteration.
DArray< double > CField
Monomer concentration / volume fraction field type.
void readParam()
Read input parameters from default param file.
double fHelmholtz() const
Get precomputed Helmholtz free energy per monomer / kT.
double pressure() const
Get precomputed pressure x monomer volume kT.
void writeC(std::string const &filename) const
Write concentration fields in symmetrized basis format.
int iterate(bool isContinuation=false)
Iteratively solve a SCFT problem.
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.
Interaction & interaction()
Get interaction (i.e., excess free energy) by reference.
void computeFreeEnergy()
Compute free energy density and pressure for current fields.
void writeW(std::string const &filename) const
Write chemical potential fields in symmetrized basis format.
void readCommands()
Read commands from default command file.
Iterator & iterator()
Get the Iterator by reference.
Domain & domain()
Get spatial domain (including grid info) by reference.
void writeQAll(std::string const &basename) const
Write all propagators of all blocks, each to a separate file.
FileMaster & fileMaster()
Get FileMaster by reference.
Field & cField(int monomerId)
Get chemical potential field for a specific monomer type.
void setOptions(int argc, char **argv)
Process command line options.
WField & wField(int monomerId)
Get chemical potential field for a specific monomer type.
DArray< WField > & wFields()
Get array of all chemical potential fields.
void writeQ(std::string const &filename, int polymerId, int blockId, int directionId) const
Write one propagator for one block, in r-grid 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.
virtual void readParameters(std::istream &in)
Read input parameters (without opening and closing lines).
void writeBlockC(std::string const &filename) const
Write c-fields for all blocks and solvents in r-grid format.
DArray< double > WField
Monomer chemical potential field type.
void sweep()
Sweep in parameter space, solving an SCF problem at each point.
void writeThermo(std::ostream &out) const
Write thermodynamic properties to a file.
void writeParamNoSweep(std::ostream &out) const
Write parameter file to an ostream, omitting any Sweep block.
Mixture & mixture()
Get Mixture by reference.
Dynamically allocatable contiguous array template.
A FileMaster manages input and output files for a simulation.
ParamComposite()
Constructor.
#define UTIL_ASSERT(condition)
Assertion macro suitable for debugging serial or parallel code.
SCFT with real 1D fields.
PSCF package top-level namespace.