PSCF v1.1
Pspg::AmIteratorBasis

The AmIteratorBasis iterator used by the pscf_pg programs is closely analogous to the AmIterator algorithm used by the pscf_pc programs. Both algorithms are based on a formalation of the Anderson mixing algorithm in which both the residual vector and the vector of unknowns are formulated using expansions in symmetry-adapted basis functions. Both algorithm can be used to either solve the SCFT equations for a rigid unit cell or to solve the SCFT equations and also optimize the unit cell parameters of a flexible unit cell so as to minimize the free energy density.

The format of the associated parameter block is identical to that used by the corresponding pscf_pc algorithm, and is described more formally below:

AmIterator{
epsilon real
maxItr* int (200 by default)
maxHist* int (50 by default0
verbose* int (0-2, 0 by default)
outputTime* bool (false by default)
errorType* string ("norm", "rms", "max", or "relNorm", "relNorm" by default)
isFlexible* bool (0 or 1, 1/true by default)
scaleStress* real (10.0 by default)
}

Here, as elsewhere, labels followed by an asterisk (*) represent optional parameters. The meaning of the various parameters are described below:

Label Description
epsilon Desired tolerance for convergence - iteration stops if the magnitude of the error drops below epsilon.
maxItr* Maximum number of iterations that will be attempted (200 by default)
maxHist* Maximum number of previous trial solultions that will be retained in memory for used by the AM algorithm (50 by default)
verbose* Integer level 0, 1, 2 for verbosity of log output during iteration. Optional, and 0 (concise) by default.
showTime* Set to 1 (true) to report wall clock time components in log file. Optional, and 0 (false) by default.
errorType* Identifer for the type of variable used to define scalar error . The allowed values are "norm", "rms", "max", and "relNorm". Optional, and set to "relNorm" by default.
isFlexible* Set isFlexible true to enable or false to disable iterative optimization of the unit cell parameters so as to minimize the free energy.
Optional and true by default.
scaleStress* Constant factor by which stress components are multipled in the definition of the residual attempted if isFlexible is true (optional).

The iterative loop exits if the number of iterations has reaches maxItr or if the magnitude of the scalar error drops below epsilon.

The Pspg::AmIteratorBasis class is nearly identical to the corresponding Pspc::AmIterator class used by the pscf_pc programs. The same definition of the the residual vector is used in both classes. Please see the documentation of the Pspc AmIterator class for the residual definition and some other details.