def METHOD_NAME(self, ivp):
    """Return t0 and y0 (for the solver, which might be different to ivp.y0) and
    initialize the solver. Reset the solver when solving the ODE multiple times,
    i.e. explicitly setting y_old, t, y and f to the respective initial values,
    otherwise those are wrong when running the solver twice.
    Returns
    -------
    self.ivp.t0: float
        initial time point
    self.ivp.initrv: randvars.RandomVariable
        initial random variable
    """
    self.solver = self.solver_type(ivp.f, ivp.t0, ivp.y0, ivp.tmax)
    self.ivp = ivp
    self.interpolants = []
    self.solver.y_old = None
    self.solver.t = self.ivp.t0
    self.solver.y = self.ivp.y0
    self.solver.f = self.solver.fun(self.solver.t, self.solver.y)
    state = _odesolver_state.ODESolverState(
        ivp=ivp,
        rv=randvars.Constant(self.ivp.y0),
        t=self.ivp.t0,
        error_estimate=None,
        reference_state=None,
    )
    return state