public override void ElementNeighboursRBA(int element_index, int[] element_neigbour_array)
        {
            int x_index = element_index % this.Raster.Size0;
            int y_index = (element_index % size_xy) / this.Raster.Size0;
            int z_index = element_index / size_xy;

            int neigbour_index_index = 0;

            for (int z_offset = -1; z_offset < 2; z_offset++)
            {
                for (int y_offset = -1; y_offset < 2; y_offset++)
                {
                    for (int x_offset = -1; x_offset < 2; x_offset++)
                    {
                        if ((x_offset != 0) || (y_offset != 0) || (z_offset != 0))
                        {
                            int x_index_neigbour = x_index + x_offset;
                            int y_index_neigbour = y_index + y_offset;
                            int z_index_neigbour = z_index + z_offset;
                            if (Raster.ContainsCoordinates(x_index_neigbour, y_index_neigbour, z_index_neigbour))
                            {
                                element_neigbour_array[neigbour_index_index] = Raster.GetElementIndex(x_index_neigbour, y_index_neigbour, z_index_neigbour);
                            }
                            else
                            {
                                element_neigbour_array[neigbour_index_index] = -1;
                            }
                            neigbour_index_index++;
                        }
                    }
                }
            }
        }