docs: def _add_material(self, x_bot_left, y_bot_left, x_top_right, y_top_right,
                       n_material, angle=0):
          '''
          A low-level function that allows writing a rectangle refractive
          index profile to a `Structure`.
  
          Args:
              x_bot_left (float): The bottom-left x-coordinate of the
                  rectangle.
              y_bot_left (float): The bottom-left y-coordinate of the
                  rectangle.
              x_top_right (float): The top-right x-coordinate of the
                  rectangle.
              y_top_right (float): The top-right y-coordinate of the
                  rectangle.
              n_material (float): The refractive index of the points
                  encompassed by the defined rectangle.
              angle (float): The angle in degrees of the sidewalls
                  of the defined rectangle.  Default is 0.  This
                  is useful for creating a ridge with angled
                  sidewalls.
          '''
          x_mask = np.logical_and(x_bot_left<=self.x, self.x<=x_top_right)
          y_mask = np.logical_and(y_bot_left<=self.y, self.y<=y_top_right)
  
          xy_mask = np.kron(y_mask, x_mask).reshape((y_mask.size, x_mask.size))
          self.n[xy_mask] = n_material
  
          if angle:
              self._add_triangular_sides(xy_mask, angle, y_top_right, y_bot_left,
                                         x_top_right, x_bot_left, n_material)
  
          return self.n