5#ifndef DUNE_BASISMATRIX_HH
6#define DUNE_BASISMATRIX_HH
9#include <dune/common/dynmatrix.hh>
10#include <dune/common/exceptions.hh>
25 template<
class PreBasis,
class Interpolation,
29 template<
class PreBasis,
class Interpolation,
36 const Interpolation& localInterpolation )
37 : cols_(preBasis.size())
39 localInterpolation.interpolate( preBasis, *
this );
48 return Matrix::rows();
54 template< GeometryType::Id geometryId,
class F,
58 :
public BasisMatrixBase< const MonomialBasis< geometryId, F >, Interpolation, Field >
65 const Interpolation& localInterpolation )
66 :
Base(preBasis, localInterpolation)
68 template <
class Vector>
69 void row(
const unsigned int row, Vector &vec )
const
71 const unsigned int N = Matrix::rows();
72 assert( Matrix::cols() == N && vec.size() == N );
75 for (
unsigned int i=0; i<N; ++i)
79 template<
int dim,
class F,
83 :
public BasisMatrixBase< const VirtualMonomialBasis< dim, F >, Interpolation, Field >
90 const Interpolation& localInterpolation )
91 :
Base(preBasis, localInterpolation)
93 template <
class Vector>
94 void row(
const unsigned int row, Vector &vec )
const
96 const unsigned int N = Matrix::rows();
97 assert( Matrix::cols() == N && vec.size() == N );
100 for (
unsigned int i=0; i<N; ++i)
104 template<
class Eval,
class CM,
class D,
class R,
108 :
public BasisMatrixBase< const PolynomialBasis<Eval,CM,D,R>, Interpolation, Field >
115 const Interpolation& localInterpolation )
116 :
Base(preBasis, localInterpolation),
121 return preBasis_.matrix().baseSize() ;
123 template <
class Vector>
124 void row(
const unsigned int row, Vector &vec )
const
126 assert( Matrix::rows() == Matrix::cols() );
127 assert( vec.size() == preBasis_.matrix().baseSize() );
128 assert( Matrix::cols() == preBasis_.size() );
129 for (
unsigned int j=0; j<Matrix::cols(); ++j)
131 for (
unsigned int i=0; i<Matrix::rows(); ++i)
133 addRow(i,(*
this)[i][row],vec);
136 const PreBasis& preBasis_;
138 template<
class Eval,
class CM,
142 :
public BasisMatrixBase< const PolynomialBasisWithMatrix<Eval,CM>, Interpolation, Field >
149 const Interpolation& localInterpolation )
150 :
Base(preBasis, localInterpolation),
155 return preBasis_.matrix().baseSize() ;
159 assert( Matrix::rows() == preBasis_.matrix().size() );
160 return preBasis_.matrix().size()*CM::blockSize ;
162 template <
class Vector>
163 void row(
const unsigned int row, Vector &vec )
const
165 unsigned int r = row / CM::blockSize;
166 assert( r < Matrix::rows() );
167 assert( Matrix::rows() == Matrix::cols() );
168 assert( vec.size() == preBasis_.matrix().baseSize() );
169 assert( Matrix::cols() == preBasis_.size() );
170 for (
unsigned int j=0; j<vec.size(); ++j)
172 for (
unsigned int i=0; i<Matrix::rows(); ++i)
174 addRow(i*CM::blockSize+row%CM::blockSize,(*
this)[i][r],vec);
177 const PreBasis& preBasis_;
Definition bdfmcube.hh:18
void field_cast(const F1 &f1, F2 &f2)
a helper class to cast from one field to another
Definition field.hh:159
Definition basismatrix.hh:27
Definition basismatrix.hh:32
unsigned int cols() const
Definition basismatrix.hh:42
DynamicMatrix< Field > Matrix
Definition basismatrix.hh:33
unsigned int rows() const
Definition basismatrix.hh:46
BasisMatrixBase(const PreBasis &preBasis, const Interpolation &localInterpolation)
Definition basismatrix.hh:35
void row(const unsigned int row, Vector &vec) const
Definition basismatrix.hh:69
const MonomialBasis< geometryId, F > PreBasis
Definition basismatrix.hh:60
Base::Matrix Matrix
Definition basismatrix.hh:62
BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
Definition basismatrix.hh:64
BasisMatrixBase< PreBasis, Interpolation, Field > Base
Definition basismatrix.hh:61
void row(const unsigned int row, Vector &vec) const
Definition basismatrix.hh:94
BasisMatrixBase< PreBasis, Interpolation, Field > Base
Definition basismatrix.hh:86
Base::Matrix Matrix
Definition basismatrix.hh:87
const VirtualMonomialBasis< dim, F > PreBasis
Definition basismatrix.hh:85
BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
Definition basismatrix.hh:89
Base::Matrix Matrix
Definition basismatrix.hh:112
BasisMatrixBase< PreBasis, Interpolation, Field > Base
Definition basismatrix.hh:111
BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
Definition basismatrix.hh:114
unsigned int cols() const
Definition basismatrix.hh:119
void row(const unsigned int row, Vector &vec) const
Definition basismatrix.hh:124
const PolynomialBasis< Eval, CM, D, R > PreBasis
Definition basismatrix.hh:110
const PolynomialBasisWithMatrix< Eval, CM > PreBasis
Definition basismatrix.hh:144
BasisMatrixBase< PreBasis, Interpolation, Field > Base
Definition basismatrix.hh:145
unsigned int rows() const
Definition basismatrix.hh:157
Base::Matrix Matrix
Definition basismatrix.hh:146
BasisMatrix(const PreBasis &preBasis, const Interpolation &localInterpolation)
Definition basismatrix.hh:148
void row(const unsigned int row, Vector &vec) const
Definition basismatrix.hh:163
unsigned int cols() const
Definition basismatrix.hh:153
Definition monomialbasis.hh:440
Definition monomialbasis.hh:612
Definition polynomialbasis.hh:65
Definition polynomialbasis.hh:348