│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
202 if (backend == backendEnd)
│ │ │ │ -
│ │ │ │ -
204 backend = BackendRefinement::vBegin(nIntervals_);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
14#include <dune/common/fmatrix.hh>
│ │ │ │ +
15#include <dune/common/fvector.hh>
│ │ │ │ +
16#include <dune/common/typetraits.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;
│ │ │ │
│ │ │ │ -
209 template<
int dimension,
class CoordType>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
216 getPermutation<dimension>((kuhnIndex + 2) % 4)));
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
219 template<
int dimension,
class CoordType>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
223 std::vector<CoordVector> corners(1);
│ │ │ │ -
│ │ │ │ -
225 getPermutation<dimension>((kuhnIndex + 2) % 4)));
│ │ │ │ -
226 return Geometry(GeometryTypes::vertex, corners);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
229 template<
int dimension,
class CoordType>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
234 return kuhnIndex*BackendRefinement::nVertices(nIntervals_) + backend.index();
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
238 template<
int dimension,
class CoordType>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
263 constexpr static int nKuhnSimplices = 3;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
272 template<
int dimension,
class CoordType>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
275 : nIntervals_(nIntervals), kuhnIndex(0),
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
280 kuhnIndex = nKuhnSimplices;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
283 template<
int dimension,
class CoordType>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
289 if (backend == backendEnd)
│ │ │ │ -
│ │ │ │ -
291 backend = BackendRefinement::eBegin(nIntervals_);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
296 template<
int dimension,
class CoordType>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
303 int base = kuhnIndex * BackendRefinement::nVertices(nIntervals_);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
309 template<
int dimension,
class CoordType>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
314 return kuhnIndex*BackendRefinement::nElements(nIntervals_) + backend.index();
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
317 template<
int dimension,
class CoordType>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
322 return global(backend.coords());
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
325 template<
int dimension,
class CoordType>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
329 const typename BackendIterator::Geometry &bgeo =
│ │ │ │ -
│ │ │ │ -
331 std::vector<CoordVector> corners(dimension+1);
│ │ │ │ -
332 for(
int i = 0; i <= dimension; ++i)
│ │ │ │ -
333 corners[i] = global(bgeo.corner(i));
│ │ │ │ -
│ │ │ │ -
335 return Geometry(bgeo.type(), corners);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
338 template<
int dimension,
class CoordType>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
341 global(
const CoordVector &local)
const
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
344 return transformCoordinate(referenceToKuhn(local, getPermutation<dimension>((kuhnIndex+2)%4)));
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
348 template<
int dimension,
class CoordType>
│ │ │ │ -
349 template<
int codimension>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
351 :
public ForwardIteratorFacade<typename RefinementImp<dimension, CoordType>::template Codim<codimension>::SubEntityIterator, int>,
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
356 typedef SubEntityIterator
This;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
367 template<
int dimension,
class CoordType>
│ │ │ │ -
368 template<
int codimension>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
374 template<
int dimension,
class CoordType>
│ │ │ │ -
375 template<
int codimension>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
378 equals(
const This &other)
const
│ │ │ │ -
│ │ │ │ -
380 return ((kuhnIndex == other.kuhnIndex) && (backend == other.backend));
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
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 >
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
277 assert( (i >= 0) && (i <
corners()) );
│ │ │ │ +
278 return std::cref(corners_).get()[ i ];
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
294 auto cit = begin(std::cref(corners_).get());
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
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 );
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
382 auto cit = begin(std::cref(corners_).get());
│ │ │ │ +
383 jacobianTransposed< false >(
topologyId(), std::integral_constant< int, mydimension >(), cit,
ctype( 1 ),
local,
ctype( 1 ), jt );
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │
│ │ │ │ -
387 namespace RefinementImp
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
395 template<
unsigned topologyId,
class CoordType,
unsigned coerceToId>
│ │ │ │ -
│ │ │ │ -
397 topologyId, CoordType, coerceToId, 3,
│ │ │ │ -
398 typename
std::enable_if<
│ │ │ │ -
399 (GeometryTypes::prism.id() >> 1) ==
│ │ │ │ -
│ │ │ │ -
401 (GeometryTypes::simplex(3).id() >> 1) ==
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
405 typedef PrismTriangulation::RefinementImp<3, CoordType> Imp;
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
This file contains the Refinement implementation for simplices (triangles, tetrahedrons....
│ │ │ │ -
This file contains the parts independent of a particular Refinement implementation.
│ │ │ │ -
A unique label for each type of element that can occur in a grid.
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
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_;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
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 )
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
609 if( jacobianInverseTransposedComputed_ )
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
612 MatrixHelper::template xTRightInvA< mydimension, coorddimension >( jacobianTransposed_,
global -
corner( 0 ),
local );
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
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.
│ │ │ │
Definition affinegeometry.hh:21
│ │ │ │ -
FieldVector< CoordType, dimension > transformCoordinate(FieldVector< CoordType, dimension > point)
Definition prismtriangulation.cc:50
│ │ │ │ -
FieldVector< int, n > getPermutation(int m)
Calculate permutation from it's index.
Definition simplex.cc:293
│ │ │ │ -
FieldVector< CoordType, dimension > referenceToKuhn(FieldVector< CoordType, dimension > point, const FieldVector< int, dimension > &kuhn)
Map from the reference simplex to some Kuhn simplex.
Definition simplex.cc:322
│ │ │ │ -
Static tag representing a codimension.
Definition dimension.hh:24
│ │ │ │ +
Class providing access to the singletons of the reference elements.
Definition referenceelements.hh:128
│ │ │ │ +
typename Container::ReferenceElement ReferenceElement
The reference element type.
Definition referenceelements.hh:146
│ │ │ │ +
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
│ │ │ │ -
Definition prismtriangulation.cc:43
│ │ │ │ -
Implementation of the refinement of a prism into simplices.
Definition prismtriangulation.cc:67
│ │ │ │ -
static constexpr int dimension
Definition prismtriangulation.cc:69
│ │ │ │ -
CoordType ctype
Definition prismtriangulation.cc:71
│ │ │ │ -
static VertexIterator vEnd(int nIntervals)
Definition prismtriangulation.cc:122
│ │ │ │ -
FieldVector< int, dimension+1 > IndexVector
Definition prismtriangulation.cc:78
│ │ │ │ -
static ElementIterator eEnd(int nIntervals)
Definition prismtriangulation.cc:146
│ │ │ │ -
static int nVertices(int nIntervals)
Definition prismtriangulation.cc:106
│ │ │ │ -
FieldVector< CoordType, dimension > CoordVector
Definition prismtriangulation.cc:76
│ │ │ │ -
static int nElements(int nIntervals)
Definition prismtriangulation.cc:130
│ │ │ │ -
Codim< 0 >::SubEntityIterator ElementIterator
Definition prismtriangulation.cc:77
│ │ │ │ -
Codim< dimension >::SubEntityIterator VertexIterator
Definition prismtriangulation.cc:75
│ │ │ │ -
static ElementIterator eBegin(int nIntervals)
Definition prismtriangulation.cc:138
│ │ │ │ -
static VertexIterator vBegin(int nIntervals)
Definition prismtriangulation.cc:114
│ │ │ │ -
Definition prismtriangulation.cc:98
│ │ │ │ -
Dune::MultiLinearGeometry< CoordType, dimension-codimension, dimension > Geometry
Definition prismtriangulation.cc:100
│ │ │ │ -
int nIntervals_
Definition prismtriangulation.cc:178
│ │ │ │ -
Refinement::template Codim< dimension >::Geometry Geometry
Definition prismtriangulation.cc:163
│ │ │ │ -
Refinement::BackendRefinement BackendRefinement
Definition prismtriangulation.cc:174
│ │ │ │ -
BackendRefinement::template Codim< dimension >::SubEntityIterator BackendIterator
Definition prismtriangulation.cc:175
│ │ │ │ -
Refinement::CoordVector CoordVector
Definition prismtriangulation.cc:162
│ │ │ │ -
const BackendIterator backendEnd
Definition prismtriangulation.cc:182
│ │ │ │ -
RefinementImp< dimension, CoordType > Refinement
Definition prismtriangulation.cc:161
│ │ │ │ -
BackendIterator backend
Definition prismtriangulation.cc:181
│ │ │ │ -
int kuhnIndex
Definition prismtriangulation.cc:180
│ │ │ │ -
int nIntervals_
Definition prismtriangulation.cc:265
│ │ │ │ -
Refinement::template Codim< 0 >::Geometry Geometry
Definition prismtriangulation.cc:245
│ │ │ │ -
BackendIterator backend
Definition prismtriangulation.cc:268
│ │ │ │ -
Refinement::IndexVector IndexVector
Definition prismtriangulation.cc:243
│ │ │ │ -
BackendRefinement::template Codim< 0 >::SubEntityIterator BackendIterator
Definition prismtriangulation.cc:262
│ │ │ │ -
int kuhnIndex
Definition prismtriangulation.cc:267
│ │ │ │ -
Refinement::CoordVector CoordVector
Definition prismtriangulation.cc:244
│ │ │ │ -
RefinementImp< dimension, CoordType > Refinement
Definition prismtriangulation.cc:242
│ │ │ │ -
const BackendIterator backendEnd
Definition prismtriangulation.cc:269
│ │ │ │ -
Refinement::BackendRefinement BackendRefinement
Definition prismtriangulation.cc:261
│ │ │ │ -
SubEntityIterator This
Definition prismtriangulation.cc:356
│ │ │ │ -
bool equals(const This &other) const
│ │ │ │ -
RefinementImp< dimension, CoordType > Refinement
Definition prismtriangulation.cc:355
│ │ │ │ -
SubEntityIterator(int nIntervals, bool end=false)
│ │ │ │ -
Definition simplex.cc:361
│ │ │ │ +
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
│ │ │ │ +
LocalCoordinate local(const GlobalCoordinate &globalCoord) const
evaluate the inverse mapping
Definition multilineargeometry.hh:312
│ │ │ │ +
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
│ │ │ │ +
LocalCoordinate local(const GlobalCoordinate &global) const
evaluate the inverse mapping
Definition multilineargeometry.hh:604
│ │ │ │ +
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
│ │ │ │ +
Unique label for each type of entities that can occur in DUNE grids.
Definition type.hh:114
│ │ │ │