Flow123d  JS_before_hm-1713-g943b6bc16
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Private Member Functions | Static Private Member Functions | Static Private Attributes | List of all members
RefElement< dim > Class Template Reference

#include <ref_element.hh>

Collaboration diagram for RefElement< dim >:
Collaboration graph
[legend]

Public Types

typedef arma::vec::fixed< dim > LocalPoint
 
typedef Armor::ArmaVec< double, dim+1 > BaryPoint
 
typedef Armor::ArmaVec< double, dim > FaceBaryPoint
 
typedef std::vector< BaryPointBarycentricUnitVec
 

Public Member Functions

 DECLARE_EXCEPTION (ExcInvalidPermutation,<< "Side permutation not found.\n")
 
const std::vector< std::vector< unsigned int > > side_permutations
 
const std::vector< std::vector< unsigned int > > side_permutations
 
const std::vector< std::vector< unsigned int > > side_permutations
 
const std::vector< std::vector< unsigned int > > side_permutations
 
const std::vector< std::vector< std::vector< unsigned int > > > nodes_of_subelements
 
const std::vector< std::vector< std::vector< unsigned int > > > nodes_of_subelements
 
const std::vector< std::vector< std::vector< unsigned int > > > nodes_of_subelements
 
const std::vector< std::vector< std::vector< unsigned int > > > nodes_of_subelements
 
vec::fixed< 1 > normal_vector (unsigned int sid)
 
vec::fixed< 2 > normal_vector (unsigned int sid)
 
vec::fixed< 3 > normal_vector (unsigned int sid)
 
auto clip (const BaryPoint &barycentric) -> BaryPoint
 
double side_measure (unsigned int sid)
 
double side_measure (unsigned int sid)
 
double side_measure (unsigned int sid)
 
unsigned int line_between_faces (unsigned int f1, unsigned int f2)
 
const std::vector< std::vector< unsigned int > > side_permutations
 
const std::vector< std::vector< unsigned int > > side_permutations
 
const std::vector< std::vector< unsigned int > > side_permutations
 
const std::vector< std::vector< unsigned int > > side_permutations
 
const std::vector< std::vector< std::vector< unsigned int > > > nodes_of_subelements
 
const std::vector< std::vector< std::vector< unsigned int > > > nodes_of_subelements
 
const std::vector< std::vector< std::vector< unsigned int > > > nodes_of_subelements
 
const std::vector< std::vector< std::vector< unsigned int > > > nodes_of_subelements
 
template<unsigned int subdim>
auto interpolate (arma::vec::fixed< subdim+1 > coord, int sub_simplex_idx) -> BaryPoint
 
unsigned int count ()
 
unsigned int count ()
 
unsigned int count ()
 
unsigned int count ()
 
unsigned int count ()
 
unsigned int count ()
 
unsigned int count ()
 
unsigned int count ()
 
unsigned int count ()
 
unsigned int count ()
 
unsigned int count ()
 
unsigned int count ()
 
unsigned int count ()
 
unsigned int count ()
 
unsigned int count ()
 
unsigned int count ()
 
template<template< unsigned int OutDim, unsigned int InDim > class TInteraction, unsigned int OutDim, unsigned int InDim>
const IdxVector<(InDim >OutDim ? InDim+1 :dim-InDim) > interact (TInteraction< OutDim, InDim > interaction)
 

Static Public Member Functions

static LocalPoint node_coords (unsigned int nid)
 
static LocalPoint normal_vector (unsigned int sid)
 
static BaryPoint clip (const BaryPoint &barycentric)
 
static unsigned int normal_orientation (unsigned int sid)
 
static double side_measure (unsigned int sid)
 
static unsigned int oposite_node (unsigned int sid)
 
static unsigned int line_between_faces (unsigned int f1, unsigned int f2)
 
static unsigned int permutation_index (unsigned int p[n_nodes_per_side])
 
static BaryPoint local_to_bary (const LocalPoint &lp)
 Converts from local to barycentric coordinates. More...
 
static LocalPoint bary_to_local (const BaryPoint &bp)
 Converts from barycentric to local coordinates. More...
 
static BarycentricUnitVec make_bary_unit_vec ()
 
static FaceBaryPoint barycentric_on_face (const BaryPoint &barycentric, unsigned int i_face)
 
static CentersList centers_of_subelements (unsigned int sub_dim)
 
static std::pair< unsigned int, unsigned int > zeros_positions (const BaryPoint &barycentric, double tolerance=std::numeric_limits< double >::epsilon() *2)
 
template<unsigned int subdim>
static unsigned int topology_idx (unsigned int zeros_positions)
 
template<unsigned int subdim>
static unsigned int count ()
 
template<unsigned int subdim>
static arma::mat::fixed< dim+1, subdim+1 > bary_coords (unsigned int sid)
 
template<unsigned int subdim>
static BaryPoint interpolate (arma::vec::fixed< subdim+1 > coord, int sub_simplex_idx)
 
static BaryPoint line_barycentric_interpolation (BaryPoint first_coords, BaryPoint second_coords, double first_theta, double second_theta, double theta)
 
template<template< unsigned int OutDim, unsigned int InDim > class TInteraction, unsigned int OutDim, unsigned int InDim>
static const IdxVector<(InDim >OutDim ? InDim+1 :dim-InDim) > interact (TInteraction< OutDim, InDim > interaction)
 

Public Attributes

const typedef std::vector< LocalPoint > & CentersList
 

Static Public Attributes

static const unsigned int n_sides = dim + 1
 Number of sides. More...
 
static const unsigned int n_nodes = dim + 1
 Number of nodes. More...
 
static const unsigned int n_nodes_per_side = dim
 Number of nodes on one side. More...
 
static const unsigned int n_lines_per_node = dim
 Number of lines with one common node. More...
 
static const unsigned int n_nodes_per_line = 2
 Number of nodes in one line. More...
 
static const unsigned int n_sides_per_line = 2
 Number of sides with one common line. dim == 3. More...
 
static const unsigned int n_sides_per_node = dim
 Number of sides with one common line. More...
 
static const unsigned int n_lines_per_side = (unsigned int)((dim * (dim - 1)) / 2)
 Number of lines on boundary of one side. More...
 
static const unsigned int n_lines = (unsigned int)((dim * (dim + 1)) / 2)
 Number of lines, i.e. object of dimension dim-2 on the boundary of the reference element. More...
 
static const std::vector< std::vector< std::vector< unsigned int > > > nodes_of_subelements
 
static constexpr unsigned int n_side_permutations = (dim+1)*(2*dim*dim-5*dim+6)/6
 
static const std::vector< std::vector< unsigned int > > side_permutations
 

Private Member Functions

const std::vector< IdxVector< 2 > > line_nodes_
 
const std::vector< IdxVector< 2 > > line_nodes_
 
const std::vector< IdxVector< 2 > > line_nodes_
 
const std::vector< IdxVector< 1 > > node_lines_
 
const std::vector< IdxVector< 2 > > node_lines_
 
const std::vector< IdxVector< 3 > > node_lines_
 
const std::vector< IdxVector< 3 > > side_nodes_
 
const std::vector< IdxVector< 3 > > node_sides_
 
const std::vector< IdxVector< 2 > > line_sides_
 
const std::vector< IdxVector< 3 > > side_lines_
 
const IdxVector< 1 > topology_zeros_ []
 
const IdxVector< 2 > topology_zeros_ []
 
const IdxVector< 3 > topology_zeros_ []
 
const IdxVector< 6 > topology_zeros_ []
 
const IdxVector< 1 > topology_zeros_ []
 
const IdxVector< 2 > topology_zeros_ []
 
const IdxVector< 3 > topology_zeros_ []
 
const IdxVector< 6 > topology_zeros_ []
 
const std::vector< IdxVector< 2 > > line_nodes_
 
const std::vector< IdxVector< 2 > > line_nodes_
 
const std::vector< IdxVector< 2 > > line_nodes_
 
const std::vector< IdxVector< 1 > > node_lines_
 
const std::vector< IdxVector< 2 > > node_lines_
 
const std::vector< IdxVector< 3 > > node_lines_
 
const std::vector< IdxVector< 3 > > side_nodes_
 
const std::vector< IdxVector< 3 > > node_sides_
 
const std::vector< IdxVector< 2 > > line_sides_
 
const std::vector< IdxVector< 3 > > side_lines_
 
const IdxVector< 1 > topology_zeros_ []
 
const IdxVector< 2 > topology_zeros_ []
 
const IdxVector< 3 > topology_zeros_ []
 
const IdxVector< 6 > topology_zeros_ []
 
const IdxVector< 1 > interact_ (unsigned int i)
 This function is for "side_nodes" - for given side, give me nodes (0->0, 1->1). More...
 
const IdxVector< 2 > interact_ (unsigned int i)
 For line i {0}, give me indices of its nodes. More...
 
const IdxVector< 2 > interact_ (unsigned int i)
 For line i {0,1,2}, give me indices of its nodes. More...
 
const IdxVector< 2 > interact_ (unsigned int i)
 For line i {0,1,2,3,4,5}, give me indices of its nodes. More...
 
const IdxVector< 1 > interact_ (unsigned int i)
 For node i {0,1}, give me indices of lines. More...
 
const IdxVector< 2 > interact_ (unsigned int i)
 For node i {0,1,2}, give me indices of lines. More...
 
const IdxVector< 3 > interact_ (unsigned int i)
 For node i {0,1,2,3}, give me indices of lines. More...
 
const IdxVector< 3 > interact_ (unsigned int i)
 For side i {0,1,2}, give me indices of its nodes. More...
 
const IdxVector< 3 > interact_ (unsigned int i)
 For node i {0,1,2,3}, give me indices of sides. More...
 
const IdxVector< 2 > interact_ (unsigned int i)
 For line i {0,1,2,3}, give me indices of sides. More...
 
const IdxVector< 3 > interact_ (unsigned int i)
 For side i {0,1,2}, give me indices of its lines. More...
 

Static Private Member Functions

template<unsigned int OutDim, unsigned int InDim>
static const IdxVector<(InDim >OutDim ? InDim+1 :dim-InDim) > interact_ (unsigned int index)
 Internal part of the interact function. More...
 

Static Private Attributes

static const std::vector< IdxVector< n_nodes_per_line > > line_nodes_
 [n_lines] For given line, returns its nodes indices. More...
 
static const std::vector< IdxVector< n_lines_per_node > > node_lines_
 [n_nodes] For given node, returns lines indices. More...
 
