1#ifndef PRDC_FILM_MASK_FG_BASE_H
2#define PRDC_FILM_MASK_FG_BASE_H
11#include <prdc/environment/FieldGenerator.h>
12#include <prdc/crystal/UnitCell.h>
13#include <pscf/math/RealVec.h>
112 virtual double stress(
int paramId)
const = 0;
237 double interfaceThickness_;
240 double excludedThickness_;
254 {
return normalVecId_; }
259 {
return interfaceThickness_; }
264 {
return excludedThickness_; }
274 {
return hasFBulk_; }
276 #ifndef PRDC_MASK_GEN_FILM_BASE_TPP
Type type_
Type of field (Mask, External, or None).
FieldGenerator()
Constructor.
Base class Field Generator for thin-film masks.
RealVec< D > normalVecCurrent_
The lattice vector normal to the film used to generate these fields.
virtual std::string systemSpaceGroup() const =0
Get the space group name for this system.
double fBulk() const
Get value of fBulk.
int normalVecId() const
Get value of normalVecId.
double fBulk_
Reference free energy used to calculate stress normal to the film.
bool hasFBulk() const
Check whether a value of fBulk was provided.
FSArray< bool, 6 > modifyFlexibleParams(FSArray< bool, 6 > current, UnitCell< D > const &cell) const
Modifies a flexibleParams array to be compatible with this mask.
void checkSpaceGroup() const
Check that space group is compatible with the mask.
void readParameters(std::istream &in)
Read parameter file block and initialize.
double interfaceThickness() const
Get value of interfaceThickness.
~FilmFieldGenMaskBase()
Destructor.
double excludedThickness() const
Get value of excludedThickness.
void checkCompatibility()
Check that the system is compatible with this field.
FilmFieldGenMaskBase()
Constructor.
bool needsUpdate() const
Check whether system has changed such that the field needs updating.
virtual RealVec< D > systemLatticeVector(int id) const =0
Get one of the lattice vectors for this system.
virtual double modifyStress(int paramId, double stress) const =0
Modify stress value in direction normal to the film.
virtual void compute()=0
Compute the field and store where the System can access.
void checkLatticeVectors() const
Check that lattice vectors are compatible with thin film constraint.
virtual void setFlexibleParams() const =0
Sets iterator's flexibleParams array to be compatible with the mask.
virtual double stress(int paramId) const =0
Get contribution to the stress from this mask.
Base template for UnitCell<D> classes, D=1, 2 or 3.
A RealVec<D, T> is D-component vector with elements of floating type T.
A fixed capacity (static) contiguous array with a variable logical size.
ScalarParam< Type > & read(std::istream &in, const char *label, Type &value)
Add and read a new required ScalarParam < Type > object.
ScalarParam< Type > & readOptional(std::istream &in, const char *label, Type &value)
Add and read a new optional ScalarParam < Type > object.
Periodic fields and crystallography.
PSCF package top-level namespace.