5#ifndef DUNE_GEOMETRY_REFINEMENT_HCUBETRIANGULATION_CC
6#define DUNE_GEOMETRY_REFINEMENT_HCUBETRIANGULATION_CC
37 namespace RefinementImp
62 template<
int dimension,
class CoordType,
int codimension>
65 template<
int dimension_,
class CoordType>
73 template<
int codimension>
94 template<
int dimension,
class CoordType>
95 template<
int codimension>
102 template<
int dimension,
class CoordType>
110 template<
int dimension,
class CoordType>
118 template<
int dimension,
class CoordType>
126 template<
int dimension,
class CoordType>
134 template<
int dimension,
class CoordType>
142 template<
int dimension,
class CoordType>
156 template<
int dimension,
class CoordType>
185 template<
int dimension,
class CoordType>
196 template<
int dimension,
class CoordType>
209 template<
int dimension,
class CoordType>
217 template<
int dimension,
class CoordType>
221 std::vector<CoordVector> corners(1);
226 template<
int dimension,
class CoordType>
235 template<
int dimension,
class CoordType>
270 template<
int dimension,
class CoordType>
280 template<
int dimension,
class CoordType>
288 template<
int dimension,
class CoordType>
301 template<
int dimension,
class CoordType>
314 template<
int dimension,
class CoordType>
322 template<
int dimension,
class CoordType>
327 return global(
backend.coords());
330 template<
int dimension,
class CoordType>
334 const typename BackendIterator::Geometry &bgeo =
336 std::vector<CoordVector> corners(dimension+1);
337 for(
int i = 0; i <= dimension; ++i)
338 corners[i] = global(bgeo.corner(i));
340 return Geometry(bgeo.type(), corners);
343 template<
int dimension,
class CoordType>
346 global(
const CoordVector &local)
const
352 template<
int dimension,
class CoordType>
353 template<
int codimension>
355 :
public ForwardIteratorFacade<typename RefinementImp<dimension, CoordType>::template Codim<codimension>::SubEntityIterator, int>,
371 template<
int dimension,
class CoordType>
372 template<
int codimension>
378 template<
int dimension,
class CoordType>
379 template<
int codimension>
382 equals(
const This &other)
const
383 {
return kuhnIndex == other.kuhnIndex && backend == other.backend; }
390 namespace RefinementImp
398 template<
unsigned topologyId,
class CoordType,
unsigned coerceToId,
401 topologyId, CoordType, coerceToId, dim,
402 typename
std::enable_if<
404 (GeometryTypes::cube(dim).id() >> 1) ==
406 (GeometryTypes::simplex(dim).id() >> 1) ==
411 typedef HCubeTriangulation::RefinementImp<dim, CoordType> Imp;
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.
constexpr GeometryType vertex
GeometryType representing a vertex.
Definition type.hh:492
Definition affinegeometry.hh:21
This namespace contains the Refinement implementation for triangulating hypercubes (GeometryType::cub...
Definition hcubetriangulation.cc:46
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
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
Definition hcubetriangulation.cc:63
Definition hcubetriangulation.cc:67
static VertexIterator vEnd(int nIntervals)
Definition hcubetriangulation.cc:121
static VertexIterator vBegin(int nIntervals)
Definition hcubetriangulation.cc:113
static int nElements(int nIntervals)
Definition hcubetriangulation.cc:129
SubEntityIterator This
Definition hcubetriangulation.cc:360
FieldVector< CoordType, dimension > CoordVector
Definition hcubetriangulation.cc:76
bool equals(const This &other) const
SubEntityIterator(int nIntervals, bool end=false)
CoordType ctype
Definition hcubetriangulation.cc:71
Codim< 0 >::SubEntityIterator ElementIterator
Definition hcubetriangulation.cc:77
FieldVector< int, dimension+1 > IndexVector
Definition hcubetriangulation.cc:78
static ElementIterator eBegin(int nIntervals)
Definition hcubetriangulation.cc:137
static ElementIterator eEnd(int nIntervals)
Definition hcubetriangulation.cc:145
static constexpr int dimension
Definition hcubetriangulation.cc:69
Codim< dimension >::SubEntityIterator VertexIterator
Definition hcubetriangulation.cc:75
static int nVertices(int nIntervals)
Definition hcubetriangulation.cc:105
RefinementImp< dimension, CoordType > Refinement
Definition hcubetriangulation.cc:359
Definition hcubetriangulation.cc:97
Dune::MultiLinearGeometry< CoordType, dimension-codimension, dimension > Geometry
Definition hcubetriangulation.cc:99
static constexpr int nKuhnSimplices
Definition hcubetriangulation.cc:176
int index() const
Definition hcubetriangulation.cc:229
int nIntervals_
Definition hcubetriangulation.cc:178
void increment()
Definition hcubetriangulation.cc:199
int kuhnIndex
Definition hcubetriangulation.cc:180
Refinement::CoordVector CoordVector
Definition hcubetriangulation.cc:161
Geometry geometry() const
Definition hcubetriangulation.cc:219
Refinement::template Codim< dimension >::Geometry Geometry
Definition hcubetriangulation.cc:162
BackendRefinement::template Codim< dimension >::SubEntityIterator BackendIterator
Definition hcubetriangulation.cc:175
Refinement::BackendRefinement BackendRefinement
Definition hcubetriangulation.cc:174
BackendIterator backend
Definition hcubetriangulation.cc:181
RefinementImp< dimension, CoordType > Refinement
Definition hcubetriangulation.cc:160
CoordVector coords() const
Definition hcubetriangulation.cc:212
const BackendIterator backendEnd
Definition hcubetriangulation.cc:182
RefinementIteratorSpecial(int nIntervals, bool end=false)
Definition hcubetriangulation.cc:187
BackendRefinement::template Codim< 0 >::SubEntityIterator BackendIterator
Definition hcubetriangulation.cc:260
int index() const
Definition hcubetriangulation.cc:317
BackendIterator backend
Definition hcubetriangulation.cc:266
CoordVector coords() const
Definition hcubetriangulation.cc:325
static constexpr int nKuhnSimplices
Definition hcubetriangulation.cc:261
IndexVector vertexIndices() const
Definition hcubetriangulation.cc:304
RefinementIteratorSpecial(int nIntervals_, bool end=false)
Definition hcubetriangulation.cc:272
Refinement::CoordVector CoordVector
Definition hcubetriangulation.cc:241
const BackendIterator backendEnd
Definition hcubetriangulation.cc:267
int kuhnIndex
Definition hcubetriangulation.cc:265
void increment()
Definition hcubetriangulation.cc:291
Refinement::BackendRefinement BackendRefinement
Definition hcubetriangulation.cc:259
int nIntervals_
Definition hcubetriangulation.cc:263
Refinement::IndexVector IndexVector
Definition hcubetriangulation.cc:240
RefinementImp< dimension, CoordType > Refinement
Definition hcubetriangulation.cc:239
Geometry geometry() const
Definition hcubetriangulation.cc:332
Refinement::template Codim< 0 >::Geometry Geometry
Definition hcubetriangulation.cc:242
Definition simplex.cc:361
static int nVertices(int nIntervals)
static int nElements(int nIntervals)
static VertexIterator vBegin(int nIntervals)
static ElementIterator eBegin(int nIntervals)