FeResPost Web Site                     FeResPost Online User Manual

X.E.2.1 One using the connection loads

The module “Post_Connect” defines a post-processing of connections considered individually. It builds the Results corresponding to forces and moments at connections. Then, up to three criteria can be calculated. The criteria correspond respectively to sliding, gapping, and failure of inserts.

X.E.2.1.1 Member data

The member data defined in class “Post_Connect” are given below:

   @@fAxial=nil  
   @@fShear=nil  
   @@mTorsion=nil  
   @@mBending=nil

“fAxial”, “fShear”, “mTorsion” and “mBending” contain scalar Results corresponding to different components of the connection loads. These member data are set by method “calcOneInterface”.

X.E.2.1.2 “calcOneInterface” method

This methods builds the scalar Results corresponding to connection loads. It works in several phases:

1.
A Group on which the Results shall be retrieved from the DataBase is build:
      grpA = db.getGroupCopy(@@grpNameA)  
      grpB = db.getGroupCopy(@@grpNameB)  
      tmpGrp = grpA * grpB  
      grpC = db.getElementsAssociatedToNodes(tmpGrp)  
      grpC += tmpGrp  
      grpC *= grpA

“grpC” is build in such a way that it contains all the elements and nodes necessary to recover the contributing Grid Point Forces (internal forces and moments). Note that, the Groups defined in the DataBase must be such that “grpA” contains all the contributing element and nodes, and “grpB” contains all the contributing nodes.

2.
Parameters are retrieved:
      params = getParameters(nil)  
      csId = params["csId"]  
      direction = params["direction"]  
      norme=0.0  
      for i in 0..2  
         norme+=direction[i]*direction[i]  
      end  
      norme=Math.sqrt(norme)  
      for i in 0..2  
         direction[i]/=norme  
      end  
      criteriaList=params["criteriaList"]

Note that the list of failure criteria that shall be calculated for each connection is defined in the parameters that are retrieved.

3.
Then, Results are retrieved from the DataBase and used to build the four load components:
      tmpForces=db.getResultCopy(lcName,scName,'  
         "Grid Point Forces, Internal Forces","ElemNodes",grpC,[])  
      tmpMoments=db.getResultCopy(lcName,scName,'  
         "Grid Point Forces, Internal Moments","ElemNodes",grpC,[])  
 
      tmpForces.modifyRefCoordSys(db,csId)  
      tmpMoments.modifyRefCoordSys(db,csId)  
 
      tmpForces=tmpForces.deriveByRemapping("CornersToNodes",'  
         "sum",db)  
      tmpMoments=tmpMoments.deriveByRemapping("CornersToNodes",'  
         "sum",db)  
 
      @@fAxial=tmpForces*direction  
      @@fShear=sqrt(sq(tmpForces)-sq(@@fAxial))  
      @@mTorsion=tmpMoments*direction  
      @@mBending=sqrt(sq(tmpMoments)-sq(@@mTorsion))

4.
Finally, the different criteria in “criteriaList” Array are calculated by calls to the appropriate methods:
      criteriaList.each do |critName|  
         case critName  
         when "sliding" then  
            crit_Sliding(db,lcName,scName)  
         when "gapping" then  
            crit_Gapping(db,lcName,scName)  
         when "insert" then  
            crit_Insert(db,lcName,scName)  
         end  
      end

Criteria methods are described below.

X.E.2.1.3 Sliding criterion

This criterion, defined by “crit_Sliding” method is used to calculate sliding margins of safety with the following expression:

MoS = Cf * Pmin FoS *Cf * max (Faxial, 0) + Fshear - 1,

in which Cf is the friction coefficient between assembled elements and Pmin is an estimate of the minimum possible pretension of the bolt.

One gives the lines used for the calculation of margins of safety:

      mos=(cf*pMin/fos)/(max(@@fAxial,0.0)*cf+@@fShear)-1.0  
      mosMin=mos.extractResultMin  
      rklMin=mosMin.extractRkl  
      fAxialMin=@@fAxial.extractResultOnRkl(rklMin)  
      fShearMin=@@fShear.extractResultOnRkl(rklMin)

