deal.II version GIT relicensing-6842-g793a97d2aa 2026-10-02 14:00:01+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
MatrixScaling::AdditionalData Struct Reference

#include <deal.II/lac/matrix_scaling.h>

Detailed Description

AdditionalData allows to choose the scaling algorithm and contains parameters for the scaling algorithms.

Definition at line 82 of file matrix_scaling.h.

Classes

struct  l1linfParameters
 
struct  SKParameters
 

Public Types

enum class  ScalingAlgorithm { sinkhorn_knopp , l1_linf_symmetry_preserving }
 

Public Member Functions

 AdditionalData (const double scaling_tolerance=1e-5, const ScalingAlgorithm alg=ScalingAlgorithm::l1_linf_symmetry_preserving, const SKParameters sk_params=SKParameters(), const l1linfParameters l1linf_params=l1linfParameters())
 

Public Attributes

double scaling_tolerance
 
ScalingAlgorithm algorithm
 
SKParameters sinkhorn_knopp_parameters
 
l1linfParameters l1linf_parameters
 

Member Enumeration Documentation

◆ ScalingAlgorithm

Supported scaling algorithms within MatrixScaling.

Enumerator
sinkhorn_knopp 

Sinkhorn-Knopp scaling algorithm.

The Sinkhorn-Knopp algorithm (also known as RAS algorithm) alternatingly scales rows and columns by the chosen NormType and attempts to make the matrix doubly stochastic (if all the entries are non-negative). The algorithm does not preserve symmetry.

l1_linf_symmetry_preserving 

Symmetry preserving scaling algorithm.

The symmetry preserving algorithm simultaneously scales rows and columns preserving symmetry. The symmetry preserving algorithm alternates l_infinity norm scaling with l_1 norm scaling as it has been shown to yield the best results scaling linear systems. The number of scaling steps in each norm is determined by the l1linfParameters struct

Definition at line 87 of file matrix_scaling.h.

Constructor & Destructor Documentation

◆ AdditionalData()

MatrixScaling::AdditionalData::AdditionalData ( const double  scaling_tolerance = 1e-5,
const ScalingAlgorithm  alg = ScalingAlgorithm::l1_linf_symmetry_preserving,
const SKParameters  sk_params = SKParameters(),
const l1linfParameters  l1linf_params = l1linfParameters() 
)
explicit

Construct a new AdditionalData object with the given parameters.

Definition at line 78 of file matrix_scaling.cc.

Member Data Documentation

◆ scaling_tolerance

double MatrixScaling::AdditionalData::scaling_tolerance

Tolerance for the scaling algorithms. Convergence is achieved if the difference in norm between a vector of all ones and the row and column norms vectors is below this tolerance. Convergence is not needed to obtain a good scaling and reaching it might require a lot of iterations and thus time. Convergence is not guaranteed for all kind of matrices. For more details check out the articles cited in the class description.

Definition at line 196 of file matrix_scaling.h.

◆ algorithm

ScalingAlgorithm MatrixScaling::AdditionalData::algorithm

Scaling algorithm to use.

Definition at line 201 of file matrix_scaling.h.

◆ sinkhorn_knopp_parameters

SKParameters MatrixScaling::AdditionalData::sinkhorn_knopp_parameters

Parameters for the Sinkhorn-Knopp algorithm.

Definition at line 206 of file matrix_scaling.h.

◆ l1linf_parameters

l1linfParameters MatrixScaling::AdditionalData::l1linf_parameters

Parameters for the symmetry preserving scaling algorithm.

Definition at line 211 of file matrix_scaling.h.


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