OGS
|
Convergence criterion applying absolute or relative tolerances individually to each component of the whole solution increment vector.
A residual check is not done. If both an absolute and a relative tolerances are specified, at least one of them has to be satisfied.
Definition at line 26 of file ConvergenceCriterionPerComponentDeltaX.h.
#include <ConvergenceCriterionPerComponentDeltaX.h>
Public Member Functions | |
ConvergenceCriterionPerComponentDeltaX (std::vector< double > &&absolute_tolerances, std::vector< double > &&relative_tolerances, const MathLib::VecNormType norm_type) | |
bool | hasDeltaXCheck () const override |
bool | hasResidualCheck () const override |
void | checkDeltaX (const GlobalVector &minus_delta_x, GlobalVector const &x) override |
void | checkResidual (const GlobalVector &) override |
Check if the residual satisfies the convergence criterion. | |
void | reset () override |
void | setDOFTable (const LocalToGlobalIndexMap &dof_table, MeshLib::Mesh const &mesh) override |
Sets the d.o.f. table used to extract data for a specific component. | |
Public Member Functions inherited from NumLib::ConvergenceCriterionPerComponent | |
ConvergenceCriterionPerComponent (const MathLib::VecNormType norm_type) | |
Public Member Functions inherited from NumLib::ConvergenceCriterion | |
ConvergenceCriterion (const MathLib::VecNormType norm_type) | |
virtual void | preFirstIteration () |
virtual void | setNoFirstIteration () |
virtual bool | isSatisfied () const |
Tell if the convergence criterion is satisfied. | |
MathLib::VecNormType | getVectorNormType () const |
virtual | ~ConvergenceCriterion ()=default |
Private Attributes | |
const std::vector< double > | _abstols |
const std::vector< double > | _reltols |
LocalToGlobalIndexMap const * | _dof_table = nullptr |
MeshLib::Mesh const * | _mesh = nullptr |
Additional Inherited Members | |
Protected Attributes inherited from NumLib::ConvergenceCriterion | |
bool | _satisfied = true |
bool | _is_first_iteration = true |
const MathLib::VecNormType | _norm_type |
NumLib::ConvergenceCriterionPerComponentDeltaX::ConvergenceCriterionPerComponentDeltaX | ( | std::vector< double > && | absolute_tolerances, |
std::vector< double > && | relative_tolerances, | ||
const MathLib::VecNormType | norm_type ) |
Definition at line 22 of file ConvergenceCriterionPerComponentDeltaX.cpp.
|
overridevirtual |
Check if the change of the solution between iterations satisfies the convergence criterion.
minus_delta_x | the current solution update |
x | the new solution from the current iteration |
minus_delta_x
. x
is needed for relative tolerances. Implements NumLib::ConvergenceCriterion.
Definition at line 43 of file ConvergenceCriterionPerComponentDeltaX.cpp.
References _abstols, _dof_table, _mesh, NumLib::ConvergenceCriterion::_norm_type, _reltols, NumLib::ConvergenceCriterion::_satisfied, NumLib::checkRelativeTolerance(), INFO(), NumLib::norm(), and OGS_FATAL.
|
inlineoverridevirtual |
Check if the residual satisfies the convergence criterion.
Implements NumLib::ConvergenceCriterion.
Definition at line 40 of file ConvergenceCriterionPerComponentDeltaX.h.
|
inlineoverridevirtual |
Tells if the change of the solution between iterations is checked.
Implements NumLib::ConvergenceCriterion.
Definition at line 35 of file ConvergenceCriterionPerComponentDeltaX.h.
|
inlineoverridevirtual |
Tells if the residual is checked.
Implements NumLib::ConvergenceCriterion.
Definition at line 36 of file ConvergenceCriterionPerComponentDeltaX.h.
|
inlineoverridevirtual |
Indicate that a new iteration now starts.
A concrete implementation of ConvergenceCriterion might want to check both delta x and the residual. I.e., in a new iteration both checks have to be done anew. This method will make the ConvergenceCriterion forget the result of all checks already done, s.t. all necessary checks will have to be repeated in order to satisfy the ConvergenceCriterion.
Reimplemented from NumLib::ConvergenceCriterion.
Definition at line 42 of file ConvergenceCriterionPerComponentDeltaX.h.
References NumLib::ConvergenceCriterion::_satisfied.
|
overridevirtual |
Sets the d.o.f. table used to extract data for a specific component.
Implements NumLib::ConvergenceCriterionPerComponent.
Definition at line 75 of file ConvergenceCriterionPerComponentDeltaX.cpp.
References _abstols, _dof_table, _mesh, NumLib::LocalToGlobalIndexMap::getNumberOfGlobalComponents(), and OGS_FATAL.
|
private |
Definition at line 48 of file ConvergenceCriterionPerComponentDeltaX.h.
Referenced by ConvergenceCriterionPerComponentDeltaX(), checkDeltaX(), and setDOFTable().
|
private |
Definition at line 50 of file ConvergenceCriterionPerComponentDeltaX.h.
Referenced by checkDeltaX(), and setDOFTable().
|
private |
Definition at line 51 of file ConvergenceCriterionPerComponentDeltaX.h.
Referenced by checkDeltaX(), and setDOFTable().
|
private |
Definition at line 49 of file ConvergenceCriterionPerComponentDeltaX.h.
Referenced by ConvergenceCriterionPerComponentDeltaX(), and checkDeltaX().