static const std::vector< IdxVector< n_nodes_per_side > > side_nodes_
 [n_sides] For given side, returns nodes indices. For dim == 3. More...
 
static const std::vector< IdxVector< n_sides_per_node > > node_sides_
 [n_nodes] For given node, returns sides indices. For dim == 3. More...
 
static const std::vector< IdxVector< n_sides_per_line > > line_sides_
 [n_lines] For given line, returns sides indices. For dim == 3. More...
 
static const std::vector< IdxVector< n_lines_per_side > > side_lines_
 [n_sides] For given side, returns lines indices. For dim == 3. More...
 
static const IdxVector<(n_lines > n_nodes) ? n_lines :n_nodestopology_zeros_ [dim+1]
 

Detailed Description

template<unsigned int dim>
class RefElement< dim >

Definition at line 163 of file ref_element.hh.

Member Typedef Documentation

◆ BarycentricUnitVec

template<unsigned int dim>
typedef std::vector<BaryPoint> RefElement< dim >::BarycentricUnitVec

Definition at line 294 of file ref_element.hh.

◆ BaryPoint

template<unsigned int dim>
typedef Armor::ArmaVec<double, dim+1> RefElement< dim >::BaryPoint

Barycentric coordinates.

e.g. coordinates (a,b,c) on triangle with vertices X, Y, Z represents a point: a*X+b*Y+c*Z

Definition at line 173 of file ref_element.hh.

◆ FaceBaryPoint

template<unsigned int dim>
typedef Armor::ArmaVec<double, dim> RefElement< dim >::FaceBaryPoint

Definition at line 174 of file ref_element.hh.

◆ LocalPoint

template<unsigned int dim>
typedef arma::vec::fixed<dim> RefElement< dim >::LocalPoint

Definition at line 166 of file ref_element.hh.

Member Function Documentation

◆ bary_coords()

template<unsigned int dim>
template<unsigned int subdim>
arma::mat::fixed< dim+1, subdim+1 > RefElement< dim >::bary_coords ( unsigned int  sid)
inlinestatic
Parameters
sid- index of a sub-simplex in a simplex return an array of barycentric coordinates on <dim> simplex from <subdim> simplex for example: simplex<3> - ABCD and its subsubsimplex<1> AD (line index: 3) AD has barycoords for A (1,0), for D (0,1), but A in ABCD is (1,0,0,0) and D is (0,0,0,1) this method creates array ((1,0,0,0),(0,0,0,1))

Definition at line 475 of file ref_element.hh.

◆ bary_to_local()

template<unsigned int dim>
auto RefElement< dim >::bary_to_local ( const BaryPoint bp)
static

Converts from barycentric to local coordinates.

Parameters
bppoint in barycentric coordinates
Returns
point in local coordinates

Definition at line 319 of file ref_element.cc.

Here is the caller graph for this function:

◆ barycentric_on_face()

template<unsigned int dim>
auto RefElement< dim >::barycentric_on_face ( const BaryPoint barycentric,
unsigned int  i_face 
)
static

For given barycentric coordinates on the ref element returns barycentric coordinates on the ref. element of given face. Assumes that the input point is on the face. Barycentric order: (complanatory, local_coords )

Definition at line 397 of file ref_element.cc.

◆ centers_of_subelements()

template<unsigned int dim>
auto RefElement< dim >::centers_of_subelements ( unsigned int  sub_dim)
static

Definition at line 484 of file ref_element.cc.

◆ clip() [1/2]

template<unsigned int dim>
auto RefElement< dim >::clip ( const BaryPoint barycentric)
static

If the given barycentric coordinate is in the ref. element, return unchanged. If the given barycentric coordinate is out of the ref. element, project it on the surface of the ref. element.

Definition at line 450 of file ref_element.cc.

Here is the caller graph for this function:

◆ clip() [2/2]

auto RefElement< 0 >::clip ( const BaryPoint barycentric) -> BaryPoint

Definition at line 430 of file ref_element.cc.

◆ count() [1/17]

template<unsigned int dim>
template<unsigned int subdim>
static unsigned int RefElement< dim >::count ( )
static

Function returns number of subdim-simplices inside dim-simplex. The aim is covering all the n_**** members with a single function. TODO: think of generalization for n_****_per_**** members, like function interact: template<unsigned int subdimA, unsigned int subdimB> static unsigned int count();

◆ count() [2/17]

unsigned int RefElement< 3 >::count< 0 > ( )
inline

Definition at line 529 of file ref_element.hh.

◆ count() [3/17]

unsigned int RefElement< 3 >::count< 1 > ( )
inline

Definition at line 531 of file ref_element.hh.

◆ count() [4/17]

unsigned int RefElement< 3 >::count< 2 > ( )
inline

Definition at line 533 of file ref_element.hh.

◆ count() [5/17]

unsigned int RefElement< 3 >::count< 3 > ( )
inline

Definition at line 535 of file ref_element.hh.

◆ count() [6/17]

unsigned int RefElement< 2 >::count< 0 > ( )
inline

Definition at line 537 of file ref_element.hh.

◆ count() [7/17]

unsigned int RefElement< 2 >::count< 1 > ( )
inline

Definition at line 539 of file ref_element.hh.

◆ count() [8/17]

unsigned int RefElement< 2 >::count< 2 > ( )
inline

Definition at line 541 of file ref_element.hh.

◆ count() [9/17]

