4#ifndef STATIC_MATRIX_TOOL_HH
5#define STATIC_MATRIX_TOOL_HH
7#warning This header is deprecated and will be removed after 2.11.
15#if HAVE_DUNE_MATRIX_VECTOR
22#include <dune/matrix-vector/addtodiagonal.hh>
23#include <dune/matrix-vector/axpy.hh>
24#include <dune/matrix-vector/ldlt.hh>
25#include <dune/matrix-vector/promote.hh>
26#include <dune/matrix-vector/transformmatrix.hh>
31 template<
class MatrixA,
class MatrixB>
34 typedef typename Dune::MatrixVector::Promote<MatrixA, MatrixB>::Type Type;
38 template<
class Matrix>
39 static void addToDiagonal(Matrix& x,
const typename Matrix::field_type a)
41 Dune::MatrixVector::addToDiagonal(x, a);
45 template<
class MatrixA,
class MatrixB,
class TransformationMatrix>
46 void addTransformedMatrix(MatrixA& A,
const TransformationMatrix& T1,
const MatrixB& B,
const TransformationMatrix& T2)
48 Dune::MatrixVector::addTransformedMatrix(A,T1,B,T2);
51 template<
class MatrixA,
class MatrixB,
class TransformationMatrix>
52 void transformMatrix(MatrixA& A,
const TransformationMatrix& T1,
const MatrixB& B,
const TransformationMatrix& T2)
54 Dune::MatrixVector::transformMatrix(A,T1,B,T2);
57 template<
class MatrixBlockA,
class MatrixB,
class TransformationMatrix>
58 static void transformMatrixPattern(
Dune::BCRSMatrix<MatrixBlockA>& A,
const TransformationMatrix& T1,
const MatrixB& B,
const TransformationMatrix& T2)
60 Dune::MatrixVector::transformMatrixPattern(A,T1,B,T2);
65 template<
class Matrix>
66 static typename Matrix::field_type simplexEdgeDiagonal(
const Matrix& A,
int i,
int j)
68 return A[i][i] - A[i][j] - A[j][i] + A[j][j];
71 template <
typename FieldType,
int n>
77 template <
typename FieldType,
int n>
86 template<
class Matrix>
87 static typename Matrix::field_type simplexEdgeResidual(
const Matrix& A,
int i,
int j)
89 return A[i][i] - A[i][j];
92 template <
typename FieldType,
int n>
98 template <
typename FieldType,
int n>
114 template <
class K,
int n,
int m>
120 template <
class K,
int n>
126 template <
class K,
int n>
168 template<
class SymmetricMatrix,
class LowerTriangularMatrix,
class DiagonalMatrix>
169 static void ldlt(
const SymmetricMatrix& A, LowerTriangularMatrix& L,
DiagonalMatrix& D)
171 Dune::MatrixVector::ldlt(A,L,D);
190 template<
class LowerTriangularMatrix,
class DiagonalMatrix,
class RhsVector,
class SolVector>
191 static void ldltSolve(
const LowerTriangularMatrix& L,
const DiagonalMatrix& D,
const RhsVector& b, SolVector& x)
193 Dune::MatrixVector::ldltSolve(L,D,b,x);
constexpr DiagonalMatrix()=default
const K & diagonal(size_type i) const