11
    Iso-P Quadrilateral
         Ring Elements
         11–1
Chapter 11: ISO-P QUADRILATERAL RING ELEMENTS                                              11–2
                              TABLE OF CONTENTS
                                                                                    Page
 §11.1. INTRODUCTION                                                                11–3
 §11.2. ORGANIZATION OF ELEMENT MODULES                                             11–3
 §11.3. TWO-DIMENSIONAL 2D GAUSS RULES                                              11–4
 §11.4. THE 4-NODE QUADRILATERAL RING ELEMENT                                       11–5
        §11.4.1. Shape Function Evaluation . . . . . . .         . .    . .    . . 11–5
        §11.4.2. Element Stiffness    . . . . . . . . . .         .    . .    . .   11–6
        §11.4.3. Stiffness Test    . . . . . . . . . . .         . .    . .    . . 11–7
        §11.4.4. Test of Rectangular Geometry    . . . . . .      .    . .    . .   11–7
        §11.4.5. Consistent Node Forces for Body Force Field .   . .    . .    . . 11–9
        §11.4.6. Recovery of Element Corner Stresses . . . .      .    . .    . . 11–11
 §11.5. THE 9-NODE QUADRILATERAL RING ELEMENT                                      11–14
 §11.6. THE 16-NODE QUADRILATERAL RING ELEMENT                                     11–14
 EXERCISES        . . . . . . . . . . . . . . . . . . . . . . 11–15
                                         11–2
11–3                                          §11.2     ORGANIZATION OF ELEMENT MODULES
§11.1. INTRODUCTION
This Chapter illustrates the computer implementation of isoparametric quadrilateral elements for
the axisymmetric problem. These are called ring elements. Triangles, which present some pro-
gramming quirks, are covered in the next Chapter.
The Chapter covers 4-node, 9-node and 16-node quadrilaterals, with most detail devoted to the
4-node model. It describes the computation of the element stiffness matrix, consistent node force
vector for a body force field and recovery of element stresses from displacements.
§11.2. ORGANIZATION OF ELEMENT MODULES
We consider the implementation of the 4-node blinear quadrilateral for axisymmetric analysis. The
element cross section is depicted in Figure 11.1.
                                                             η
                          z                                      3 (r 3 , z 3)
                                                       η=1
                                     4 (r 4 , z 4)
                                                                      ξ=1
                                          ξ=−1                                   ξ
                                       1 (r 1 , z 1)    η=−1
                                                                        2 (r 2 , z 2)
                     Figure 11.1. The 4-node bilinear quadrilateral ring element.
For 2D and 3D elements iso-P elements it is convenient to break up the implementation into
application dependent and application independent modules, as sketched in Figure 11.2. The
application independent modules can be “reused” in other FEM applications, for example to form
thermal, fluid or electromagnetic elements.
For the 4-node quadrilateral studied here, the subdivision of Figure 11.2 is done through the fol-
lowing modules:
Stiffness4NodePlaneStressQuad - forms Ke of 4-node bilinear quad in plane stress
   QuadGaussRuleInfo -          returns Gauss quadrature product rules of order 1-4
   IsoQuad4ShapeFunctions -     evaluates shape functions and their x/y derivatives
These modules are described in further detail in the following subsections, in a “bottom up” fashion.
                                                     11–3
