PSCF v1.4.0
Pscf::Rp::LrAmCompressor< D, T, V > Class Template Reference

Anderson mixing compressor with linear-response correction step. More...

#include <LrAmCompressor.h>

Inheritance diagram for Pscf::Rp::LrAmCompressor< D, T, V >:
Pscf::AmIteratorTmpl< T::Compressor, V >

Public Types

using VectorT = V
 Type of field and residual vectors.

Public Member Functions

void readParameters (std::istream &in) override
 Read body of parameter file block and initialize.
void setup (bool isContinuation) override
 Initialize just before entry to iterative loop.
int compress () override
 Compress to obtain partial saddle point field.
void outputTimers (std::ostream &out) const override
 Return compressor time contributions.
void clearTimers () override
 Clear all timers and MDE solution counter.
Public Member Functions inherited from Pscf::AmIteratorTmpl< T::Compressor, V >
 AmIteratorTmpl ()
 Constructor.
 ~AmIteratorTmpl ()
 Destructor.
int solve (bool isContinuation=false)
 Iterate to a solution.
void outputTimers (std::ostream &out) const
 Log output timing results.
void clearTimers ()
 Clear timers.

Protected Member Functions

 LrAmCompressor (typename T::System &system)
 Constructor.
 ~LrAmCompressor ()=default
 Destructor.
Protected Member Functions inherited from Pscf::AmIteratorTmpl< T::Compressor, V >
void readErrorType (std::istream &in)
 Read and validate the optional errorType string parameter.
virtual bool isValidErrorType ()
 Checks if a string is a valid error type.
void readMixingParameters (std::istream &in, bool useLambdaRamp=true)
 Read optional parameters used in default correction algorithm.
void allocateAM ()
 Allocate memory required by AM algorithm, if necessary.
bool isAllocatedAM () const
 Have data structures required by the AM algorithm been allocated?
virtual void clear ()
 Clear information about history.
virtual double computeError (V &residTrial, V &stateTrial, std::string errorType, int verbose)
 Compute and return error used to test for convergence.
double lambdaRampFactor ()
 Compute ramped prefactor of mixing parameter lambda.
virtual double computeLambda ()
 Compute mixing parameter for correction step of Anderson mixing.
int verbose () const
 Verbosity level, allowed values 0, 1, or 2.
std::string errorType () const
 Get error type string.
V const & residual () const
 Get the current residual vector by const reference.
V const & state () const
 Return the current state vector by const reference.
int totalItr ()
 Return the total number of iterations needed to converge.
double timerTotal ()
 Get total time.
double timerMDE ()
 Get time spent solving the modified diffusion equation (MDE).
double timerAM ()
 Get total time for AM algorithm, excluding MDE solution.
double timerResid ()
 Get time spent computing residual.
double timerError ()
 Get time evaluating scalar error.
double timerCoeff ()
 Get time spent evaluating Anderson mixing coefficients.
double timerOmega ()
 Get time spent updating w states.

Additional Inherited Members

Protected Attributes inherited from Pscf::AmIteratorTmpl< T::Compressor, V >
double epsilon_
 Error tolerance.
int maxItr_
 Maximum number of iterations to attempt.
int maxHist_
 Maximum number of basis vectors in AM algorithm.
int verbose_
 Verbosity level.
std::string errorType_
 Type of error criterion used to test convergence.

Detailed Description

template<int D, class T, class V>
class Pscf::Rp::LrAmCompressor< D, T, V >

Anderson mixing compressor with linear-response correction step.

Class LrAmCompressor implements an Anderson mixing algorithm in which the second "correction" step is treated as a quasi-Newton step, while the Jacobian is approximated by the linear response of a hypothetical homogenous liquid. The residual is an r-grid vector in which each element represents the deviation of the sum of volume fractions from unity.

Specializations of this class template are used as base classes for two closely analogous class templates, also named LrAmCompressor, that are defined in Rpc and Rpg namespaces for use in the pscf_rpc and pscf_rpg programs, respectively.

Template parameters:

  • D : dimension
  • Types : class that contains type aliases, e.g., Rpc::Types<D>
See also
Manual Page

Definition at line 44 of file fts/compressor/LrAmCompressor.h.

Member Typedef Documentation

◆ VectorT

template<int D, class T, class V>
using Pscf::Rp::LrAmCompressor< D, T, V >::VectorT = V

Type of field and residual vectors.

Definition at line 51 of file fts/compressor/LrAmCompressor.h.

Constructor & Destructor Documentation

◆ LrAmCompressor()

template<int D, class T, class V>
Pscf::Rp::LrAmCompressor< D, T, V >::LrAmCompressor ( typename T::System & system)
protected

Constructor.

Parameters
systemparent System object

Definition at line 26 of file LrAmCompressor.tpp.

References Util::ParamComposite::setClassName().

◆ ~LrAmCompressor()

template<int D, class T, class V>
Pscf::Rp::LrAmCompressor< D, T, V >::~LrAmCompressor ( )
protecteddefault

Destructor.

Member Function Documentation

◆ readParameters()

template<int D, class T, class V>
void Pscf::Rp::LrAmCompressor< D, T, V >::readParameters ( std::istream & in)
overridevirtual

◆ setup()

template<int D, class T, class V>
void Pscf::Rp::LrAmCompressor< D, T, V >::setup ( bool isContinuation)
overridevirtual

Initialize just before entry to iterative loop.

This function is called by the solve function before entering the loop over iterations. It stores the initial values of the fields prior to iteration.

Parameters
isContinuationtrue iff continuation within a sweep

Reimplemented from Pscf::AmIteratorTmpl< T::Compressor, V >.

Definition at line 55 of file LrAmCompressor.tpp.

◆ compress()

template<int D, class T, class V>
int Pscf::Rp::LrAmCompressor< D, T, V >::compress ( )
override

Compress to obtain partial saddle point field.

Returns
0 for convergence, 1 for failure

Definition at line 96 of file LrAmCompressor.tpp.

◆ outputTimers()

template<int D, class T, class V>
void Pscf::Rp::LrAmCompressor< D, T, V >::outputTimers ( std::ostream & out) const
override

Return compressor time contributions.

Parameters
outoutput stream

Definition at line 106 of file LrAmCompressor.tpp.

References Pscf::AmIteratorTmpl< CompressorT, VectorT >::outputTimers().

◆ clearTimers()

template<int D, class T, class V>
void Pscf::Rp::LrAmCompressor< D, T, V >::clearTimers ( )
override

Clear all timers and MDE solution counter.

Definition at line 117 of file LrAmCompressor.tpp.

References Pscf::AmIteratorTmpl< CompressorT, VectorT >::clearTimers().


The documentation for this class was generated from the following files: