1 #ifndef DUNE_FEM_FUNCTIONSPACE_HH 2 #define DUNE_FEM_FUNCTIONSPACE_HH 5 #include <dune/common/fmatrix.hh> 15 template<
class DomainField,
class RangeField,
int dimD,
int dimR>
19 template<
class DomainField,
class RangeField,
int dimD,
int dimR>
33 typedef FieldVector< DomainFieldType, dimDomain >
DomainType;
36 typedef FieldVector< RangeFieldType, dimRange>
RangeType;
52 template<
class DomainField,
class RangeField,
int dimD,
int dimR>
55 < VectorSpaceTraits< DomainField, RangeField, dimD, dimR> >
66 template <
typename DomainFieldImp,
typename RangeFieldImp,
int n,
int m1,
int m2>
72 template <
typename K,
int n,
int m>
76 typedef typename BaseType::row_type
RowType;
79 rows = BaseType::rows,
81 cols = BaseType::cols,
83 dimension = BaseType::rows*BaseType::cols
100 return static_cast<BaseType&
>(*this)[r][c];
108 return static_cast<const BaseType&
>(*this)[r][c];
114 const RowType&
row(
int r)
const{
115 return static_cast<BaseType&
>(*this)[r];
122 return static_cast<BaseType&
>(*this)[r];
151 for (
int i=0; i<n; i++)
152 ret += static_cast<BaseType&>(*
this)[i] * y[i];
163 for (
int i=0; i<n; i++)
164 static_cast<BaseType&>(*
this)[i].
axpy(a,y[i]);
171 template <
typename DomainFieldImp,
typename RangeFieldImp,
int n,
int m1,
int m2>
173 public FieldMatrix<RangeFieldImp,m1*m2,n> {
184 typedef FieldMatrix<RangeFieldImp,m1*m2,n>
BaseType;
198 return static_cast<BaseType&
>(*this)[i];
204 const FieldVector<DomainFieldImp,n>&
operator[](
int i)
const {
205 return static_cast<const BaseType&
>(*this)[i];
210 template <
typename DomainFieldImp,
typename RangeFieldImp,
int n,
int m1,
int m2>
233 template <
typename DomainFieldImp,
typename RangeFieldImp,
int n,
int m1,
int m2>
241 template <
class FunctionSpaceImp,
int newDimDomain >
245 template <
class FunctionSpaceImp,
int newDimRange >
249 template<
class DomainFieldImp,
class RangeFieldImp,
int dimDomain,
int dimRange,
int newDimDomain >
256 template<
class DomainFieldImp,
class RangeFieldImp,
int n,
int m1,
int m2,
int newDimDomain >
263 template<
class DomainFieldImp,
class RangeFieldImp,
int dimDomain,
int dimRange,
int newDimRange >
273 #endif // #ifndef DUNE_FEM_FUNCTIONSPACE_HH FieldMatrix< RangeFieldImp, m1 *m2, n > BaseType
type of base class
Definition: functionspace.hh:184
RangeType class for matrix valued functions - derived from FieldMatrix but has representation as vect...
Definition: functionspace.hh:73
ThisType FunctionSpaceType
Definition: functionspace.hh:60
BaseType::row_type RowType
Definition: functionspace.hh:76
DomainFieldImp DomainFieldType
Intrinsic type used for values in the domain field (usually a double)
Definition: functionspace.hh:178
DomainFieldImp DomainFieldType
Intrinsic type used for values in the domain field (usually a double)
Definition: functionspace.hh:213
K & operator()(int r, int c)
access element in row r and column c
Definition: functionspace.hh:99
A vector valued function space.
Definition: functionspace.hh:16
FieldMatrix< RangeFieldType, dimRange, dimDomain > LinearMappingType
linear mapping type
Definition: functionspace.hh:39
FieldVector< RangeFieldType, dimRange > RangeType
Type of range vector (using type of range field) has a Dune::FieldVector type interface.
Definition: functionspace.hh:36
FieldVector< DomainFieldType, dimDomain > DomainType
Type of domain vector (using type of domain field) has a Dune::FieldVector type interface.
Definition: functionspace.hh:33
RangeMatrix(const K &k)
Constructor initializing the whole matrix with a scalar.
Definition: functionspace.hh:92
MatrixMapping()
Default constructor.
Definition: functionspace.hh:188
Traits class for matrix valued spaces.
Definition: functionspace.hh:211
Definition: functionspace.hh:30
FieldMatrix< K, n, m > BaseType
Definition: functionspace.hh:75
RangeMatrix< RangeFieldImp, m1, m2 > RangeType
Type of range vector (using type of range field) has a Dune::FieldVector type interface.
Definition: functionspace.hh:182
RangeFieldImp RangeFieldType
Intrinsic type used for values in the range field (usually a double)
Definition: functionspace.hh:215
MatrixFunctionSpace< DomainFieldImp, RangeFieldImp, n, 1, 1 > ScalarFunctionSpaceType
scalar function space type
Definition: functionspace.hh:223
FieldVector< DomainFieldImp, n > DomainType
Type of domain vector (using type of domain field) has a Dune::FieldVector type interface.
Definition: functionspace.hh:217
interface for an arbitrary function spaceBase class for specific function spaces. ...
Definition: functionspaceinterface.hh:38
DomainField DomainFieldType
Intrinsic type used for values in the domain field (usually a double)
Definition: functionspace.hh:23
Definition: functionspace.hh:28
const K operator[](int i) const
access i element where row = i/col and column = icol
Definition: functionspace.hh:138
RangeMatrix & axpy(const K &a, const BaseType &y)
vector space axpy operation
Definition: functionspace.hh:161
Definition: coordinate.hh:4
FunctionSpace< DomainFieldType, RangeFieldType, dimDomain, 1 > ScalarFunctionSpaceType
scalar function space type
Definition: functionspace.hh:43
const RowType & row(int r) const
access to row r
Definition: functionspace.hh:114
RangeFieldImp RangeFieldType
Intrinsic type used for values in the range field (usually a double)
Definition: functionspace.hh:180
A matrix valued function space.
Definition: functionspace.hh:67
MatrixMapping(const RangeFieldImp &k)
Constructor initializing the whole matrix with a scalar.
Definition: functionspace.hh:191
Double operator*(const Double &a, const Double &b)
Definition: double.hh:495
MatrixMapping< DomainFieldImp, RangeFieldImp, n, m1, m2 > LinearMappingType
linear mapping type
Definition: functionspace.hh:221
RangeMatrix< RangeFieldImp, m1, m2 > RangeType
Type of range vector (using type of range field) has a Dune::FieldVector type interface.
Definition: functionspace.hh:219
FunctionSpace< DomainFieldImp, RangeFieldImp, dimDomain, newDimRange > Type
Definition: functionspace.hh:266
MatrixFunctionSpace< DomainFieldImp, RangeFieldImp, newDimDomain, m1, m2 > Type
Definition: functionspace.hh:259
const K operator()(int r, int c) const
access element in row r and column c
Definition: functionspace.hh:107
FieldVector< DomainFieldImp, n > & operator[](int i)
returning reference to row
Definition: functionspace.hh:197
const FieldVector< DomainFieldImp, n > & operator[](int i) const
returning reference to row
Definition: functionspace.hh:204
RangeMatrix()
Default constructor.
Definition: functionspace.hh:88
RowType & row(int r)
access to row r
Definition: functionspace.hh:121
FunctionSpace< DomainFieldImp, RangeFieldImp, newDimDomain, dimRange > Type
Definition: functionspace.hh:252
RangeField RangeFieldType
Intrinsic type used for values in the range field (usually a double)
Definition: functionspace.hh:25
convert functions space to space with new dim domain
Definition: functionspace.hh:242
Traits class for vector function spaces.
Definition: functionspace.hh:20
K & operator[](int i)
access i element where row = i/col and column = icol
Definition: functionspace.hh:129
convert functions space to space with new dim range
Definition: functionspace.hh:246
JacobianRangeType class for matrix valued functions - derived from FieldMatrix.
Definition: functionspace.hh:172