Chapter 11: ISO-P QUADRILATERAL RING ELEMENTS                                                     11–4
                                        APPLICATION DEPENDENT
                                                   Element
                                              Stiffness Module
                                        Shape             Gauss Quadrature
                                   Function Module       Information Module
                                      APPLICATION INDEPENDENT
                        Figure 11.2. Organization of element stiffness modules.
             QuadGaussRuleInfo[{rule_,numer_},point_]:= Module[
              {ξ ,η,p1,p2,i1,i2,w1,w2,k,info=Null},
               If [Length[rule]==2, {p1,p2}=rule,p1=p2=rule];
               If [Length[point]==2,{i1,i2}=point,
                    k=point; i2=Floor[(k-1)/p1]+1; i1=k-p1*(i2-1) ];
               {ξ ,w1}= LineGaussRuleInfo[{p1,numer},i1];
               {η,w2}= LineGaussRuleInfo[{p2,numer},i2];
               info={{ξ ,η},w1*w2};
                If [numer,Return[N[info]],Return[Simplify[info]]];
             ];
             LineGaussRuleInfo[{rule_,numer_},point_]:= Module[
                {g2={-1,1}/Sqrt[3],w3={5/9,8/9,5/9},
                 g3={-Sqrt[3/5],0,Sqrt[3/5]},
                 w4={(1/2)-Sqrt[5/6]/6,(1/2)+Sqrt[5/6]/6,
                     (1/2)+Sqrt[5/6]/6,(1/2)-Sqrt[5/6]/6},
                 g4={-Sqrt[(3+2*Sqrt[6/5])/7],-Sqrt[(3-2*Sqrt[6/5])/7],
                      Sqrt[(3-2*Sqrt[6/5])/7],Sqrt[(3+2*Sqrt[6/5])/7]},
                 i=point,info=Null},
                If [rule==1,info={0,2}];
                If [rule==2,info={g2[[i]],1}];
                If [rule==3,info={g3[[i]],w3[[i]]}];
                If [rule==4,info={g4[[i]],w4[[i]]}];
                If [numer,Return[N[info]],Return[Simplify[info]]];
             ];
          Figure 11.3. Module to get Gauss-product quadrature information for a quadrilateral.
§11.3. TWO-DIMENSIONAL 2D GAUSS RULES
Module QuadGaussRuleInfo, listed in Figure 11.3, implements the two-dimensional product
Gauss rules with 1 through 4 points in each direction. The number of points in each direction may
be the same or different.
If the rule has the same number of points p in both directions the module is called in either of two
ways:
         { { xii,etaj },wij }=QuadGaussRuleInfo[{ p,numer }, { i,j }]
                                                                                                 (11.1)
         { { xii,etaj },wij }=QuadGaussRuleInfo[{ p,numer }, k ]
                                                     11–4
11–5                                         §11.4    THE 4-NODE QUADRILATERAL RING ELEMENT
The first form is used to get information for point {i, j} of the p × p rule, in which 1 ≤ i ≤ p and
1 ≤ j ≤ p. The second form specifies that point by a “visiting counter” k that runs from 1 through
p 2 ; if so {i, j} are internally extracted1 as j=Floor[(k-1)/p]+1; i=k-p*(j-1).
If the integration rule has p1 points in the ξ direction and p2 points in the η direction, the module
may be called also in two ways:
          { { xii,etaj },wij }=QuadGaussRuleInfo[{ { p1,p2 },numer }, { i,j }]
                                                                                               (11.2)
          { { xii,etaj },wij }=QuadGaussRuleInfo[{ { p1,p2 },numer }, k ]
The meaning of the second argument is as follows. In the first form i runs from 1 to p1 and j from 1 to
p2 . In the second form k runs from 1 to p1 p2 ; if so i and j are extracted by j=Floor[(k-1)/p1]+1;
i=k-p1*(i-1).
In all four forms flag numer is set to True if numerical information is desired and to False if exact
information is desired. The module returns ξi and η j in xii and etaj, respectively, and the weight
product wi w j in wij.
§11.4. THE 4-NODE QUADRILATERAL RING ELEMENT
                Quad4IsoPShapeFunDer[ncoor_,qcoor_]:= Module[
                  {Nf,dNr,dNz,dNξ ,dNη,i,J11,J12,J21,J22,Jdet,ξ ,η,
                   r1,r2,r3,r4,z1,z2,z3,z4,r,z},
                  {ξ ,η}=qcoor; {{r1,z1},{r2,z2},{r3,z3},{r4,z4}}=ncoor;
                   Nf={(1-ξ )*(1-η),(1+ξ )*(1-η),(1+ξ )*(1+η),(1-ξ )*(1+η)}/4;
                   dNξ ={-(1-η), (1-η),(1+η),-(1+η)}/4;
                   dNη= {-(1-ξ ),-(1+ξ ),(1+ξ ), (1-ξ )}/4;
                   r={r1,r2,r3,r4}; z={z1,z2,z3,z4};
                   J11=dNξ .r; J12=dNξ .z; J21=dNη.r; J22=dNη.z;
                   Jdet=Simplify[J11*J22-J12*J21];
                   dNr= ( J22*dNξ -J12*dNη)/Jdet; dNr=Simplify[dNr];
                   dNz= (-J21*dNξ +J11*dNη)/Jdet; dNz=Simplify[dNz];
                   Return[{Nf,dNr,dNz,Jdet}]
                ];
                     Figure 11.4. Shape function module for 4-node bilinear quadrilateral.
§11.4.1. Shape Function Evaluation
Quad4IsoPShapeFunDer is an application independent module that computes the shape functions
Ni(e) , i = 1, 2, 3, 4 and its global partial derivatives at a point of coordinates {ξ, η}. The module
is listed in Figure 11.4. It is identical to that used in the IFEM course except for relabeling of
the coordinates {x, y} to {r, z}. The arguments of the module are the {x, y} quadrilateral corner
coordinates, which are passed in ncoor, and the two quadrilateral coordinates {ξ, η}, which are
passed in qcoor.
1   Indices i and j are denoted by i1 and i2, respectively, inside the module.
                                                           11–5
Chapter 11: ISO-P QUADRILATERAL RING ELEMENTS                                                     11–6
          Quad4IsoPRingStiffness[ncoor_,Emat_,Kfac_,options_]:=
            Module[{k,p=2,numer=False,qcoor,w,c,N1,N2,N3,N4,
              dNr1,dNr2,dNr3,dNr4,dNz1,dNz2,dNz3,dNz4,Jdet,
              r1,r2,r3,r4,z1,z2,z3,z4,rk,Be,Ke=Table[0,{8},{8}],
              modname="Quad4IsoPRingStiffness: "},
            If [Length[options]==2,{numer,p}=options,{numer}=options];
            If [p<1||p>4,Print[modname,"p out of range"];Return[Null]];
            {{r1,z1},{r2,z2},{r3,z3},{r4,z4}}=ncoor;
            For [k=1,k<=p*p,k++,
                {qcoor,w}= QuadGaussRuleInfo[{p,numer},k];
                {{N1,N2,N3,N4},{dNr1,dNr2,dNr3,dNr4},{dNz1,dNz2,
                dNz3,dNz4},Jdet}=Quad4IsoPShapeFunDer[ncoor,qcoor];
                rk=r1*N1+r2*N2+r3*N3+r4*N4; c=Kfac*w*Jdet*rk;
                Be={{dNr1,   0,dNr2,   0,dNr3,   0,dNr4,   0},
                    {   0,dNz1,   0,dNz2,   0,dNz3,   0,dNz4},
                    {N1/rk, 0,N2/rk, 0,N3/rk, 0,N4/rk, 0},
                    {dNz1,dNr1,dNz2,dNr2,dNz3,dNr3,dNz4,dNr4}};
                If [numer,Be=N[Be]];
                Ke+=Simplify[c*Transpose[Be].(Emat.Be)];
                ]; Return[Ke]
             ];
          Figure 11.5. Element stiffness formation module for 4-node iso-P quadrilateral ring.
The quadrilateral coordinates define the element location at which the shape functions and their
derivatives are to be evaluated. For the stiffness formation these are Gauss points, but for strain and
stress computations these may be other points, such as corner nodes.
Quad4IsoPShapeFunDer returns as function value the two-level list { Nf,dNr,dNz,Jdet }, in
which the first three are 4-entry arrays. List Nf collects the shape function values, dNr the shape
function r -derivatives, dNz the shape function z-derivatives, and Jdet is the Jacobian determinant.
§11.4.2. Element Stiffness
Module Quad4IsoPRingStiffness computes the stiffness matrix of a four-noded isoparametric
quadrilateral ring element to model an axisymmetric solid. The module logic is listed in Figure
11.5. The logic follows the procudure described in the previous chapter.
The arguments of the module are:
  ncoor              Quadrilateral node coordinates arranged in two-dimensional list form:
                     { { r1,z1 },{ r2,z2 },{ r3,z3 },{ r4,z4 } }.
  Emat               The 4 × 4 matrix of elastic moduli:
                                                                          
                                                   E 11     E 12 E 13 E 14
                                                  E        E 22 E 23 E 24 
                                              E =  12                     ,                    (11.3)
                                                   E 13     E 23 E 33 0
                                                   E 13     E 23 0 E 44
                     Note that E 34 = 0 to satisfz axisymmetry assumptions. If the material is
                                                 11–6
