1#ifndef PRDC_FILM_FIELD_GEN_EXT_BASE_H
2#define PRDC_FILM_FIELD_GEN_EXT_BASE_H
11#include <prdc/environment/FieldGenerator.h>
12#include <pscf/math/RealVec.h>
13#include <util/containers/DArray.h>
19 template <
typename T>
class GArray;
162 double chiTop(
int s)
const;
193 virtual double stress(
int paramId)
const = 0;
264 double interfaceThickness_;
267 double excludedThickness_;
290 {
return chiBottom_; }
300 {
return chiBottom_[s]; }
305 {
return chiTop_[s]; }
310 {
return normalVecId_; }
315 {
return interfaceThickness_; }
320 {
return excludedThickness_; }
322 #ifndef PRDC_FILM_FIELD_GEN_EXT_BASE_TPP
Type type_
Type of field (Mask, External, or None).
bool isDependent_
Is this object dependent on parameters of another FieldGeneratorBase?
virtual void setParameter(std::string name, DArray< int > ids, double value, bool &success)
Set the value of a specialized sweep parameter.
virtual double getParameter(std::string name, DArray< int > ids, bool &success) const
Get the value of a specialized sweep parameter.
FieldGenerator()
Constructor.
Base class Field Generator for external fields in thin-film systems.
~FilmFieldGenExtBase()
Destructor.
DArray< double > chiTopCurrent_
The chiTop array used to generate the current external fields.
DArray< double > const & chiTop() const
Get const chiTop array by reference.
DArray< double > chiBottomCurrent_
The chiBottom array used to generate the current external fields.
double getParameter(std::string name, DArray< int > ids, bool &success) const
Get the value of a specialized sweep parameter.
double excludedThickness() const
Get value of excludedThickness.
DArray< double > const & chiBottom() const
Get const chiBottom matrix by reference.
virtual int systemNMonomer() const =0
Get the number of monomer species for this system.
bool isAthermal() const
Are the walls athermal?
void setParameter(std::string name, DArray< int > ids, double value, bool &success)
Set the value of a specialized sweep parameter.
double interfaceThickness() const
Get value of interfaceThickness.
void checkCompatibility()
Check that the system is compatible with these fields.
RealVec< D > normalVecCurrent_
The lattice vector normal to the film used to generate these fields.
int normalVecId() const
Get value of normalVecId.
bool needsUpdate() const
Check whether system has changed such that the fields need updating.
virtual std::string systemSpaceGroup() const =0
Get the space group name for this system.
virtual RealVec< D > systemLatticeVector(int id) const =0
Get one of the lattice vectors for this system.
GArray< ParameterType > getParameterTypes()
Return specialized sweep parameter types to add to the Sweep object.
FilmFieldGenExtBase()
Constructor.
virtual double stress(int paramId) const =0
Get contribution to the stress from these external fields.
void readParameters(std::istream &in)
Read parameters and initialize.
virtual void compute()=0
Compute the field(s) and store where the System can access.
bool hasSymmetricWalls() const
Are the walls chemically identical?
A RealVec<D, T> is D-component vector with elements of floating type T.
Dynamically allocatable contiguous array template.
An automatically growable array, analogous to a std::vector.
Periodic fields and crystallography.
PSCF package top-level namespace.
Utility classes for scientific computation.
Declaration of a specialized sweep parameter type.