FeResPost Web Site                     FeResPost Online User Manual

IV.3.5 Out-of-plane laminate shear response

The first example is presented in directory “TESTSAT/RUBY/EX14” and illustrates the out-of-plane shear calculations. The example is contained in file “testShear.rb”. This example has been developed for debugging purposes and is meant to compare the results of FeResPost with those of ESAComp. After some research one identified what ESAComp does and reproduced its behavior with FeResPost.

One first defines a function that calculations the ESAComp components of out-of-plane shear stiffness matrix kA_44, kA_55, kA_45:

   def getESACompG(db,lam,theta)  
      tmpLam=ClaLam.new  
      tmpLam.Id="tmpLam"  
      lam.each_ply do |plyIndex,plyData|  
         tmpLam.addPly(plyIndex,plyData[1],plyData[2],'  
                       plyData[3]+theta,plyData[4])  
      end  
      tmpLam.calcLaminateProperties(db)  
      shearMat=tmpLam.get_G  
      ret={"kA_44"=>shearMat[1][1], "kA_55"=>shearMat[0][0],'  
           "kA_45"=>shearMat[0][1]}  
   end

The arguments of the function are:

The function returns a Hash containing the components of shear stiffness matrix associated to their names. The function works as follows: one defines a new ClaLam identical to the argument ClaLam, except that all the plies are rotated by the θ argument angle. Then the laminate properties are calculated and the stiffness matrix components are extracted at 0o (default direction in laminate axes for extraction function get_G).

Similarly, one defines a function supposed to return similar values in a more “classical” way (according to FeResPost philosophy):

   def getNormalG(db,lam,theta)  
      lam.calcLaminateProperties(db)  
      shearMat=lam.get_G(theta)  
      ret={"kA_44"=>shearMat[1][1], "kA_55"=>shearMat[0][0],'  
           "kA_45"=>shearMat[0][1]}  
   end

The methods “getESACompG” and “getNormalG” are used to print the components of shear stiffness matrix according to the two calculation methods and as a function of the orientation θ. For example, one prints the ESAComp results with the following ruby lines:

   os.printf("' n")  
   os.printf("Laminate stiffness as a function of theta :' n' n")  
   os.printf("%14s%14s%14s%14s' n","Theta","kA_44","kA_55","kA_45")  
   (-90..90).step(5) do |i|  
      theta=1.0*i  
      ret=getESACompG(db,lam,theta)  
      os.printf("%14d%14g%14g%14g' n",i,ret["kA_44"],ret["kA_55"],'  
                   ret["kA_45"])  
   end  
   os.printf("' n' n")

One observes differences between the results obtained with “getESACompG” and “getNormalG”:

1.
Note that in the “ESAComp” version the angle θ is the angle by which the laminate is rotated. In the “Normal” version, it is the angle at which the shear stiffness components are recovered (angle wrt laminate axes). So the ESAComp results for an angle θ should be compared to the “Normal” results for an angle - θ. However in this case the dependence on θ is even and no difference can be observed.
2.
For angles θ other than - 90o, 0o or 90o, the results obtained with “getESACompG” and “getNormalG” are different. This difference is explained by the approximation:
Qxz = Mxx,x, (IV.3.1)
Qyz = Myy,y, (IV.3.2)

that has been done in section II.1.6.3. The example illustrates one of the consequences of the approximation: the loss of objectivity in out-of-plane shear equations.

One also performs the calculation of out-of-plane shear stresses in laminate for a simple loading in three different directions: - 45o, 0o or 45o. Here again the loading is applied in two ways: with the “ESAComp” method or the “Normal” one. For example, the printing of ply stresses with “ESAComp” method is done as follows:

    def writeESACompShearStresses(os,db,lam,theta,ld)  
        tmpLam=ClaLam.new  
        tmpLam.Id="tmpLam"  
        lam.each_ply do |plyIndex,plyData|  
        tmpLam.addPly(plyIndex,plyData[1],plyData[2],'  
            plyData[3]+theta,plyData[4])  
        end  
 
        tmpLam.calcLaminateProperties(db)  
        tmpLam.calcResponse(db,0.0,ld,true,false,true)  
        sigTab=tmpLam.getPliesStresses  
        os.printf("   %8s%5s%14s%14s' n","Ply","Pos.","tau_13","tau_23")  
        (0...sigTab.size).each do |i|  
            os.printf("   %8d%5s",sigTab[i][0],sigTab[i][1])  
            os.printf("%14g%14g",sigTab[i][6],sigTab[i][5])  
            os.printf("' n")  
        end  
    end

The loading applied to laminate is defined by a pure out-of-plane shear force components Qxz = 1000000 and Qyz = 0. One also defines a corresponding loading rotated by 45o and defined by its components Qxz = Qyz = 707107. This new loading is tested for direction θ = 0o only. The ply stress results obtained with the different versions of loading and calculations methods can be compared and the following comments are made:

1.
Here again, the “ESAComp” results are obtained by rotating the laminate by an angle θ. For “Normal” results, the loading is rotated by an angle θ. Therefore “ESAComp” results at θ = -45o are to be compared to “Normal” results at θ = 45o (and vice versa).
2.
When θ = 0o, “ESAComp” results and “Normal” results for a same loading are identical. Otherwise, one observes difference between “ESAComp” results at θ = -45o “Normal” results at θ = 45o (and reversely).
3.
For “Normal” calculation method the loading ld45 at θ = 0o gives the same results as ld at θ = 45o. For “ESAComp” calculation method the loading ld45 at θ = 0o does not give the same results as ld at θ = -45o. “Normal” calculation method is more in line with usual expectations.

Actually, none of the two calculation methods can be considered as better than the other. (At least, as far as the precision of results is concerned.) We think however that “Normal” calculation method is better because it is likely to give unexpected results as shown in the example. Moreover, the associated computation cost is lower. (This will be important when finite element results are post-processed.) Note however, that the “Normal” calculation method also suffers from a lack of objectivity wrt to ply orientations in the laminate.