Revision 571ec23aca4dfcdddb19441acb74ac1fd89acf1c authored by Thomas Fischer on 25 November 2021, 14:33:49 UTC, committed by Thomas Fischer on 26 November 2021, 09:22:04 UTC
1 parent a8ffcfa
ConvergenceCriterionPerComponentResidual.h
/**
* \file
* \copyright
* Copyright (c) 2012-2021, OpenGeoSys Community (http://www.opengeosys.org)
* Distributed under a Modified BSD License.
* See accompanying file LICENSE.txt or
* http://www.opengeosys.org/project/license
*
*/
#pragma once
#include <vector>
#include "ConvergenceCriterionPerComponent.h"
#include "MathLib/LinAlg/LinAlgEnums.h"
namespace NumLib
{
class LocalToGlobalIndexMap;
//! Convergence criterion applying absolute or relative tolerances individually
//! to each component of the whole residual vector.
//!
//! A check of the solution increment is not done.
//! If both an absolute and a relative tolerances are specified, at least one of
//! them has to be satisfied.
class ConvergenceCriterionPerComponentResidual
: public ConvergenceCriterionPerComponent
{
public:
ConvergenceCriterionPerComponentResidual(
std::vector<double>&& absolute_tolerances,
std::vector<double>&& relative_tolerances,
const MathLib::VecNormType norm_type);
bool hasDeltaXCheck() const override { return true; }
bool hasResidualCheck() const override { return true; }
/// The function will only do diagnostic output and no actual check of the
/// solution increment is made
void checkDeltaX(const GlobalVector& minus_delta_x,
GlobalVector const& x) override;
void checkResidual(const GlobalVector& residual) override;
void setDOFTable(const LocalToGlobalIndexMap& dof_table,
MeshLib::Mesh const& mesh) override;
private:
const std::vector<double> _abstols;
const std::vector<double> _reltols;
LocalToGlobalIndexMap const* _dof_table = nullptr;
MeshLib::Mesh const* _mesh = nullptr;
std::vector<double> _residual_norms_0;
};
std::unique_ptr<ConvergenceCriterionPerComponentResidual>
createConvergenceCriterionPerComponentResidual(
BaseLib::ConfigTree const& config);
} // namespace NumLib
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...