Data Structures | Namespaces | Functions

/export/development/ViennaFEM/viennafem/transform.hpp File Reference

Provides transformation routines for converting integrals on elements in physical space to elements in reference orientation. More...

#include "viennafem/forwards.h"
#include "viennafem/cell_quan.hpp"
#include "viennamath/expression.hpp"
#include "viennamath/manipulation/substitute.hpp"
#include "viennamath/manipulation/diff.hpp"
#include "viennagrid/topology/triangle.hpp"
#include "viennagrid/topology/tetrahedron.hpp"

Go to the source code of this file.

Data Structures

struct  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. More...

Namespaces

namespace  viennafem
 

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


namespace  viennafem::detail
 

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


Functions

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.
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.

Detailed Description

Provides transformation routines for converting integrals on elements in physical space to elements in reference orientation.