Intrepid2
Public Member Functions | Static Public Member Functions | Private Types | Private Attributes | List of all members
Intrepid2::TensorTopologyMap Class Reference

For two cell topologies whose tensor product is a third, this class establishes a mapping from subcell pairs in the component topologies to the tensor product topology. More...

#include <Intrepid2_TensorTopologyMap.hpp>

Public Member Functions

 TensorTopologyMap (shards::CellTopology cellTopo1, shards::CellTopology cellTopo2, shards::CellTopology compositeCellTopo, std::vector< std::pair< unsigned, unsigned > > nodePairs=std::vector< std::pair< unsigned, unsigned > >())
 Constructor. More...
 
 TensorTopologyMap (shards::CellTopology cellTopo1, shards::CellTopology cellTopo2)
 
unsigned getCompositeSubcellOrdinal (unsigned subcell1Dim, unsigned subcell1Ordinal, unsigned subcell2Dim, unsigned subcell2Ordinal)
 Map from component subcell ordinals to the corresponding composite subcell ordinal. More...
 

Static Public Member Functions

static std::vector
< std::vector< int > > 
referenceCellGeometry (shards::CellTopology cellTopo)
 A topological representation of the vertex geometries corresponding to a cell topology. More...
 
static std::vector< std::pair
< unsigned, unsigned > > 
defaultNodePairs (shards::CellTopology cellTopo1, shards::CellTopology cellTopo2, shards::CellTopology compositeCellTopo)
 Default node pairs corresponding to the provided component and composite cell topologies. More...
 
static shards::CellTopology compositeCellTopology (shards::CellTopology cellTopo1, shards::CellTopology cellTopo2)
 The composite cell topology generated as the tensor product of the specified component cell topologies. More...
 

Private Types

using Subcell = std::pair< unsigned, unsigned >
 
using SubcellPair = std::pair< Subcell, Subcell >
 

Private Attributes

shards::CellTopology cellTopo1_
 
shards::CellTopology cellTopo2_
 
shards::CellTopology compositeCellTopo_
 
std::map< SubcellPair, Subcell > subcellMap_
 

Detailed Description

For two cell topologies whose tensor product is a third, this class establishes a mapping from subcell pairs in the component topologies to the tensor product topology.

This is used in the construction of tensor-product bases;

See Also
Intrepid2::TensorBasis.

This establishes the mapping from component topologies to an existing shards CellTopology, which might not have a "tensor numbering" of subcells (the shards quadrilateral is one example: vertices are numbered counter-clockwise rather than as the tensor product of two line topologies).

Definition at line 70 of file Intrepid2_TensorTopologyMap.hpp.

Constructor & Destructor Documentation

Intrepid2::TensorTopologyMap::TensorTopologyMap ( shards::CellTopology  cellTopo1,
shards::CellTopology  cellTopo2,
shards::CellTopology  compositeCellTopo,
std::vector< std::pair< unsigned, unsigned > >  nodePairs = std::vector< std::pair<unsigned,unsigned> >() 
)
inline

Constructor.

Parameters
[in]cellTopo1- the first component cell topology
[in]cellTopo2- the second component cell topology
[in]compositeCellTopo- the composite cell topology
[in]nodePairs- ordered list of node pairs that correspond to the nodes in compositeCellTopo

If nodePairs is empty, then TensorTopologyMap will assign a default mapping. Default mappings are provided for the relevant lowest-order (linear) shards topologies in up to three dimensions.

If nodePairs is not empty, then the pair (n1,n2) in position tn indicates a correspondence between the tnth node in compositeCellTopo and node n1 in cellTopo1 and node n2 in cellTopo2.

The higher-dimensional subcell mappings are inferred from the node map.

Definition at line 94 of file Intrepid2_TensorTopologyMap.hpp.

References defaultNodePairs().

Member Function Documentation

static shards::CellTopology Intrepid2::TensorTopologyMap::compositeCellTopology ( shards::CellTopology  cellTopo1,
shards::CellTopology  cellTopo2 
)
inlinestatic

The composite cell topology generated as the tensor product of the specified component cell topologies.

Parameters
cellTopo1[in] - The first component cell topology.
cellTopo2[in] - The second component cell topology.
Returns
The composite cell topology.

Definition at line 335 of file Intrepid2_TensorTopologyMap.hpp.

static std::vector< std::pair<unsigned,unsigned> > Intrepid2::TensorTopologyMap::defaultNodePairs ( shards::CellTopology  cellTopo1,
shards::CellTopology  cellTopo2,
shards::CellTopology  compositeCellTopo 
)
inlinestatic

Default node pairs corresponding to the provided component and composite cell topologies.

Parameters
cellTopo1[in] - the first component cell topology
cellTopo2[in] - the second component cell topology
compositeCellTopo[in] - the composite cell topology
Returns
ordered list of node pairs that correspond to the nodes in compositeCellTopo

This method determines a suitable mapping from the component cell topologies to the composite cell topology; supported composite topologies are the lowest-order (linear) shards topologies in up to three dimensions, and any pair of component cell topologies that generate those composite topologies. For example, the hexahedron could be generated from line x quad, quad x line, node x hexahedron, hexahedron x node.

Definition at line 297 of file Intrepid2_TensorTopologyMap.hpp.

Referenced by TensorTopologyMap().

unsigned Intrepid2::TensorTopologyMap::getCompositeSubcellOrdinal ( unsigned  subcell1Dim,
unsigned  subcell1Ordinal,
unsigned  subcell2Dim,
unsigned  subcell2Ordinal 
)
inline

Map from component subcell ordinals to the corresponding composite subcell ordinal.

Parameters
subcell1Dim[in] - spatial dimension of the subcell in cellTopo1
subcell1Ordinal[in] - ordinal of the subcell in cellTopo1
subcell2Dim[in] - spatial dimension of the subcell in cellTopo2
subcell2Ordinal[in] - ordinal of the subcell in cellTopo2
Returns
the subcell ordinal of the corresponding subcell in the composite cell topology.

The dimension of the composite subcell is subcell1Dim + subcell2Dim.

Definition at line 214 of file Intrepid2_TensorTopologyMap.hpp.

Referenced by Intrepid2::Basis_TensorBasis< HVOL_LINE, HGRAD_LINE >::Basis_TensorBasis().

static std::vector< std::vector<int> > Intrepid2::TensorTopologyMap::referenceCellGeometry ( shards::CellTopology  cellTopo)
inlinestatic

A topological representation of the vertex geometries corresponding to a cell topology.

Parameters
cellTopo[in] - the cell topology for which the geometry is requested.
Returns
a vector, whose entries correspond to vertices; each entry is an integer vector of length corresponding to the spatial dimension.

This method is used internally to TensorTopologyMap to determine default node mappings from component cell topologies to the composite cell topology.

TensorTopologyMap is agnostic about translations and scaling of the reference cell. This method gives the cell coordinates as integers, to emphasize that these are not coordinates in reference space, but rather a representation of the geometry concerned with x/y/z orientation but little else.

Definition at line 236 of file Intrepid2_TensorTopologyMap.hpp.


The documentation for this class was generated from the following file: