Contains implementation details of ViennaFEM not intended to be used by the library user directly.
More...
Data Structures |
| class | cell_quan_interface |
| | The runtime interface for cell quantities. More...
|
| class | cell_quan_constant |
| | Implementation of a function which is piecewise constant on each cell. Function values are retrieved from ViennaData. More...
|
| class | cell_quan_expr |
| | Implementation of a function which is specified as an expression given in local coordinates on each cell. Expressions are retrieved from ViennaData. More...
|
| class | cell_quan_wrapper |
| | A type erasure class which enables to store cell_quan_constants and cell_quan_exprs with different template arguments in a single array. More...
|
| struct | cell_updater |
| | A helper functor for updating the cell_quan tokens in a ViennaMath expression. More...
|
| struct | pde_assembler_internal |
| | The worker class which assembles the system of linear equations ('FEM assembly core'). More...
|
| struct | extract_domain |
| | If EntityType is a ViennaGrid segment, returns the domain. If EntityType is already the domain, no changes. More...
|
| struct | extract_domain< viennagrid::segment_t< ConfigType > > |
| | Specialization of the domain extraction for a ViennaGrid segment. More...
|
| struct | equation_wrapper |
| | A simple wrapper class which abstracts a matrix and a vector into a linear equation. More...
|
| struct | jacobian_adder |
| | Multiplies a given expression with the Jacobian cell-quantity. If the expression is given by an integral, the integrand is multiplied with the Jacobian. More...
|
| struct | weak_form_checker |
| | A helper class which scans whether a ViennaMath equation is in a weak form already. More...
|
| struct | weak_form_creator |
| | Transforms a strong formulation of an equation to a weak form, assuming homogeneous Neumann boundary conditions. More...
|
Functions |
| template<typename ExpressionType > |
| std::vector< ExpressionType > | make_full_function (ExpressionType const &func, std::size_t length, std::size_t index) |
| | Generates a vector-valued basis function out of a scalar valued basis function.
|
| template<typename CellTag , typename EquationType , typename PDESystemType > |
std::vector< std::vector
< EquationType > > | make_local_weak_form (EquationType const &transformed_weak_form, PDESystemType const &pde_system) |
| | Generates the local weak form by transforming the global weak form accordingly.
|
| template<typename T > |
| bool | is_uniform_basis (T const &) |
| | Helper function which returns whether a basis is uniform over the whole domain.
|
| template<typename EquationArray , typename InterfaceType > |
| void | write_strong_form (EquationArray const &pdes, latex_logger< InterfaceType > &log) |
| | Implementation for writing the strong form to LaTeX.
|
| template<typename EquationArray , typename InterfaceType > |
| void | write_weak_form (EquationArray const &weak_form, latex_logger< InterfaceType > &log) |
| | Implementation for writing the weak form to LaTeX.
|
| template<typename EquationArray , typename InterfaceType > |
| void | write_coordinated_weak_form (EquationArray const &weak_form, latex_logger< InterfaceType > &log) |
| | Implementation for writing the coordinated weak form to LaTeX.
|
| template<typename EquationArray , typename InterfaceType > |
| void | write_transformed_weak_form (EquationArray const &weak_form, latex_logger< InterfaceType > &log) |
| | Implementation for writing the transformed weak form to LaTeX.
|
| template<typename EquationArray , typename InterfaceType > |
| void | write_test_and_trial_space (EquationArray const &test_space, EquationArray const &trial_space, latex_logger< InterfaceType > &log) |
| | Implementation for writing the test and trial spaces to LaTeX.
|
| template<typename InterfaceType > |
| void | write_linear_solver_stats (latex_logger< InterfaceType > &log) |
| | Implementation for writing linear solver statistics to LaTeX.
|
| template<typename ReferenceCellType , typename BasisTag > |
| viennamath::numerical_quadrature | make_quadrature_rule_impl (BasisTag) |
| template<> |
| viennamath::numerical_quadrature | make_quadrature_rule_impl< viennafem::unit_interval > (lagrange_tag< 1 >) |
| template<> |
| viennamath::numerical_quadrature | make_quadrature_rule_impl< viennafem::unit_interval > (lagrange_tag< 2 >) |
| template<> |
| viennamath::numerical_quadrature | make_quadrature_rule_impl< viennafem::unit_interval > (lagrange_tag< 3 >) |
| template<> |
| viennamath::numerical_quadrature | make_quadrature_rule_impl< viennafem::unit_square > (lagrange_tag< 1 >) |
| template<> |
| viennamath::numerical_quadrature | make_quadrature_rule_impl< viennafem::unit_square > (lagrange_tag< 2 >) |
| template<> |
| viennamath::numerical_quadrature | make_quadrature_rule_impl< viennafem::unit_triangle > (lagrange_tag< 1 >) |
| template<> |
| viennamath::numerical_quadrature | make_quadrature_rule_impl< viennafem::unit_triangle > (lagrange_tag< 2 >) |
| template<> |
| viennamath::numerical_quadrature | make_quadrature_rule_impl< viennafem::unit_cube > (lagrange_tag< 1 >) |
| template<> |
| viennamath::numerical_quadrature | make_quadrature_rule_impl< viennafem::unit_cube > (lagrange_tag< 2 >) |
| template<> |
| viennamath::numerical_quadrature | make_quadrature_rule_impl< viennafem::unit_tetrahedron > (lagrange_tag< 1 >) |
| template<> |
| viennamath::numerical_quadrature | make_quadrature_rule_impl< viennafem::unit_tetrahedron > (lagrange_tag< 2 >) |
| template<typename CellType , typename InterfaceType > |
| void | wrap_jacobian (viennafem::cell_quan< CellType, InterfaceType > &det_dF_dt, viennafem::unit_interval) |
| | Wraps the cell quantity for the Jacobian on each cell depending on the reference element used. This is the overload for the unit interval.
|
| template<typename CellType , typename InterfaceType > |
| void | wrap_jacobian (viennafem::cell_quan< CellType, InterfaceType > &det_dF_dt, viennafem::unit_triangle) |
| | Wraps the cell quantity for the Jacobian on each cell depending on the reference element used. This is the overload for the unit triangle.
|
| template<typename CellType , typename InterfaceType > |
| void | wrap_jacobian (viennafem::cell_quan< CellType, InterfaceType > &det_dF_dt, viennafem::unit_tetrahedron) |
| | Wraps the cell quantity for the Jacobian on each cell depending on the reference element used. This is the overload for the unit tetrahedron.
|
| template<typename CellType , typename InterfaceType > |
| void | wrap_jacobian (viennafem::cell_quan< CellType, InterfaceType > &det_dF_dt, viennafem::unit_square) |
| | Wraps the cell quantity for the Jacobian on each cell depending on the reference element used. This is the overload for the unit square.
|
| template<typename CellType , typename InterfaceType > |
| void | wrap_jacobian (viennafem::cell_quan< CellType, InterfaceType > &det_dF_dt, viennafem::unit_cube) |
| | Wraps the cell quantity for the Jacobian on each cell depending on the reference element used. This is the overload for the unit cube.
|
| template<long i, long j, typename CellType , typename InterfaceType > |
| void | wrap_dt_dx (viennafem::cell_quan< CellType, InterfaceType > &dt_dx, viennafem::unit_interval) |
| | Wraps the cell quantity for the partial derivatives of the reference mapping on each cell depending on the reference element used. This is the overload for the unit interval.
|
| template<long i, long j, typename CellType , typename InterfaceType > |
| void | wrap_dt_dx (viennafem::cell_quan< CellType, InterfaceType > &dt_dx, viennafem::unit_triangle) |
| | Wraps the cell quantity for the partial derivatives of the reference mapping on each cell depending on the reference element used. This is the overload for the unit triangle.
|
| template<long i, long j, typename CellType , typename InterfaceType > |
| void | wrap_dt_dx (viennafem::cell_quan< CellType, InterfaceType > &dt_dx, viennafem::unit_tetrahedron) |
| | Wraps the cell quantity for the partial derivatives of the reference mapping on each cell depending on the reference element used. This is the overload for the unit tetrahedron.
|
| template<long i, long j, typename CellType , typename InterfaceType > |
| void | wrap_dt_dx (viennafem::cell_quan< CellType, InterfaceType > &dt_dx, viennafem::unit_square) |
| | Wraps the cell quantity for the partial derivatives of the reference mapping on each cell depending on the reference element used. This is the overload for the unit square.
|
| template<long i, long j, typename CellType , typename InterfaceType > |
| void | wrap_dt_dx (viennafem::cell_quan< CellType, InterfaceType > &dt_dx, viennafem::unit_cube) |
| | Wraps the cell quantity for the partial derivatives of the reference mapping on each cell depending on the reference element used. This is the overload for the unit cube.
|
| template<typename CellType , typename EquationType , typename PDESystemType , typename ReferenceCellTag > |
| EquationType | transform_to_reference_cell_1d (EquationType const &weak_form, PDESystemType const &pde_system, ReferenceCellTag) |
| | Transforms a weak formulation given in physical space to the reference cell. Also transforms derivatives where appropriate. Implementation for the 1d-case.
|
| template<typename CellType , typename EquationType , typename PDESystemType , typename ReferenceCellTag > |
| EquationType | transform_to_reference_cell_2d (EquationType const &weak_form, PDESystemType const &pde_system, ReferenceCellTag) |
| | Transforms a weak formulation given in physical space to the reference cell. Also transforms derivatives where appropriate. Implementation for the 2d-case.
|
| template<typename CellType , typename EquationType , typename PDESystemType , typename ReferenceCellTag > |
| EquationType | transform_to_reference_cell_3d (EquationType const &weak_form, PDESystemType const &pde_system, ReferenceCellTag) |
| | Transforms a weak formulation given in physical space to the reference cell. Also transforms derivatives where appropriate. Implementation for the 3d-case.
|
Contains implementation details of ViennaFEM not intended to be used by the library user directly.