Panzer  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
panzer::Intrepid2FieldPattern Class Reference

#include <Panzer_IntrepidFieldPattern.hpp>

Inheritance diagram for panzer::Intrepid2FieldPattern:
Inheritance graph
[legend]

Public Member Functions

 Intrepid2FieldPattern (const Teuchos::RCP< Intrepid2::Basis< PHX::Device, double, double > > &intrepidBasis)
 
virtual int getSubcellCount (int dim) const
 
virtual const std::vector< int > & getSubcellIndices (int dim, int cellIndex) const
 
virtual int getDimension () const
 
virtual shards::CellTopology getCellTopology () const
 
virtual void getSubcellClosureIndices (int dim, int cellIndex, std::vector< int > &indices) const
 
bool supportsInterpolatoryCoordinates () const
 Does this field pattern support interpolatory coordinates? More...
 
void getInterpolatoryCoordinates (Kokkos::DynRankView< double, PHX::Device > &coords) const
 
void getInterpolatoryCoordinates (const Kokkos::DynRankView< double, PHX::Device > &cellNodes, Kokkos::DynRankView< double, PHX::Device > &coords, Teuchos::RCP< const shards::CellTopology > meshCellTopology=Teuchos::null) const
 
Teuchos::RCP< Intrepid2::Basis
< PHX::Device, double, double > > 
getIntrepidBasis () const
 Returns the underlying Intrepid2::Basis object. More...
 
- Public Member Functions inherited from panzer::FieldPattern
virtual ~FieldPattern ()=0
 Do nothing destructor. More...
 
virtual int numberIds () const
 
virtual bool sameGeometry (const FieldPattern &fp) const
 
virtual bool consistentSubcells () const
 
virtual void print (std::ostream &os) const
 
virtual bool equals (const FieldPattern &fp) const
 

Static Public Member Functions

static void buildSubcellClosure (const shards::CellTopology &cellTopo, unsigned dim, unsigned subCell, std::set< std::pair< unsigned, unsigned > > &closure)
 
static void findContainedSubcells (const shards::CellTopology &cellTopo, unsigned dim, const std::vector< unsigned > &nodes, std::set< std::pair< unsigned, unsigned > > &subCells)
 
static void getSubcellNodes (const shards::CellTopology &cellTopo, unsigned dim, unsigned subCell, std::vector< unsigned > &nodes)
 

Protected Attributes

Teuchos::RCP< Intrepid2::Basis
< PHX::Device, double, double > > 
intrepidBasis_
 
std::vector< std::vector
< std::vector< int > > > 
subcellIndicies_
 
std::vector< int > empty_
 

Detailed Description

This is a derived class that specializes based on a single intrepid basis function.

Definition at line 30 of file Panzer_IntrepidFieldPattern.hpp.

Constructor & Destructor Documentation

panzer::Intrepid2FieldPattern::Intrepid2FieldPattern ( const Teuchos::RCP< Intrepid2::Basis< PHX::Device, double, double > > &  intrepidBasis)

Definition at line 20 of file Panzer_IntrepidFieldPattern.cpp.

Member Function Documentation

int panzer::Intrepid2FieldPattern::getSubcellCount ( int  dim) const
virtual

How many sub cells of a particular dimension are there? For instance a "quad" element as four sub cells of dimension 0 (node type),four sub cells of dimension one (edge type), and one sub cell of dimension two (area type).

Parameters
[in]dimDimension of the sub cell of interest
Returns
Number of sub cells of dimension dim

Implements panzer::FieldPattern.

Definition at line 49 of file Panzer_IntrepidFieldPattern.cpp.

const std::vector< int > & panzer::Intrepid2FieldPattern::getSubcellIndices ( int  dim,
int  cellIndex 
) const
virtual

Get the local indices associated with a particular sub cell. The sub cell is specified through its dimension and cell index. A vector is returned that gives the indices.

