1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- 2 // vi: set et ts=4 sw=2 sts=2: 3 #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH 4 #define DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH 5 6 #include "raviartthomas0cube2d.hh" 7 #include "raviartthomas0cube3d.hh" 8 #include "raviartthomas1cube2d.hh" 9 #include "raviartthomas1cube3d.hh" 10 #include "raviartthomas2cube2d.hh" 11 #include "raviartthomas3cube2d.hh" 12 #include "raviartthomas4cube2d.hh" 13 14 /** 15 * \file 16 * \brief Convenience header that includes all available Raviart-Thomas 17 * local finite elements for cubes. 18 */ 19 20 namespace Dune 21 { 22 /** 23 * \brief Raviart-Thomas local finite elements for cubes. 24 * 25 * Convenience class to access all implemented Raviart-Thomas local 26 * finite elements for cubes. 27 * Generic Raviart-Thomas local finite elements for cubes like for 28 * simpleces could be written. 29 * 30 * \ingroup RaviartThomas 31 * 32 * \tparam D type to represent the field in the domain. 33 * \tparam R type to represent the field in the range. 34 * \tparam dim dimension of the reference elements, must be 2 or 3. 35 * \tparam order order of the element, depending on \a dim it can be 0, 1, or 2. 36 */ 37 template<class D, class R, unsigned int dim, unsigned int order> 38 class RaviartThomasCubeLocalFiniteElement; 39 40 /** 41 * \brief Raviart-Thomas local finite elements for cubes with dimension 2 and order 0. 42 */ 43 template<class D, class R> 44 class RaviartThomasCubeLocalFiniteElement<D, R, 2, 0> 45 : public RT0Cube2DLocalFiniteElement<D, R> 46 { 47 public: RaviartThomasCubeLocalFiniteElement()48 RaviartThomasCubeLocalFiniteElement() 49 : RT0Cube2DLocalFiniteElement<D, R>::RT0Cube2DLocalFiniteElement() 50 {} 51 RaviartThomasCubeLocalFiniteElement(int s)52 RaviartThomasCubeLocalFiniteElement(int s) 53 : RT0Cube2DLocalFiniteElement<D, R>::RT0Cube2DLocalFiniteElement(s) 54 {} 55 }; 56 57 /** 58 * \brief Raviart-Thomas local finite elements for cubes with dimension 2 and order 1. 59 */ 60 template<class D, class R> 61 class RaviartThomasCubeLocalFiniteElement<D, R, 2, 1> 62 : public RT1Cube2DLocalFiniteElement<D, R> 63 { 64 public: RaviartThomasCubeLocalFiniteElement()65 RaviartThomasCubeLocalFiniteElement() 66 : RT1Cube2DLocalFiniteElement<D, R>::RT1Cube2DLocalFiniteElement() 67 {} 68 RaviartThomasCubeLocalFiniteElement(int s)69 RaviartThomasCubeLocalFiniteElement(int s) 70 : RT1Cube2DLocalFiniteElement<D, R>::RT1Cube2DLocalFiniteElement(s) 71 {} 72 }; 73 74 /** 75 * \brief Raviart-Thomas local finite elements for cubes with dimension 2 and order 2. 76 */ 77 template<class D, class R> 78 class RaviartThomasCubeLocalFiniteElement<D, R, 2, 2> 79 : public RT2Cube2DLocalFiniteElement<D, R> 80 { 81 public: RaviartThomasCubeLocalFiniteElement()82 RaviartThomasCubeLocalFiniteElement() 83 : RT2Cube2DLocalFiniteElement<D, R>::RT2Cube2DLocalFiniteElement() 84 {} 85 RaviartThomasCubeLocalFiniteElement(int s)86 RaviartThomasCubeLocalFiniteElement(int s) 87 : RT2Cube2DLocalFiniteElement<D, R>::RT2Cube2DLocalFiniteElement(s) 88 {} 89 }; 90 91 /** 92 * \brief Raviart-Thomas local finite elements for cubes with dimension 2 and order 3. 93 */ 94 template<class D, class R> 95 class RaviartThomasCubeLocalFiniteElement<D, R, 2, 3> 96 : public RT3Cube2DLocalFiniteElement<D, R> 97 { 98 public: RaviartThomasCubeLocalFiniteElement()99 RaviartThomasCubeLocalFiniteElement() 100 : RT3Cube2DLocalFiniteElement<D, R>::RT3Cube2DLocalFiniteElement() 101 {} 102 RaviartThomasCubeLocalFiniteElement(int s)103 RaviartThomasCubeLocalFiniteElement(int s) 104 : RT3Cube2DLocalFiniteElement<D, R>::RT3Cube2DLocalFiniteElement(s) 105 {} 106 }; 107 108 /** 109 * \brief Raviart-Thomas local finite elements for cubes with dimension 2 and order 4. 110 */ 111 template<class D, class R> 112 class RaviartThomasCubeLocalFiniteElement<D, R, 2, 4> 113 : public RT4Cube2DLocalFiniteElement<D, R> 114 { 115 public: RaviartThomasCubeLocalFiniteElement()116 RaviartThomasCubeLocalFiniteElement() 117 : RT4Cube2DLocalFiniteElement<D, R>::RT4Cube2DLocalFiniteElement() 118 {} 119 RaviartThomasCubeLocalFiniteElement(int s)120 RaviartThomasCubeLocalFiniteElement(int s) 121 : RT4Cube2DLocalFiniteElement<D, R>::RT4Cube2DLocalFiniteElement(s) 122 {} 123 }; 124 125 /** 126 * \brief Raviart-Thomas local finite elements for cubes with dimension 3 and order 0. 127 */ 128 template<class D, class R> 129 class RaviartThomasCubeLocalFiniteElement<D, R, 3, 0> 130 : public RT0Cube3DLocalFiniteElement<D, R> 131 { 132 public: RaviartThomasCubeLocalFiniteElement()133 RaviartThomasCubeLocalFiniteElement() 134 : RT0Cube3DLocalFiniteElement<D, R>::RT0Cube3DLocalFiniteElement() 135 {} 136 RaviartThomasCubeLocalFiniteElement(int s)137 RaviartThomasCubeLocalFiniteElement(int s) 138 : RT0Cube3DLocalFiniteElement<D, R>::RT0Cube3DLocalFiniteElement(s) 139 {} 140 }; 141 142 /** 143 * \brief Raviart-Thomas local finite elements for cubes with dimension 3 and order 1. 144 */ 145 template<class D, class R> 146 class RaviartThomasCubeLocalFiniteElement<D, R, 3, 1> 147 : public RT1Cube3DLocalFiniteElement<D, R> 148 { 149 public: RaviartThomasCubeLocalFiniteElement()150 RaviartThomasCubeLocalFiniteElement() 151 : RT1Cube3DLocalFiniteElement<D, R>::RT1Cube3DLocalFiniteElement() 152 {} 153 RaviartThomasCubeLocalFiniteElement(int s)154 RaviartThomasCubeLocalFiniteElement(int s) 155 : RT1Cube3DLocalFiniteElement<D, R>::RT1Cube3DLocalFiniteElement(s) 156 {} 157 }; 158 } // namespace Dune 159 160 #endif // #ifndef DUNE_LOCALFUNCTIONS_RAVIARTTHOMAS_CUBE_HH 161