│ │ │ │ +
26 namespace PrismTriangulation
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
42 template<
int dimension,
class CoordType,
int codimension>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
49 template<
int dimension,
class CoordType> FieldVector<CoordType, dimension>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
52 FieldVector<CoordType, dimension> transform;
│ │ │ │ +
53 transform[0] = point[1];
│ │ │ │ +
54 transform[1] = 1 - point[0];
│ │ │ │ +
55 transform[2] = point[2];
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
65 template<
int dimension_,
class CoordType>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
73 template<
int codimension>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
95 template<
int dimension,
class CoordType>
│ │ │ │ +
96 template<
int codimension>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
99 class SubEntityIterator;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
103 template<
int dimension,
class CoordType>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
108 return BackendRefinement::nVertices(nIntervals) * 3;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
111 template<
int dimension,
class CoordType>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
119 template<
int dimension,
class CoordType>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
127 template<
int dimension,
class CoordType>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
132 return BackendRefinement::nElements(nIntervals) * 3;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
135 template<
int dimension,
class CoordType>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
143 template<
int dimension,
class CoordType>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
179 template<
class ct,
int mydim,
int cdim,
class Traits = MultiLinearGeometryTraits< ct > >
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
207 typedef FieldMatrix< ctype, coorddimension, mydimension >
Jacobian;
│ │ │ │ +
│ │ │ │ +
157 template<
int dimension,
class CoordType>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
176 constexpr static int nKuhnSimplices = 3;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
185 template<
int dimension,
class CoordType>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
188 : nIntervals_(nIntervals), kuhnIndex(0),
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
193 kuhnIndex = nKuhnSimplices;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
196 template<
int dimension,
class CoordType>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
202 if (backend == backendEnd)
│ │ │ │ +
│ │ │ │ +
204 backend = BackendRefinement::vBegin(nIntervals_);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
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 );
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
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));
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
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;
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
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.
│ │ │ │ +
│ │ │ │ +
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.
│ │ │ │ +
│ │ │ │ +
│ │ │ │
Definition affinegeometry.hh:21
│ │ │ │ -
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
│ │ │ │ +
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
│ │ │ │
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
│ │ │ │ -
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
│ │ │ │ +
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
│ │ │ │