Class xlifepp::ArgyrisTriangle#

class ArgyrisTriangle : public xlifepp::RefTriangle#

Inheritence diagram for xlifepp::ArgyrisTriangle:

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

Collaboration diagram for xlifepp::ArgyrisTriangle:

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

(non conforming H2 element) Parent class: RefTriangle

Public Functions

ArgyrisTriangle(const Interpolation *interp_p)#

ArgyrisTriangle constructor for Argyris reference elements.

Matrix<real_t> affineMap(const GeomMapData&) const#

create the affine transformation matrix mapping reference shape function to any triangle

create the affine transformation matrix mapping reference shape function to any triangle triangle and any related data are handled by the GeomMapData object (have to be set up before) 2D Argyris transformation mapping ReferenceElement shape functions (s) unto current element, from Kirby R.C.

“A general approach to transforming finite elements”.The SMAI journal of computational mathematics, Tome 4 (2018),197-224.doi:10.5802/smai-jcm.33. w1 = s1-a2s5-a3s6 w2 = s2-a1s4+a3s6 w3 = s3+a1s4+a2s5 w4=d1s4 w5=d2s5 w6=d3s6 a1 = (Q1)_12/L1 a2 = (Q2)_12/L2 a3 = (Q3)_12/L3 di=(Qi)_11 Qi = [ni ti]t Jt [nui taui] (ni, ti) outward normal and tangent vector (pi/2 rotation of normal) on edge i of the reference triangle (nui taui) outward normal and tangent vector (pi/2 rotation of normal) on edge i of the current triangle Li length of edge i of the current triangle here edge i is the edge which does not contain vi vertex i=1 : n=(-1,0), t2=(0,-1) => Q12=J12*ny-J22*nx, Q11=-J21*ny-j11*nx i=2 : n=(0,-1), t2=(1,0) => Q12=J11*ny-J21*nx, Q11=-J12*nx-j22*ny i=3 : n1=sqrt(2)/2(1,1), t1=0.5*sqrt(2)(-1,1) => Q12=sqrt(2)/2((J21+J22)*nx-(J11+J12)*ny), Q11=sqrt(2)/2(J11+J12)*nx+(J22+J21)*ny) |1 0 0 0 -a2 -a3| |0 1 0 -a1 0 a3| affine transformation matrix M = |0 0 1 a1 a2 0 | |0 0 0 d1 0 0 | |0 0 0 0 d2 0 | |0 0 0 0 0 d3|

gd: geometric data (contains the inverse of jacobian and accessto length) out: matrix M

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

Argyris shape functions computed from matrix mw, mdx, mdy, mdxx, mdyy, mdxy.

virtual void interpolationData()#

builds interpolation data

interp defines Reference Element interpolation data

inline virtual number_t nbShapeFcts() const#

returns the number of shape functions

void pointCoordinates()#

builds virtual coordinates of moment dofs

pointCoordinates defines Argyris Reference Element point coordinates

void setMatrices()#

build matrices matrices of coefficients of shape functions

coefficient of polynomials (P5) defining shape functions stored in sparse matrices they come from ArgyrisPack developped by Erich Foster, Traian Iliescu, David Wells from Virginia Tech row (dof order) : P(Mi),dxP(Mi),dyP(Mi),dxxP(Mi),dxyP(Mi),dyyP(Mi) i=1,2,3 ; grad(P)(Ni).ni i=1,2,3 col (monomial order) : 1 x y x^2 xy y^2 x^3 x^2y xy^2 y^3 x^4 x^3y x^2y^2 xy^3 y^4 x^5 x^4y x^3y^2 x^2y^3 xy^4 y^5 NOTE: reverse sign of shape function w20, w21 of ArgyrisPack in order to deal with outward normals on every edge

void sideNumbering()#

numbering of side D.O.F’s

sideNumbering defines Reference Element local numbers on sides