Other programming lines are devoted to the extraction of parameters and printing of Results. One first checks whether the output file exists. If it exists, one opens it in “append” mode. If it does not exists, it is opened in “write” mode and a title line is printed:

      if (File.exist?(outputFile)) then  
         os=File.open(outputFile,"a")  
      else  
         os=File.open(outputFile,"w")  
         os.printf("%30s%40s%10s%8s%10s%8s%8s%14s%14s%8s' n",'  
            "LoadCase ID","Interface","Elem ID","FoS",'  
            "Type","Pmin","Cf","Faxial","Fshear","MoS")  
      end

In either case, the critical margin and corresponding information is printed in the result file:

      interfStr=format("%s/%s",@@grpNameA,@@grpNameB)  
      os.printf("%30s%40s%10s%8.2f%10s%8.1f%8.3f%14.1f%14.1f",'  
                lcName,interfStr,mosData[1],fos,connectType,pMin,'  
                cf,fAxialData[5],fShearData[5])  
      if (mosData[5]>1000.0) then  
         os.printf("%8s' n",">1000")  
      else  
         os.printf("%8.2f' n",mosData[5])  
      end

Finally, the output stream is closed.

X.E.2.1.4 Gapping criterion

This criterion, defined by “crit_Gapping” method is used to calculate gapping margins of safety with the following expression:

MoS = Pmin FoS *max (Faxial, 0) + MbendingR - 1,

in which R is a parameter that allows to take into account the prying effect related to the bending moment in the connection and Pmin is an estimate of the minimum possible pretension of the bolt.

One only gives the lines used for the calculation of margins of safety:

         mos=(pMin/fos)/(max(@fAxial,0.0)+@mBending/radius)-1.0  
         mosMin=mos.extractResultMin  
         rklMin=mosMin.extractRkl  
         fAxialMin=@fAxial.extractResultOnRkl(rklMin)  
         mBendingMin=@mBending.extractResultOnRkl(rklMin)

Other programming lines are devoted to the extraction of parameters and printing of Results.

X.E.2.1.5 Insert criterion

This criterion, defined by “crit_Insert” method is used to calculate inserts margins of safety with the following expression:

MoS = 1 FoSFaxial PSS 2 + Fshear QSS 2 - 1,

In which “PSS” is the axial allowable of the insert and “QSS” is its shear allowable.

One only gives the lines used for the calculation of margins of safety:

         tmp = sq(@fAxial/pss)+sq(@fShear/qss)  
         tmpMax = tmp.extractResultMax  
         mosMin = (1.0/fos)/sqrt(tmpMax)-1.0  
         rklMin = mosMin.extractRkl  
         fAxialMin = @fAxial.extractResultOnRkl(rklMin)  
         fShearMin = @fShear.extractResultOnRkl(rklMin)

Other programming lines are devoted to the extraction of parameters and printing of Results.

X.E.2.1.6 Definition of the list of interfaces

The interfaces (lists of pair of Groups) on which connection margins will be calculated are defined in “calcAll” method. This method corresponds to a definition of data. One first defines a list of pair of groups with statement like:

      list = []  
 
      list << ["pan_MX","bar_MXMY"]  
      list << ["pan_MX","bar_MXMZ"]  
      list << ["pan_MX","bar_MXPY"]  
      list << ["pan_MX","bar_MXPZ"]  
      list << ["pan_MX","corner_MXMYMZ"]  
      ...

Then a loop on these data is done, and method “calcOneInterface” is called for each interface:

      list.each do |groupNameA,groupNameB|  
         @@grpNameA=groupNameA  
         @@grpNameB=groupNameB  
         calcOneInterface(db,lcName,scName)  
      end

Parameters “@@grpNameA” and “@@grpNameB” are passed by member data of the module. The other parameters are passed as arguments of the call to “calcOneInterface”.

X.E.2.1.7 Definition of parameters

Some parameters depend on the interfaces. For example, the direction of connections, allowables... The method “getParameters” is used to produce the parameters corresponding to each interface.

This method has one parameter “critName” a String argument corresponding to the criterion that requires the parameters. If the argument is nil, one considers that the method is called by “calcOneInterface” and data corresponding to the different orientation of the connection are returned. If the method is called by a criterion method, the data returned correspond to allowables used in the calculation of margins of safety.