'Generates a solution trajectory of variable length.'

def _integrate_variable_trajectory(self, h, g, tol, step, relax):

    solution = np.hstack((self.t, self.y))
    while self.successful():
        self.integrate((self.t + h), step, relax)
        current_step = np.hstack((self.t, self.y))
        solution = np.vstack((solution, current_step))
        if (g(self.t, self.y, *self.f_params) < tol):
            break
        else:
            continue
    return solution
