1 #ifndef DUNE_RAVIARTTHOMASPREBASIS_HH
2 #define DUNE_RAVIARTTHOMASPREBASIS_HH
6 #include <dune/geometry/genericgeometry/topologytypes.hh>
13 template <
unsigned int dim,
class Field>
14 struct RTPreBasisFactory;
15 template <
unsigned int dim,
class Field>
21 typedef typename MBasisFactory::Object
MBasis;
26 typedef unsigned int Key;
30 template <
class Topology,
class Field >
33 template <
unsigned int dim,
class Field>
41 template <
unsigned int dd,
class FF>
46 template<
class Topology >
50 typename Traits::MBasis *mbasis = Traits::MBasisFactory::template create<Topology>(order+1);
51 typename remove_const<Object>::type *tmBasis =
52 new typename remove_const<Object>::type(*mbasis);
53 tmBasis->fill(vecMatrix);
57 template <
class Topology,
class Field>
60 static const unsigned int dim = Topology::dimension;
66 FieldVector< MI, dim > x;
67 for(
unsigned int i = 0; i <
dim; ++i )
69 std::vector< MI > val( basis.
size() );
73 unsigned int notHomogen = 0;
75 notHomogen = basis.
sizes()[order-1];
76 unsigned int homogen = basis.
sizes()[order]-notHomogen;
77 row_ = (notHomogen*dim+homogen*(dim+1))*
dim;
81 for (
unsigned int i=0;i<notHomogen+homogen;++i)
83 for (
unsigned int r=0;r<
dim;++r)
85 for (
unsigned int rr=0;rr<
dim;++rr)
88 for (
unsigned int j=0;j<
col_;++j)
98 for (
unsigned int i=0;i<homogen;++i)
100 for (
unsigned int r=0;r<
dim;++r)
103 for (
unsigned int j=0;j<
col_;++j)
108 MI xval = val[notHomogen+i];
110 for (w=homogen+notHomogen;w<val.size();++w)
118 assert(w<val.size());
125 for (
unsigned int i=0;i<
rows();++i) {
136 template <
class Vector>
137 void row(
const unsigned int row, Vector &vec )
const
139 const unsigned int N =
cols();
140 assert( vec.size() == N );
141 for (
unsigned int i=0;i<N;++i)
150 #endif // DUNE_RAVIARTTHOMASPREBASIS_HH