11–7                                     §11.4    THE 4-NODE QUADRILATERAL RING ELEMENT
                       isotropic:
                                                                                                 
                                                          1+ν                ν  ν              0
                                               E         ν                  1  ν              0 
                                     E=                                                          .    (11.4)
                                        (1 + ν)(1 − 2ν)    ν                 ν 1+ν             0
                                                           0                 0  0          1
                                                                                           2
                                                                                               −ν
  Kfac                 A ring-span factor by which the stiffness matrix will be scaled. Typically
                       Kfac=1 to take the ring element to span one radian, Kfac=2π to take a span of
                       a complete circle.
  options              Processing options. This list may contain two items: { numer,p } or one:
                       { numer }.
                       numer is a logical flag with value True or False. If True, the computa-
                       tions are forced to proceed in floating point arithmetic. For symbolic or exact
                       arithmetic work set numer to False.
                       p specifies the Gauss product rule to have p points in each direction. It may
                       be 1 through 4. For rank sufficiency, p must be 2 or higher. If p is 1 the element
                       will be rank deficient by two. If omitted p = 2 is assumed.
The module returns Ke as an 8 × 8 symmetric matrix pertaining to the following arrangement of
nodal displacements:
                        u(e) = [ u r 1   u z1   ur 2   u z2   ur 3   u z3   ur 4   u z4 ]T .            (11.5)
§11.4.3. Stiffness Test
The stiffness module is tested on the rectangular geometry identified in Figure 11.6. It is a rectangle
dimensioned a × b with sides parallel to the {r, z} axes. The distance of the leftmost side to the z
axis is d. The material is isotropic with modulus E and Poisson’s ratio ν.
                            Isotropic material
                            modulus E,                                       z
                            Poisson's ratio ν
    z              4                     3                                               Ring element
                   1                     2
           d                 a
                          Figure 11.6. Test quadrilateral ring element geometry.
                                                       11–7
Chapter 11: ISO-P QUADRILATERAL RING ELEMENTS                                                  11–8
     Quad4IsoPRingBodyForces[ncoor_,Emat_,Kfac_,options_,bfor_]:=
        Module[{k,m,p=2,numer=False,qcoor,w,c,N1,N2,N3,N4,dNr,dNz,
          Jdet,r1,r2,r3,r4,z1,z2,z3,z4,rk,br,bz,br1,bz1,br2,bz2,
          br3,bz3,br4,bz4,brc,bzc,bk,fe=Table[0,{8}],
          modname="Quad4IsoPRingBodyForces: "}, m=Length[bfor];
        If [Length[options]==2,{numer,p}=options,{numer}=options];
        If [p<1||p>4,Print[modname,"p out of range"];Return[Null]];
        If [m==2,{br,bz}=bfor;br1=br2=br3=br4=br;bz1=bz2=bz3=bz4=bz];
        If [m==4,{{br1,bz1},{br2,bz2},{br3,bz3},{br4,bz4}}=bfor];
        {{r1,z1},{r2,z2},{r3,z3},{r4,z4}}=ncoor;
        For [k=1,k<=p*p,k++,
            {qcoor,w}= QuadGaussRuleInfo[{p,numer},k];
            {{N1,N2,N3,N4},dNr,dNz,Jdet}=Quad4IsoPShapeFunDer[ncoor,qcoor];
            rk=r1*N1+r2*N2+r3*N3+r4*N4; c=Kfac*w*Jdet*rk;
            brk=br1*N1+br2*N2+br3*N3+br4*N4;
            bzk=bz1*N1+bz2*N2+bz3*N3+bz4*N4;
            bk={N1*brk,N1*bzk,N2*brk,N2*bzk,N3*brk,N3*bzk,N4*brk,N4*bzk};
            If [numer,bk=N[bk]]; fe+=c*bk;
            ]; Return[Simplify[fe]]
     ];
                   Figure 11.8. Driver for stiffness calculation of trapezoidal element
                                of Figure 11.6(b) for four Gauss integration rules.
§11.4.4. Test of Rectangular Geometry
The script of Figure 11.8 compute and print the stiffness of the rectangular element shown in Figure
11.6, for E = 96, ν = 1/3, a = 4, b = 2 d = 0 and Kfac=1. Nodes 1 and 2 sit on the z axes. The
value of p is changed in a loop. The flag numer is set to True to use floating-point computation for
speed (see Remark 11.1). The computed entries of K(e) are exact integers for all values of p:
                                                                                         
                           72   18  36  −18 −36   −18   0    18
                          18  153 −54  135 −90  −153 −18 −135  
                         36 −54 144 −90           54 −36    90 
                                             72                
                         −18      −90      −54  −135     −153  
                       =                                       
                               135      153            18
                K(e)     −36 −90
                 1×1
                                   72  −54  144   90  36    54 
                                                                
                         −18 −153  54 −135   90  153  18   135 
                         0 −18 −36      18   36   18  72  −18
                                                                
                           18 −135  90 −153   54  135 −18  153
                                                                                         
                          168 −12    24   12               −24  −36   48   36
                         −12  108 −24    84               −72 −102 −36   −90 
                         24 −24        −120                      72 −24   72 
                                   216                      0                 
                         12    84 −120                    −72 −282   36 −102 
                       =                                                      
                                         300
                K(e)     −24 −72
                 2×2
                                     0 −72                216  120   24    24 
                                                                               
                         −36 −102   72 −282               120   300 −12   84 
                         48 −36 −24      36                24  −12 168     12
                                                                               
                           36  −90   72 −102                24    84  12  108
                                                  11–8
11–9                                    §11.4   THE 4-NODE QUADRILATERAL RING ELEMENT
                                                                                   
                          232 −12    24   12                −24  −36   80   36
                         −12  108 −24    84                −72 −102 −36   −90 
                         24 −24    216 −120                       72 −24   72 
                                                             0                 
                         12    84 −120                     −72 −282   36 −102 
                       =                                                       
                                         300
                K(e)     −24 −72
                 3×3
                                     0  −72                216  120   24    24 
                                                                                
                         −36 −102   72 −282                120   300 −12   84 
                         80 −36 −24      36                 24  −12 232     12
                                                                                
                           36  −90   72 −102                 24    84  12  108
                                                                                   
                          280 −12    24   12                −24  −36 104     36
                         −12  108 −24    84                −72 −102 −36   −90 
                         24 −24    216 −120                       72 −24   72 
                                                             0                 
                         12       −120                     −72 −282   36 −102 
                       =                                                       
                                84       300
                K(e)     −24 −72
                 4×4
                                     0  −72                216  120   24    24 
                                                                                
                         −36 −102   72 −282                120   300 −12   84 
                         104 −36 −24     36                 24  −12 280     12
                                                                                
                           36  −90   72 −102                 24    84  12  108
As can be seen entries change substantially in going from p = 1 to p = 2. From then on only four
entries, associated with the r stiffness at nodes 1 and 4, change. The eigenvalues of these matrices
are:
       Rule     Eigenvalues of K(e) for varying integration rule
       1×1      667.794       180.000   124.206   72.000     0         0         0        0
       2×2      745.201       261.336   248.750   129.451    100.389   88.598    10.275   0
       3×3      745.446       330.628   266.646   133.236    126.343   98.690    11.011   0
       4×4      745.716       397.372   272.092   144.542    135.004   101.908   11.365   0     (11.6)
The stiffness matrix computed by the one-point rule is rank deficient by three. For p = 2 and up it has
the correct rank of 7. The eigenvalues do not change appreciably after p = 2. Because the nonzero
eigenvalues measure the internal energy taken up by the element in deformation eigenmodes, it can
be seen that raising the order of the integration stiffens the element.
§11.4.5. Consistent Node Forces for Body Force Field
The module Quad4IsoPRingBodyForces listed in Figure 11.8 computes the consistent force
associated with a body force field b	 = {bx , b y } given over a four-node iso-P quadrilateral in plane
stress. The field is specified per unit of volume in componentwise form.
For example if the element is subjected to a gravity acceleration field g due to self-weight in the
−z direction, br = 0 and bz = −ρg, where ρ is the mass density. If the element rotates at constant
angular velocity ω (radians per second) around z, thenbr = −ρω2r and bz = 0.
The arguments of the module are:
  ncoor             As in Quad4IsoPRingStiffness
  Emat              Not used: a dummy argument kept as placeholder.
                                                  11–9
Chapter 11: ISO-P QUADRILATERAL RING ELEMENTS                                                      11–10
     Quad4IsoPRingBodyForces[ncoor_,Emat_,Kfac_,options_,bfor_]:=
        Module[{k,m,p=2,numer=False,qcoor,w,c,N1,N2,N3,N4,dNr,dNz,
          Jdet,r1,r2,r3,r4,z1,z2,z3,z4,rk,br,bz,br1,bz1,br2,bz2,
          br3,bz3,br4,bz4,brc,bzc,bk,fe=Table[0,{8}],
          modname="Quad4IsoPRingBodyForces: "}, m=Length[bfor];
        If [Length[options]==2,{numer,p}=options,{numer}=options];
        If [p<1||p>4,Print[modname,"p out of range"];Return[Null]];
        If [m==2,{br,bz}=bfor;br1=br2=br3=br4=br;bz1=bz2=bz3=bz4=bz];
        If [m==4,{{br1,bz1},{br2,bz2},{br3,bz3},{br4,bz4}}=bfor];
        {{r1,z1},{r2,z2},{r3,z3},{r4,z4}}=ncoor;
        For [k=1,k<=p*p,k++,
            {qcoor,w}= QuadGaussRuleInfo[{p,numer},k];
            {{N1,N2,N3,N4},dNr,dNz,Jdet}=Quad4IsoPShapeFunDer[ncoor,qcoor];
            rk=r1*N1+r2*N2+r3*N3+r4*N4; c=Kfac*w*Jdet*rk;
            brk=br1*N1+br2*N2+br3*N3+br4*N4;
            bzk=bz1*N1+bz2*N2+bz3*N3+bz4*N4;
            bk={N1*brk,N1*bzk,N2*brk,N2*bzk,N3*brk,N3*bzk,N4*brk,N4*bzk};
            If [numer,bk=N[bk]]; fe+=c*bk;
            ]; Return[Simplify[fe]]
     ];
     Figure 11.8. Module for computation of consistent node forces from a given body force field.
  Kfac             As in Quad4IsoPRingStiffness
  bfor             Body forces per unit volume. Specified as a two-item one-dimensional list:
                   { br,bz },
                   or as a four-entry two-dimensional list:
                   { br1,bz1 },{ br2,bz2 }, { br3,bz3 },{ br4,bz4 }.
                   In the first form the body force field is taken to be constant over the element.
                   The second form assumes body forces to vary over the element and specified
                   by values at the four corners, from which the field is interpolated bilinearly.
         ClearAll[Em,Ν,a,b,d,h,p,num];
         a=4; b=2; d=0; Kfac=2*Pi; Kfac=1; p=2;
         ncoor={{d,0},{a+d,0},{a+d,b},{d,b}}; num=False;
         fe=Quad4IsoPRingBodyForces[ncoor,Emat,Kfac,{num,p},9*{br,bz}];
         Print["fe =",fe];
         fe=Quad4IsoPRingBodyForces[ncoor,Emat,Kfac,{num,p},
           9*{{a*br,bz},{(a+d)*br,bz},{(a+d)*br,bz},{d*br,bz}}];
         Print["fe =",fe];
                        Figure 11.9. Test statements for body force module.
The module returns fe as an 8×1 one dimensional array arranged { fr1,fz1,fr2,fz2,fr3,fz3,
fr4,fz4 } to represent the vector
                     f(e) = [ fr 1   f z1   fr 2   f z2    fr 3   f z3   fr 4   f z4 ]T .          (11.7)
                                                   11–10
11–11                                §11.4   THE 4-NODE QUADRILATERAL RING ELEMENT
           Quad4IsoPRingStresses[ncoor_,Emat_,Kfac_,options_,ue_]:=
             Module[{k,m,numer=False,qcoor,w,c,N1,N2,N3,N4,
                dNr1,dNr2,dNr3,dNr4,dNz1,dNz2,dNz3,dNz4,Jdet,
                r1,r2,r3,r4,z1,z2,z3,z4,rk,Be,recovery="D",
                sigp,qctab={{-1,-1},{1,-1},{1,1},{-1,1}},
                TG={{1+Sqrt[3]/2,-1/2, 1-Sqrt[3]/2,-1/2},
                    {-1/2, 1+Sqrt[3]/2,-1/2,1-Sqrt[3]/2},
                    { 1-Sqrt[3]/2,-1/2,1+Sqrt[3]/2,-1/2},
                    {-1/2, 1-Sqrt[3]/2,-1/2,1+Sqrt[3]/2}},
                sige=Table[0,{4},{3}]},
             m=Length[options]; If [m>0,numer=options[[1]]];
             If [m>1,recovery= options[[2]]];
             If [recovery=="G", qctab=qctab/Sqrt[3]];
             If [numer,qctab=N[qctab];TG=N[TG]];
             {{r1,z1},{r2,z2},{r3,z3},{r4,z4}}=ncoor;
             For [k=1,k<=Length[sige],k++, qcoor=qctab[[k]];
                  If [numer, qcoor=N[qcoor]];
                  {{N1,N2,N3,N4},{dNr1,dNr2,dNr3,dNr4},{dNz1,dNz2,
                  dNz3,dNz4},Jdet}=Quad4IsoPShapeFunDer[ncoor,qcoor];
                  rk=r1*N1+r2*N2+r3*N3+r4*N4;
                  Be={{dNr1,   0,dNr2,   0,dNr3,   0,dNr4,   0},
                      {   0,dNz1,   0,dNz2,   0,dNz3,   0,dNz4},
                      {N1/rk, 0,N2/rk, 0,N3/rk, 0,N4/rk, 0},
                      {dNz1,dNr1,dNz2,dNr2,dNz3,dNr3,dNz4,dNr4}};
                  If [numer,Be=N[Be]];
                  sige[[k]]=Simplify[Emat.(Be.ue)] ];
             If [recovery=="G", sigp=sige; sige=TG.sigp];
             Return[Simplify[sige]];
             ];
           Figure 11.10. Module for recovery of element corner stresses from displacements.
Running the test statements shown in Figure 11.9 (the factor of 9 in the supplied forces are to get
exact integer output) gives
                 f(e) = [ 24br 24bz 48br 48bz 48br 48bz 24br 24bz ]T ,                        (11.8)
                f(e) = [ 80br 24bz 176br 48bz 160br 48bz 64br 24bz ]T .                       (11.9)
§11.4.6. Recovery of Element Corner Stresses
A stress computation module is shown in Figure 11.10. The arguments of the module are:
The arguments of the module are:
  ncoor             As in Quad4IsoPRingStiffness
  Emat              As in Quad4IsoPRingStiffness
  Kfac              Not used: a dummy argument kept as placeholder.
  ue                The 8 corner displacements components. These may be specified as a 8-entry
                    one-dimensional list form:
                    { ur1,uz1, ur2,uz2, ur3,ur3, ur4,uz4 },
                                                11–11
Chapter 11: ISO-P QUADRILATERAL RING ELEMENTS                                                                                                    11–12
                        or as a 4-entry two-dimensional list:
                        { ur1,uz1 },{ ur2,uz2 },{ ur3,uz3 },{ ur4,uz4 }.
The module returns the corner stresses stored in a 4-entry, two-dimensional list:
{ { sigrr1,sigzz1,sigtt1,sigrz1 }, { sigrr2,sigzz2,sigtt2,sigrz2 }, { sigrr3,
sigzz3,sigtt3,sigrz3 }, { sigrr4,sigzz4,sigtt4,sigrz4 } } to represent the array of cor-
ner stresses, stored row-wise:
                                                                 
                                         σrr 1 σzz1 σθ θ 1 σr z1
                                       σ       σzz2 σθ θ 2 σr z2 
                               σ (e) =  rr 2                                    (11.10)
                                         σrr 3 σzz3 σθ θ 3 σr z3
                                         σrr 4 σzz4 σθ θ 4 σr z4
          ClearAll[Em,ν,a,b,d,p,num,err,ezz,grz,ur,uz];
          Em=100; ν=0; a=5; b=2; err=1/10; ezz=-5/100; grz=4/100;
          ur[r_,z_]:=err*r; uz[r_,z_]:=ezz*z+grz*r;
          ncoor={{d,0},{a+d,0},{a+d,b},{d,b}}; num=False;
          Emat=Em/((1+ν)*(1-2*ν))*{{1+ν,ν,ν,0},{ν,1+ν,ν,0},
                   {ν,ν,1+ν,0},{0,0,0,1/2-ν}};
                   Print["Emat=",Emat//MatrixForm];
          ue={}; For [n=1,n<=4,n++,{rn,zn}=ncoor[[n]]; urn=ur[rn,zn];
                 uzn=uz[rn,zn];AppendTo[ue,urn]; AppendTo[ue,uzn] ];
          Print["ue=",ue];
          sige=Quad4IsoPRingStresses[ncoor,Emat,Kfac,{num,"D"},ue];
          Print["corner stresses=",sige//MatrixForm];
                            Figure 11.11. Test statements for stress recovery module.
                   100
                  
                         0   0  0                             
                                                              
                  
                  
                  
                                                              
                                                              
                                                              
                  
             Emat
                     0  100  0  0                             
                                                              
                  
                                                             
                                                              
                  
                  
                    0   0  100 0                             
                                                              
                                                              
                                                             
                   0    0   0  50                            
                    d         d        5d            5d            5d               1        5d             d           1         d
             ue  ,  ,  ,  ,  ,     ,  ,     
                   10        25          10             25             10             10          25           10          10        25
                              10                         5      10     2   
                             
                                                                            
                                                                             
                             
                                                         5                 
                                                                             
                             
             corner stresses
                               10                                 10     2   
                                                                             
                             
                                                                            
                                                                             
                             
                              10                         5      10     2   
                                                                             
                             
                                                                            
                                                                             
                              10                         5      10     2   
                     Figure 11.12. Result from running the statements of Figure 11.11.
The module is tested by the statements listed in Figure 11.11. The technique used is to generate
the element node displacements by evaluating a test displacement field
                                      u r (r, z) = err r,                        u z (r, z) = ezz r + γr z z                                    (11.11)
                                                                          11–12
11–13                                §11.4   THE 4-NODE QUADRILATERAL RING ELEMENT
in which {err , ezz , γr z } are specified strains, assumed constant over the element. Note that the hoop
strain is eθ θ = u r /r = err .
The field (11.11) is evaluated at the corner nodes to construct ue, which is then fed to the stress
recovery module. For the data err = eθ θ = 1/10, ezz = −5/100, γr z = 4/100, E = 100 and ν = 0
the recovered stresses must be
                              σrr = σθ θ = 10,    σrr = −5,     σr z = 2,                      (11.12)
at the four corners. The test is run taking a = 5, b = 2 and leaving d as variable. The results,
shown in Figure 11.12, verify the stress values for both recovery methods, although only results for
recovery="D" are shown.
                                                 11–13
Chapter 11: ISO-P QUADRILATERAL RING ELEMENTS   11–14
§11.5. THE 9-NODE QUADRILATERAL RING ELEMENT
To be included.
§11.6. THE 16-NODE QUADRILATERAL RING ELEMENT
To be included.
                                 11–14
11–15                                               Exercises
                Homework exercises for Chatre 11
                Iso-P Quadrilateral Ring Elements
EXERCISE 11.1
                             11–15