Data Structures

Here are the data structures with brief descriptions:
basis_factory< InterfaceType, BasisTag >Runtime dispatcher class: Translates the runtime space_id to a compiletime basis tag
basis_factory< InterfaceType, lagrange_tag< 1 > >Returns the Lagrange basis of order 1 ('linear FEM')
basis_factory< InterfaceType, lagrange_tag< 2 > >Returns the Lagrange basis of order 2 ('quadratic FEM')
basis_factory< InterfaceType, lagrange_tag< 3 > >Returns the Lagrange basis of order three ('cubic FEM')
boundary_keyA tag class used for storing and accessing boundary data via ViennaData from ViennaGrid objects
cell_quan< CellType, InterfaceType >The main cell quantity class for using piecewise constant or piecewise expressions (in local coordinates) with ViennaMath
cell_quan_constant< CellType, KeyType, DataType >Implementation of a function which is piecewise constant on each cell. Function values are retrieved from ViennaData
cell_quan_expr< CellType, KeyType, DataType >Implementation of a function which is specified as an expression given in local coordinates on each cell. Expressions are retrieved from ViennaData
cell_quan_interface< CellType, NumericT >The runtime interface for cell quantities
cell_quan_wrapper< CellType, NumericT >A type erasure class which enables to store cell_quan_constants and cell_quan_exprs with different template arguments in a single array
cell_updater< CellType, InterfaceType >A helper functor for updating the cell_quan tokens in a ViennaMath expression
det_dF_dt_keyA tag class used for storing and accessing the Jacobian determinant via ViennaData on ViennaGrid objects
dt_dx_handler< viennafem::unit_cube >
dt_dx_handler< viennafem::unit_interval >
dt_dx_handler< viennafem::unit_square >
dt_dx_handler< viennafem::unit_tetrahedron >
dt_dx_handler< viennafem::unit_triangle >
dt_dx_key< local_index, global_index >A tag class used for storing and accessing the partial derivatives of the element mappings
equation_wrapper< MatrixT, VectorT >A simple wrapper class which abstracts a matrix and a vector into a linear equation
extract_domain< EntityType >If EntityType is a ViennaGrid segment, returns the domain. If EntityType is already the domain, no changes
extract_domain< viennagrid::segment_t< ConfigType > >Specialization of the domain extraction for a ViennaGrid segment
jacobian_adder< CellType, InterfaceType, ReferenceCellTag >Multiplies a given expression with the Jacobian cell-quantity. If the expression is given by an integral, the integrand is multiplied with the Jacobian
key_dispatch< viennafem::det_dF_dt_key >Customizes ViennaData to access the Jacobian of the element transformation by a key-based dispatch
key_dispatch< viennafem::dt_dx_key< local_index, global_index > >Customizes ViennaData to access element transformation coefficients by a key-based dispatch
lagrange_tag< order >A tag identifying the family of Lagrange basis functions
latex_logger< InterfaceType >The LaTeX logger class
linear_pde_options
linear_pde_system< InterfaceType, MappingKeyType, BoundaryKeyType >Representation of a linear system of partial differential equations
local_basis< InterfaceType, BasisTag, ReferenceCell, TopologyDim, ElementID >Facility for retrieving the local basis of a cell. Used internally only
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 0 >Returns the first edge basis function (quadratic along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 1 >Returns the second edge basis function (quadratic along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 10 >Returns the eleventh edge basis function (quadratic along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 11 >Returns the twelveth edge basis function (quadratic along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 2 >Returns the third edge basis function (quadratic along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 3 >Returns the forth edge basis function (quadratic along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 4 >Returns the fifth edge basis function (quadratic along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 5 >Returns the sixth edge basis function (quadratic along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 6 >Returns the seventh edge basis function (quadratic along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 7 >Returns the eigth edge basis function (quadratic along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 8 >Returns the ninth edge basis function (quadratic along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 9 >Returns the tenth edge basis function (quadratic along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_interval, 1, 0 >Returns the quadratic basis function defined in the interior of the line
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_square, 1, 0 >Returns the first edge basis function (quadratic along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_square, 1, 1 >Returns the second edge basis function (quadratic along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_square, 1, 2 >Returns the third edge basis function (quadratic along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_square, 1, 3 >Returns the forth edge basis function (quadratic along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_tetrahedron, 1, 0 >Returns the first (quadratic) edge basis function
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_tetrahedron, 1, 1 >Returns the second (quadratic) edge basis function
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_tetrahedron, 1, 2 >Returns the third (quadratic) edge basis function
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_tetrahedron, 1, 3 >Returns the forth (quadratic) edge basis function
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_tetrahedron, 1, 4 >Returns the fifth (quadratic) edge basis function
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_tetrahedron, 1, 5 >Returns the sixth (quadratic) edge basis function
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_triangle, 1, 0 >Returns the first (quadratic) vertex basis function
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_triangle, 1, 1 >Returns the second (quadratic) vertex basis function
local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_triangle, 1, 2 >Returns the third (quadratic) vertex basis function
local_basis< InterfaceType, viennafem::lagrange_tag< 3 >, unit_interval, 1, 0 >Returns the first cubic basis function defined in the interior of the line
local_basis< InterfaceType, viennafem::lagrange_tag< 3 >, unit_interval, 1, 1 >Returns the second cubic basis function defined in the interior of the line
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_cube, 0, 0 >Returns the first vertex basis function (linear along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_cube, 0, 1 >Returns the second vertex basis function (linear along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_cube, 0, 2 >Returns the third vertex basis function (linear along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_cube, 0, 3 >Returns the forth vertex basis function (linear along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_cube, 0, 4 >Returns the fifth vertex basis function (linear along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_cube, 0, 5 >Returns the sixth vertex basis function (linear along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_cube, 0, 6 >Returns the seventh vertex basis function (linear along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_cube, 0, 7 >Returns the eigth vertex basis function (linear along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_interval, 0, 0 >Returns the left vertex basis function
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_interval, 0, 1 >Returns the right vertex basis function
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_square, 0, 0 >Returns the first vertex basis function (linear along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_square, 0, 1 >Returns the second vertex basis function (linear along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_square, 0, 2 >Returns the third vertex basis function (linear along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_square, 0, 3 >Returns the forth vertex basis function (linear along edges)
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_tetrahedron, 0, 0 >Returns the first (linear) vertex basis function
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_tetrahedron, 0, 1 >Returns the second (linear) vertex basis function
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_tetrahedron, 0, 2 >Returns the third (linear) vertex basis function
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_tetrahedron, 0, 3 >Returns the forth (linear) vertex basis function
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_triangle, 0, 0 >Returns the first (linear) vertex basis function
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_triangle, 0, 1 >Returns the second (linear) vertex basis function
local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_triangle, 0, 2 >Returns the third (linear) vertex basis function
logger_interface< InterfaceType >The common interface for all loggers
mapping_keyA tag class used for storing and accessing unknown indices (global basisfunction numbers) via ViennaData from ViennaGrid objects
mapping_key_type< id >A tag for storing mapping indices on the grid
object_identifier< viennagrid::element_t< ConfigType, viennagrid::hexahedron_tag > >Customizes ViennaData such that the id() member of hexahedra is used as identification mechanism
object_identifier< viennagrid::element_t< ConfigType, viennagrid::line_tag > >Customizes ViennaData such that the id() member of lines is used as identification mechanism
object_identifier< viennagrid::element_t< ConfigType, viennagrid::point_tag > >Customizes ViennaData such that the id() member of vertices is used as identification mechanism
object_identifier< viennagrid::element_t< ConfigType, viennagrid::quadrilateral_tag > >Customizes ViennaData such that the id() member of quadrilaterals is used as identification mechanism
object_identifier< viennagrid::element_t< ConfigType, viennagrid::tetrahedron_tag > >Customizes ViennaData such that the id() member of tetrahedra is used as identification mechanism
object_identifier< viennagrid::element_t< ConfigType, viennagrid::triangle_tag > >Customizes ViennaData such that the id() member of triangles is used as identification mechanism
pde_assemblerThe main ViennaFEM assembler class
pde_assembler_internalThe worker class which assembles the system of linear equations ('FEM assembly core')
reference_cell_for_basis< Cell, T >Metafunction for returning the reference cell for a cell type and a basis function type
reference_cell_for_basis< viennagrid::hexahedron_tag, lagrange_tag< order > >Defining the unit cube to be used for the Lagrange basis on lines
reference_cell_for_basis< viennagrid::line_tag, lagrange_tag< order > >Defining the unit interval to be used for the Lagrange basis on lines
reference_cell_for_basis< viennagrid::quadrilateral_tag, lagrange_tag< order > >Defining the unit interval to be used for the Lagrange basis on lines
reference_cell_for_basis< viennagrid::tetrahedron_tag, lagrange_tag< order > >Defining the unit tetrahedron to be used for the Lagrange basis on lines
reference_cell_for_basis< viennagrid::triangle_tag, lagrange_tag< order > >Defining the unit interval to be used for the Lagrange basis on lines
rt_gauss_quad_element< viennafem::unit_cube, 1, InterfaceType >Gaussian quadrature rule exact for polynomials up to order 1
rt_gauss_quad_element< viennafem::unit_cube, 3, InterfaceType >Gaussian quadrature rule exact for polynomials up to order 3
rt_gauss_quad_element< viennafem::unit_cube, 5, InterfaceType >Gaussian quadrature rule exact for polynomials up to order 5
rt_gauss_quad_element< viennafem::unit_interval, 1, InterfaceType >Gaussian quadrature rule exact for polynomials up to order 1
rt_gauss_quad_element< viennafem::unit_interval, 3, InterfaceType >Gaussian quadrature rule exact for polynomials up to order 3
rt_gauss_quad_element< viennafem::unit_interval, 5, InterfaceType >Gaussian quadrature rule exact for polynomials up to order 5
rt_gauss_quad_element< viennafem::unit_square, 1, InterfaceType >Gaussian quadrature rule exact for polynomials up to order 1
rt_gauss_quad_element< viennafem::unit_square, 3, InterfaceType >Gaussian quadrature rule exact for polynomials up to order 3
rt_gauss_quad_element< viennafem::unit_square, 5, InterfaceType >Gaussian quadrature rule exact for polynomials up to order 5
rt_gauss_quad_element< viennafem::unit_tetrahedron, 1, InterfaceType >Gaussian quadrature rule exact for polynomials up to order 1
rt_gauss_quad_element< viennafem::unit_triangle, 1, InterfaceType >Gaussian quadrature rule exact for polynomials up to order 1
rt_gauss_quad_element< viennafem::unit_triangle, 7, InterfaceType >Gauss quadrature rule exact for polynomials up to order seven
rt_keast_quad_element< viennafem::unit_tetrahedron, 2, InterfaceType >Keast rule, exact for polynomials up to degree 2
rt_keast_quad_element< viennafem::unit_tetrahedron, 3, InterfaceType >Keast rule, exact for polynomials up to degree 3. Uses a negative weight, thus be careful with numerical stability!
rt_keast_quad_element< viennafem::unit_tetrahedron, 4, InterfaceType >Keast rule, exact for polynomials up to degree 4
rt_keast_quad_element< viennafem::unit_tetrahedron, 5, InterfaceType >Keast rule, exact for polynomials up to degree 5
rt_keast_quad_element< viennafem::unit_tetrahedron, 6, InterfaceType >Keast rule, exact for polynomials up to degree 6
rt_latex_dt_dx_processor< CellType, InterfaceType >Defines a custom LaTeX processor for cell_quan expressions
rt_strang_quad_element< viennafem::unit_triangle, 13, InterfaceType >Quadrature rule exact for polynomials up to order 13 (TOMS algorithm 706)
rt_strang_quad_element< viennafem::unit_triangle, 2, InterfaceType >Quadrature rule exact for polynomials up to order two (cf. Strang, Fix: An Analysis of the Finite Element Method)
rt_strang_quad_element< viennafem::unit_triangle, 3, InterfaceType >Quadrature rule exact for polynomials up to order three (cf. Strang, Fix: An Analysis of the Finite Element Method)
rt_strang_quad_element< viennafem::unit_triangle, 4, InterfaceType >Quadrature rule exact for polynomials up to order four (cf. Strang, Fix: An Analysis of the Finite Element Method)
rt_strang_quad_element< viennafem::unit_triangle, 5, InterfaceType >Quadrature rule exact for polynomials up to order five (cf. Strang, Fix: An Analysis of the Finite Element Method)
rt_strang_quad_element< viennafem::unit_triangle, 6, InterfaceType >Quadrature rule exact for polynomials up to order six (cf. Strang, Fix: An Analysis of the Finite Element Method)
rt_strang_quad_element< viennafem::unit_triangle, 7, InterfaceType >Quadrature rule exact for polynomials up to order seven (cf. Strang, Fix: An Analysis of the Finite Element Method)
space_to_id< T >Provides a unique ID from a basis function tag (compiletime-runtime translation)
space_to_id< lagrange_tag< order > >Specialization of the unique ID facility for the Lagrange family
storage< KeyType, ValueType, viennagrid::element_t< ConfigType, viennagrid::hexahedron_tag > >Configures ViennaData such that data is stored densely on hexahedra, no matter which key type is used
storage< KeyType, ValueType, viennagrid::element_t< ConfigType, viennagrid::line_tag > >Configures ViennaData such that data is stored densely on lines, no matter which key type is used
storage< KeyType, ValueType, viennagrid::element_t< ConfigType, viennagrid::point_tag > >Configures ViennaData such that data is stored densely on vertices, no matter which key type is used
storage< KeyType, ValueType, viennagrid::element_t< ConfigType, viennagrid::quadrilateral_tag > >Configures ViennaData such that data is stored densely on quadrilaterals, no matter which key type is used
storage< KeyType, ValueType, viennagrid::element_t< ConfigType, viennagrid::tetrahedron_tag > >Configures ViennaData such that data is stored densely on tetrahedra, no matter which key type is used
storage< KeyType, ValueType, viennagrid::element_t< ConfigType, viennagrid::triangle_tag > >Configures ViennaData such that data is stored densely on triangles, no matter which key type is used
symmetric_cubeA tag for the cube with vertices at (-1,-1,-1), (1,-1,-1), (-1,1,-1), (1,1,-1), (-1,-1,1), (1,-1,1), (-1,1,1), (1,1,1)
symmetric_intervalA tag representing the interval [-1,1]. Particularly useful for higher-order FEM
symmetric_squareA tag for the square with vertices at (-1,-1), (1, -1), (-1, 1), (1, 1)
symmetric_tetrahedronA tag for the tetrahedron with vertices at (-1,-1,-1), (1,-1,-1), (-1,1,-1), (-1,-1,1)
symmetric_triangleA tag for the triangle with vertices at (-1,-1), (1,-1), (-1,1)
unit_cubeA tag for the cube with vertices at (0,0,0), (1,0,0), (0,1,0), (1,1,0), (0,0,1), (1,0,1), (0,1,1), (1,1,1)
unit_intervalA tag for the unit interval [0,1]
unit_squareA tag for the square with vertices at (0,0), (1,0), (0,1), (1,1)
unit_tetrahedronA tag for the tetrahedron with vertices at (0,0,0), (1,0,0), (0,1,0), (0,0,1)
unit_triangleA tag for the triangle with vertices (0,0), (1,0), (0,1)
unknown_config< MatrixType, VectorType, BoundaryKeyType, MappingKeyType >A configuration class for a particular PDE. [SUBJECT TO CHANGE!]
weak_form_checker< InterfaceType >A helper class which scans whether a ViennaMath equation is in a weak form already
weak_form_creator< InterfaceType >Transforms a strong formulation of an equation to a weak form, assuming homogeneous Neumann boundary conditions