1#ifndef PSPC_FILM_ITERATOR_BASE_H
2#define PSPC_FILM_ITERATOR_BASE_H
11#include "pspc/iterator/Iterator.h"
12#include "util/containers/FSArray.h"
50 template <
int D,
typename IteratorType>
78 int solve(
bool isContinuation =
false);
249 IteratorType iterator_;
282 template <
int D,
typename IteratorType>
284 {
return iterator_; }
287 template <
int D,
typename IteratorType>
290 {
return iterator_; }
293 template <
int D,
typename IteratorType>
296 { chiBottom_[s] = chi; }
299 template <
int D,
typename IteratorType>
302 { chiTop_[s] = chi; }
305 template <
int D,
typename IteratorType>
307 {
return normalVecId_; }
310 template <
int D,
typename IteratorType>
316 template <
int D,
typename IteratorType>
321 template <
int D,
typename IteratorType>
325 {
return chiBottom_; }
328 template <
int D,
typename IteratorType>
335 template <
int D,
typename IteratorType>
338 {
return chiBottom_[s]; }
341 template <
int D,
typename IteratorType>
344 {
return chiTop_[s]; }
349#include "FilmIteratorBase.tpp"
Descriptor for a FilmIterator object.
double interfaceThickness() const
Get value of interfaceThickness.
void generateExternalFields()
Generate external fields for the walls.
int solve(bool isContinuation=false)
Iterate to a solution.
void setChiTop(int s, double chi)
Set the value of chi between species s and the top wall.
bool isAthermal() const
Are the walls athermal?
void readParameters(std::istream &in)
Read and initialize.
bool isSymmetric() const
Are the walls chemically identical?
void setup()
Initialize just before entry to iterative loop.
void generateWallFields()
Generates mask and external field for the walls and stores in System.
double chiTop(int s) const
Get the chi parameter between the top wall and species s.
void updateWallFields()
Updates the mask and external fields for the walls if needed.
IteratorType & iterator()
Return reference to the real iterator within this FilmIterator.
double wallThickness() const
Get value of wallThickness.
double chiBottom(int s) const
Get the chi parameter between the bottom wall and species s.
IteratorType const & iterator() const
Return const reference to the real iterator within this FilmIterator.
int normalVecId() const
Get value of normalVecId.
virtual void setFlexibleParams()=0
Modifies flexibleParams_ to be compatible with thin film constraint.
DArray< double > const & chiBottom() const
Get const chiTop array by reference.
virtual void checkLatticeVectors() const =0
Check that lattice vectors are compatible with thin film constraint.
void setChiBottom(int s, double chi)
Set the value of chi between species s and the bottom wall.
DArray< double > const & chiTop() const
Get const chiBottom matrix by reference.
~FilmIteratorBase()
Destructor.
void checkSpaceGroup() const
Check that space group is compatible with the thin film constraint.
Base class for iterative solvers for SCF equations.
bool isFlexible() const
Return true iff unit cell has any flexible lattice parameters.
bool isFlexible_
Are any lattice parameters flexible during iteration?
System< D > const & system() const
Get parent system by const reference.
Main class for SCFT simulation of one system.
Dynamically allocatable contiguous array template.
A fixed capacity (static) contiguous array with a variable logical size.
DArrayParam< Type > & readDArray(std::istream &in, const char *label, DArray< Type > &array, int n)
Add and read a required DArray < Type > parameter.
ScalarParam< Type > & read(std::istream &in, const char *label, Type &value)
Add and read a new required ScalarParam < Type > object.
void setClassName(const char *className)
Set class name string.
ScalarParam< Type > & readOptional(std::istream &in, const char *label, Type &value)
Add and read a new optional ScalarParam < Type > object.
void setParent(ParamComponent ¶m, bool next=true)
Set this to the parent of a child component.
void addComponent(ParamComponent ¶m, bool isLeaf=true)
Add a new ParamComponent object to the format array.
C++ namespace for polymer self-consistent field theory (PSCF).
Utility classes for scientific computation.