Class xlifepp::LagrangeStdSegment#

class LagrangeStdSegment : public xlifepp::LagrangeSegment#

Inheritance diagram for xlifepp::LagrangeStdSegment:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "2" [label="xlifepp::LagrangeSegment" tooltip="xlifepp::LagrangeSegment"] "1" [label="xlifepp::LagrangeStdSegment" tooltip="xlifepp::LagrangeStdSegment" fillcolor="#BFBFBF"] "4" [label="xlifepp::RefElement" tooltip="xlifepp::RefElement"] "3" [label="xlifepp::RefSegment" tooltip="xlifepp::RefSegment"] "2" -> "3" [dir=forward tooltip="public-inheritance"] "1" -> "2" [dir=forward tooltip="public-inheritance"] "3" -> "4" [dir=forward tooltip="public-inheritance"] }

Collaboration diagram for xlifepp::LagrangeStdSegment:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "17" [label="std::list< std::vector< PolynomialT< real_t > > >" tooltip="std::list< std::vector< PolynomialT< real_t > > >"] "20" [label="std::map< xlifepp::Quadrature *, std::vector< xlifepp::ShapeValues > >" tooltip="std::map< xlifepp::Quadrature *, std::vector< xlifepp::ShapeValues > >"] "18" [label="std::list< T >" tooltip="std::list< T >"] "21" [label="std::map< K, T >" tooltip="std::map< K, T >"] "7" [label="std::vector< T >" tooltip="std::vector< T >"] "8" [label="std::vector< ShapeType >" tooltip="std::vector< ShapeType >"] "6" [label="std::vector< real_t >" tooltip="std::vector< real_t >"] "22" [label="std::vector< std::pair< ShapeType, std::vector< number_t > > >" tooltip="std::vector< std::pair< ShapeType, std::vector< number_t > > >"] "10" [label="std::vector< std::vector< int_t > >" tooltip="std::vector< std::vector< int_t > >"] "9" [label="std::vector< std::vector< number_t > >" tooltip="std::vector< std::vector< number_t > >"] "11" [label="std::vector< xlifepp::GeomRefElement * >" tooltip="std::vector< xlifepp::GeomRefElement * >"] "13" [label="std::vector< xlifepp::Interpolation * >" tooltip="std::vector< xlifepp::Interpolation * >"] "19" [label="std::vector< xlifepp::PolynomialsBasisT >" tooltip="std::vector< xlifepp::PolynomialsBasisT >"] "14" [label="std::vector< xlifepp::RefDof * >" tooltip="std::vector< xlifepp::RefDof * >"] "15" [label="std::vector< xlifepp::RefElement * >" tooltip="std::vector< xlifepp::RefElement * >"] "5" [label="xlifepp::GeomRefElement" tooltip="xlifepp::GeomRefElement"] "12" [label="xlifepp::Interpolation" tooltip="xlifepp::Interpolation"] "2" [label="xlifepp::LagrangeSegment" tooltip="xlifepp::LagrangeSegment"] "1" [label="xlifepp::LagrangeStdSegment" tooltip="xlifepp::LagrangeStdSegment" fillcolor="#BFBFBF"] "16" [label="xlifepp::PolynomialsBasisT< K >" tooltip="xlifepp::PolynomialsBasisT< K >"] "4" [label="xlifepp::RefElement" tooltip="xlifepp::RefElement"] "3" [label="xlifepp::RefSegment" tooltip="xlifepp::RefSegment"] "17" -> "18" [dir=forward tooltip="template-instance"] "20" -> "21" [dir=forward tooltip="template-instance"] "8" -> "7" [dir=forward tooltip="template-instance"] "6" -> "7" [dir=forward tooltip="template-instance"] "22" -> "7" [dir=forward tooltip="template-instance"] "10" -> "7" [dir=forward tooltip="template-instance"] "9" -> "7" [dir=forward tooltip="template-instance"] "11" -> "7" [dir=forward tooltip="template-instance"] "13" -> "7" [dir=forward tooltip="template-instance"] "19" -> "7" [dir=forward tooltip="template-instance"] "14" -> "7" [dir=forward tooltip="template-instance"] "15" -> "7" [dir=forward tooltip="template-instance"] "5" -> "6" [dir=forward tooltip="usage"] "5" -> "8" [dir=forward tooltip="usage"] "5" -> "9" [dir=forward tooltip="usage"] "5" -> "10" [dir=forward tooltip="usage"] "5" -> "11" [dir=forward tooltip="usage"] "12" -> "13" [dir=forward tooltip="usage"] "2" -> "3" [dir=forward tooltip="public-inheritance"] "1" -> "2" [dir=forward tooltip="public-inheritance"] "1" -> "22" [dir=forward tooltip="usage"] "16" -> "17" [dir=forward tooltip="public-inheritance"] "4" -> "5" [dir=forward tooltip="usage"] "4" -> "12" [dir=forward tooltip="usage"] "4" -> "14" [dir=forward tooltip="usage"] "4" -> "15" [dir=forward tooltip="usage"] "4" -> "9" [dir=forward tooltip="usage"] "4" -> "16" [dir=forward tooltip="usage"] "4" -> "19" [dir=forward tooltip="usage"] "4" -> "20" [dir=forward tooltip="usage"] "3" -> "4" [dir=forward tooltip="public-inheritance"] }

