11#include <rpg/scft/sweep/Sweep.h>
12#include <prdc/environment/Environment.h>
13#include <pscf/cuda/DeviceArray.h>
14#include <util/param/ParamComposite.h>
15#include <util/containers/FSArray.h>
27 typedef Prdc::Cuda::DeviceArray<Prdc::Cuda::cudaReal> FieldCUDA;
63 virtual int solve(
bool isContinuation) = 0;
113 virtual double stress(
int paramId)
const;
191 system().domain().unitCell().nParameter());
218 if (
system().hasEnvironment()) {
219 return system().environment().stress(paramId);
221 return system().mixture().stress(paramId);
System< D > & system()
Return reference to parent system.
void setFlexibleParams(FSArray< bool, 6 > const &flexParams)
Set the array indicating which lattice parameters are flexible.
Iterator()
Default constructor.
virtual int solve(bool isContinuation)=0
Iterate to solution.
virtual void clearTimers()=0
Clear timers.
bool isFlexible() const
Is the unit cell flexible (true) or rigid (false).
int nFlexibleParams() const
Get the number of flexible lattice parameters.
bool isSymmetric() const
Does this iterator use a symmetry-adapted Fourier basis?
bool isFlexible_
Is the unit cell flexible during iteration?
virtual double stress(int paramId) const
Return the stress used by this Iterator, for one lattice parameter.
FSArray< bool, 6 > flexibleParams() const
Get the array indicating which lattice parameters are flexible.
bool isSymmetric_
Does this iterator use a symmetry-adapted basis?
virtual void outputTimers(std::ostream &out) const =0
Log output timing results.
FSArray< bool, 6 > flexibleParams_
Array of indices of the lattice parameters that are flexible.
Main class, representing one complete system.
A fixed capacity (static) contiguous array with a variable logical size.
void setClassName(const char *className)
Set class name string.
ParamComposite()
Constructor.
File containing preprocessor macros for error handling.
#define UTIL_CHECK(condition)
Assertion macro suitable for serial or parallel production code.
SCFT and PS-FTS with real periodic fields (GPU)
PSCF package top-level namespace.