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.