A 2D element map for a curved quadrilateral. More...

#include <elementMaps.hh>

Inheritance diagram for concepts::BlendingQuad2d:
concepts::MappingQuad2d concepts::Map2d concepts::OutputOperator

Public Member Functions

 BlendingQuad2d (const BlendingQuad2d &v)
 Copy constructor. More...
 
 BlendingQuad2d (const MappingEdge2d *edgemap0, const MappingEdge2d *edgemap1, const MappingEdge2d *edgemap2, const MappingEdge2d *edgemap3=0, const Real2d *vtx0=0, const Real2d *vtx1=0, const Real2d *vtx2=0, const Real2d *vtx3=0)
 Constructor. More...
 
virtual BlendingQuad2dclone () const
 Returns a copy of the map. More...
 
virtual MappingEdge2dedge (const uint edge) const
 Returns a copy of the edge mapping of one edge. More...
 
virtual MapReal2d hessian (uint i, const Real x, const Real y) const
 Returns the Hessian in a 2D linear map. More...
 
virtual MapReal2d inverseLaplace (const Real x, const Real y) const
 NEW: More...
 
virtual MapReal2d jacobian (const Real x, const Real y) const
 Returns the Jacobian in a 2D linear map. More...
 
virtual Real jacobianDeterminant (const Real x, const Real y) const
 Returns determinant of the Jacobian. More...
 
virtual MapReal2d jacobianInverse (const Real x, const Real y) const
 Returns the inverse of the Jacobian in a 2D linear map. More...
 
virtual Real lineElement (const Real x, const uint edge) const
 Returns factor of differential element integrating over an edge. More...
 
virtual Real2d operator() (Real x, Real y) const
 Returns a point in 2D mapped from the unit square [0,1]2 onto the element in the original mesh. More...
 
virtual MappingQuad2dpart (const Real2d x0, const Real2d y0) const
 Returns a new object of an element map for a rectangular part of the reference cell defined by the two points. More...
 
virtual bool straight () const
 
 ~BlendingQuad2d ()
 

Protected Member Functions

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

Private Member Functions

void testJacobian_ () const
 Tests if the jacobian is positive. More...
 

Private Attributes

const MappingEdge2dedgemap_ [4]
 Map of the edges. More...
 
Real2d vtx_ [4]
 Vector that contains the vertices. More...
 

Detailed Description

A 2D element map for a curved quadrilateral.

The mapping is defined by the Linear Blending Function Method (proposed by Gordon and Hall, 1971). Therefor the mapping of the edges has to be given.

Test:
test::TestBlending2D
Author
, Kersten Schmidt, 2004

Definition at line 872 of file elementMaps.hh.

Constructor & Destructor Documentation

◆ BlendingQuad2d() [1/2]

concepts::BlendingQuad2d::BlendingQuad2d ( const MappingEdge2d edgemap0,
const MappingEdge2d edgemap1,
const MappingEdge2d edgemap2,
const MappingEdge2d edgemap3 = 0,
const Real2d vtx0 = 0,
const Real2d vtx1 = 0,
const Real2d vtx2 = 0,
const Real2d vtx3 = 0 
)

Constructor.

Pointers to edge mappings and vertex coordinates can be given. There has to be given at least

  • two opposite edges
  • two adjacent edges and a the other vertex
  • an edge and the two other vertices
  • four vertices

If more edges or vertices are given, the particular coordinates of the vertices has to match.

The edges or vertices have to be given counter clockwise. The first vertex of the edgemap0 is the first vertex of the quad, the second in the edge map the second ...

The direction of an edge has to be changed by its method inverse(), e.g.

std::unique_ptr<MappingEdge2d> invEdge = edge.inverse();
BlendingQuad2d quad(invEdge, ...);

The class holds own copies of the given edge mappings and coordinates of the vertices.

First edge is $\xi_2=0$, where $\xi_2$ is the second local coordinate.

◆ BlendingQuad2d() [2/2]

concepts::BlendingQuad2d::BlendingQuad2d ( const BlendingQuad2d v)

Copy constructor.

◆ ~BlendingQuad2d()

concepts::BlendingQuad2d::~BlendingQuad2d ( )

Member Function Documentation

◆ clone()

virtual BlendingQuad2d* concepts::BlendingQuad2d::clone ( ) const
inlinevirtual

Returns a copy of the map.

Implements concepts::MappingQuad2d.

Definition at line 920 of file elementMaps.hh.