Parameters
[in]dimDimension of the sub cell of interest
[in]cellIndexIndex of the sub cell (must be lest than getSubcellCount(dim) and greater than or equal to 0.
Returns
A vector of indices for the specified sub cell.

Implements panzer::FieldPattern.

Definition at line 56 of file Panzer_IntrepidFieldPattern.cpp.

int panzer::Intrepid2FieldPattern::getDimension ( ) const
virtual

What is the dimension of this pattern. For instance a "quad" element is two dimensional. This is a purely geometric quantity.

Implements panzer::FieldPattern.

Definition at line 95 of file Panzer_IntrepidFieldPattern.cpp.

shards::CellTopology panzer::Intrepid2FieldPattern::getCellTopology ( ) const
virtual

Get the cell topology associated with this field pattern.

Implements panzer::FieldPattern.

Definition at line 102 of file Panzer_IntrepidFieldPattern.cpp.

void panzer::Intrepid2FieldPattern::getSubcellClosureIndices ( int  dim,
int  cellIndex,
std::vector< int > &  indices 
) const
virtual

Get the set of indices that are on the sub cell. The ``closure'' means that this set includes indices of all the child sub cells as well.

Parameters
[in]dimDimension of the sub cell of interest
[in]cellIndexIndex of the sub cell (must be lest than getSubcellCount(dim) and greater than or equal to 0.
[out]indicesVector, to be overwritten, containing the closure indices on return.

Implements panzer::FieldPattern.

Definition at line 67 of file Panzer_IntrepidFieldPattern.cpp.

void panzer::Intrepid2FieldPattern::buildSubcellClosure ( const shards::CellTopology &  cellTopo,
unsigned  dim,
unsigned  subCell,
std::set< std::pair< unsigned, unsigned > > &  closure 
)
static

For a given sub cell find the set of sub cells at all dimensions contained internally. This is inclusive, so that (dim,subCell) will be in the set.

Parameters
[in]cellTopoParent cell topology being used.
[in]dimDimension of sub cell
[in]subCellOrdinal of sub cell at specified dimension
[in,out]closureSet of sub cells associated with specified sub cell.
Note
Sub cell dimension and ordinals are inserted into closure. Previous information will not be removed.

Definition at line 157 of file Panzer_IntrepidFieldPattern.cpp.

void panzer::Intrepid2FieldPattern::findContainedSubcells ( const shards::CellTopology &  cellTopo,
unsigned  dim,
const std::vector< unsigned > &  nodes,
std::set< std::pair< unsigned, unsigned > > &  subCells 
)
static

Search a cell topology for sub cells containing a specfic set of nodes. This is a downward search (inclusive) from a user specified dimension.

Parameters
[in]cellTopoParent cell topology being used.
[in]dimDimension of sub cell
[in]nodesNodes forming the super set
[in,out]subCellsSpecific sub cells containing the nodes.
Note
Sub cell dimension and ordinals are inserted into subCells. Previous information will not be removed.

Definition at line 130 of file Panzer_IntrepidFieldPattern.cpp.

void panzer::Intrepid2FieldPattern::getSubcellNodes ( const shards::CellTopology &  cellTopo,
unsigned  dim,
unsigned  subCell,
std::vector< unsigned > &  nodes 
)
static

Get the set of nodes making up the user specified sub cells.

Parameters
[in]cellTopoParent cell topology being used.
[in]dimDimension of sub cell
[in]subCellOrdinal of sub cell at specified dimension
[in,out]nodesNodes associated with sub cell.

Definition at line 111 of file Panzer_IntrepidFieldPattern.cpp.

bool panzer::Intrepid2FieldPattern::supportsInterpolatoryCoordinates ( ) const

Does this field pattern support interpolatory coordinates?

If this method returns true then getInterpolatoryCoordinates will succeed, otherwise it will throw.

Returns
True if this pattern supports interpolatory coordinates.

Definition at line 187 of file Panzer_IntrepidFieldPattern.cpp.

void panzer::Intrepid2FieldPattern::getInterpolatoryCoordinates ( Kokkos::DynRankView< double, PHX::Device > &  coords) const

Get the local coordinates for this field. This is independent of element locations.

Parameters
[in,out]coordsCoordinates associated with this field type.

Definition at line 200 of file Panzer_IntrepidFieldPattern.cpp.

void panzer::Intrepid2FieldPattern::getInterpolatoryCoordinates ( const Kokkos::DynRankView< double, PHX::Device > &  cellNodes,
Kokkos::DynRankView< double, PHX::Device > &  coords,
Teuchos::RCP< const shards::CellTopology >  meshCellTopology = Teuchos::null 
) const

Get the local coordinates for this field.

Parameters
[in]cellNodesCoordinates of the cell nodes.
[in,out]coordsCoordinates associated with this field type.
[in]meshCellTopologyMesh cell topology
Note
If no cell topology is supplied, it will be inferred from the intrepid basis. This will result in incorrect behavior for second order or higher meshes.

Get the local coordinates for this field. This is independent of element locations.

Parameters
[in,out]coordsCoordinates associated with this field type.

Definition at line 214 of file Panzer_IntrepidFieldPattern.cpp.

Teuchos::RCP< Intrepid2::Basis< PHX::Device, double, double > > panzer::Intrepid2FieldPattern::getIntrepidBasis ( ) const

Returns the underlying Intrepid2::Basis object.

Definition at line 243 of file Panzer_IntrepidFieldPattern.cpp.

Member Data Documentation

Teuchos::RCP< Intrepid2::Basis<PHX::Device,double,double> > panzer::Intrepid2FieldPattern::intrepidBasis_
protected

Definition at line 115 of file Panzer_IntrepidFieldPattern.hpp.

std::vector<std::vector<std::vector<int> > > panzer::Intrepid2FieldPattern::subcellIndicies_
mutableprotected

Definition at line 118 of file Panzer_IntrepidFieldPattern.hpp.

std::vector<int> panzer::Intrepid2FieldPattern::empty_
protected

Definition at line 119 of file Panzer_IntrepidFieldPattern.hpp.


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