code: def _direct_nbody_step(q,p,m,t,dt,pot,softening,softening_args):
      
      #drift
      q12= [symplecticode.leapfrog_leapq(q[ii],p[ii],dt/2.) \
                for ii in range(len(q))]
      #kick
      force= _direct_nbody_force(q12,m,t+dt/2.,pot,softening,softening_args)
      #print(force)
      p= [symplecticode.leapfrog_leapp(p[ii],dt,force[ii]) \
              for ii in range(len(p))]
      #drift
      q= [symplecticode.leapfrog_leapq(q12[ii],p[ii],dt/2.) \
              for ii in range(len(q12))]
      return (q,p)
docs: One N-body step: drift-kick-drift