11#include <util/param/ParamComposite.h>
12#include <util/containers/FSArray.h>
58 virtual int solve(
bool isContinuation) = 0;
121 { setClassName(
"Iterator"); }
138 UTIL_CHECK(flexibleParams_.size() == system().unitCell().nParameter());
140 for (
int i = 0; i < flexibleParams_.size(); i++) {
141 if (flexibleParams_[i]) nFlexParams++;
150 flexibleParams_ = flexParams;
151 if (nFlexibleParams() == 0) {
Base class for iterative solvers for SCF equations.
void setFlexibleParams(FSArray< bool, 6 > const &flexParams)
Set the array indicating which lattice parameters are flexible.
bool isFlexible() const
Return true iff unit cell has any flexible lattice parameters.
Iterator()
Default constructor.
virtual int solve(bool isContinuation)=0
Iterate to solution.
bool isFlexible_
Are any lattice parameters flexible during iteration?
FSArray< bool, 6 > flexibleParams_
Array of indices of the lattice parameters that are flexible.
System< D > const & system() const
Get parent system by const reference.
int nFlexibleParams() const
Get the number of flexible lattice parameters.
System< D > & system()
Get parent system by non-const reference.
FSArray< bool, 6 > flexibleParams() const
Get the array indicating which lattice parameters are flexible.
Main class for SCFT simulation of one system.
A fixed capacity (static) contiguous array with a variable logical size.
An object that can read multiple parameters from file.
void setClassName(const char *className)
Set class name string.
File containing preprocessor macros for error handling.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
C++ namespace for polymer self-consistent field theory (PSCF).
Utility classes for scientific computation.