child class of LagrangeHexahedron with standard interpolation

Public Functions

LagrangeStdSegment(const Interpolation *interp_p)#

constructor by interpolation

Lagrange segment Reference Element for Pk interpolation at equidistant nodes.

inline ~LagrangeStdSegment()#

destructor

virtual void computeShapeFunctions()#

compute polynomials representation

compute shape functions as polynomials using general algorithm

virtual void computeShapeValues(std::vector<real_t>::const_iterator it_pt, ShapeValues &shv, const bool withDeriv = true, const bool with2Deriv = false) const#

compute shape functions at given point

shapeFunctions defines Lagrange Reference Element shape functions

Shape functions (Lagrange polynomials at n0=1,n1=0,n2=11/n,n3=12/n,nn=1/n) with wi(nj)=δij(0<=i,j<=n), are given by

w0=nn1(n1)!xj=1,n1(xj/n)=x(n1)!j=1,n1(nxj)w1=(1)nnn1Cnn(x1)x1/n1x(n1)/nn1=(1)nnn1(n1)!(x1)j=1,n1(xj/n)=(1)nx1(n1)!j=1,n1(nxj)w2=(1)nn1Cn1x(x1)(x1/n)1(x(j1)/n)(j1)(xj)/n)j(x(j+1)/n)(j+1)(x(n2)/n)(n2)=(1)nn1(n1)!n!((n2)2!)j=0,n&j!=n1(xj/n)=(1)nx(x1)((n2)2!)j=1,n2(nxj)i=3,nwi=(1)i1nn1Cni1x(x1)(x1/n)1(x(k1)/n)(k1)(x(k+1)/n)(k+1)(x(n1)/n)(n1)=(1)i1nn1(n1)!n!((ni)i!)j=1,n1&j!=k(xj/n)=(1)i1nx(x1)((ni)i!)j=1,n1&j!=k(nxj)

where k=n+1i and Cnj=n!(nj)!j! are Pascal’s triangle binomial coefficients.

Examples:

  • n=1

    • w0=110x=x

    • w1=11(x1)=1x

  • n=2

    • w0=121/1x(x1/2)=x(2x1)

    • w1=121/1(x1)(x1/2)=(x1)(2x1)

    • w2=221/1x(x1)=4x(x1)

  • n=3

    • w0=132/2x(x1/3)(x2/3)=1/2x(3x1)(3x2)

    • w1=132/2(x1)(x1/3)(x2/3)=1/2(x1)(3x1)(3x2)

    • w2=332/2x(x1)(x1/3)=9/2x(x1)(3x1)

    • w3=332/2x(x1)(x2/3)=9/2x(x1)(3x2)

    Note: shv has to be sized before

inline virtual const splitvec_t &getO1splitting() const#

returns reference to splitting scheme computed by splitO1

virtual void pointCoordinates()#

point coordinates (!) (equidistant on [0,1])

pointCoordinates defines Lagrange Reference Element point coordinates

Local numbering of Lagrange Pk 1D elements

--1-- 2---1  2---3---1  2---4---3---1  2---5---4---3---1  2---6---5---4---3---1
 k=0   k=1      k=2          k=3              k=4                  k=5