11#include <util/param/ParamComposite.h>
12#include <util/containers/FSArray.h>
34 template <
int D,
class ST>
46 virtual int solve(
bool isContinuation) = 0;
99 virtual double stress(
int paramId)
const;
166 template <
int D,
class ST>
inline
176 template <
int D,
class ST>
inline
bool isSymmetric() const
Does this iterator use a symmetry-adapted Fourier basis?
void setFlexibleParams(FSArray< bool, 6 > const &flexParams)
Set the array indicating which lattice parameters are flexible.
ST const & system() const
Get parent system by const reference.
Iterator()
Default constructor.
void setSystem(ST &system)
Set parent system.
bool isSymmetric_
Does this iterator use a symmetry-adapted basis?
virtual int solve(bool isContinuation)=0
Iterate to solution.
int nFlexibleParams() const
Get the number of flexible lattice parameters.
FSArray< bool, 6 > flexibleParams() const
Get the array indicating which lattice parameters are flexible.
virtual double stress(int paramId) const
Return the stress used by this Iterator, for one lattice parameter.
bool isFlexible_
Are any lattice parameters flexible during iteration?
virtual void outputTimers(std::ostream &out) const =0
Log output timing results.
bool isFlexible() const
Return true iff unit cell has any flexible lattice parameters.
virtual void clearTimers()=0
Clear timers.
FSArray< bool, 6 > flexibleParams_
Array of indices of the lattice parameters that are flexible.
A fixed capacity (static) contiguous array with a variable logical size.
ParamComposite()
Constructor.
File containing preprocessor macros for error handling.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
Class templates for real-valued periodic fields.
PSCF package top-level namespace.