|
PSCF v1.4.0
|
Anderson mixing compressor with linear-response correction step. More...
#include <LrAmCompressor.h>
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. | |
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:
Definition at line 44 of file fts/compressor/LrAmCompressor.h.
| 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.
|
protected |
Constructor.
| system | parent System object |
Definition at line 26 of file LrAmCompressor.tpp.
References Util::ParamComposite::setClassName().
|
protecteddefault |
Destructor.
|
overridevirtual |
Read body of parameter file block and initialize.
| in | input parameter file stream |
Reimplemented from Pscf::AmIteratorTmpl< T::Compressor, V >.
Definition at line 39 of file LrAmCompressor.tpp.
References Pscf::AmIteratorTmpl< CompressorT, VectorT >::errorType_, Pscf::AmIteratorTmpl< CompressorT, VectorT >::maxItr_, Pscf::AmIteratorTmpl< CompressorT, VectorT >::readErrorType(), Pscf::AmIteratorTmpl< CompressorT, VectorT >::readParameters(), and Pscf::AmIteratorTmpl< CompressorT, VectorT >::verbose_.
|
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.
| isContinuation | true iff continuation within a sweep |
Reimplemented from Pscf::AmIteratorTmpl< T::Compressor, V >.
Definition at line 55 of file LrAmCompressor.tpp.
|
override |
Compress to obtain partial saddle point field.
Definition at line 96 of file LrAmCompressor.tpp.
|
override |
Return compressor time contributions.
| out | output stream |
Definition at line 106 of file LrAmCompressor.tpp.
References Pscf::AmIteratorTmpl< CompressorT, VectorT >::outputTimers().
|
override |
Clear all timers and MDE solution counter.
Definition at line 117 of file LrAmCompressor.tpp.
References Pscf::AmIteratorTmpl< CompressorT, VectorT >::clearTimers().