│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
5#ifndef DUNE_GEOMETRY_MULTILINEARGEOMETRY_HH
│ │ │ │ -
6#define DUNE_GEOMETRY_MULTILINEARGEOMETRY_HH
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
6#ifndef DUNE_GEOMETRY_QUADRATURERULES_HH
│ │ │ │ +
7#define DUNE_GEOMETRY_QUADRATURERULES_HH
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
14#include <dune/common/fmatrix.hh>
│ │ │ │ -
15#include <dune/common/fvector.hh>
│ │ │ │ -
16#include <dune/common/typetraits.hh>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
16#include <dune/common/fvector.hh>
│ │ │ │ +
17#include <dune/common/exceptions.hh>
│ │ │ │ +
18#include <dune/common/stdstreams.hh>
│ │ │ │ +
19#include <dune/common/stdthread.hh>
│ │ │ │ +
20#include <dune/common/visibility.hh>
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
61 static ct
tolerance () {
return ct( 16 ) * std::numeric_limits< ct >::epsilon(); }
│ │ │ │ -
│ │ │ │ -
127 template<
int mydim,
int cdim >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
130 typedef std::vector< FieldVector< ct, cdim > >
Type;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
149 static const bool v =
false;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
179 template<
class ct,
int mydim,
int cdim,
class Traits = MultiLinearGeometryTraits< ct > >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
207 typedef FieldMatrix< ctype, coorddimension, mydimension >
Jacobian;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
43 template<
typename ct,
int dim>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
53 typedef Dune::FieldVector<ct,dim>
Vector;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
81 namespace QuadratureType {
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
152 template<
typename ct,
int dim>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
171 constexpr static int d = dim;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
185 typedef typename std::vector<QuadraturePoint<ct,dim> >::const_iterator
iterator;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
199 template<
typename ctype,
int dim>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
206 using QuadratureOrderVector = std::vector<std::pair<std::once_flag, QuadratureRule> >;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
209 using GeometryTypeVector = std::vector<std::pair<std::once_flag, QuadratureOrderVector> >;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
212 using QuadratureCacheVector = std::vector<std::pair<std::once_flag, GeometryTypeVector> >;
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
217 assert(t.
dim()==dim);
│ │ │ │ +
│ │ │ │ +
219 DUNE_ASSERT_CALL_ONCE();
│ │ │ │
│ │ │ │ -
│ │ │ │ -
222 static const bool hasSingleGeometryType = Traits::template hasSingleGeometryType< mydimension >::v;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
226 typedef typename std::conditional< hasSingleGeometryType, std::integral_constant< unsigned int, Traits::template hasSingleGeometryType< mydimension >::topologyId >,
unsigned int >
::type TopologyId;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
238 template<
class Corners >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
254 template<
class Corners >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
223 auto& [ onceFlagQuadratureType, geometryTypes ] = quadratureCache[qt];
│ │ │ │ +
│ │ │ │ +
225 std::call_once(onceFlagQuadratureType, [&types = geometryTypes]{
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
231 std::call_once(onceFlagGeometryType, [&, &orders = quadratureOrders]{
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
234 orders = QuadratureOrderVector(numRules);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
238 auto& [ onceFlagQuadratureOrder, quadratureRule ] = quadratureOrders[dim == 0 ? 0 : p];
│ │ │ │ +
│ │ │ │ +
240 std::call_once(onceFlagQuadratureOrder, [&, &
rule = quadratureRule]{
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
244 return quadratureRule;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
268 return instance()._rule(t,p,qt);
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
277 assert( (i >= 0) && (i <
corners()) );
│ │ │ │ -
278 return std::cref(corners_).get()[ i ];
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
275 return instance()._rule(gt,p,qt);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
294 auto cit = begin(std::cref(corners_).get());
│ │ │ │ -
│ │ │ │ -
296 global< false >(
topologyId(), std::integral_constant< int, mydimension >(), cit,
ctype( 1 ), local,
ctype( 1 ), y );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
314 const ctype tolerance = Traits::tolerance();
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
317 const bool affineMapping = this->
affine();
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
321 const GlobalCoordinate dglobal = (*this).global( x ) - globalCoord;
│ │ │ │ -
322 const bool invertible =
│ │ │ │ -
323 MatrixHelper::template xTRightInvA< mydimension, coorddimension >(
jacobianTransposed( x ), dglobal, dx );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
331 if ( affineMapping )
break;
│ │ │ │ -
332 }
while( dx.two_norm2() > tolerance );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
352 return MatrixHelper::template sqrtDetAAT< mydimension, coorddimension >(
jacobianTransposed( local ) );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
382 auto cit = begin(std::cref(corners_).get());
│ │ │ │ -
383 jacobianTransposed< false >(
topologyId(), std::integral_constant< int, mydimension >(), cit,
ctype( 1 ), local,
ctype( 1 ), jt );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
432 return topologyId( std::integral_constant< bool, hasSingleGeometryType >() );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
435 template<
bool add,
int dim,
class CornerIterator >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
439 template<
bool add,
class CornerIterator >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
444 template<
bool add,
int rows,
int dim,
class CornerIterator >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
447 const ctype &rf, FieldMatrix< ctype, rows, cdim > &jt );
│ │ │ │ -
448 template<
bool add,
int rows,
class CornerIterator >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
451 const ctype &rf, FieldMatrix< ctype, rows, cdim > &jt );
│ │ │ │ -
│ │ │ │ -
453 template<
int dim,
class CornerIterator >
│ │ │ │ -
│ │ │ │ -
455 template<
class CornerIterator >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
462 auto cit = begin(std::cref(corners_).get());
│ │ │ │ -
463 return affine(
topologyId(), std::integral_constant< int, mydimension >(), cit, jacobianT );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
470 static unsigned int toUnsignedInt(
unsigned int i) {
return i; }
│ │ │ │ -
471 template<
unsigned int v>
│ │ │ │ -
472 static unsigned int toUnsignedInt(std::integral_constant<unsigned int,v> ) {
return v; }
│ │ │ │ -
│ │ │ │ -
474 unsigned int topologyId ( std::integral_constant< bool, false > )
const {
return refElement().type().id(); }
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
477 typename Traits::template CornerStorage< mydimension, coorddimension >::Type corners_;
│ │ │ │ -
│ │ │ │ +
281#define DUNE_INCLUDING_IMPLEMENTATION
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
284#include "quadraturerules/pointquadrature.hh"
│ │ │ │ +
│ │ │ │ +
286#include "quadraturerules/gausslobattoquadrature.hh"
│ │ │ │ +
287#include "quadraturerules/gaussquadrature.hh"
│ │ │ │ +
288#include "quadraturerules/gaussradauleftquadrature.hh"
│ │ │ │ +
289#include "quadraturerules/gaussradaurightquadrature.hh"
│ │ │ │ +
290#include "quadraturerules/jacobi1quadrature.hh"
│ │ │ │ +
291#include "quadraturerules/jacobi2quadrature.hh"
│ │ │ │ +
292#include "quadraturerules/jacobiNquadrature.hh"
│ │ │ │ +
│ │ │ │ +
294#include "quadraturerules/prismquadrature.hh"
│ │ │ │ +
│ │ │ │ +
296#include "quadraturerules/simplexquadrature.hh"
│ │ │ │ +
297#include "quadraturerules/tensorproductquadrature.hh"
│ │ │ │ +
│ │ │ │ +
299#undef DUNE_INCLUDING_IMPLEMENTATION
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
309 template<
typename ctype,
int dim>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
315 return TensorProductQuadratureRule<ctype,dim>::maxOrder(t.
id(), qt);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
319 return TensorProductQuadratureRule<ctype,dim>(t.
id(), p, qt);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
323 template<
typename ctype>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
326 constexpr static int dim = 0;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
332 return std::numeric_limits<int>::max();
│ │ │ │ +
│ │ │ │ +
334 DUNE_THROW(Exception,
"Unknown GeometryType");
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
340 return PointQuadratureRule<ctype>();
│ │ │ │ +
│ │ │ │ +
342 DUNE_THROW(Exception,
"Unknown GeometryType");
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
346 template<
typename ctype>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
349 constexpr static int dim = 1;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
357 return GaussQuadratureRule1D<ctype>::highest_order;
│ │ │ │ +
│ │ │ │ +
359 return Jacobi1QuadratureRule1D<ctype>::highest_order;
│ │ │ │ +
│ │ │ │ +
361 return Jacobi2QuadratureRule1D<ctype>::highest_order;
│ │ │ │ +
│ │ │ │ +
363 return GaussLobattoQuadratureRule1D<ctype>::highest_order;
│ │ │ │ +
│ │ │ │ +
365 return JacobiNQuadratureRule1D<ctype>::maxOrder();
│ │ │ │ +
│ │ │ │ +
367 return GaussRadauLeftQuadratureRule1D<ctype>::highest_order;
│ │ │ │ +
│ │ │ │ +
369 return GaussRadauRightQuadratureRule1D<ctype>::highest_order;
│ │ │ │ +
│ │ │ │ +
371 DUNE_THROW(Exception,
"Unknown QuadratureType");
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
374 DUNE_THROW(Exception,
"Unknown GeometryType");
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
382 return GaussQuadratureRule1D<ctype>(p);
│ │ │ │ +
│ │ │ │ +
384 return Jacobi1QuadratureRule1D<ctype>(p);
│ │ │ │ +
│ │ │ │ +
386 return Jacobi2QuadratureRule1D<ctype>(p);
│ │ │ │ +
│ │ │ │ +
388 return GaussLobattoQuadratureRule1D<ctype>(p);
│ │ │ │ +
│ │ │ │ +
390 return JacobiNQuadratureRule1D<ctype>(p);
│ │ │ │ +
│ │ │ │ +
392 return GaussRadauLeftQuadratureRule1D<ctype>(p);
│ │ │ │ +
│ │ │ │ +
394 return GaussRadauRightQuadratureRule1D<ctype>(p);
│ │ │ │ +
│ │ │ │ +
396 DUNE_THROW(Exception,
"Unknown QuadratureType");
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
399 DUNE_THROW(Exception,
"Unknown GeometryType");
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
403 template<
typename ctype>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
406 constexpr static int dim = 2;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
411 TensorProductQuadratureRule<ctype,dim>::maxOrder(t.
id(), qt);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
414 (order,
unsigned(SimplexQuadratureRule<ctype,dim>::highest_order));
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
421 && p <= SimplexQuadratureRule<ctype,dim>::highest_order)
│ │ │ │ +
│ │ │ │ +
423 return SimplexQuadratureRule<ctype,dim>(p);
│ │ │ │ +
│ │ │ │ +
425 return TensorProductQuadratureRule<ctype,dim>(t.
id(), p, qt);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
429 template<
typename ctype>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
432 constexpr static int dim = 3;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
437 TensorProductQuadratureRule<ctype,dim>::maxOrder(t.
id(), qt);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
440 (order,
unsigned(SimplexQuadratureRule<ctype,dim>::highest_order));
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
443 (order,
unsigned(PrismQuadratureRule<ctype,dim>::highest_order));
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
451 && p <= SimplexQuadratureRule<ctype,dim>::highest_order)
│ │ │ │ +
│ │ │ │ +
453 return SimplexQuadratureRule<ctype,dim>(p);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
457 && p <= PrismQuadratureRule<ctype,dim>::highest_order)
│ │ │ │ +
│ │ │ │ +
459 return PrismQuadratureRule<ctype,dim>(p);
│ │ │ │ +
│ │ │ │ +
461 return TensorProductQuadratureRule<ctype,dim>(t.
id(), p, qt);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
465#ifndef DUNE_NO_EXTERN_QUADRATURERULES
│ │ │ │ +
466 extern template class GaussLobattoQuadratureRule<double, 1>;
│ │ │ │ +
467 extern template class GaussQuadratureRule<double, 1>;
│ │ │ │ +
468 extern template class GaussRadauLeftQuadratureRule<double, 1>;
│ │ │ │ +
469 extern template class GaussRadauRightQuadratureRule<double, 1>;
│ │ │ │ +
470 extern template class Jacobi1QuadratureRule<double, 1>;
│ │ │ │ +
471 extern template class Jacobi2QuadratureRule<double, 1>;
│ │ │ │ +
472 extern template class JacobiNQuadratureRule<double, 1>;
│ │ │ │ +
473 extern template class PrismQuadratureRule<double, 3>;
│ │ │ │ +
474 extern template class SimplexQuadratureRule<double, 2>;
│ │ │ │ +
475 extern template class SimplexQuadratureRule<double, 3>;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
485 template<
class ct,
int mydim,
int cdim,
class Traits >
│ │ │ │ -
│ │ │ │ -
487 :
public FieldMatrix< ctype, coorddimension, mydimension >
│ │ │ │ -
│ │ │ │ -
489 typedef FieldMatrix< ctype, coorddimension, mydimension > Base;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
494 detInv_ = MatrixHelper::template rightInvA< mydimension, coorddimension >( jt,
static_cast< Base &
>( *
this ) );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
499 detInv_ = MatrixHelper::template sqrtDetAAT< mydimension, coorddimension >( jt );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
523 template<
class ct,
int mydim,
int cdim,
class Traits = MultiLinearGeometryTraits< ct > >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
550 template<
class CornerStorage >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
553 affine_(
Base::
affine( jacobianTransposed_ ) ),
│ │ │ │ -
554 jacobianInverseTransposedComputed_( false ),
│ │ │ │ -
555 integrationElementComputed_( false )
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
558 template<
class CornerStorage >
│ │ │ │ -
│ │ │ │ -
560 :
Base( gt, cornerStorage ),
│ │ │ │ -
561 affine_(
Base::
affine( jacobianTransposed_ ) ),
│ │ │ │ -
562 jacobianInverseTransposedComputed_( false ),
│ │ │ │ -
563 integrationElementComputed_( false )
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
585 jacobianTransposed_.umtv( local,
global );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
609 if( jacobianInverseTransposedComputed_ )
│ │ │ │ -
610 jacobianInverseTransposed_.mtv(
global -
corner( 0 ), local );
│ │ │ │ -
│ │ │ │ -
612 MatrixHelper::template xTRightInvA< mydimension, coorddimension >( jacobianTransposed_,
global -
corner( 0 ), local );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
616 return Base::local(
global );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
637 if( !integrationElementComputed_ )
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
640 integrationElementComputed_ =
true;
│ │ │ │ -
│ │ │ │ -
642 return jacobianInverseTransposed_.
detInv();
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
669 return jacobianTransposed_;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
684 if( !jacobianInverseTransposedComputed_ )
│ │ │ │ -
│ │ │ │ -
686 jacobianInverseTransposed_.
setup( jacobianTransposed_ );
│ │ │ │ -
687 jacobianInverseTransposedComputed_ =
true;
│ │ │ │ -
688 integrationElementComputed_ =
true;
│ │ │ │ -
│ │ │ │ -
690 return jacobianInverseTransposed_;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
725 mutable bool affine_ : 1;
│ │ │ │ -
│ │ │ │ -
727 mutable bool jacobianInverseTransposedComputed_ : 1;
│ │ │ │ -
728 mutable bool integrationElementComputed_ : 1;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
736 template<
class ct,
int mydim,
int cdim,
class Traits >
│ │ │ │ -
737 inline typename MultiLinearGeometry< ct, mydim, cdim, Traits >::JacobianInverseTransposed
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
741 jit.
setup( jacobianTransposed( local ) );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
746 template<
class ct,
int mydim,
int cdim,
class Traits >
│ │ │ │ -
747 template<
bool add,
int dim,
class CornerIterator >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
753 const ctype xn = df*x[ dim-1 ];
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
756 if( Impl::isPrism( toUnsignedInt(topologyId), mydimension, mydimension-dim ) )
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
759 global< add >( topologyId, std::integral_constant< int, dim-1 >(), cit, df, x, rf*cxn, y );
│ │ │ │ -
│ │ │ │ -
761 global< true >( topologyId, std::integral_constant< int, dim-1 >(), cit, df, x, rf*xn, y );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
765 assert( Impl::isPyramid( toUnsignedInt(topologyId), mydimension, mydimension-dim ) );
│ │ │ │ -
│ │ │ │ -
767 if( cxn > Traits::tolerance() || cxn < -Traits::tolerance() )
│ │ │ │ -
768 global< add >( topologyId, std::integral_constant< int, dim-1 >(), cit, df/cxn, x, rf*cxn, y );
│ │ │ │ -
│ │ │ │ -
770 global< add >( topologyId, std::integral_constant< int, dim-1 >(), cit, df, x,
ctype( 0 ), y );
│ │ │ │ -
│ │ │ │ -
772 y.axpy( rf*xn, *cit );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
777 template<
class ct,
int mydim,
int cdim,
class Traits >
│ │ │ │ -
778 template<
bool add,
class CornerIterator >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
786 for(
int i = 0; i < coorddimension; ++i )
│ │ │ │ -
787 y[ i ] = (add ? y[ i ] + rf*origin[ i ] : rf*origin[ i ]);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
791 template<
class ct,
int mydim,
int cdim,
class Traits >
│ │ │ │ -
792 template<
bool add,
int rows,
int dim,
class CornerIterator >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
796 const ctype &rf, FieldMatrix< ctype, rows, cdim > &jt )
│ │ │ │ -
│ │ │ │ -
798 assert( rows >= dim );
│ │ │ │ -
│ │ │ │ -
800 const ctype xn = df*x[ dim-1 ];
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
804 if( Impl::isPrism( toUnsignedInt(topologyId), mydimension, mydimension-dim ) )
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
807 jacobianTransposed< add >( topologyId, std::integral_constant< int, dim-1 >(), cit2, df, x, rf*cxn, jt );
│ │ │ │ -
│ │ │ │ -
809 jacobianTransposed< true >( topologyId, std::integral_constant< int, dim-1 >(), cit2, df, x, rf*xn, jt );
│ │ │ │ -
│ │ │ │ -
811 global< add >( topologyId, std::integral_constant< int, dim-1 >(), cit, df, x, -rf, jt[ dim-1 ] );
│ │ │ │ -
812 global< true >( topologyId, std::integral_constant< int, dim-1 >(), cit, df, x, rf, jt[ dim-1 ] );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
816 assert( Impl::isPyramid( toUnsignedInt(topologyId), mydimension, mydimension-dim ) );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
858 ctype dfcxn = (cxn > Traits::tolerance() || cxn < -Traits::tolerance()) ?
ctype(df / cxn) :
ctype(0);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
863 global< add >( topologyId, std::integral_constant< int, dim-1 >(), cit, dfcxn, x, -rf, jt[ dim-1 ] );
│ │ │ │ -
│ │ │ │ -
865 jt[ dim-1 ].axpy( rf, *cit );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
870 FieldMatrix<
ctype, dim-1, coorddimension > jt2;
│ │ │ │ -
│ │ │ │ -
872 jacobianTransposed< false >( topologyId, std::integral_constant< int, dim-1 >(), cit2, dfcxn, x, rf, jt2 );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
876 for(
int j = 0; j < dim-1; ++j )
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
879 jt[ dim-1 ].axpy( dfcxn*x[ j ], jt2[ j ] );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
885 jacobianTransposed< false >( topologyId, std::integral_constant< int, dim-1 >(), cit2, dfcxn, x, rf, jt );
│ │ │ │ -
│ │ │ │ -
887 for(
int j = 0; j < dim-1; ++j )
│ │ │ │ -
888 jt[ dim-1 ].axpy( dfcxn*x[ j ], jt[ j ] );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
893 template<
class ct,
int mydim,
int cdim,
class Traits >
│ │ │ │ -
894 template<
bool add,
int rows,
class CornerIterator >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
898 const ctype &, FieldMatrix< ctype, rows, cdim > & )
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
905 template<
class ct,
int mydim,
int cdim,
class Traits >
│ │ │ │ -
906 template<
int dim,
class CornerIterator >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
911 if( !affine( topologyId, std::integral_constant< int, dim-1 >(), cit, jt ) )
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
915 if( Impl::isPrism( toUnsignedInt(topologyId), mydimension, mydimension-dim ) )
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
918 if( !affine( topologyId, std::integral_constant< int, dim-1 >(), cit, jtTop ) )
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
923 for(
int i = 0; i < dim-1; ++i )
│ │ │ │ -
924 norm += (jtTop[ i ] - jt[ i ]).two_norm2();
│ │ │ │ -
925 if( norm >= Traits::tolerance() )
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
930 jt[ dim-1 ] = orgTop - orgBottom;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
934 template<
class ct,
int mydim,
int cdim,
class Traits >
│ │ │ │ -
935 template<
class CornerIterator >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
An implementation of the Geometry interface for affine geometries.
│ │ │ │ -
A unique label for each type of element that can occur in a grid.
│ │ │ │ +
│ │ │ │ +
A unique label for each type of element that can occur in a grid.
│ │ │ │ +
Helper classes to provide indices for geometrytypes for use in a vector.
│ │ │ │
Definition: affinegeometry.hh:21
│ │ │ │ -
Class providing access to the singletons of the reference elements.
Definition: referenceelements.hh:170
│ │ │ │ -
typename Container::ReferenceElement ReferenceElement
The reference element type.
Definition: referenceelements.hh:188
│ │ │ │ -
default traits class for MultiLinearGeometry
Definition: multilineargeometry.hh:39
│ │ │ │ -
Impl::FieldMatrixHelper< ct > MatrixHelper
helper structure containing some matrix routines
Definition: multilineargeometry.hh:58
│ │ │ │ -
static ct tolerance()
tolerance to numerical algorithms
Definition: multilineargeometry.hh:61
│ │ │ │ -
template specifying the storage for the corners
Definition: multilineargeometry.hh:129
│ │ │ │ -
std::vector< FieldVector< ct, cdim > > Type
Definition: multilineargeometry.hh:130
│ │ │ │ -
will there be only one geometry type for a dimension?
Definition: multilineargeometry.hh:148
│ │ │ │ -
static const unsigned int topologyId
Definition: multilineargeometry.hh:150
│ │ │ │ -
static const bool v
Definition: multilineargeometry.hh:149
│ │ │ │ -
generic geometry implementation based on corner coordinates
Definition: multilineargeometry.hh:181
│ │ │ │ -
static void global(TopologyId topologyId, std::integral_constant< int, dim >, CornerIterator &cit, const ctype &df, const LocalCoordinate &x, const ctype &rf, GlobalCoordinate &y)
Definition: multilineargeometry.hh:749
│ │ │ │ -
static const int mydimension
geometry dimension
Definition: multilineargeometry.hh:189
│ │ │ │ -
Dune::GeometryType type() const
obtain the name of the reference element
Definition: multilineargeometry.hh:269
│ │ │ │ -
Traits::MatrixHelper MatrixHelper
Definition: multilineargeometry.hh:225
│ │ │ │ -
FieldVector< ctype, coorddimension > GlobalCoordinate
type of global coordinates
Definition: multilineargeometry.hh:196
│ │ │ │ -
static void jacobianTransposed(TopologyId topologyId, std::integral_constant< int, 0 >, CornerIterator &cit, const ctype &df, const LocalCoordinate &x, const ctype &rf, FieldMatrix< ctype, rows, cdim > &jt)
Definition: multilineargeometry.hh:896
│ │ │ │ -
JacobianTransposed jacobianTransposed(const LocalCoordinate &local) const
obtain the transposed of the Jacobian
Definition: multilineargeometry.hh:377
│ │ │ │ -
ReferenceElement refElement() const
Definition: multilineargeometry.hh:425
│ │ │ │ -
GlobalCoordinate global(const LocalCoordinate &local) const
evaluate the mapping
Definition: multilineargeometry.hh:290
│ │ │ │ -
GlobalCoordinate center() const
obtain the centroid of the mapping's image
Definition: multilineargeometry.hh:282
│ │ │ │ -
GlobalCoordinate corner(int i) const
obtain coordinates of the i-th corner
Definition: multilineargeometry.hh:275
│ │ │ │ -
Dune::ReferenceElements< ctype, mydimension > ReferenceElements
Definition: multilineargeometry.hh:214
│ │ │ │ -
ct ctype
coordinate type
Definition: multilineargeometry.hh:186
│ │ │ │ -
static void jacobianTransposed(TopologyId topologyId, std::integral_constant< int, dim >, CornerIterator &cit, const ctype &df, const LocalCoordinate &x, const ctype &rf, FieldMatrix< ctype, rows, cdim > &jt)
Definition: multilineargeometry.hh:794
│ │ │ │ -
static const int coorddimension
coordinate dimension
Definition: multilineargeometry.hh:191
│ │ │ │ -
int corners() const
obtain number of corners of the corresponding reference element
Definition: multilineargeometry.hh:272
│ │ │ │ -
TopologyId topologyId() const
Definition: multilineargeometry.hh:430
│ │ │ │ -
friend ReferenceElement referenceElement(const MultiLinearGeometry &geometry)
Definition: multilineargeometry.hh:395
│ │ │ │ -
static void global(TopologyId topologyId, std::integral_constant< int, 0 >, CornerIterator &cit, const ctype &df, const LocalCoordinate &x, const ctype &rf, GlobalCoordinate &y)
Definition: multilineargeometry.hh:780
│ │ │ │ -
Volume volume() const
obtain the volume of the mapping's image
Definition: multilineargeometry.hh:363
│ │ │ │ -
FieldVector< ctype, mydimension > LocalCoordinate
type of local coordinates
Definition: multilineargeometry.hh:194
│ │ │ │ -
MultiLinearGeometry(const ReferenceElement &refElement, const Corners &corners)
constructor
Definition: multilineargeometry.hh:239
│ │ │ │ -
static bool affine(TopologyId topologyId, std::integral_constant< int, 0 >, CornerIterator &cit, JacobianTransposed &jt)
Definition: multilineargeometry.hh:937
│ │ │ │ -
std::conditional< hasSingleGeometryType, std::integral_constant< unsignedint, Traits::templatehasSingleGeometryType< mydimension >::topologyId >, unsignedint >::type TopologyId
Definition: multilineargeometry.hh:226
│ │ │ │ -
ctype Volume
type of volume
Definition: multilineargeometry.hh:198
│ │ │ │ -
static bool affine(TopologyId topologyId, std::integral_constant< int, dim >, CornerIterator &cit, JacobianTransposed &jt)
Definition: multilineargeometry.hh:908
│ │ │ │ -
JacobianInverse jacobianInverse(const LocalCoordinate &local) const
Obtain the Jacobian's inverse.
Definition: multilineargeometry.hh:418
│ │ │ │ -
MultiLinearGeometry(Dune::GeometryType gt, const Corners &corners)
constructor
Definition: multilineargeometry.hh:255
│ │ │ │ -
FieldMatrix< ctype, mydimension, coorddimension > JacobianTransposed
type of jacobian transposed
Definition: multilineargeometry.hh:201
│ │ │ │ -
ReferenceElements::ReferenceElement ReferenceElement
type of reference element
Definition: multilineargeometry.hh:219
│ │ │ │ -
JacobianInverseTransposed jacobianInverseTransposed(const LocalCoordinate &local) const
obtain the transposed of the Jacobian's inverse
Definition: multilineargeometry.hh:738
│ │ │ │ -
FieldMatrix< ctype, coorddimension, mydimension > Jacobian
Type for the Jacobian matrix.
Definition: multilineargeometry.hh:207
│ │ │ │ -
bool affine() const
is this mapping affine?
Definition: multilineargeometry.hh:262
│ │ │ │ -
FieldMatrix< ctype, mydimension, coorddimension > JacobianInverse
Type for the inverse Jacobian matrix.
Definition: multilineargeometry.hh:210
│ │ │ │ -
bool affine(JacobianTransposed &jacobianT) const
Definition: multilineargeometry.hh:458
│ │ │ │ -
Volume integrationElement(const LocalCoordinate &local) const
obtain the integration element
Definition: multilineargeometry.hh:350
│ │ │ │ -
Jacobian jacobian(const LocalCoordinate &local) const
Obtain the Jacobian.
Definition: multilineargeometry.hh:407
│ │ │ │ -
Definition: multilineargeometry.hh:488
│ │ │ │ -
void setup(const JacobianTransposed &jt)
Definition: multilineargeometry.hh:492
│ │ │ │ -
ctype det() const
Definition: multilineargeometry.hh:502
│ │ │ │ -
ctype detInv() const
Definition: multilineargeometry.hh:503
│ │ │ │ -
void setupDeterminant(const JacobianTransposed &jt)
Definition: multilineargeometry.hh:497
│ │ │ │ -
Implement a MultiLinearGeometry with additional caching.
Definition: multilineargeometry.hh:526
│ │ │ │ -
GlobalCoordinate global(const LocalCoordinate &local) const
evaluate the mapping
Definition: multilineargeometry.hh:580
│ │ │ │ -
Base::ReferenceElement ReferenceElement
Definition: multilineargeometry.hh:534
│ │ │ │ -
bool affine() const
is this mapping affine?
Definition: multilineargeometry.hh:567
│ │ │ │ -
CachedMultiLinearGeometry(const ReferenceElement &referenceElement, const CornerStorage &cornerStorage)
Definition: multilineargeometry.hh:551
│ │ │ │ -
ReferenceElement refElement() const
Definition: multilineargeometry.hh:425
│ │ │ │ -
Base::MatrixHelper MatrixHelper
Definition: multilineargeometry.hh:531
│ │ │ │ -
Base::LocalCoordinate LocalCoordinate
Definition: multilineargeometry.hh:541
│ │ │ │ -
JacobianInverse jacobianInverse(const LocalCoordinate &local) const
Obtain the Jacobian's inverse.
Definition: multilineargeometry.hh:713
│ │ │ │ -
JacobianTransposed jacobianTransposed(const LocalCoordinate &local) const
obtain the transposed of the Jacobian
Definition: multilineargeometry.hh:666
│ │ │ │ -
GlobalCoordinate corner(int i) const
obtain coordinates of the i-th corner
Definition: multilineargeometry.hh:275
│ │ │ │ -
Volume volume() const
obtain the volume of the mapping's image
Definition: multilineargeometry.hh:649
│ │ │ │ -
CachedMultiLinearGeometry(Dune::GeometryType gt, const CornerStorage &cornerStorage)
Definition: multilineargeometry.hh:559
│ │ │ │ -
ctype integrationElement(const LocalCoordinate &local) const
obtain the integration element
Definition: multilineargeometry.hh:633
│ │ │ │ -
Base::ctype ctype
Definition: multilineargeometry.hh:536
│ │ │ │ -
Jacobian jacobian(const LocalCoordinate &local) const
Obtain the Jacobian.
Definition: multilineargeometry.hh:702
│ │ │ │ -
Base::JacobianInverseTransposed JacobianInverseTransposed
Definition: multilineargeometry.hh:546
│ │ │ │ -
Base::JacobianTransposed JacobianTransposed
Definition: multilineargeometry.hh:545
│ │ │ │ -
Base::JacobianInverse JacobianInverse
Definition: multilineargeometry.hh:548
│ │ │ │ -
Base::Jacobian Jacobian
Definition: multilineargeometry.hh:547
│ │ │ │ -
Base::Volume Volume
Definition: multilineargeometry.hh:543
│ │ │ │ -
Base::GlobalCoordinate GlobalCoordinate
Definition: multilineargeometry.hh:542
│ │ │ │ -
GlobalCoordinate center() const
obtain the centroid of the mapping's image
Definition: multilineargeometry.hh:572
│ │ │ │ -
JacobianInverseTransposed jacobianInverseTransposed(const LocalCoordinate &local) const
obtain the transposed of the Jacobian's inverse
Definition: multilineargeometry.hh:680
│ │ │ │ +
Enum
Definition: quadraturerules.hh:82
│ │ │ │ +
@ GaussJacobi_n_0
Gauss-Legendre rules with .
Definition: quadraturerules.hh:119
│ │ │ │ +
@ GaussJacobi_2_0
Gauss-Legendre rules with .
Definition: quadraturerules.hh:106
│ │ │ │ +
@ GaussRadauRight
Gauss-Radau rules including the right endpoint.
Definition: quadraturerules.hh:144
│ │ │ │ +
@ GaussJacobi_1_0
Gauss-Jacobi rules with .
Definition: quadraturerules.hh:99
│ │ │ │ +
@ size
Definition: quadraturerules.hh:145
│ │ │ │ +
@ GaussLobatto
Gauss-Lobatto rules.
Definition: quadraturerules.hh:127
│ │ │ │ +
@ GaussRadauLeft
Gauss-Radau rules including the left endpoint.
Definition: quadraturerules.hh:135
│ │ │ │ +
@ GaussLegendre
Gauss-Legendre rules (default)
Definition: quadraturerules.hh:92
│ │ │ │ +
Exception thrown if a desired QuadratureRule is not available, because the requested order is to high...
Definition: quadraturerules.hh:36
│ │ │ │ +
Single evaluation point in a quadrature rule.
Definition: quadraturerules.hh:44
│ │ │ │ +
const Vector & position() const
return local coordinates of integration point i
Definition: quadraturerules.hh:62
│ │ │ │ +
Dune::FieldVector< ct, dim > Vector
Type used for the position of a quadrature point.
Definition: quadraturerules.hh:53
│ │ │ │ +
ct Field
Number type used for coordinates and quadrature weights.
Definition: quadraturerules.hh:50
│ │ │ │ +
const ct & weight() const
return weight associated with integration point i
Definition: quadraturerules.hh:68
│ │ │ │ +
ct weight_
Definition: quadraturerules.hh:75
│ │ │ │ +
static constexpr int dimension
Dimension of the integration domain.
Definition: quadraturerules.hh:47
│ │ │ │ +
QuadraturePoint(const Vector &x, ct w)
set up quadrature of given order in d dimensions
Definition: quadraturerules.hh:56
│ │ │ │ +
FieldVector< ct, dim > local
Definition: quadraturerules.hh:74
│ │ │ │ +
Abstract base class for quadrature rules.
Definition: quadraturerules.hh:154
│ │ │ │ +
virtual ~QuadratureRule()
Definition: quadraturerules.hh:181
│ │ │ │ +
static constexpr int d
The space dimension.
Definition: quadraturerules.hh:171
│ │ │ │ +
virtual GeometryType type() const
return type of element
Definition: quadraturerules.hh:180
│ │ │ │ +
int delivered_order
Definition: quadraturerules.hh:189
│ │ │ │ +
QuadratureRule(GeometryType t, int order)
Constructor for a given geometry type and a given quadrature order.
Definition: quadraturerules.hh:168
│ │ │ │ +
GeometryType geometry_type
Definition: quadraturerules.hh:188
│ │ │ │ +
ct CoordType
The type used for coordinates.
Definition: quadraturerules.hh:174
│ │ │ │ +
QuadratureRule()
Default constructor.
Definition: quadraturerules.hh:161
│ │ │ │ +
virtual int order() const
return order
Definition: quadraturerules.hh:177
│ │ │ │ +
QuadratureRule(GeometryType t)
Constructor for a given geometry type. Leaves the quadrature order invalid
Definition: quadraturerules.hh:165
│ │ │ │ +
std::vector< QuadraturePoint< ct, dim > >::const_iterator iterator
Definition: quadraturerules.hh:185
│ │ │ │ +
Factory class for creation of quadrature rules, depending on GeometryType, order and QuadratureType.
Definition: quadraturerules.hh:310
│ │ │ │ +
A container for all quadrature rules of dimension dim
Definition: quadraturerules.hh:200
│ │ │ │ +
static unsigned maxOrder(const GeometryType &t, QuadratureType::Enum qt=QuadratureType::GaussLegendre)
maximum quadrature order for given geometry type and quadrature type
Definition: quadraturerules.hh:259
│ │ │ │ +
static const QuadratureRule & rule(const GeometryType::BasicType t, int p, QuadratureType::Enum qt=QuadratureType::GaussLegendre)
select the appropriate QuadratureRule for GeometryType t and order p
Definition: quadraturerules.hh:272
│ │ │ │ +
static const QuadratureRule & rule(const GeometryType &t, int p, QuadratureType::Enum qt=QuadratureType::GaussLegendre)
select the appropriate QuadratureRule for GeometryType t and order p
Definition: quadraturerules.hh:266
│ │ │ │
Unique label for each type of entities that can occur in DUNE grids.
Definition: type.hh:125
│ │ │ │ +
constexpr bool isPrism() const
Return true if entity is a prism.
Definition: type.hh:320
│ │ │ │ +
constexpr bool isVertex() const
Return true if entity is a vertex.
Definition: type.hh:290
│ │ │ │ +
constexpr unsigned int dim() const
Return dimension of the type.
Definition: type.hh:371
│ │ │ │ +
BasicType
Each entity can be tagged by one of these basic types plus its space dimension.
Definition: type.hh:131
│ │ │ │ +
constexpr bool isLine() const
Return true if entity is a line segment.
Definition: type.hh:295
│ │ │ │ +
constexpr unsigned int id() const
Return the topology id of the type.
Definition: type.hh:376
│ │ │ │ +
constexpr bool isSimplex() const
Return true if entity is a simplex of any dimension.
Definition: type.hh:330
│ │ │ │ +
static constexpr std::size_t size(std::size_t dim)
Compute total number of geometry types for the given dimension.
Definition: typeindex.hh:61
│ │ │ │ +
static constexpr std::size_t index(const GeometryType >)
Compute the index for the given geometry type within its dimension.
Definition: typeindex.hh:73
│ │ │ │