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

MUNJIZA-NBS CONTACT DETECTION ALGORITHM IN 2D        111

                         i.e. set head of the list to zero
                      }
                  }
               }
               8. loop over all discrete elements
               {    remove the corresponding y-lists i.e. set the head of the list to zero
               }

           CPU and RAM requirements. Detailed analysis of the Munjiza-NBS contact detection algo-
           rithm as explained in the previous section leads to the conclusion that the total detection
           time is proportional to the total number of discrete elements present:

                                             T ∝ N                              (3.63)

           In other words, the total CPU time needed to detect all the contacts is given by

                                             T ∝ cN                             (3.64)

           where c is a constant independent of either packing density or number of discrete elements.
             This can be proved by analysing each step of the algorithm presented in the previ-
           ous section.
             To make all singly connected lists y iy (where i y = 1, 2, 3,...,n y ), a loop over all
           elements is involved. Inside the loop the current discrete element is added to the corre-
           sponding singly connected list, as specified by its integerised coordinate i y .
             To make all singly connected lists x ix,iy (where i x = 1, 2, 3,...,n x ), for a particular
           value of i y , a loop over discrete elements from the corresponding y iy list is employed,
           and inside the loop the current discrete element is added to the corresponding singly
           connected list x ix,iy , as specified by its integerised coordinate i x .
             To find a ‘new list’ y iy , a loop over all discrete elements is performed, while to find a
           ‘new list’ x ix,iy , a loop over discrete elements from the y iy list is performed. It is worth
           noting that a loop over all y iy lists is equivalent to a single loop over all discrete elements,
           because each y iy list contains only discrete elements mapped onto one row of cells, while
           all y iy lists together contain all discrete element comprising the combined finite-discrete
           element problem.
             At no place is a loop over cells employed; loops over discrete elements are employed
           instead. Those consist of:

           • Three loops over all discrete elements, i.e. loops 1, 2 and 8.
           • Three loops over discrete elements from central y lists, i.e. loops 3, 5 and 6 (as explained
             above, all these loops are in total equivalent to three loops over all discrete elements).
           • Two loops over discrete elements from neighbouring y − 1 list, i.e. loops 4 and 7
             (as explained above, all these loops are in total equivalent to two loops over all dis-
             crete elements).

           In total, an equivalent of eight loops over all discrete elements is performed. Operations
           performed inside the loops do not depend upon either the number of cells in the x-
           direction n x , or the number of cells in the y-direction n y . This leads to the conclusion
   123   124   125   126   127   128   129   130   131   132   133