1 #ifndef DUNE_RAVIARTTHOMASPREBASIS_HH
2 #define DUNE_RAVIARTTHOMASPREBASIS_HH
6 #include <dune/geometry/genericgeometry/topologytypes.hh>
12 template <
unsigned int dim,
class Field>
14 template <
unsigned int dim,
class Field>
20 typedef typename MBasisFactory::Object
MBasis;
25 typedef unsigned int Key;
29 template <
class Topology,
class Field >
32 template <
unsigned int dim,
class Field>
34 :
public TopologyFactory< RTPreBasisFactoryTraits< dim, Field > >
40 template <
unsigned int dd,
class FF>
45 template<
class Topology >
49 typename Traits::MBasis *mbasis = Traits::MBasisFactory::template create<Topology>(order+1);
50 typename remove_const<Object>::type *tmBasis =
51 new typename remove_const<Object>::type(*mbasis);
52 tmBasis->fill(vecMatrix);
56 template <
class Topology,
class Field>
59 static const unsigned int dim = Topology::dimension;
65 FieldVector< MI, dim > x;
66 for(
unsigned int i = 0; i <
dim; ++i )
68 std::vector< MI > val( basis.
size() );
72 unsigned int notHomogen = 0;
74 notHomogen = basis.
sizes()[order-1];
75 unsigned int homogen = basis.
sizes()[order]-notHomogen;
76 row_ = (notHomogen*dim+homogen*(dim+1))*
dim;
80 for (
unsigned int i=0;i<notHomogen+homogen;++i)
82 for (
unsigned int r=0;r<
dim;++r)
84 for (
unsigned int rr=0;rr<
dim;++rr)
87 for (
unsigned int j=0;j<
col_;++j)
97 for (
unsigned int i=0;i<homogen;++i)
99 for (
unsigned int r=0;r<
dim;++r)
102 for (
unsigned int j=0;j<
col_;++j)
107 MI xval = val[notHomogen+i];
109 for (w=homogen+notHomogen;w<val.size();++w)
117 assert(w<val.size());
124 for (
unsigned int i=0;i<
rows();++i) {
135 template <
class Vector>
136 void row(
const unsigned int row, Vector &vec )
const
138 const unsigned int N =
cols();
139 assert( vec.size() == N );
140 for (
unsigned int i=0;i<N;++i)
149 #endif // DUNE_RAVIARTTHOMASPREBASIS_HH