![]() |
Dune-Functions 2.12-git
|
Loading...
Searching...
No Matches
argyrisbasis.hh
Go to the documentation of this file.
471 void bind( Element const& element, std::array<D, 3>const& averageVertexMeshSize, std::bitset<3>const& edgeOrientation)
568 : public Impl::TransformedFiniteElementMixin<ArgyrisLocalFiniteElement<D,R>, ArgyrisLocalBasisTraits<D, R> >
570 using Base = Impl::TransformedFiniteElementMixin< ArgyrisLocalFiniteElement<D,R>, ArgyrisLocalBasisTraits<D, R> >;
571 friend class Impl::TransformedLocalBasis<ArgyrisLocalFiniteElement<D,R>, ArgyrisLocalBasisTraits<D, R> >;
616 ElementMapper const& elementMapper, std::vector<std::bitset<3> >const& edgeOrientations, Element const &e)
682 theta[i][1][1] = vertexJacobians_[i][0][0] * vertexJacobians_[i][1][1] + vertexJacobians_[i][0][1] * vertexJacobians_[i][1][0];
719 outValues[0] = -15.0/8.0*b_0[1][0]*inValues[18]/l[0] - 15.0/8.0*b_1[1][0]*inValues[19]/l[1] + inValues[0];
720 outValues[1] = (J_0[0][0]*inValues[1] + J_0[0][1]*inValues[2] - 0.4375*b_0[1][0]*inValues[18]*t[0][0] - 0.4375*b_1[1][0]*inValues[19]*t[1][0])/h[0];
721 outValues[2] = (J_0[1][0]*inValues[1] + J_0[1][1]*inValues[2] - 0.4375*b_0[1][0]*inValues[18]*t[0][1] - 0.4375*b_1[1][0]*inValues[19]*t[1][1])/h[0];
722 outValues[3] = (-1.0/32.0*b_0[1][0]*inValues[18]*l[0]*tau[0][0] - 1.0/32.0*b_1[1][0]*inValues[19]*l[1]*tau[1][0] + inValues[3]*theta_0[0][0] + inValues[4]*theta_0[0][1] + inValues[5]*theta_0[0][2])/h[0] /h[0];
723 outValues[4] = (-1.0/32.0*b_0[1][0]*inValues[18]*l[0]*tau[0][1] - 1.0/32.0*b_1[1][0]*inValues[19]*l[1]*tau[1][1] + inValues[3]*theta_0[1][0] + inValues[4]*theta_0[1][1] + inValues[5]*theta_0[1][2])/h[0] /h[0];
724 outValues[5] = (-1.0/32.0*b_0[1][0]*inValues[18]*l[0]*tau[0][2] - 1.0/32.0*b_1[1][0]*inValues[19]*l[1]*tau[1][2] + inValues[3]*theta_0[2][0] + inValues[4]*theta_0[2][1] + inValues[5]*theta_0[2][2])/h[0] /h[0];
725 outValues[6] = (15.0/8.0)*b_0[1][0]*inValues[18]/l[0] - 15.0/8.0*b_2[1][0]*inValues[20]/l[2] + inValues[6];
726 outValues[7] = (J_1[0][0]*inValues[7] + J_1[0][1]*inValues[8] - 0.4375*b_0[1][0]*inValues[18]*t[0][0] - 0.4375*b_2[1][0]*inValues[20]*t[2][0])/h[1];
727 outValues[8] = (J_1[1][0]*inValues[7] + J_1[1][1]*inValues[8] - 0.4375*b_0[1][0]*inValues[18]*t[0][1] - 0.4375*b_2[1][0]*inValues[20]*t[2][1])/h[1];
728 outValues[9] = ((1.0/32.0)*b_0[1][0]*inValues[18]*l[0]*tau[0][0] - 1.0/32.0*b_2[1][0]*inValues[20]*l[2]*tau[2][0] + inValues[9]*theta_1[0][0] + inValues[10]*theta_1[0][1] + inValues[11]*theta_1[0][2])/h[1] /h[1];
729 outValues[10] = ((1.0/32.0)*b_0[1][0]*inValues[18]*l[0]*tau[0][1] - 1.0/32.0*b_2[1][0]*inValues[20]*l[2]*tau[2][1] + inValues[9]*theta_1[1][0] + inValues[10]*theta_1[1][1] + inValues[11]*theta_1[1][2])/h[1] /h[1];
730 outValues[11] = ((1.0/32.0)*b_0[1][0]*inValues[18]*l[0]*tau[0][2] - 1.0/32.0*b_2[1][0]*inValues[20]*l[2]*tau[2][2] + inValues[9]*theta_1[2][0] + inValues[10]*theta_1[2][1] + inValues[11]*theta_1[2][2])/h[1] /h[1];
731 outValues[12] = (15.0/8.0)*b_1[1][0]*inValues[19]/l[1] + (15.0/8.0)*b_2[1][0]*inValues[20]/l[2] + inValues[12];
732 outValues[13] = (J_2[0][0]*inValues[13] + J_2[0][1]*inValues[14] - 0.4375*b_1[1][0]*inValues[19]*t[1][0] - 0.4375*b_2[1][0]*inValues[20]*t[2][0])/h[2];
733 outValues[14] = (J_2[1][0]*inValues[13] + J_2[1][1]*inValues[14] - 0.4375*b_1[1][0]*inValues[19]*t[1][1] - 0.4375*b_2[1][0]*inValues[20]*t[2][1])/h[2];
734 outValues[15] = ((1.0/32.0)*b_1[1][0]*inValues[19]*l[1]*tau[1][0] + (1.0/32.0)*b_2[1][0]*inValues[20]*l[2]*tau[2][0] + inValues[15]*theta_2[0][0] + inValues[16]*theta_2[0][1] + inValues[17]*theta_2[0][2])/h[2] /h[2];
735 outValues[16] = ((1.0/32.0)*b_1[1][0]*inValues[19]*l[1]*tau[1][1] + (1.0/32.0)*b_2[1][0]*inValues[20]*l[2]*tau[2][1] + inValues[15]*theta_2[1][0] + inValues[16]*theta_2[1][1] + inValues[17]*theta_2[1][2])/h[2] /h[2];
736 outValues[17] = ((1.0/32.0)*b_1[1][0]*inValues[19]*l[1]*tau[1][2] + (1.0/32.0)*b_2[1][0]*inValues[20]*l[2]*tau[2][2] + inValues[15]*theta_2[2][0] + inValues[16]*theta_2[2][1] + inValues[17]*theta_2[2][2])/h[2] /h[2];
863 // helper methods to assign each subentity the number of dofs. Used by the LeafPreBasisMapperMixin.
This file provides an implementation of the cubic Hermite finite element in 1 to 3 dimensions.
TrigonometricFunction< K, -cosFactor, sinFactor > derivative(const TrigonometricFunction< K, sinFactor, cosFactor > &f)
Obtain derivative of TrigonometricFunction function.
Definition trigonometricfunction.hh:43
Definition monomialset.hh:19
void interpolate(const B &basis, C &&coeff, const F &f, const BV &bv, const NTRE &nodeToRangeEntry)
Interpolate given function in discrete function space.
Definition interpolate.hh:205
static constexpr IntegralRange< std::decay_t< T > > range(T &&from, U &&to) noexcept
size_type dim() const
static constexpr size_type size()
#define DUNE_THROW(E,...)
MCMGLayout mcmgElementLayout()
MCMGLayout mcmgVertexLayout()
constexpr bool isVertex() const
constexpr bool isTriangle() const
constexpr bool isLine() const
LC LocalCoefficientsType
LI LocalInterpolationType
void update(const GV &gridView)
Function, which evaluates all monomials up to degree maxDegree in a given coordinate.
Definition monomialset.hh:64
SubEntityMapper vertexMapper_
Definition argyrisbasis.hh:918
SubEntityMapper elementMapper_
Definition argyrisbasis.hh:920
std::vector< std::bitset< 3 > > edgeOrientations_
Definition argyrisbasis.hh:921
Node makeNode() const
Create tree node.
Definition argyrisbasis.hh:911
GV GridView
The grid view that the FE basis is defined on.
Definition argyrisbasis.hh:880
std::vector< D > averageVertexMeshSize_
Definition argyrisbasis.hh:919
void update(GridView const &gv)
Update the stored grid view, to be called if the grid has changed.
Definition argyrisbasis.hh:901
ArgyrisPreBasis(const GV &gv)
Constructor for a given grid view object.
Definition argyrisbasis.hh:891
Definition argyrisbasis.hh:786
std::vector< typename GV::ctype > const * averageVertexMeshSize_
Definition argyrisbasis.hh:839
void bind(Element const &e)
Bind to element.
Definition argyrisbasis.hh:821
std::vector< std::bitset< 3 > > const * edgeOrientation_
Definition argyrisbasis.hh:840
typename Impl::ArgyrisLocalFiniteElement< typename GV::ctype, R > FiniteElement
Definition argyrisbasis.hh:792
Element const & element() const
Return current element, throw if unbound.
Definition argyrisbasis.hh:805
FiniteElement finiteElement_
Definition argyrisbasis.hh:835
ArgyrisNode(Mapper const &vertexMapper, Mapper const &elementMapper, std::vector< typename GV::ctype > const &averageVertexMeshSize, std::vector< std::bitset< 3 > > const &edgeOrientation)
Definition argyrisbasis.hh:794
Mapper const * elementMapper_
Definition argyrisbasis.hh:838
FiniteElement const & finiteElement() const
Return the LocalFiniteElement for the element we are bound to.
Definition argyrisbasis.hh:815
Mapper const * vertexMapper_
Definition argyrisbasis.hh:837
unsigned int order() const
The order of the local basis.
Definition argyrisbasis.hh:832
typename GV::template Codim< 0 >::Entity Element
Definition argyrisbasis.hh:791
Definition cubichermitebasis.hh:84
Global basis for given pre-basis.
Definition defaultglobalbasis.hh:53
A generic MixIn class for PreBasis with flat indices computed from a mapper.
Definition leafprebasismappermixin.hh:62
const GridView & gridView() const
Export the stored GridView.
Definition leafprebasismappermixin.hh:95
void update(const GridView &gv)
Update the stored GridView.
Definition leafprebasismappermixin.hh:101
Definition nodes.hh:214
T accumulate(T... args)
T begin(T... args)
T end(T... args)
T max_element(T... args)
T pow(T... args)
T resize(T... args)
