class_docstr: Geodesic initial value problem solver.
  
  Parameters
  ----------
  integrator : ODEIVPSolver
      Instance of ODEIVP integrator.
class_docstr_tok: ["Geodesic","initial","value","problem","solver",".","Parameters","--","--","--","--","--","integrator",":","ODEIVPSolver","Instance","of","ODEIVP","integrator","."]
code: def _solve(self, space, tangent_vec, base_point, t_eval=None):
      batch_shape = get_batch_shape(
          space.point_ndim, base_point, tangent_vec
      )
      base_point = gs.broadcast_to(base_point, tangent_vec.shape)
  
      if self.integrator.state_is_raveled:
          if space.point_ndim > 1:
              dim_vec = math.prod(space.shape)
              batch_shape_ = (-1,) if batch_shape else ()
  
              base_point = gs.reshape(
                  base_point, batch_shape_ + (dim_vec,)
              )
              tangent_vec = gs.reshape(
                  tangent_vec, batch_shape_ + (dim_vec,)
              )
  
          initial_state = gs.hstack([base_point, tangent_vec])
      else:
          initial_state = gs.stack([base_point, tangent_vec])
  
      force = self._get_force(space)
      if t_eval is None:
          result = self.integrator.integrate(force, initial_state)
      else:
          result = self.integrator.integrate_t(
              force, initial_state, t_eval
          )
  
      result.batch_shape = batch_shape
  
      return result
  
imports: import math
  from abc import ABC, abstractmethod
  import geomstats.backend
  from geomstats.numerics.bvp import ScipySolveBVP
  from geomstats.numerics.ivp import GSIVPIntegrator
  from geomstats.numerics.optimizers import ScipyMinimize
  from geomstats.vectorization import get_batch_shape
label_desc: Use image node_id 2 for calling the ExpODESolver obj's underlying member method code with example usage: obj._solve(space, tangent_vec, base_point, t_eval) and returns: result