resqpy.olio.box_utilities.overlapping_boxes

resqpy.olio.box_utilities.overlapping_boxes(established_box, new_box, trim_box)[source]

Checks for 3D overlap of two boxes; returns True and sets trim_box if there is overlap, otherwise False.

trim_box is modified in place.

Parameters:
  • established_box – numpy int array of shape (2, 3)

  • new_box – numpy int array of shape (2, 3) each is lower & upper indices in 3 dimensions defining a logical cuboid subset of a 3D cartesian grid protocol of indices for the two boxes must be the same

  • trim_box – numpy int array of shape (2, 3) set to lower & upper indices in 3 dimensions defining a logical cuboid subset of a 3D cartesian grid a subset of new_box such that if removed from new_box, a valid box would remain with no overlap with established_box indices protocol is the same as that used for established_box and new_box (if return value is True) if there is no overlap (return value False), all elements of trim_box are set to 0

Note

when there is overlap between the boxes, there can be more than one way to trim the new_box, with trim_box fully covering either ij, jk or ik planes of new_box the function selects the trim_box containing the minimum number of cells (minimum ‘loss’ to trimming) this function does not actually apply the trimming, ie. new_box is not modified here

returns: boolean

True if established_box and new_box overlap (implies trim_box valid), False otherwise (trim_box elements all 0)