A 3D hexahedral element map for interpolation between arbitrary curved boundary quadrilateral elements according to the Linear Blending Function Method (Gordon and Hall, 1971). More...

#include <elementMaps3D.hh>

Inheritance diagram for concepts::BlendingHexahedron3d:
concepts::MappingHexahedron3d concepts::Map3d concepts::OutputOperator

Public Member Functions

 BlendingHexahedron3d (const BlendingHexahedron3d &v)
 
 BlendingHexahedron3d (const MappingQuad3d *quadmap0, const MappingQuad3d *quadmap1, const MappingQuad3d *quadmap2, const MappingQuad3d *quadmap3, const MappingQuad3d *quadmap4, const MappingQuad3d *quadmap5, const Hexahedron &hex)
 
 BlendingHexahedron3d (const Sequence< const MappingQuad3d * > quadmap, const Hexahedron &hex)
 Constructor. More...
 
BlendingHexahedron3dclone () const override
 Returns a copy of the map. More...
 
MappingEdge3dedge (const uint edge) const
 
MappingQuad3d * face (const uint face) const override
 Returns the mapping of the given face. More...
 
MapReal3d hessian (uint i, const Real x, const Real y, const Real z) const override
 Returns the Hessian, the integer indicates which 3x3 submap of the 3x3xi (i=1..3) tensor is required. More...
 
MapReal3d jacobian (const Real x, const Real y, const Real z) const override
 Returns the jacobian of the element map. More...
 
virtual Real jacobianDeterminant (const Real x, const Real y, const Real z) const
 Returns the determinant of the Jacobian. More...
 
virtual MapReal3d jacobianInverse (const Real x, const Real y, const Real z) const
 Computes the inverse of the jacobian: More...
 
Real3d operator() (Real x, Real y, Real z) const override
 Returns a point in 3D mapped from the unit cube [0,1]3 onto the element in physical 3d space. More...
 
MappingHexahedron3dpart (const Real3d xi0, const Real3d xi1) const override
 
 ~BlendingHexahedron3d () override
 

Protected Member Functions

std::ostream & info (std::ostream &os) const override
 Returns information in an output stream. More...
 

Private Member Functions

void construct_ (const std::array< const MappingQuad3d *, 6 > &quadmap, const Hexahedron &hex)
 

Private Attributes

std::array< std::unique_ptr< MappingEdge3d >, 12 > edgemap_
 
std::array< std::unique_ptr< MappingQuad3d >, 6 > quadmap_
 
std::array< Real3d, 8 > vtx_
 

Detailed Description

A 3D hexahedral element map for interpolation between arbitrary curved boundary quadrilateral elements according to the Linear Blending Function Method (Gordon and Hall, 1971).

Element parametrization:

\[ F_K (s,t,u) = \Pi_0 \oplus \Pi_1 \oplus \Pi_2 [F_K] (s,t,u), \]

where $ \Pi_0 \oplus \Pi_1 \oplus \Pi_2 $ denotes a boolean operator sum of coordinate interpolation operators, e.g.

\[ \Pi_1 [f](s,t,u) = (1-t) f(s,0,u) + t f(s,1,u), \]

See also
BlendingQuad3d for a detailed explanation
Author
, Lukas Drescher, 2014
Todo:

move invertOrientation documentation to MappingQuad3d

homogenize construction with MappingQuad3d-iterators template <typename MappingQuad3dIterator> BlendingHexahedron3d( MappingQuad3dIterator begin, MappingQuad3dIterator end, const Hexahedron& hex);

Definition at line 242 of file elementMaps3D.hh.

Constructor & Destructor Documentation

◆ BlendingHexahedron3d() [1/3]

concepts::BlendingHexahedron3d::BlendingHexahedron3d ( const Sequence< const MappingQuad3d * >  quadmap,
const Hexahedron hex 
)

Constructor.

Every element of a given sequence of boundary quadrilateral mappings is cloned and reoriented from the quadrilateral orientations in the topological hexahedron to those induced by the coordinate directions in the hexahedral reference domain. IMPORTANT: The orientation of the quadrilateral element mappings in the input sequence must be aligned with the corresponding topological quadrilaterals. That is: The topological complex must be consistent with the geometric complex.

Parameters
quadmapboundary element mappings forming the images of

\[ ( [0,1] \times [0,1] \times \{ 0 \}, \quad [0,1] \times \{ 0 \} \times [0,1], \quad \{ 1 \} \times [0,1] \times [0,1], \quad [0,1] \times \{ 1 \} \times [0,1], \quad \{ 0 \} \times [0,1] \times [0,1], \quad [0,1] \times [0,1] \times \{ 1 \} ) \]

