code: def _grid_constructor_from_step_size(step_size):
      def _grid_constructor(func, y0, t):
          start_time = t[0]
          end_time = t[-1]
  
          niters = torch.ceil(
              (end_time - start_time) / step_size + 1
          ).item()
          t_infer = (
              torch.arange(0, niters, dtype=t.dtype, device=t.device)
              * step_size
              + start_time
          )
          t_infer[-1] = t[-1]
  
          return t_infer
  
      return _grid_constructor
  
imports: import abc
  import torch
  from .event_handling import find_event
  from .misc import _handle_unused_kwargs
label_desc: Use image node_id 3 for calling the FixedGridODESolver obj's underlying member method code with example usage: obj._grid_constructor_from_step_size(step_size) and returns: _grid_constructor, t_infer