PSCF v1.3.2
|
Anderson Mixing compressor with linear-response mixing step. More...
#include <LrAmCompressor.h>
Public Member Functions | |
LrAmCompressor (System< D > &system) | |
Constructor. | |
~LrAmCompressor () | |
Destructor. | |
void | readParameters (std::istream &in) override |
Read all parameters and initialize. | |
void | setup (bool isContinuation) override |
Initialize just before entry to iterative loop. | |
int | compress () override |
Compress to obtain partial saddle point w+. | |
void | outputTimers (std::ostream &out) const override |
Return compressor times contributions. | |
void | clearTimers () override |
Clear all timers (reset accumulated time to zero). | |
Public Member Functions inherited from Pscf::AmIteratorDArray< Compressor< D > > | |
AmIteratorDArray ()=default | |
Constructor. | |
~AmIteratorDArray ()=default | |
Destructor. | |
Public Member Functions inherited from Pscf::AmIteratorTmpl< Compressor< D >, DArray< double > > | |
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. |
Additional Inherited Members | |
Public Types inherited from Pscf::AmIteratorDArray< Compressor< D > > | |
using | AmTmpl |
Alias for base class template. | |
Protected Member Functions inherited from Pscf::AmIteratorTmpl< Compressor< D >, DArray< double > > | |
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 (DArray< double > &residTrial, DArray< double > &stateTrial, std::string errorType, int verbose) |
Compute and return error used to test for convergence. | |
double | computeError (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. | |
DArray< double > const & | residual () const |
Get the current residual vector by const reference. | |
DArray< double > 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. | |
Protected Attributes inherited from Pscf::AmIteratorTmpl< Compressor< D >, DArray< double > > | |
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 mixing step.
Class LrAmCompressor implements an Anderson mixing algorithm which modifies the second mixing step, estimating Jacobian by linear response of homogenous liquid instead of unity. The residual is a vector in which each that represents a deviations in the sum of volume fractions from unity.
Definition at line 42 of file rpc/fts/compressor/LrAmCompressor.h.
Pscf::Rpc::LrAmCompressor< D >::LrAmCompressor | ( | System< D > & | system | ) |
Constructor.
system | parent System<D> object |
Definition at line 27 of file rpc/fts/compressor/LrAmCompressor.tpp.
References Util::ParamComposite::setClassName().
Pscf::Rpc::LrAmCompressor< D >::~LrAmCompressor | ( | ) |
Destructor.
Definition at line 38 of file rpc/fts/compressor/LrAmCompressor.tpp.
|
overridevirtual |
Read all parameters and initialize.
in | input filestream |
Reimplemented from Pscf::AmIteratorTmpl< Compressor< D >, DArray< double > >.
Definition at line 45 of file rpc/fts/compressor/LrAmCompressor.tpp.
References Pscf::AmIteratorTmpl< Compressor< D >, DArray< double > >::errorType_, Pscf::AmIteratorTmpl< Compressor< D >, DArray< double > >::maxItr_, Pscf::AmIteratorTmpl< Compressor< D >, DArray< double > >::readErrorType(), Pscf::AmIteratorTmpl< Compressor< D >, DArray< double > >::readParameters(), and Pscf::AmIteratorTmpl< Compressor< D >, DArray< double > >::verbose_.
|
overridevirtual |
Initialize just before entry to iterative loop.
This function is called by the solve function before entering the loop over iterations. Store the current values of the fields at the beginning of iteration
isContinuation | true iff continuation within a sweep |
Reimplemented from Pscf::AmIteratorTmpl< Compressor< D >, DArray< double > >.
Definition at line 62 of file rpc/fts/compressor/LrAmCompressor.tpp.
References setup().
Referenced by setup().
|
override |
Compress to obtain partial saddle point w+.
Definition at line 116 of file rpc/fts/compressor/LrAmCompressor.tpp.
References Pscf::AmIteratorTmpl< Compressor< D >, DArray< double > >::solve().
|
override |
Return compressor times contributions.
out | output stream |
Definition at line 126 of file rpc/fts/compressor/LrAmCompressor.tpp.
References Pscf::AmIteratorTmpl< Compressor< D >, DArray< double > >::outputTimers().
|
override |
Clear all timers (reset accumulated time to zero).
Definition at line 137 of file rpc/fts/compressor/LrAmCompressor.tpp.
References Pscf::AmIteratorTmpl< Compressor< D >, DArray< double > >::clearTimers(), and Pscf::Rpc::Compressor< D >::mdeCounter_.