1#ifndef DUNE_FEM_TEMPORARYLOCALMATRIX_HH
2#define DUNE_FEM_TEMPORARYLOCALMATRIX_HH
7#include <dune/common/densematrix.hh>
8#include <dune/common/dynvector.hh>
22 template<
class DomainSpaceImp,
class RangeSpaceImp >
23 class TemporaryLocalMatrix;
30 template<
class DomainSpaceImp,
class RangeSpaceImp >
51 template<
class DomainSpaceImp,
class RangeSpaceImp >
52 struct DenseMatVecTraits< Fem::TemporaryLocalMatrix< DomainSpaceImp, RangeSpaceImp > >
70 template<
class DomainSpaceImp,
class RangeSpaceImp >
71 struct FieldTraits< Fem::TemporaryLocalMatrix< DomainSpaceImp, RangeSpaceImp > >
72 :
public FieldTraits< typename Fem::TemporaryLocalMatrixTraits< DomainSpaceImp, RangeSpaceImp >::RangeFieldType >
96 template<
class DomainSpaceImp,
class RangeSpaceImp >
98 :
public DenseMatrix< TemporaryLocalMatrix< DomainSpaceImp, RangeSpaceImp > >,
99 public LocalMatrixDefault< TemporaryLocalMatrixTraits< DomainSpaceImp, RangeSpaceImp > >
137 template<
class DomainEntityType,
class RangeEntityType >
147 template<
class DomainEntityType,
class RangeEntityType >
155 template<
class DomainEntityType,
class RangeEntityType >
170 inline void add (
const int localRow,
174 assert( (localRow >= 0) && (localRow <
rows()) );
175 assert( (localCol >= 0) && (localCol <
columns()) );
180 inline void set (
const int localRow,
184 assert( (localRow >= 0) && (localRow <
rows()) );
185 assert( (localCol >= 0) && (localCol <
columns()) );
191 const int localCol )
const
193 assert( (localRow >= 0) && (localRow <
rows()) );
194 assert( (localCol >= 0) && (localCol <
columns()) );
201 const std::size_t size =
fields_.size();
202 for( std::size_t i=0; i<size; ++i )
218 auto start =
fields_.begin() + localRow * col;
219 auto end = start + col;
220 std::fill( start, end, 0 );
Definition: bindguard.hh:11
Default implementation for local matrix classes.
Definition: localmatrix.hh:285
const RangeEntityType & rangeEntity() const
Definition: localmatrix.hh:398
const DomainEntityType & domainEntity() const
Definition: localmatrix.hh:397
const RangeBasisFunctionSetType & rangeBasisFunctionSet() const
access to the base function set within the range space
Definition: localmatrix.hh:392
const RangeSpaceType & rangeSpace() const
access to the range space
Definition: localmatrix.hh:383
BaseType::RangeEntityType RangeEntityType
Definition: localmatrix.hh:299
void unbind()
clear local matrix from entities
Definition: localmatrix.hh:359
const DomainSpaceType & domainSpace() const
access to the domain space
Definition: localmatrix.hh:380
BaseType::DomainEntityType DomainEntityType
Definition: localmatrix.hh:298
const DomainBasisFunctionSetType & domainBasisFunctionSet() const
access to the base function set within the domain space
Definition: localmatrix.hh:386
A local matrix with a small array as storage.
Definition: temporarylocalmatrix.hh:100
const RangeFieldType * data() const
Definition: temporarylocalmatrix.hh:244
RangeFieldType value_type
Definition: temporarylocalmatrix.hh:118
void init(const DomainEntityType &domainEntity, const RangeEntityType &rangeEntity)
initialize the local matrix to entities
Definition: temporarylocalmatrix.hh:148
MatrixEntriesType fields_
Definition: temporarylocalmatrix.hh:125
void scale(const RangeFieldType &value)
scale matrix with scalar value
Definition: temporarylocalmatrix.hh:199
RowReferenceVector< value_type > row_reference
Definition: temporarylocalmatrix.hh:120
RangeSpaceImp RangeSpaceType
Definition: temporarylocalmatrix.hh:103
const RangeBasisFunctionSetType & rangeBasisFunctionSet() const
access to the base function set within the range space
Definition: localmatrix.hh:392
void add(const int localRow, const int localCol, const RangeFieldType &value)
add value to matrix entry (row,col) where row and col are local row and local column
Definition: temporarylocalmatrix.hh:170
void bind(const DomainEntityType &domainEntity, const RangeEntityType &rangeEntity)
initialize the local matrix to entities
Definition: temporarylocalmatrix.hh:156
size_type cols() const
Definition: temporarylocalmatrix.hh:224
size_type mat_rows() const
Definition: temporarylocalmatrix.hh:228
DomainSpaceImp DomainSpaceType
Definition: temporarylocalmatrix.hh:102
size_type columns() const
Definition: temporarylocalmatrix.hh:225
void set(const int localRow, const int localCol, const RangeFieldType &value)
set value of matrix entry (row,col) where row and col are local row and local column
Definition: temporarylocalmatrix.hh:180
void unbind()
clear local matrix from entities
Definition: temporarylocalmatrix.hh:164
const_row_reference mat_access(size_type i) const
Definition: temporarylocalmatrix.hh:237
RowReferenceVector< const value_type > const_row_reference
Definition: temporarylocalmatrix.hh:121
TemporaryLocalMatrix(const DomainSpaceType &domainSpace, const RangeSpaceType &rangeSpace)
Definition: temporarylocalmatrix.hh:131
TemporaryLocalMatrixTraits< DomainSpaceType, RangeSpaceType > Traits
Definition: temporarylocalmatrix.hh:106
void clear()
set all entries of local matrix to zero
Definition: temporarylocalmatrix.hh:209
Traits::DomainFieldType DomainFieldType
Definition: temporarylocalmatrix.hh:114
const RangeFieldType get(const int localRow, const int localCol) const
get value of matrix entry (row,col) where row and col are local row and local column
Definition: temporarylocalmatrix.hh:190
int size_type
Definition: temporarylocalmatrix.hh:117
std::vector< RangeFieldType > MatrixEntriesType
Definition: temporarylocalmatrix.hh:123
size_type rows() const
Definition: temporarylocalmatrix.hh:223
Traits::RangeFieldType RangeFieldType
Definition: temporarylocalmatrix.hh:115
row_reference mat_access(size_type i)
Definition: temporarylocalmatrix.hh:231
TemporaryLocalMatrix(const DomainSpaceType &domainSpace, const RangeSpaceType &rangeSpace, const DomainEntityType &domainEntity, const RangeEntityType &rangeEntity)
Definition: temporarylocalmatrix.hh:138
const DomainBasisFunctionSetType & domainBasisFunctionSet() const
access to the base function set within the domain space
Definition: localmatrix.hh:386
void clearRow(const int localRow)
set row to zero values
Definition: temporarylocalmatrix.hh:215
size_type mat_cols() const
Definition: temporarylocalmatrix.hh:229
Definition: temporarylocalmatrix.hh:32
RangeFieldType LittleBlockType
Definition: temporarylocalmatrix.hh:41
RangeSpaceImp RangeSpaceType
Definition: temporarylocalmatrix.hh:34
TemporaryLocalMatrix< DomainSpaceType, RangeSpaceType > LocalMatrixType
Definition: temporarylocalmatrix.hh:37
DomainSpaceImp DomainSpaceType
Definition: temporarylocalmatrix.hh:33
DomainSpaceType::RangeFieldType DomainFieldType
Definition: temporarylocalmatrix.hh:39
RangeSpaceType::RangeFieldType RangeFieldType
Definition: temporarylocalmatrix.hh:40
int size_type
Definition: temporarylocalmatrix.hh:57
Fem::TemporaryLocalMatrixTraits< DomainSpaceImp, RangeSpaceImp >::RangeFieldType value_type
Definition: temporarylocalmatrix.hh:56
Fem::TemporaryLocalMatrix< DomainSpaceImp, RangeSpaceImp > derived_type
Definition: temporarylocalmatrix.hh:54
DynamicVector< value_type > row_type
Definition: temporarylocalmatrix.hh:59
Fem::RowReferenceVector< const value_type > const_row_reference
Definition: temporarylocalmatrix.hh:62
Fem::RowReferenceVector< value_type > row_reference
Definition: temporarylocalmatrix.hh:61
DenseMatrix based on std::vector< std::vector< T > >
Definition: blockmatrix.hh:24
Definition: rowreferencevector.hh:56