◆ edge()

virtual MappingEdge2d* concepts::BlendingQuad2d::edge ( const uint  edge) const
inlinevirtual

Returns a copy of the edge mapping of one edge.

The edge mappings are directed counter-clockwise, i.e. for the lower edge from the left lower vertex to the right lower one.

Parameters
edgenumber of edge, i.e. 0 - lower, 1 - right, 2 - upper, 3 - left

Reimplemented from concepts::MappingQuad2d.

Definition at line 916 of file elementMaps.hh.

◆ hessian()

virtual MapReal2d concepts::BlendingQuad2d::hessian ( uint  i,
const Real  x,
const Real  y 
) const
virtual

Returns the Hessian in a 2D linear map.

Parameters
icoordinate (0 = x, 1 = y)

Implements concepts::MappingQuad2d.

◆ info()

virtual std::ostream& concepts::BlendingQuad2d::info ( std::ostream &  os) const
protectedvirtual

Returns information in an output stream.

Reimplemented from concepts::MappingQuad2d.

◆ inverseLaplace()

virtual MapReal2d concepts::MappingQuad2d::inverseLaplace ( const Real  x,
const Real  y 
) const
virtualinherited

NEW:

Returns the 2nd partial derivatives of the inverse Mapping that maps from a mappingQuad2D to the reference Quad. This inverse is called $\phi^{-1}=(\phi_1^{-1} , \phi_2^{-1})$. The function returns a 2x2 matrix of the following form:

dxdx phi_1^{-1} dydy phi_1^{-1}

dxdx phi_2^{-1} dydy phi_2^{-1}

◆ jacobian()

virtual MapReal2d concepts::BlendingQuad2d::jacobian ( const Real  x,
const Real  y 
) const
virtual

Returns the Jacobian in a 2D linear map.

Implements concepts::MappingQuad2d.

◆ jacobianDeterminant()

virtual Real concepts::MappingQuad2d::jacobianDeterminant ( const Real  x,
const Real  y 
) const
virtualinherited

Returns determinant of the Jacobian.

◆ jacobianInverse()

virtual MapReal2d concepts::MappingQuad2d::jacobianInverse ( const Real  x,
const Real  y 
) const
virtualinherited

Returns the inverse of the Jacobian in a 2D linear map.

◆ lineElement()

virtual Real concepts::BlendingQuad2d::lineElement ( const Real  x,
const uint  edge 
) const
virtual

Returns factor of differential element integrating over an edge.

The factor is either $\sqrt{J_{11}^2+J_{21}^2}$ or $\sqrt{J_{12}^2+J_{22}^2}$.

The routine exists explicitly because it is more efficient to implement it than to use jacobian itself, i.e. for affine elements the line element is constant.

Parameters
xlocal variable on edge (in [0,1]), stands for $\xi_1$ or $\xi_2$
edgenumber of edge, i.e. 0: $\xi_2 = 0$, 1: $\xi_1 = 1$, 2: $\xi_2 = 1$, 3: $\xi_1 = 0$

Reimplemented from concepts::MappingQuad2d.

◆ operator()()

virtual Real2d concepts::BlendingQuad2d::operator() ( Real  x,
Real  y 
) const
virtual

Returns a point in 2D mapped from the unit square [0,1]2 onto the element in the original mesh.

Returns
$F_K(x,y)$

Implements concepts::MappingQuad2d.

◆ part()

virtual MappingQuad2d* concepts::MappingQuad2d::part ( const Real2d  x0,
const Real2d  y0 
) const
virtualinherited

Returns a new object of an element map for a rectangular part of the reference cell defined by the two points.

Reimplemented in concepts::VertexQuad2d.

◆ straight()

virtual bool concepts::Map2d::straight ( ) const
inlinevirtualinherited

Reimplemented in concepts::VertexQuad2d, and concepts::VertexTriangle2d.

Definition at line 37 of file elementMaps.hh.

◆ testJacobian_()

void concepts::BlendingQuad2d::testJacobian_ ( ) const
private

Tests if the jacobian is positive.

Member Data Documentation

◆ edgemap_

const MappingEdge2d* concepts::BlendingQuad2d::edgemap_[4]
private

Map of the edges.

Definition at line 927 of file elementMaps.hh.

◆ vtx_

Real2d concepts::BlendingQuad2d::vtx_[4]
private

Vector that contains the vertices.

Definition at line 925 of file elementMaps.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