Class xlifepp::ArgyrisTriangle#
-
class ArgyrisTriangle : public xlifepp::RefTriangle#
-
Inheritence diagram for xlifepp::ArgyrisTriangle:
Collaboration diagram for xlifepp::ArgyrisTriangle:
(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
-
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
-
ArgyrisTriangle(const Interpolation *interp_p)#