Page 140 - The Combined Finite-Discrete Element Method
P. 140

GENERALISATION OF MUNJIZA-NBS CONTACT DETECTION ALGORITHM          123

             It is evident from the contact mask that all discrete elements immediately below the
           current layer ought to be located as well. All these discrete elements belong to the list
           z iz−1.
             Thus, both discrete elements from the list z iz−1 and discrete elements from the list z iz
           are mapped onto rows of cells (y-direction):

               Loop over all discrete elements from the list z iz
                 (k=C[i z ]and k=Z[k] until the end of the list is reached, i.e. until k=-1)
               { calculate integerised coordinate for the discrete element j

                                                y − y min
                                         i y = Int                               (3.76)
                                                   d
                   add the discrete element k onto y iy,iz list,
                   i.e. onto the list of discrete elements mapped onto
                   the row of cells (i y ,i z )
                   consider the y iy,iz list as “new list”
               }

             A particular y iy,iz list contains all discrete elements with integerised coordinates i y
           and i z .
             In a similar way, all discrete elements from the list z iz are mapped onto rows of cells
           (y-direction):


               Loop over all discrete elements from the list z iz-1
                (k=C[i z -1] and k=Z[k until the end of the list is reached, i.e. until k=-1)
               {   calculate integerised coordinate for the discrete element j

                                                y − y min
                                         i y = Int                               (3.77)
                                                   d
                   add the discrete element k onto y iy,iz−1 list,
                   i.e. onto the list of discrete elements mapped onto
                   the row of cells (i y ,i z -1)
                }

             There is a total of n y y-lists in each layer. The heads of all of these lists are represented
           by a two-dimensional array B[2][n y ]. Array B[0] represents the heads of all y-lists for
           layer i z and array B[1] represents the heads of all y-lists for layer i z − 1. For a particular
           discrete element, the discrete element that is the next discrete element in the same list is
           represented by the array Y[N], where N is the total number of discrete elements. Array
           B comprises 2n y integer numbers, while array Y comprises N integer numbers.
             It is worth mentioning that assembling all lists of layers of discrete elements (z-lists)
           is equivalent to one loop over all discrete elements. In a similar way, assembling all
           lists of rows of discrete elements for all the layers is equivalent to two loops over all
           discrete elements. This is because no discrete element can be mapped onto two layers at
           the same time.
             Once the lists of rows of discrete elements are assembled, for all non-empty y-lists of
           rows of discrete elements, lists of discrete elements for individual cells are assembled.
   135   136   137   138   139   140   141   142   143   144   145