Class xlifepp::MorleyTriangle#

class MorleyTriangle : public xlifepp::RefTriangle#

Inheritence diagram for xlifepp::MorleyTriangle:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "1" [label="xlifepp::MorleyTriangle" tooltip="xlifepp::MorleyTriangle" 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::MorleyTriangle:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "16" [label="std::list< std::vector< PolynomialT< real_t > > >" tooltip="std::list< std::vector< PolynomialT< 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 * >"] "4" [label="xlifepp::GeomRefElement" tooltip="xlifepp::GeomRefElement"] "11" [label="xlifepp::Interpolation" tooltip="xlifepp::Interpolation"] "1" [label="xlifepp::MorleyTriangle" tooltip="xlifepp::MorleyTriangle" fillcolor="#BFBFBF"] "15" [label="xlifepp::PolynomialsBasisT< K >" tooltip="xlifepp::PolynomialsBasisT< K >"] "3" [label="xlifepp::RefElement" tooltip="xlifepp::RefElement"] "2" [label="xlifepp::RefTriangle" tooltip="xlifepp::RefTriangle"] "16" -> "17" [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"] "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"] "1" -> "2" [dir=forward tooltip="public-inheritance"] "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"] }

(non conforming H2 element) Parent class: RefTriangle

Public Functions

MorleyTriangle(const Interpolation *interp_p)#

MorleyTriangle constructor for Morley 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 Morley 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#

Morley shape functions w1(s,y)=0.5(x+y-2xy+x^2-y^2) w2(s,y)=0.5(x+y-2xy+y^2-x^2) w3(x,y)=1-x-y+2xy w4(x,y)=x(x-1) w5(x,y)=y(y-1) w6(x,y)=1/sqr(2)((x+y)^2-(x+y))

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 Morley Reference Element point coordinates

void sideNumbering()#

numbering of side D.O.F’s

sideNumbering defines Reference Element local numbers on sides