Logo  0.95.0-final
Finite Element Embedded Library and Language in C++
Feel++ Feel++ on Github Feel++ community
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Feel::BoundaryAdapted< Dim, Degree, T, StoragePolicy > Class Template Reference

#include <boundadapted.hpp>

Detailed Description

template<uint16_type Dim, uint16_type Degree, typename T, template< class > class StoragePolicy>
class Feel::BoundaryAdapted< Dim, Degree, T, StoragePolicy >

BoundaryAdapted Basis on simplex.

This class represents the Boundary Adapted Basis made from Dubiner polynomials up to degree Degree on a simplex in dimension Dim.

The Boundary adapted basis is construct to preserve a part of the Dubiner polynomials' orthogonality. However we need to modify the basis in order to manage easily the boundary condtions.

Author
Gilles Steiner
See Also
boundadapted.hpp
+ Inheritance diagram for Feel::BoundaryAdapted< Dim, Degree, T, StoragePolicy >:

Public Types

typedef BoundaryAdaptedTraits
< Dim, Degree, T,
StoragePolicy > 
traits_type
 
Typedefs
typedef BoundaryAdapted< Dim,
Degree, T, StoragePolicy > 
self_type
 
typedef self_type basis_type
 
typedef T value_type
 
typedef int16_type int_type
 
typedef uint16_type uint_type
 
typedef traits_type::convex_type convex_type
 
typedef
traits_type::reference_convex_type 
reference_convex_type
 
typedef
traits_type::diff_pointset_type 
diff_pointset_type
 
typedef traits_type::storage_policy storage_policy
 
typedef traits_type::vector_type vector_type
 
typedef traits_type::matrix_type matrix_type
 
typedef
traits_type::vector_matrix_type 
vector_matrix_type
 
typedef
traits_type::vector_vector_matrix_type 
vector_vector_matrix_type
 
typedef
traits_type::matrix_node_type 
matrix_node_type
 
typedef traits_type::points_type points_type
 
typedef traits_type::node_type node_type
 
typedef Principal< Degree, T,
StoragePolicy > 
principal_type
 

Public Member Functions

template<typename AE >
BoundaryAdapted< Dim, Degree,
T, StoragePolicy >
::vector_matrix_type 
derivate (ublas::matrix_expression< AE > const &__pts, mpl::int_< 2 >)
 
template<typename AE >
BoundaryAdapted< Dim, Degree,
T, StoragePolicy >
::vector_matrix_type 
derivate (ublas::matrix_expression< AE > const &__pts, mpl::int_< 3 >)
 
points_type const & points () const
 
points_type const & points (int f) const
 
Constructors, destructor
 BoundaryAdapted ()
 
 BoundaryAdapted (BoundaryAdapted const &d)
 
 ~BoundaryAdapted ()
 
Operator overloads
self_type const & operator= (self_type const &d)
 
matrix_type operator() (node_type const &pt) const
 
matrix_type operator() (points_type const &pts) const
 
Accessors
uint_type degree () const
 
self_type const & basis () const
 
std::string familyName () const
 

Static Public Attributes

static const bool is_normalized = traits_type::is_normalized
 
static const uint16_type nConvexOrderDiff = traits_type::nConvexOrderDiff
 
static const uint16_type nDim = traits_type::nDim
 
static const uint16_type nOrder = traits_type::nOrder
 
static const uint16_type numFaces = traits_type::numFaces
 
static const uint16_type numVertices = traits_type::numVertices
 

Methods

matrix_type coeff () const
 
static matrix_type evaluate (points_type const &__pts)
 
template<typename AE >
static vector_matrix_type derivate (ublas::matrix_expression< AE > const &__pts)
 

Additional Inherited Members

- Private Types inherited from Feel::Basis< BoundaryAdaptedTag< Dim, Degree >, T >
typedef T value_type
 
typedef ublas::matrix
< value_type, ublas::row_major > 
matrix_type
 
- Private Member Functions inherited from Feel::Basis< BoundaryAdaptedTag< Dim, Degree >, T >
 Basis (PrimalBasis const &p)
 
 Basis (Basis const &b)
 
virtual ~Basis ()
 
- Static Private Member Functions inherited from Feel::Basis< BoundaryAdaptedTag< Dim, Degree >, T >
static matrix_type const & d (uint16_type i)
 derivatives of Dubiner polynomials the derivatives are computed at the nodes of the lattice More...
 
static matrix_type const & derivate (uint16_type i)
 derivatives of Dubiner polynomials the derivatives are computed at the nodes of the lattice More...
 
static void initDerivation (PrimalBasis const &basis)
 

Member Function Documentation

template<uint16_type Dim, uint16_type Degree, typename T, template< class > class StoragePolicy>
self_type const& Feel::BoundaryAdapted< Dim, Degree, T, StoragePolicy >::basis ( ) const
inline
Returns
self as a basis
template<uint16_type Dim, uint16_type Degree, typename T, template< class > class StoragePolicy>
uint_type Feel::BoundaryAdapted< Dim, Degree, T, StoragePolicy >::degree ( ) const
inline
Returns
the maximum degree of the BoundaryAdapted polynomial to be constructed
template<uint16_type Dim, uint16_type Degree, typename T, template< class > class StoragePolicy>
template<typename AE >
BoundaryAdapted<Dim, Degree, T, StoragePolicy>::vector_matrix_type Feel::BoundaryAdapted< Dim, Degree, T, StoragePolicy >::derivate ( ublas::matrix_expression< AE > const &  __pts,
mpl::int_< 3 >   
)

We must save the Jacobian matrix $ Jac(i,j) = \frac{\partial\eta_j}{\partial \xi_i} $ for all points and all cases. We choose to build $Jac \in \mathcal M_{9 \times pts().size2()} $ such that ublas::row(Jac,3*(j-1)+i-1) = $\frac{\partial\eta_j}{\partial \xi_i}$

$ d\eta_1/d\xi_i $

-2/( + )

2(1+)/( + )^2

2(1+)/( + )^2

$ d\eta_2/d\xi_i $

0

2/(1-)

2(1+)/(1-)^2

$ d\eta_3/d\xi_i $

0

0

1

Usefull intermediate matrix to simplify the construction

Adding Jacobian contribution

template<uint16_type Dim, uint16_type Degree, typename T, template< class > class StoragePolicy>
static matrix_type Feel::BoundaryAdapted< Dim, Degree, T, StoragePolicy >::evaluate ( points_type const &  __pts)
inlinestatic

evaluate the BoundaryAdapted polynomials at a set of points __pts

  • __pts is a set of points
template<uint16_type Dim, uint16_type Degree, typename T, template< class > class StoragePolicy>
std::string Feel::BoundaryAdapted< Dim, Degree, T, StoragePolicy >::familyName ( ) const
inline
Returns
the familyName()
template<uint16_type Dim, uint16_type Degree, typename T, template< class > class StoragePolicy>
points_type const& Feel::BoundaryAdapted< Dim, Degree, T, StoragePolicy >::points ( ) const
inline

Access to the points of the reference convex associated

template<uint16_type Dim, uint16_type Degree, typename T, template< class > class StoragePolicy>
points_type const& Feel::BoundaryAdapted< Dim, Degree, T, StoragePolicy >::points ( int  f) const
inline

Access to the points associated with the face f


The documentation for this class was generated from the following file:

Generated on Fri Oct 25 2013 14:24:28 for Feel++ by doxygen 1.8.4