- Home
- About DUNE
- Download
- Documentation
- Community
- Development
00001 // -*- tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- 00002 // vi: set et ts=8 sw=2 sts=2: 00003 00004 #ifndef DUNE_LOCALFUNCTIONS_INTERFACE_HH 00005 #define DUNE_LOCALFUNCTIONS_INTERFACE_HH 00006 00007 #ifndef HEADERCHECK 00008 #error This header exists for documentation purposes only and should never be included directly. 00009 #endif 00010 00011 #include <cstddef> 00012 #include <vector> 00013 00014 #include <dune/common/array.hh> 00015 #include <dune/common/geometrytype.hh> 00016 00017 #include <dune/localfunctions/common/localkey.hh> 00018 00019 namespace Dune { 00020 00022 class FiniteElementInterface 00023 { 00024 struct ImplementationDefined; 00025 00026 public: 00028 00031 struct Traits 00032 { 00034 00039 typedef ImplementationDefined Basis; 00041 00046 typedef ImplementationDefined Coefficients; 00048 00053 typedef ImplementationDefined Interpolation; 00054 }; 00055 00057 00064 FiniteElementInterface(...); 00066 FiniteElementInterface(const FiniteElementInterface&); 00067 00069 00073 const Traits::Basis& basis() const; 00075 00079 const Traits::Coefficients& coefficients() const; 00081 00085 const Traits::Interpolation& interpolation() const; 00087 GeometryType type() const; 00088 }; 00089 00091 00111 template<class Geometry, class VertexOrder> 00112 class FiniteElementFactoryInterface 00113 { 00114 struct ImplementationDefined; 00115 00116 public: 00118 00123 typedef ImplementationDefined FiniteElement; 00124 00126 00129 FiniteElementFactoryInterface(...); 00130 00150 00151 00153 const FiniteElement make(const Geometry&, const VertexOrder&, ...); 00155 const FiniteElement make(const Geometry&, ...); 00157 const FiniteElement make(const VertexOrder&, ...); 00159 00163 const FiniteElement make(const GeometryType&, ...); 00165 const FiniteElement make(...); 00166 00168 00169 }; 00170 00172 class BasisInterface 00173 { 00174 struct ImplementationDefined; 00175 enum { implementationDefined }; 00176 00177 public: 00179 00184 struct Traits 00185 { 00188 00190 typedef ImplementationDefined DomainField; 00192 static const std::size_t dimDomainLocal = implementationDefined; 00194 static const std::size_t dimDomainGlobal = implementationDefined; 00196 typedef ImplementationDefined DomainLocal; 00198 typedef ImplementationDefined DomainGlobal; 00199 00201 00204 00206 typedef ImplementationDefined RangeField; 00208 static const std::size_t dimRange = implementationDefined; 00210 typedef ImplementationDefined Range; 00211 00213 00215 00219 typedef ImplementationDefined Jacobian; 00220 00222 static const std::size_t diffOrder = implementationDefined; 00223 }; 00224 00226 std::size_t size () const; 00228 std::size_t order () const; 00229 00231 void evaluateFunction(const Traits::DomainLocal& in, 00232 std::vector<Traits::Range>& out) const; 00233 00235 00238 void evaluateJacobian(const Traits::DomainLocal& in, 00239 std::vector<Traits::Jacobian>& out) const; 00240 00242 00245 void evaluate 00246 ( const array<std::size_t, Traits::dimDomainGlobal>& directions, 00247 const Traits::DomainLocal& in, 00248 std::vector<Traits::Range>& out) const; 00249 }; 00250 00252 struct InterpolationInterface 00253 { 00255 00258 typedef BasisInterface::Traits Traits; 00259 00261 00270 template<typename F, typename C> 00271 void interpolate (const F& f, std::vector<C>& out) const; 00272 }; 00273 00275 00280 struct CoefficientsInterface 00281 { 00283 std::size_t size() const; 00284 00286 const LocalKey& localKey(std::size_t i) const; 00287 }; 00288 } 00289 #endif // DUNE_LOCALFUNCTIONS_INTERFACE_HH
Generated on Fri Apr 29 2011 with Doxygen (ver 1.7.1) [doxygen-log,error-log].