unsigned int RefElement< 2 >::count< 3 > ( )
inline

Definition at line 543 of file ref_element.hh.

◆ count() [10/17]

unsigned int RefElement< 1 >::count< 0 > ( )
inline

Definition at line 545 of file ref_element.hh.

◆ count() [11/17]

unsigned int RefElement< 1 >::count< 1 > ( )
inline

Definition at line 547 of file ref_element.hh.

◆ count() [12/17]

unsigned int RefElement< 1 >::count< 2 > ( )
inline

Definition at line 549 of file ref_element.hh.

◆ count() [13/17]

unsigned int RefElement< 1 >::count< 3 > ( )
inline

Definition at line 551 of file ref_element.hh.

◆ count() [14/17]

unsigned int RefElement< 0 >::count< 0 > ( )
inline

Definition at line 553 of file ref_element.hh.

◆ count() [15/17]

unsigned int RefElement< 0 >::count< 1 > ( )
inline

Definition at line 555 of file ref_element.hh.

◆ count() [16/17]

unsigned int RefElement< 0 >::count< 2 > ( )
inline

Definition at line 557 of file ref_element.hh.

◆ count() [17/17]

unsigned int RefElement< 0 >::count< 3 > ( )
inline

Definition at line 559 of file ref_element.hh.

◆ DECLARE_EXCEPTION()

template<unsigned int dim>
RefElement< dim >::DECLARE_EXCEPTION ( ExcInvalidPermutation  ,
<< "Side permutation not found.\n"   
)

◆ interact() [1/2]

template<unsigned int dim>
template<template< unsigned int OutDim, unsigned int InDim > class TInteraction, unsigned int OutDim, unsigned int InDim>
static const IdxVector< (InDim>OutDim ? InDim+1 : dim-InDim) > RefElement< dim >::interact ( TInteraction< OutDim, InDim >  interaction)
static

Usage: RefElement<3>::interact(Interaction<2,0>(1)) (means: In tetrahedron <3>, give indices of sides <2>, connected by node <0> with index 1) RefElement<3>::interact(Interaction<2,0>(1))[1] (as above, but give only the side with index 1)

Template usage: RefElement<dim>::interact(Interaction<OutDim, InDim>(i))[j] (means: on dim-dimensional reference element, go on InDim-dimensional subelement with index i, which connects OutDim-dimnesional subelements and select the one with index j)

This method serves as an interface to topology information of the reference element. It returns indices of OutDim-dimensional object of InDim-dimnesional object of given index in dim-dimnesional reference element.

Template Parameters
interaction- auxilliary object carying the index and the template arguments OutDim and InDim
OutDim- output dimension (give me node-0, line-1, side-2), <= dim
InDim- input dimension (for node-0, line-1, side-2), <= dim
Returns
vector of indices of OutDim-dimensional subelements represented by IdxVector object.

possible calls: dim OutDim InDim return 1,2,3 0 1 InDim+1 - give me indices of nodes of line of given index 3 0 2 InDim+1 - give me indices of nodes of a side (triangle) of given index 3 1 2 InDim+1 - give me indices of lines of side (triangle) of given index

1,2,3 1 0 dim-InDim - give me indices of lines with common node of given index 3 2 0 dim-InDim - give me indices of sides (triangles) with common node of given index 3 2 1 dim-InDim - give me indices of sides (triangles) with common line of given index

Here is the caller graph for this function:

◆ interact() [2/2]

template<unsigned int dim>
template<template< unsigned int OutDim, unsigned int InDim > class TInteraction, unsigned int OutDim, unsigned int InDim>
const IdxVector< (InDim>OutDim ? InDim+1 : dim-InDim) > RefElement< dim >::interact ( TInteraction< OutDim, InDim >  interaction)
inline

Definition at line 641 of file ref_element.hh.

◆ interact_() [1/12]

const IdxVector< 3 > RefElement< 3 >::interact_< 1, 2 > ( unsigned int  i)
inlineprivate

For side i {0,1,2}, give me indices of its lines.

Definition at line 625 of file ref_element.hh.

◆ interact_() [2/12]

const IdxVector< 2 > RefElement< 3 >::interact_< 0, 1 > ( unsigned int  i)
inlineprivate

For line i {0,1,2,3,4,5}, give me indices of its nodes.

Definition at line 590 of file ref_element.hh.

◆ interact_() [3/12]

const IdxVector< 3 > RefElement< 3 >::interact_< 0, 2 > ( unsigned int  i)
inlineprivate

For side i {0,1,2}, give me indices of its nodes.

Definition at line 610 of file ref_element.hh.

◆ interact_() [4/12]

const IdxVector<(InDim > OutDim InDim :dim) InDim RefElement< dim >::interact_ ( unsigned int  i)
inlineprivate

This function is for "side_nodes" - for given side, give me nodes (0->0, 1->1).

Definition at line 575 of file ref_element.hh.

◆ interact_() [5/12]

const IdxVector< 2 > RefElement< 1 >::interact_< 0, 1 > ( unsigned int  i)
inlineprivate

For line i {0}, give me indices of its nodes.

Definition at line 580 of file ref_element.hh.

◆ interact_() [6/12]

const IdxVector< 2 > RefElement< 2 >::interact_< 0, 1 > ( unsigned int  i)
inlineprivate

For line i {0,1,2}, give me indices of its nodes.

Definition at line 585 of file ref_element.hh.

◆ interact_() [7/12]

const IdxVector< 1 > RefElement< 1 >::interact_< 1, 0 > ( unsigned int  i)
inlineprivate

For node i {0,1}, give me indices of lines.

Definition at line 595 of file ref_element.hh.

◆ interact_() [8/12]

const IdxVector< 2 > RefElement< 2 >::interact_< 1, 0 > ( unsigned int  i)
inlineprivate

For node i {0,1,2}, give me indices of lines.

Definition at line 600 of file ref_element.hh.

◆ interact_() [9/12]

const IdxVector< 3 > RefElement< 3 >::interact_< 1, 0 > ( unsigned int  i)
inlineprivate

For node i {0,1,2,3}, give me indices of lines.

Definition at line 605 of file ref_element.hh.

◆ interact_() [10/12]

const IdxVector< 3 > RefElement< 3 >::interact_< 2, 0 > ( unsigned int  i)
inlineprivate

For node i {0,1,2,3}, give me indices of sides.

Definition at line 615 of file ref_element.hh.

◆ interact_() [11/12]

const IdxVector< 2 > RefElement< 3 >::interact_< 2, 1 > ( unsigned int  i)
inlineprivate

For line i {0,1,2,3}, give me indices of sides.

Definition at line 620 of file ref_element.hh.

◆ interact_() [12/12]

template<unsigned int dim>
template<unsigned int OutDim, unsigned int InDim>
static const IdxVector< (InDim>OutDim ? InDim+1 : dim-InDim) > RefElement< dim >::interact_ ( unsigned int  index)
staticprivate

Internal part of the interact function.

◆ interpolate() [1/2]

template<unsigned int dim>
template<unsigned int subdim>
static BaryPoint RefElement< dim >::interpolate ( arma::vec::fixed< subdim+1 >  coord,
int  sub_simplex_idx 
)
static

Interpolate barycentric coords to a higher dimension of a simplex.

Parameters
coord- barycentric coords of a point on a sub-simplex
sub_simplex_idx- id of sub-simplex on a simplex

◆ interpolate() [2/2]

template<unsigned int dim>
template<unsigned int subdim>
auto RefElement< dim >::interpolate ( arma::vec::fixed< subdim+1 >  coord,
int  sub_simplex_idx 
) -> BaryPoint

Definition at line 506 of file ref_element.hh.

◆ line_barycentric_interpolation()

template<unsigned int dim>
arma::vec::fixed< dim+1 > RefElement< dim >::line_barycentric_interpolation ( BaryPoint  first_coords,
BaryPoint  second_coords,
double  first_theta,
double  second_theta,
double  theta 
)
static

Basic line interpolation.

Basic line interpolation

Definition at line 571 of file ref_element.cc.

Here is the caller graph for this function:

◆ line_between_faces() [1/2]

template<unsigned int dim>
static unsigned int RefElement< dim >::line_between_faces ( unsigned int  f1,
unsigned int  f2 
)
static

Return index of 1D line, shared by two faces f1 and f2 of the reference tetrahedron. Implemented only for dim == 3.

Here is the caller graph for this function:

◆ line_between_faces() [2/2]

unsigned int RefElement< 3 >::line_between_faces ( unsigned int  f1,
unsigned int  f2 
)

Definition at line 541 of file ref_element.cc.

◆ line_nodes_() [1/6]

const std::vector< IdxVector< 2 > > RefElement< 1 >::line_nodes_
private

Definition at line 51 of file ref_element.cc.

◆ line_nodes_() [2/6]

const std::vector< IdxVector< 2 > > RefElement< 2 >::line_nodes_
private

Definition at line 54 of file ref_element.cc.

◆ line_nodes_() [3/6]

const std::vector< IdxVector< 2 > > RefElement< 3 >::line_nodes_
private

Definition at line 59 of file ref_element.cc.

◆ line_nodes_() [4/6]

const std::vector< IdxVector< 2 > > RefElement< 1 >::line_nodes_
private

Definition at line 426 of file ref_element.hh.

◆ line_nodes_() [5/6]

const std::vector< IdxVector< 2 > > RefElement< 2 >::line_nodes_
private

Definition at line 427 of file ref_element.hh.

◆ line_nodes_() [6/6]

const std::vector< IdxVector< 2 > > RefElement< 3 >::line_nodes_
private

Definition at line 428 of file ref_element.hh.

◆ line_sides_() [1/2]

const std::vector< IdxVector< 2 > > RefElement< 3 >::line_sides_
private

Definition at line 101 of file ref_element.cc.

◆ line_sides_() [2/2]

const std::vector< IdxVector< 2 > > RefElement< 3 >::line_sides_
private

Definition at line 435 of file ref_element.hh.

◆ local_to_bary()

template<unsigned int dim>
auto RefElement< dim >::local_to_bary ( const LocalPoint lp)
static

Converts from local to barycentric coordinates.

Parameters
lppoint in local coordinates (x,y)
Returns
point in barycentric coordinates (1-x-y, x, y)

Definition at line 305 of file ref_element.cc.

Here is the caller graph for this function:

◆ make_bary_unit_vec()

template<unsigned int dim>
auto RefElement< dim >::make_bary_unit_vec
static

Used in the clip method.

Definition at line 436 of file ref_element.cc.

◆ node_coords()

template<unsigned int dim>
arma::vec::fixed< dim > RefElement< dim >::node_coords ( unsigned int  nid)
inlinestatic

Return coordinates of given node.

See also
the class documentation RefElement
Parameters
nidNode number. NOTE: Implementation is dependent on current node and side numbering.

Definition at line 490 of file ref_element.hh.

Here is the caller graph for this function:

◆ node_lines_() [1/6]

const std::vector< IdxVector< 1 > > RefElement< 1 >::node_lines_
private

Definition at line 68 of file ref_element.cc.

◆ node_lines_() [2/6]

const std::vector< IdxVector< 2 > > RefElement< 2 >::node_lines_
private

Definition at line 72 of file ref_element.cc.

◆ node_lines_() [3/6]

const std::vector< IdxVector< 3 > > RefElement< 3 >::node_lines_
private

Definition at line 78 of file ref_element.cc.

◆ node_lines_() [4/6]

const std::vector< IdxVector< 1 > > RefElement< 1 >::node_lines_
private

Definition at line 429 of file ref_element.hh.

◆ node_lines_() [5/6]

const std::vector< IdxVector< 2 > > RefElement< 2 >::node_lines_
private

Definition at line 430 of file ref_element.hh.

◆ node_lines_() [6/6]

const std::vector< IdxVector< 3 > > RefElement< 3 >::node_lines_
private

Definition at line 432 of file ref_element.hh.

◆ node_sides_() [1/2]

const std::vector< IdxVector< 3 > > RefElement< 3 >::node_sides_
private

Definition at line 94 of file ref_element.cc.

◆ node_sides_() [2/2]

const std::vector< IdxVector< 3 > > RefElement< 3 >::node_sides_
private

Definition at line 434 of file ref_element.hh.

◆ nodes_of_subelements() [1/8]

const std::vector< std::vector< std::vector< unsigned int > > > RefElement< 0 >::nodes_of_subelements

Definition at line 281 of file ref_element.cc.

◆ nodes_of_subelements() [2/8]

const std::vector< std::vector< std::vector< unsigned int > > > RefElement< 1 >::nodes_of_subelements

Definition at line 285 of file ref_element.cc.

◆ nodes_of_subelements() [3/8]

const std::vector< std::vector< std::vector< unsigned int > > > RefElement< 2 >::nodes_of_subelements

Definition at line 290 of file ref_element.cc.

◆ nodes_of_subelements() [4/8]

const std::vector< std::vector< std::vector< unsigned int > > > RefElement< 3 >::nodes_of_subelements

Definition at line 296 of file ref_element.cc.

◆ nodes_of_subelements() [5/8]

const std::vector< std::vector< std::vector< unsigned int > > > RefElement< 0 >::nodes_of_subelements

Definition at line 458 of file ref_element.hh.

◆ nodes_of_subelements() [6/8]

const std::vector< std::vector< std::vector< unsigned int > > > RefElement< 1 >::nodes_of_subelements

Definition at line 459 of file ref_element.hh.

◆ nodes_of_subelements() [7/8]

const std::vector< std::vector< std::vector< unsigned int > > > RefElement< 2 >::nodes_of_subelements

Definition at line 460 of file ref_element.hh.

◆ nodes_of_subelements() [8/8]

const std::vector< std::vector< std::vector< unsigned int > > > RefElement< 3 >::nodes_of_subelements

Definition at line 461 of file ref_element.hh.

◆ normal_orientation()

template<unsigned int dim>
unsigned int RefElement< dim >::normal_orientation ( unsigned int  sid)
static

Returns orientation of the normal of side sid. 0 -> OUT, 1 -> IN. NOTE: Implementation is dependent on current node and side numbering.

Definition at line 334 of file ref_element.cc.

Here is the caller graph for this function:

◆ normal_vector() [1/4]

template<unsigned int dim>
static LocalPoint RefElement< dim >::normal_vector ( unsigned int  sid)
static

Compute normal vector to a given side.

Parameters
sidSide number.
Here is the caller graph for this function:

◆ normal_vector() [2/4]

vec::fixed< 1 > RefElement< 1 >::normal_vector ( unsigned int  sid)

Definition at line 343 of file ref_element.cc.

◆ normal_vector() [3/4]

vec::fixed< 2 > RefElement< 2 >::normal_vector ( unsigned int  sid)

Definition at line 351 of file ref_element.cc.

◆ normal_vector() [4/4]

vec::fixed< 3 > RefElement< 3 >::normal_vector ( unsigned int  sid)

Definition at line 373 of file ref_element.cc.

◆ oposite_node()

template<unsigned int dim>
unsigned int RefElement< dim >::oposite_node ( unsigned int  sid)
inlinestatic

Returns index of the node that is oposite to side of given index sid. Note: It is dependent on current node and side numbering.

Parameters
sidSide number. NOTE: Implementation is dependent on current node and side numbering.

Definition at line 327 of file ref_element.cc.

Here is the caller graph for this function:

◆ permutation_index()

template<unsigned int dim>
unsigned int RefElement< dim >::permutation_index ( unsigned int  p[n_nodes_per_side])
static

For a given permutation p of nodes finds its index within side_permutations.

Parameters
pPermutation of nodes.

Definition at line 552 of file ref_element.cc.

Here is the caller graph for this function:

◆ side_lines_() [1/2]

const std::vector< IdxVector< 3 > > RefElement< 3 >::side_lines_
private

Definition at line 110 of file ref_element.cc.

◆ side_lines_() [2/2]

const std::vector< IdxVector< 3 > > RefElement< 3 >::side_lines_
private

Definition at line 436 of file ref_element.hh.

◆ side_measure() [1/4]

template<unsigned int dim>
static double RefElement< dim >::side_measure ( unsigned int  sid)
static

◆ side_measure() [2/4]

double RefElement< 1 >::side_measure ( unsigned int  sid)

Definition at line 512 of file ref_element.cc.

◆ side_measure() [3/4]

double RefElement< 2 >::side_measure ( unsigned int  sid)

Definition at line 521 of file ref_element.cc.

◆ side_measure() [4/4]

double RefElement< 3 >::side_measure ( unsigned int  sid)

Definition at line 530 of file ref_element.cc.

◆ side_nodes_() [1/2]

const std::vector< IdxVector< 3 > > RefElement< 3 >::side_nodes_
private

Definition at line 87 of file ref_element.cc.

◆ side_nodes_() [2/2]

const std::vector< IdxVector< 3 > > RefElement< 3 >::side_nodes_
private

Definition at line 433 of file ref_element.hh.

◆ side_permutations() [1/8]

const std::vector< std::vector< unsigned int > > RefElement< 0 >::side_permutations

Definition at line 117 of file ref_element.cc.

◆ side_permutations() [2/8]

const std::vector< std::vector< unsigned int > > RefElement< 1 >::side_permutations

Definition at line 120 of file ref_element.cc.

◆ side_permutations() [3/8]

const std::vector< std::vector< unsigned int > > RefElement< 2 >::side_permutations

Definition at line 123 of file ref_element.cc.

◆ side_permutations() [4/8]

const std::vector< std::vector< unsigned int > > RefElement< 3 >::side_permutations

Definition at line 126 of file ref_element.cc.

◆ side_permutations() [5/8]

const std::vector< std::vector< unsigned int > > RefElement< 0 >::side_permutations

Definition at line 439 of file ref_element.hh.

◆ side_permutations() [6/8]

const std::vector< std::vector< unsigned int > > RefElement< 1 >::side_permutations

Definition at line 440 of file ref_element.hh.

◆ side_permutations() [7/8]

const std::vector< std::vector< unsigned int > > RefElement< 2 >::side_permutations

Definition at line 441 of file ref_element.hh.

◆ side_permutations() [8/8]

const std::vector< std::vector< unsigned int > > RefElement< 3 >::side_permutations

Definition at line 442 of file ref_element.hh.

◆ topology_idx()

template<unsigned int dim>
template<unsigned int subdim>
unsigned int RefElement< dim >::topology_idx ( unsigned int  zeros_positions)
static

According to positions of zeros in barycentric coordinates, it gives the index of subdim-simplex in the reference element. Number of zeros must be equal to (3-subdim). e.g.: if 1 zeros, return index of side (subdim 2) if 2 zeros, return index of edge (subdim 1) if 3 zeros, return index of vertex (subdim 0)

Definition at line 564 of file ref_element.hh.

◆ topology_zeros_() [1/12]

const IdxVector< 1 > RefElement< 0 >::topology_zeros_
private

Definition at line 151 of file ref_element.cc.

◆ topology_zeros_() [2/12]

const IdxVector< 2 > RefElement< 1 >::topology_zeros_
private

Definition at line 156 of file ref_element.cc.

◆ topology_zeros_() [3/12]

const IdxVector< 3 > RefElement< 2 >::topology_zeros_
private

Definition at line 164 of file ref_element.cc.

◆ topology_zeros_() [4/12]

const IdxVector< 6 > RefElement< 3 >::topology_zeros_
private

Definition at line 176 of file ref_element.cc.

◆ topology_zeros_() [5/12]

const IdxVector< 1 > RefElement< 0 >::topology_zeros_
private

Definition at line 420 of file ref_element.hh.

◆ topology_zeros_() [6/12]

const IdxVector< 2 > RefElement< 1 >::topology_zeros_
private

Definition at line 421 of file ref_element.hh.

◆ topology_zeros_() [7/12]

const IdxVector< 3 > RefElement< 2 >::topology_zeros_
private

Definition at line 422 of file ref_element.hh.

◆ topology_zeros_() [8/12]

const IdxVector< 6 > RefElement< 3 >::topology_zeros_
private

Definition at line 423 of file ref_element.hh.

◆ topology_zeros_() [9/12]

const IdxVector< 1 > RefElement< 0 >::topology_zeros_
private

Definition at line 444 of file ref_element.hh.

◆ topology_zeros_() [10/12]

const IdxVector< 2 > RefElement< 1 >::topology_zeros_
private

Definition at line 445 of file ref_element.hh.

◆ topology_zeros_() [11/12]

const IdxVector< 3 > RefElement< 2 >::topology_zeros_
private

Definition at line 446 of file ref_element.hh.

◆ topology_zeros_() [12/12]

const IdxVector< 6 > RefElement< 3 >::topology_zeros_
private

Definition at line 447 of file ref_element.hh.

◆ zeros_positions()

template<unsigned int dim>
std::pair< unsigned int, unsigned int > RefElement< dim >::zeros_positions ( const BaryPoint barycentric,
double  tolerance = std::numeric_limits<double>::epsilon()*2 
)
static

Return (1) number of zeros and (2) positions of zeros in barycentric coordinates. tolerance serves for testing zero values of barycentric coordinates.

Definition at line 412 of file ref_element.cc.

Here is the caller graph for this function:

Member Data Documentation

◆ CentersList

template<unsigned int dim>
const typedef std::vector<LocalPoint>& RefElement< dim >::CentersList

Definition at line 309 of file ref_element.hh.

◆ line_nodes_

template<unsigned int dim>
const std::vector<IdxVector<n_nodes_per_line> > RefElement< dim >::line_nodes_
staticprivate

[n_lines] For given line, returns its nodes indices.

Definition at line 399 of file ref_element.hh.

◆ line_sides_

template<unsigned int dim>
const std::vector<IdxVector<n_sides_per_line> > RefElement< dim >::line_sides_
staticprivate

[n_lines] For given line, returns sides indices. For dim == 3.

Definition at line 403 of file ref_element.hh.

◆ n_lines

template<unsigned int dim>
const unsigned int RefElement< dim >::n_lines = (unsigned int)((dim * (dim + 1)) / 2)
static

Number of lines, i.e. object of dimension dim-2 on the boundary of the reference element.

Definition at line 234 of file ref_element.hh.

◆ n_lines_per_node

template<unsigned int dim>
const unsigned int RefElement< dim >::n_lines_per_node = dim
static

Number of lines with one common node.

Definition at line 225 of file ref_element.hh.

◆ n_lines_per_side

template<unsigned int dim>
const unsigned int RefElement< dim >::n_lines_per_side = (unsigned int)((dim * (dim - 1)) / 2)
static

Number of lines on boundary of one side.

Definition at line 231 of file ref_element.hh.

◆ n_nodes

template<unsigned int dim>
const unsigned int RefElement< dim >::n_nodes = dim + 1
static

Number of nodes.

Definition at line 223 of file ref_element.hh.

◆ n_nodes_per_line

template<unsigned int dim>
const unsigned int RefElement< dim >::n_nodes_per_line = 2
static

Number of nodes in one line.

Definition at line 226 of file ref_element.hh.

◆ n_nodes_per_side

template<unsigned int dim>
const unsigned int RefElement< dim >::n_nodes_per_side = dim
static

Number of nodes on one side.

Definition at line 224 of file ref_element.hh.

◆ n_side_permutations

template<unsigned int dim>
constexpr unsigned int RefElement< dim >::n_side_permutations = (dim+1)*(2*dim*dim-5*dim+6)/6
staticconstexpr

Number of permutations of nodes on sides.

dim value

1 1 2 2 3 6

Definition at line 268 of file ref_element.hh.

◆ n_sides

template<unsigned int dim>
const unsigned int RefElement< dim >::n_sides = dim + 1
static

Number of sides.

Definition at line 222 of file ref_element.hh.

◆ n_sides_per_line

template<unsigned int dim>
const unsigned int RefElement< dim >::n_sides_per_line = 2
static

Number of sides with one common line. dim == 3.

Definition at line 227 of file ref_element.hh.

◆ n_sides_per_node

template<unsigned int dim>
const unsigned int RefElement< dim >::n_sides_per_node = dim
static

Number of sides with one common line.

Definition at line 228 of file ref_element.hh.

◆ node_lines_

template<unsigned int dim>
const std::vector<IdxVector<n_lines_per_node> > RefElement< dim >::node_lines_
staticprivate

[n_nodes] For given node, returns lines indices.

Definition at line 400 of file ref_element.hh.

◆ node_sides_

template<unsigned int dim>
const std::vector<IdxVector<n_sides_per_node> > RefElement< dim >::node_sides_
staticprivate

[n_nodes] For given node, returns sides indices. For dim == 3.

Definition at line 402 of file ref_element.hh.

◆ nodes_of_subelements

template<unsigned int dim>
const std::vector< std::vector< std::vector<unsigned int> > > RefElement< dim >::nodes_of_subelements
static

Definition at line 258 of file ref_element.hh.

◆ side_lines_

template<unsigned int dim>
const std::vector<IdxVector<n_lines_per_side> > RefElement< dim >::side_lines_
staticprivate

[n_sides] For given side, returns lines indices. For dim == 3.

Definition at line 404 of file ref_element.hh.

◆ side_nodes_

template<unsigned int dim>
const std::vector<IdxVector<n_nodes_per_side> > RefElement< dim >::side_nodes_
staticprivate

[n_sides] For given side, returns nodes indices. For dim == 3.

Definition at line 401 of file ref_element.hh.

◆ side_permutations

template<unsigned int dim>
const std::vector< std::vector<unsigned int> > RefElement< dim >::side_permutations
static

Permutations of nodes on sides. [n_side_permutations][n_nodes_per_side]

Definition at line 274 of file ref_element.hh.

◆ topology_zeros_

template<unsigned int dim>
const IdxVector<(n_lines > n_nodes) ? n_lines : n_nodes> RefElement< dim >::topology_zeros_[dim+1]
staticprivate

Consider an n-face (node, edge, face, bulk) with dimension subdim and index within subdimension idx. Barycentric coordinates of all points on the n-face have unique pattern of zero coordinates.

topology_zeros_[subdim][idx] is a bitfield with '1' where the pattern have zeros.

Definition at line 414 of file ref_element.hh.


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