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.