of the element mapping to be constructed consistent with the orientation flags in the parameter hex
hextopological object corresponding to the element mapping to be constructed. Orientations in topological cell complex must be consistent with passed boundary element mappings in quadmap

◆ BlendingHexahedron3d() [2/3]

concepts::BlendingHexahedron3d::BlendingHexahedron3d ( const MappingQuad3d *  quadmap0,
const MappingQuad3d *  quadmap1,
const MappingQuad3d *  quadmap2,
const MappingQuad3d *  quadmap3,
const MappingQuad3d *  quadmap4,
const MappingQuad3d *  quadmap5,
const Hexahedron hex 
)

◆ BlendingHexahedron3d() [3/3]

concepts::BlendingHexahedron3d::BlendingHexahedron3d ( const BlendingHexahedron3d v)

◆ ~BlendingHexahedron3d()

concepts::BlendingHexahedron3d::~BlendingHexahedron3d ( )
override

Member Function Documentation

◆ clone()

BlendingHexahedron3d* concepts::BlendingHexahedron3d::clone ( ) const
inlineoverridevirtual

Returns a copy of the map.

Implements concepts::MappingHexahedron3d.

Definition at line 276 of file elementMaps3D.hh.

◆ construct_()

void concepts::BlendingHexahedron3d::construct_ ( const std::array< const MappingQuad3d *, 6 > &  quadmap,
const Hexahedron hex 
)
private

◆ edge()

MappingEdge3d* concepts::BlendingHexahedron3d::edge ( const uint  edge) const

◆ face()

MappingQuad3d* concepts::BlendingHexahedron3d::face ( const uint  face) const
overridevirtual

Returns the mapping of the given face.

Implements concepts::MappingHexahedron3d.

◆ hessian()

MapReal3d concepts::BlendingHexahedron3d::hessian ( uint  i,
const Real  x,
const Real  y,
const Real  z 
) const
overridevirtual

Returns the Hessian, the integer indicates which 3x3 submap of the 3x3xi (i=1..3) tensor is required.

Implements concepts::MappingHexahedron3d.

◆ info()

std::ostream& concepts::BlendingHexahedron3d::info ( std::ostream &  os) const
overrideprotectedvirtual

Returns information in an output stream.

Implements concepts::MappingHexahedron3d.

◆ jacobian()

MapReal3d concepts::BlendingHexahedron3d::jacobian ( const Real  x,
const Real  y,
const Real  z 
) const
overridevirtual

Returns the jacobian of the element map.

\[ \left(\frac{\partial F_K}{\partial\vec\xi}\right) = \left\{\frac{\partial x^i}{\partial \xi_j}\right\}_{i,j=1}^3 \]

Implements concepts::MappingHexahedron3d.

◆ jacobianDeterminant()

virtual Real concepts::MappingHexahedron3d::jacobianDeterminant ( const Real  x,
const Real  y,
const Real  z 
) const
inlinevirtualinherited

Returns the determinant of the Jacobian.

Reimplemented in concepts::MapHexahedron3d.

Definition at line 200 of file elementMaps3D.hh.

◆ jacobianInverse()

virtual MapReal3d concepts::MappingHexahedron3d::jacobianInverse ( const Real  x,
const Real  y,
const Real  z 
) const
inlinevirtualinherited

Computes the inverse of the jacobian:

\[ \left(\frac{\partial F_K}{\partial\vec\xi}\right)^{-1} = \left\{\frac{\partial \xi_i}{\partial x^j}\right\}_{i,j=1}^3 \]

Reimplemented in concepts::MapHexahedron3d.

Definition at line 196 of file elementMaps3D.hh.

◆ operator()()

Real3d concepts::BlendingHexahedron3d::operator() ( Real  x,
Real  y,
Real  z 
) const
overridevirtual

Returns a point in 3D mapped from the unit cube [0,1]3 onto the element in physical 3d space.

Returns
$F_K(x,y,z)$

Implements concepts::MappingHexahedron3d.

◆ part()

MappingHexahedron3d* concepts::BlendingHexahedron3d::part ( const Real3d  xi0,
const Real3d  xi1 
) const
overridevirtual
Todo:
part supposed to be implemented for parent class

Implements concepts::MappingHexahedron3d.

Member Data Documentation

◆ edgemap_

std::array<std::unique_ptr<MappingEdge3d>,12> concepts::BlendingHexahedron3d::edgemap_
private

Definition at line 291 of file elementMaps3D.hh.

◆ quadmap_

std::array<std::unique_ptr<MappingQuad3d>,6> concepts::BlendingHexahedron3d::quadmap_
private

Definition at line 289 of file elementMaps3D.hh.

◆ vtx_

std::array<Real3d,8> concepts::BlendingHexahedron3d::vtx_
private

Definition at line 293 of file elementMaps3D.hh.


The documentation for this class was generated from the following file:
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich