Skip to content
Snippets Groups Projects
Commit dd629997 authored by Elias Pipping's avatar Elias Pipping
Browse files

addToDiagonal moved to dune-matrix-vector

parent be454cbc
No related branches found
No related tags found
No related merge requests found
......@@ -9,6 +9,7 @@
#include "dune/istl/bcrsmatrix.hh"
#include "dune/istl/matrixindexset.hh"
#include <dune/matrix-vector/addtodiagonal.hh>
#include <dune/matrix-vector/axpy.hh>
#include <dune/matrix-vector/scalartraits.hh>
......@@ -58,21 +59,7 @@ namespace StaticMatrix
template<class Matrix>
static void addToDiagonal(Matrix& x, const typename Matrix::field_type a)
{
for(int i=0; i<Matrix::rows; ++i)
x[i][i] += a;
}
template <typename FieldType, int n>
// static void addToDiagonal(Dune::ScaledIdentityMatrix<FieldType,n>& x, const FieldType a)
// the commented line should NOT be used as it may lead to ambiguities in which case the general method above will be used.
// an example is the line taken from massassembler.hh (line 83 at the time):
// StaticMatrix::addToDiagonal(localMatrix[i][i], values[i] * zi);
// where values[i] is of type FieldVector<FieldType,1> and zi is a double. This call then does not exactly fit this specialization (without the implicit cast of FV<FT,1>)
// and hence some wild template voodoo decides which of the templates is to be taken - in this case with a gcc 4.4.5 that was the one above leading to a wrong factor n
// in the diagonal value
static void addToDiagonal(Dune::ScaledIdentityMatrix<FieldType,n>& x, const typename Dune::ScaledIdentityMatrix<FieldType,n>::field_type a)
{
x.scalar() += a;
Dune::MatrixVector::addToDiagonal(x, a);
}
// add transformed matrix A += T1^t*B*T2 ******************************************************
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment