Namespaces | Data Structures | Typedefs | Functions

viennafem Namespace Reference

The main namespace for ViennaFEM. All user functionality resides in this namespace. More...

Namespaces

namespace  detail
 

Contains implementation details of ViennaFEM not intended to be used by the library user directly.


namespace  io
 

Provides input and output routines for Finite Element related quantities. Refer to viennagrid::io for details on entirely mesh-related input-output functionality.


Data Structures

struct  basis_factory
 Runtime dispatcher class: Translates the runtime space_id to a compiletime basis tag. More...
struct  basis_factory< InterfaceType, lagrange_tag< 1 > >
 Returns the Lagrange basis of order 1 ('linear FEM'). More...
struct  basis_factory< InterfaceType, lagrange_tag< 2 > >
 Returns the Lagrange basis of order 2 ('quadratic FEM'). More...
struct  basis_factory< InterfaceType, lagrange_tag< 3 > >
 Returns the Lagrange basis of order three ('cubic FEM'). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_cube, 0, 0 >
 Returns the first vertex basis function (linear along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_cube, 0, 1 >
 Returns the second vertex basis function (linear along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_cube, 0, 2 >
 Returns the third vertex basis function (linear along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_cube, 0, 3 >
 Returns the forth vertex basis function (linear along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_cube, 0, 4 >
 Returns the fifth vertex basis function (linear along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_cube, 0, 5 >
 Returns the sixth vertex basis function (linear along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_cube, 0, 6 >
 Returns the seventh vertex basis function (linear along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_cube, 0, 7 >
 Returns the eigth vertex basis function (linear along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 0 >
 Returns the first edge basis function (quadratic along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 1 >
 Returns the second edge basis function (quadratic along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 2 >
 Returns the third edge basis function (quadratic along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 3 >
 Returns the forth edge basis function (quadratic along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 4 >
 Returns the fifth edge basis function (quadratic along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 5 >
 Returns the sixth edge basis function (quadratic along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 6 >
 Returns the seventh edge basis function (quadratic along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 7 >
 Returns the eigth edge basis function (quadratic along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 8 >
 Returns the ninth edge basis function (quadratic along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 9 >
 Returns the tenth edge basis function (quadratic along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 10 >
 Returns the eleventh edge basis function (quadratic along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_cube, 1, 11 >
 Returns the twelveth edge basis function (quadratic along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_interval, 0, 0 >
 Returns the left vertex basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_interval, 0, 1 >
 Returns the right vertex basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_interval, 1, 0 >
 Returns the quadratic basis function defined in the interior of the line. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 3 >, unit_interval, 1, 0 >
 Returns the first cubic basis function defined in the interior of the line. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 3 >, unit_interval, 1, 1 >
 Returns the second cubic basis function defined in the interior of the line. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_square, 0, 0 >
 Returns the first vertex basis function (linear along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_square, 0, 1 >
 Returns the second vertex basis function (linear along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_square, 0, 2 >
 Returns the third vertex basis function (linear along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_square, 0, 3 >
 Returns the forth vertex basis function (linear along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_square, 1, 0 >
 Returns the first edge basis function (quadratic along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_square, 1, 1 >
 Returns the second edge basis function (quadratic along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_square, 1, 2 >
 Returns the third edge basis function (quadratic along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_square, 1, 3 >
 Returns the forth edge basis function (quadratic along edges). More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_tetrahedron, 0, 0 >
 Returns the first (linear) vertex basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_tetrahedron, 0, 1 >
 Returns the second (linear) vertex basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_tetrahedron, 0, 2 >
 Returns the third (linear) vertex basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_tetrahedron, 0, 3 >
 Returns the forth (linear) vertex basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_tetrahedron, 1, 0 >
 Returns the first (quadratic) edge basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_tetrahedron, 1, 1 >
 Returns the second (quadratic) edge basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_tetrahedron, 1, 2 >
 Returns the third (quadratic) edge basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_tetrahedron, 1, 3 >
 Returns the forth (quadratic) edge basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_tetrahedron, 1, 4 >
 Returns the fifth (quadratic) edge basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_tetrahedron, 1, 5 >
 Returns the sixth (quadratic) edge basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_triangle, 0, 0 >
 Returns the first (linear) vertex basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_triangle, 0, 1 >
 Returns the second (linear) vertex basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< order >, unit_triangle, 0, 2 >
 Returns the third (linear) vertex basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_triangle, 1, 0 >
 Returns the first (quadratic) vertex basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_triangle, 1, 1 >
 Returns the second (quadratic) vertex basis function. More...
struct  local_basis< InterfaceType, viennafem::lagrange_tag< 2 >, unit_triangle, 1, 2 >
 Returns the third (quadratic) vertex basis function. More...
class  cell_quan
 The main cell quantity class for using piecewise constant or piecewise expressions (in local coordinates) with ViennaMath. More...
struct  mapping_key_type
 A tag for storing mapping indices on the grid. More...
struct  unit_interval
 A tag for the unit interval [0,1]. More...
struct  symmetric_interval
 A tag representing the interval [-1,1]. Particularly useful for higher-order FEM. More...
struct  unit_triangle
 A tag for the triangle with vertices (0,0), (1,0), (0,1). More...
struct  symmetric_triangle
 A tag for the triangle with vertices at (-1,-1), (1,-1), (-1,1). More...
struct  unit_square
 A tag for the square with vertices at (0,0), (1,0), (0,1), (1,1). More...
struct  symmetric_square
 A tag for the square with vertices at (-1,-1), (1, -1), (-1, 1), (1, 1). More...
struct  unit_tetrahedron
 A tag for the tetrahedron with vertices at (0,0,0), (1,0,0), (0,1,0), (0,0,1). More...
struct  symmetric_tetrahedron
 A tag for the tetrahedron with vertices at (-1,-1,-1), (1,-1,-1), (-1,1,-1), (-1,-1,1). More...
struct  unit_cube
 A 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). More...
struct  symmetric_cube
 A 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). More...
struct  lagrange_tag
 A tag identifying the family of Lagrange basis functions. More...
struct  space_to_id
 Provides a unique ID from a basis function tag (compiletime-runtime translation). More...
struct  space_to_id< lagrange_tag< order > >
 Specialization of the unique ID facility for the Lagrange family. More...
struct  reference_cell_for_basis
 Metafunction for returning the reference cell for a cell type and a basis function type. More...
struct  reference_cell_for_basis< viennagrid::line_tag, lagrange_tag< order > >
 Defining the unit interval to be used for the Lagrange basis on lines. More...
struct  reference_cell_for_basis< viennagrid::triangle_tag, lagrange_tag< order > >
 Defining the unit interval to be used for the Lagrange basis on lines. More...
struct  reference_cell_for_basis< viennagrid::quadrilateral_tag, lagrange_tag< order > >
 Defining the unit interval to be used for the Lagrange basis on lines. More...
struct  reference_cell_for_basis< viennagrid::tetrahedron_tag, lagrange_tag< order > >
 Defining the unit tetrahedron to be used for the Lagrange basis on lines. More...
struct  reference_cell_for_basis< viennagrid::hexahedron_tag, lagrange_tag< order > >
 Defining the unit cube to be used for the Lagrange basis on lines. More...
struct  local_basis
 Facility for retrieving the local basis of a cell. Used internally only. More...
struct  dt_dx_key
 A tag class used for storing and accessing the partial derivatives of the element mappings. More...
struct  det_dF_dt_key
 A tag class used for storing and accessing the Jacobian determinant via ViennaData on ViennaGrid objects. More...
class  boundary_key
 A tag class used for storing and accessing boundary data via ViennaData from ViennaGrid objects. More...
class  mapping_key
 A tag class used for storing and accessing unknown indices (global basisfunction numbers) via ViennaData from ViennaGrid objects. More...
class  linear_pde_options
class  linear_pde_system
 Representation of a linear system of partial differential equations. More...
class  logger_interface
 The common interface for all loggers. More...
class  rt_latex_dt_dx_processor
 Defines a custom LaTeX processor for cell_quan expressions. More...
class  latex_logger
 The LaTeX logger class. More...
class  pde_assembler
 The main ViennaFEM assembler class. More...
class  rt_gauss_quad_element< viennafem::unit_cube, 1, InterfaceType >
 Gaussian quadrature rule exact for polynomials up to order 1. More...
class  rt_gauss_quad_element< viennafem::unit_cube, 3, InterfaceType >
 Gaussian quadrature rule exact for polynomials up to order 3. More...
class  rt_gauss_quad_element< viennafem::unit_cube, 5, InterfaceType >
 Gaussian quadrature rule exact for polynomials up to order 5. More...
class  rt_gauss_quad_element< viennafem::unit_interval, 1, InterfaceType >
 Gaussian quadrature rule exact for polynomials up to order 1. More...
class  rt_gauss_quad_element< viennafem::unit_interval, 3, InterfaceType >
 Gaussian quadrature rule exact for polynomials up to order 3. More...
class  rt_gauss_quad_element< viennafem::unit_interval, 5, InterfaceType >
 Gaussian quadrature rule exact for polynomials up to order 5. More...
class  rt_gauss_quad_element< viennafem::unit_square, 1, InterfaceType >
 Gaussian quadrature rule exact for polynomials up to order 1. More...
class  rt_gauss_quad_element< viennafem::unit_square, 3, InterfaceType >
 Gaussian quadrature rule exact for polynomials up to order 3. More...
class  rt_gauss_quad_element< viennafem::unit_square, 5, InterfaceType >
 Gaussian quadrature rule exact for polynomials up to order 5. More...
class  rt_gauss_quad_element< viennafem::unit_tetrahedron, 1, InterfaceType >
 Gaussian quadrature rule exact for polynomials up to order 1. More...
class  rt_keast_quad_element< viennafem::unit_tetrahedron, 2, InterfaceType >
 Keast rule, exact for polynomials up to degree 2. More...
class  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! More...
class  rt_keast_quad_element< viennafem::unit_tetrahedron, 4, InterfaceType >
 Keast rule, exact for polynomials up to degree 4. More...
class  rt_keast_quad_element< viennafem::unit_tetrahedron, 5, InterfaceType >
 Keast rule, exact for polynomials up to degree 5. More...
class  rt_keast_quad_element< viennafem::unit_tetrahedron, 6, InterfaceType >
 Keast rule, exact for polynomials up to degree 6. More...
class  rt_gauss_quad_element< viennafem::unit_triangle, 1, InterfaceType >
 Gaussian quadrature rule exact for polynomials up to order 1. More...
class  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). More...
class  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). More...
class  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). More...
class  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). More...
class  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). More...
class  rt_gauss_quad_element< viennafem::unit_triangle, 7, InterfaceType >
 Gauss quadrature rule exact for polynomials up to order seven. More...
class  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). More...
class  rt_strang_quad_element< viennafem::unit_triangle, 13, InterfaceType >
 Quadrature rule exact for polynomials up to order 13 (TOMS algorithm 706). More...
struct  dt_dx_handler< viennafem::unit_cube >
struct  dt_dx_handler< viennafem::unit_interval >
struct  dt_dx_handler< viennafem::unit_square >
struct  dt_dx_handler< viennafem::unit_tetrahedron >
struct  dt_dx_handler< viennafem::unit_triangle >
class  unknown_config
 A configuration class for a particular PDE. [SUBJECT TO CHANGE!]. More...

Typedefs

typedef double numeric_type
 The default floating point type to be used in ViennaFEM.

Functions

template<typename VertexType >
void set_dirichlet_boundary (VertexType const &v, numeric_type const &value, std::size_t id=0)
template<typename VertexType , typename NumericT >
void set_dirichlet_boundary (VertexType const &v, std::vector< NumericT > const &value, std::size_t id=0)
template<typename CellType , typename InterfaceType >
viennamath::rt_expr
< InterfaceType > 
operator* (viennamath::rt_variable< InterfaceType > const &lhs, cell_quan< CellType, InterfaceType > const &rhs)
 Operator overload for the multiplication of a cell quantity with a ViennaMath variable.
template<typename CellType , typename InterfaceType >
viennamath::rt_expr
< InterfaceType > 
operator* (viennamath::rt_expr< InterfaceType > const &lhs, cell_quan< CellType, InterfaceType > const &rhs)
 Operator overload for the multiplication of a cell quantity with a ViennaMath expression wrapper.
template<typename CellType , typename InterfaceType >
viennamath::rt_expr
< InterfaceType > 
operator* (cell_quan< CellType, InterfaceType > const &lhs, viennamath::rt_unary_expr< InterfaceType > const &rhs)
 Operator overload for the multiplication of a cell quantity with a ViennaMath unary expression.
template<typename CellType , typename InterfaceType >
viennamath::rt_expr
< InterfaceType > 
operator* (cell_quan< CellType, InterfaceType > const &lhs, viennamath::rt_binary_expr< InterfaceType > const &rhs)
 Operator overload for the multiplication of a cell quantity with a ViennaMath binary expression.
template<unsigned long local_index, unsigned long global_index>
std::ostream & operator<< (std::ostream &stream, dt_dx_key< local_index, global_index > const &dummy)
 Convenience overload for converting a det_dF_dt_key to a string and streaming it to an output-stream.
std::ostream & operator<< (std::ostream &stream, det_dF_dt_key const &dummy)
 Convenience overload for converting a det_dF_dt_key to a string and streaming it to an output-stream.
template<typename TrialSpaceTag , typename TestSpaceTag >
linear_pde_options make_linear_pde_options (long data_id, TrialSpaceTag, TestSpaceTag, bool existing_mapping=false)
 Convenience function for creating a PDE config object.
template<typename InterfaceType >
linear_pde_system< InterfaceType > make_linear_pde_system (viennamath::rt_equation< InterfaceType > equ_1, viennamath::rt_function_symbol< InterfaceType > unknown_1, viennafem::linear_pde_options options_1)
 Convenience function for the generation of a linear PDE for a scalar-valued unknown.
template<typename InterfaceType >
linear_pde_system< InterfaceType > make_linear_pde_system (viennamath::rt_equation< InterfaceType > equ_1, std::vector< viennamath::rt_function_symbol< InterfaceType > > unknowns_1, viennafem::linear_pde_options options_1)
 Convenience function for the generation of a linear PDE for a vector-valued unknown.
template<typename InterfaceType >
linear_pde_system< InterfaceType > make_linear_pde_system (viennamath::rt_equation< InterfaceType > equ_1, viennamath::rt_function_symbol< InterfaceType > unknown_1)
 Convenience function for the generation of a linear PDE for a scalar-valued unknown.
template<typename InterfaceType >
linear_pde_system< InterfaceType > make_linear_pde_system (viennamath::rt_equation< InterfaceType > equ_1, std::vector< viennamath::rt_function_symbol< InterfaceType > > unknowns_1)
 Convenience function for the generation of a linear PDE for a vector-valued unknown.
template<typename PDESystem >
void log_strong_form (PDESystem const &pde_system)
 Writes the strong form of the PDE to the logger.
template<typename EquationArray , typename PDESystem >
void log_weak_form (EquationArray const &weak_form, PDESystem const &pde_system)
 Writes the weak form of the PDE to the logger.
template<typename EquationArray , typename PDESystem >
void log_coordinated_weak_form (EquationArray const &weak_form, PDESystem const &pde_system)
 Writes the weak form (with the coordinate system applied) to the logger.
template<typename CellType , typename EquationArray , typename PDESystem >
void log_transformed_weak_form (EquationArray const &weak_form, PDESystem const &pde_system)
 Writes the weak form transformed to the reference cell to the logger.
template<typename EquationArray , typename PDESystem >
void log_test_and_trial_space (EquationArray const &test_space, EquationArray const &trial_space, PDESystem const &pde_system)
 Writes the test and trial functions to the logger.
template<typename InterfaceType , typename T >
latex_logger< InterfaceType > & operator<< (latex_logger< InterfaceType > &logger, T const &t)
 Convenience overload for streaming text to a LaTeX logger.
template<typename SystemType , typename DomainType >
long create_mapping (SystemType &pde_system, DomainType &domain)
 Distributes mapping indices over domain or segment.
template<typename SystemType , typename CellType >
std::vector< long > mapping_indices (SystemType &pde_system, CellType const &cell, std::size_t pde_id=0)
 Returns an array of mapping indices for the provided cell.
template<typename PDESystemType , typename DomainType >
viennamath::numerical_quadrature make_quadrature_rule (PDESystemType const &pde_system, DomainType const &domain)
 Convenience function which returns a suitable quadrature rule for the given PDE(s) and the domain.
template<typename InterfaceType >
viennamath::numerical_quadrature quadrature_for_reference_cell (viennafem::unit_square const &, std::size_t order)
 Convenience function returning the best (i.e. most economical) quadrature rule for a given polynomial order.
template<typename CellType , typename EquationType , typename PDESystemType >
EquationType transform_to_reference_cell (EquationType const &weak_form, PDESystemType const &pde_system, viennafem::unit_interval)
 Transforms a general weak form on any line to an integration over the unit interval.
template<typename CellType , typename EquationType , typename PDESystemType >
EquationType transform_to_reference_cell (EquationType const &weak_form, PDESystemType const &pde_system, viennafem::unit_square)
 Transforms a general weak form on any quadrilateral to an integration over the unit square.
template<typename CellType , typename EquationType , typename PDESystemType >
EquationType transform_to_reference_cell (EquationType const &weak_form, PDESystemType const &pde_system, viennafem::unit_triangle)
 Transforms a general weak form on any triangle to an integration over the unit triangle.
template<typename CellType , typename EquationType , typename PDESystemType >
EquationType transform_to_reference_cell (EquationType const &weak_form, PDESystemType const &pde_system, viennafem::unit_cube)
 Transforms a general weak form on any hexahedron to an integration over the unit cube.
template<typename CellType , typename EquationType , typename PDESystemType >
EquationType transform_to_reference_cell (EquationType const &weak_form, PDESystemType const &pde_system, viennafem::unit_tetrahedron)
 Transforms a general weak form on any tetrahedron to an integration over the unit tetrahedron.
template<typename CellType , typename EquationType , typename PDESystemType >
EquationType transform_to_reference_cell (EquationType const &weak_form, PDESystemType const &pde_system)
 Transforms a weak formulation given by an integration over an arbitrary cell to the reference element.
template<typename EquationType , typename PDESystemType , typename ExpressionType >
EquationType insert_test_and_trial_functions (EquationType weak_form, PDESystemType const &pde_system, std::vector< ExpressionType > test_func, std::vector< ExpressionType > trial_func)
 Inserts vector-valued test and trial functions into the weak form.
template<typename InterfaceType >
bool is_weak_form (viennamath::rt_equation< InterfaceType > const &strong_formulation)
 Interface function for checking whether a certan equation is a weak formulation of a PDE.
template<typename InterfaceType >
viennamath::rt_equation
< InterfaceType > 
make_weak_form (viennamath::rt_equation< InterfaceType > const &strong_formulation)
 Transforms a ViennaMath equation from strong form to weak form.

Detailed Description

The main namespace for ViennaFEM. All user functionality resides in this namespace.


Typedef Documentation

typedef double numeric_type

The default floating point type to be used in ViennaFEM.

Feel free to change this typedef to a high-precision type if required. Keep in mind that only float and double types can be used for GPU acceleration.


Function Documentation

long viennafem::create_mapping ( SystemType &  pde_system,
DomainType &  domain 
)

Distributes mapping indices over domain or segment.

EquationType viennafem::insert_test_and_trial_functions ( EquationType  weak_form,
PDESystemType const &  pde_system,
std::vector< ExpressionType >  test_func,
std::vector< ExpressionType >  trial_func 
)

Inserts vector-valued test and trial functions into the weak form.

Scalar-valued functions are a special case of vector-valued function (vectors of length 1) and are also handled here.

Parameters:
weak_form The weak form of the PDE
pde_system Meta-information for the (system of) PDE(s)
test_func A vector of expressions. Typically something of the form (phi, 0, 0), (0, phi, 0) or (0, 0, phi) for a scalar-valued function phi
trial_func A vector of expressions. Typically something of the form (phi, 0, 0), (0, phi, 0) or (0, 0, phi) for a scalar-valued function phi
Returns:
The weak form with basis functions inserted for function symbols
bool viennafem::is_weak_form ( viennamath::rt_equation< InterfaceType > const &  strong_formulation  ) 

Interface function for checking whether a certan equation is a weak formulation of a PDE.

void viennafem::log_coordinated_weak_form ( EquationArray const &  weak_form,
PDESystem const &  pde_system 
)

Writes the weak form (with the coordinate system applied) to the logger.

void viennafem::log_strong_form ( PDESystem const &  pde_system  ) 

Writes the strong form of the PDE to the logger.

void viennafem::log_test_and_trial_space ( EquationArray const &  test_space,
EquationArray const &  trial_space,
PDESystem const &  pde_system 
)

Writes the test and trial functions to the logger.

void viennafem::log_transformed_weak_form ( EquationArray const &  weak_form,
PDESystem const &  pde_system 
)

Writes the weak form transformed to the reference cell to the logger.

void viennafem::log_weak_form ( EquationArray const &  weak_form,
PDESystem const &  pde_system 
)

Writes the weak form of the PDE to the logger.

linear_pde_options viennafem::make_linear_pde_options ( long  data_id,
TrialSpaceTag  ,
TestSpaceTag  ,
bool  existing_mapping = false 
)

Convenience function for creating a PDE config object.

linear_pde_system<InterfaceType> viennafem::make_linear_pde_system ( viennamath::rt_equation< InterfaceType >  equ_1,
viennamath::rt_function_symbol< InterfaceType >  unknown_1,
viennafem::linear_pde_options  options_1 
)

Convenience function for the generation of a linear PDE for a scalar-valued unknown.

linear_pde_system<InterfaceType> viennafem::make_linear_pde_system ( viennamath::rt_equation< InterfaceType >  equ_1,
std::vector< viennamath::rt_function_symbol< InterfaceType > >  unknowns_1,
viennafem::linear_pde_options  options_1 
)

Convenience function for the generation of a linear PDE for a vector-valued unknown.

linear_pde_system<InterfaceType> viennafem::make_linear_pde_system ( viennamath::rt_equation< InterfaceType >  equ_1,
std::vector< viennamath::rt_function_symbol< InterfaceType > >  unknowns_1 
)

Convenience function for the generation of a linear PDE for a vector-valued unknown.

linear_pde_system<InterfaceType> viennafem::make_linear_pde_system ( viennamath::rt_equation< InterfaceType >  equ_1,
viennamath::rt_function_symbol< InterfaceType >  unknown_1 
)

Convenience function for the generation of a linear PDE for a scalar-valued unknown.

viennamath::numerical_quadrature viennafem::make_quadrature_rule ( PDESystemType const &  pde_system,
DomainType const &  domain 
)

Convenience function which returns a suitable quadrature rule for the given PDE(s) and the domain.

viennamath::rt_equation<InterfaceType> viennafem::make_weak_form ( viennamath::rt_equation< InterfaceType > const &  strong_formulation  ) 

Transforms a ViennaMath equation from strong form to weak form.

std::vector<long> viennafem::mapping_indices ( SystemType &  pde_system,
CellType const &  cell,
std::size_t  pde_id = 0 
)

Returns an array of mapping indices for the provided cell.

viennamath::rt_expr<InterfaceType> viennafem::operator* ( viennamath::rt_expr< InterfaceType > const &  lhs,
cell_quan< CellType, InterfaceType > const &  rhs 
)

Operator overload for the multiplication of a cell quantity with a ViennaMath expression wrapper.

viennamath::rt_expr<InterfaceType> viennafem::operator* ( cell_quan< CellType, InterfaceType > const &  lhs,
viennamath::rt_unary_expr< InterfaceType > const &  rhs 
)

Operator overload for the multiplication of a cell quantity with a ViennaMath unary expression.

viennamath::rt_expr<InterfaceType> viennafem::operator* ( viennamath::rt_variable< InterfaceType > const &  lhs,
cell_quan< CellType, InterfaceType > const &  rhs 
)

Operator overload for the multiplication of a cell quantity with a ViennaMath variable.

viennamath::rt_expr<InterfaceType> viennafem::operator* ( cell_quan< CellType, InterfaceType > const &  lhs,
viennamath::rt_binary_expr< InterfaceType > const &  rhs 
)

Operator overload for the multiplication of a cell quantity with a ViennaMath binary expression.

std::ostream& viennafem::operator<< ( std::ostream &  stream,
det_dF_dt_key const &  dummy 
) [inline]

Convenience overload for converting a det_dF_dt_key to a string and streaming it to an output-stream.

latex_logger<InterfaceType>& viennafem::operator<< ( latex_logger< InterfaceType > &  logger,
T const &  t 
)

Convenience overload for streaming text to a LaTeX logger.

std::ostream& viennafem::operator<< ( std::ostream &  stream,
dt_dx_key< local_index, global_index > const &  dummy 
)

Convenience overload for converting a det_dF_dt_key to a string and streaming it to an output-stream.

viennamath::numerical_quadrature viennafem::quadrature_for_reference_cell ( viennafem::unit_square const &  ,
std::size_t  order 
)

Convenience function returning the best (i.e. most economical) quadrature rule for a given polynomial order.

void viennafem::set_dirichlet_boundary ( VertexType const &  v,
numeric_type const &  value,
std::size_t  id = 0 
)
void viennafem::set_dirichlet_boundary ( VertexType const &  v,
std::vector< NumericT > const &  value,
std::size_t  id = 0 
)
EquationType viennafem::transform_to_reference_cell ( EquationType const &  weak_form,
PDESystemType const &  pde_system,
viennafem::unit_interval   
)

Transforms a general weak form on any line to an integration over the unit interval.

EquationType viennafem::transform_to_reference_cell ( EquationType const &  weak_form,
PDESystemType const &  pde_system,
viennafem::unit_cube   
)

Transforms a general weak form on any hexahedron to an integration over the unit cube.

EquationType viennafem::transform_to_reference_cell ( EquationType const &  weak_form,
PDESystemType const &  pde_system,
viennafem::unit_square   
)

Transforms a general weak form on any quadrilateral to an integration over the unit square.

EquationType viennafem::transform_to_reference_cell ( EquationType const &  weak_form,
PDESystemType const &  pde_system,
viennafem::unit_tetrahedron   
)

Transforms a general weak form on any tetrahedron to an integration over the unit tetrahedron.

EquationType viennafem::transform_to_reference_cell ( EquationType const &  weak_form,
PDESystemType const &  pde_system,
viennafem::unit_triangle   
)

Transforms a general weak form on any triangle to an integration over the unit triangle.

EquationType viennafem::transform_to_reference_cell ( EquationType const &  weak_form,
PDESystemType const &  pde_system 
)

Transforms a weak formulation given by an integration over an arbitrary cell to the reference element.