Skip to content
Snippets Groups Projects
Commit 1ee25f2c authored by Jonathan Youett's avatar Jonathan Youett
Browse files

Remove deprecated blockmatrixview.hh, it moved to dune-matrix-vector

parent 6c0a3ea5
No related branches found
No related tags found
No related merge requests found
......@@ -17,7 +17,6 @@ install(FILES
arcofcircle.hh
arithmetic.hh
basistraceindexset.hh
blockmatrixview.hh
boundaryiterator.hh
boundarypatch.hh
boundarypatchprolongator.hh
......
// -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
// vi: set ts=8 sw=4 et sts=4:
#ifndef DUNE_FUFEM_BLOCK_MATRIX_VIEW_HH
#define DUNE_FUFEM_BLOCK_MATRIX_VIEW_HH
#include <array>
#include <vector>
#include <dune/istl/matrixindexset.hh>
template <class MatrixType>
class DUNE_DEPRECATED_MSG("This class is deprecated, please use BlockMatrixView.hh from dune-matrix-vector") BlockMatrixView
{
public:
BlockMatrixView(const std::vector<const MatrixType*>& submat) {
offsets_.resize(submat.size());
offsets_[0][0] = 0;
offsets_[0][1] = 0;
size_t i;
for (i=0; i<submat.size()-1; i++) {
offsets_[i+1][0] = offsets_[i][0] + submat[i]->N();
offsets_[i+1][1] = offsets_[i][1] + submat[i]->M();
}
nRows_ = offsets_[i][0] + submat[i]->N();
nCols_ = offsets_[i][1] + submat[i]->M();
}
int row(int block, int index) const {
return offsets_[block][0] + index;
}
int col(int block, int index) const {
return offsets_[block][1] + index;
}
int nRows() const {
return nRows_;
}
int nCols() const {
return nCols_;
}
/** \brief Combine submatrices in a big matrix. */
static void setupBlockMatrix(const std::vector<MatrixType>& submat, MatrixType& mat) {
std::vector<const MatrixType*> dummy(submat.size());
for (size_t i=0; i<dummy.size(); i++)
dummy[i] = &submat[i];
setupBlockMatrix(dummy,mat);
}
/** \brief Combine submatrices in a big matrix. */
static void setupBlockMatrix(const std::vector<const MatrixType*>& submat, MatrixType& mat);
protected:
std::vector<std::array<int,2> > offsets_;
int nRows_, nCols_;
};
template <class MatrixType>
void BlockMatrixView<MatrixType>::setupBlockMatrix(const std::vector<const MatrixType*>& submat, MatrixType& mat) {
BlockMatrixView<MatrixType> blockView(submat);
Dune::MatrixIndexSet indexSet(blockView.nRows(), blockView.nCols());
for (size_t i=0; i<submat.size(); i++)
indexSet.import(*submat[i], blockView.row(i,0), blockView.col(i,0));
indexSet.exportIdx(mat);
mat = 0;
for (size_t i=0; i<submat.size(); i++) {
auto row = submat[i]->begin();
auto rowEnd = submat[i]->end();
for (; row != rowEnd; row++) {
auto col = row->begin();
auto colEnd = row->end();
for (; col != colEnd; col++)
mat[blockView.row(i,row.index())][blockView.col(i,col.index())] = *col;
}
}
}
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment