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. |
The main namespace for ViennaFEM. All user functionality resides in this namespace.
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.
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.
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 |
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.