SpECTRE  v2024.03.19
ElementMap< Dim, TargetFrame > Class Template Reference

The CoordinateMap for the Element from the Logical frame to the TargetFrame More...

#include <ElementMap.hpp>

Public Types

using source_frame = Frame::ElementLogical
 
using target_frame = TargetFrame
 

Public Member Functions

 ElementMap (ElementId< Dim > element_id, std::unique_ptr< domain::CoordinateMapBase< Frame::BlockLogical, TargetFrame, Dim > > block_map)
 
 ElementMap (ElementId< Dim > element_id, const Block< Dim > &block)
 Construct from an element_id within the block. The (affine) ElementLogical to BlockLogical map is determined by the element_id. The BlockLogical to TargetFrame map is determined by the block: More...
 
const domain::CoordinateMapBase< Frame::BlockLogical, TargetFrame, Dim > & block_map () const
 
const ElementId< Dim > & element_id () const
 
template<typename T >
tnsr::I< T, Dim, TargetFrame > operator() (const tnsr::I< T, Dim, Frame::ElementLogical > &source_point, const double time=std::numeric_limits< double >::signaling_NaN(), const domain::FunctionsOfTimeMap &functions_of_time={}) const
 
template<typename T >
tnsr::I< T, Dim, Frame::ElementLogicalinverse (tnsr::I< T, Dim, TargetFrame > target_point, const double time=std::numeric_limits< double >::signaling_NaN(), const domain::FunctionsOfTimeMap &functions_of_time={}) const
 
template<typename T >
InverseJacobian< T, Dim, Frame::ElementLogical, TargetFrame > inv_jacobian (const tnsr::I< T, Dim, Frame::ElementLogical > &source_point, const double time=std::numeric_limits< double >::signaling_NaN(), const domain::FunctionsOfTimeMap &functions_of_time={}) const
 
template<typename T >
Jacobian< T, Dim, Frame::ElementLogical, TargetFrame > jacobian (const tnsr::I< T, Dim, Frame::ElementLogical > &source_point, const double time=std::numeric_limits< double >::signaling_NaN(), const domain::FunctionsOfTimeMap &functions_of_time={}) const
 
void pup (PUP::er &p)
 

Static Public Attributes

static constexpr size_t dim = Dim
 

Detailed Description

template<size_t Dim, typename TargetFrame>
class ElementMap< Dim, TargetFrame >

The CoordinateMap for the Element from the Logical frame to the TargetFrame

An ElementMap takes a CoordinateMap for a Block and an ElementId as input, and then "prepends" the correct affine map to the CoordinateMap so that the map corresponds to the coordinate map for the Element rather than the Block. This allows DomainCreators to only specify the maps for the Blocks without worrying about how the domain may be decomposed beyond that.

Constructor & Destructor Documentation

◆ ElementMap()

template<size_t Dim, typename TargetFrame >
ElementMap< Dim, TargetFrame >::ElementMap ( ElementId< Dim >  element_id,
const Block< Dim > &  block 
)

Construct from an element_id within the block. The (affine) ElementLogical to BlockLogical map is determined by the element_id. The BlockLogical to TargetFrame map is determined by the block:

  • If the block is time-independent: the block.stationary_map() is used.
  • If the block is time-dependent: The block.moving_mesh_*_map() maps are used. Which maps are used depends on the TargetFrame.

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