docs: def LOS_PRMin(Ds, dus, kPOut=None, Eps=1.e-12, Test=True):
      """  Compute the point on the LOS where the major radius is minimum """
      if Test:
          assert Ds.ndim in [1,2] and 3 in Ds.shape and Ds.shape==dus.shape
          assert kPOut is None or (Ds.ndim==1 and not hasattr(kPOut,'__iter__')) or (Ds.ndim==2 and kPOut.shape==(Ds.size/3,))
  
      v = Ds.ndim==1
      if v:
          Ds = Ds.reshape((3,1))
          dus = dus.reshape((3,1))
          if kPOut is not None:
              kPOut = np.array([kPOut])
  
      kRMin = np.nan*np.ones((Ds.shape[1],))
      uparN = np.sqrt(dus[0,:]**2 + dus[1,:]**2)
  
      # Case with u vertical
      ind = uparN>Eps
      kRMin[~ind] = 0.
  
      # Else
      kRMin[ind] = -(dus[0,ind]*Ds[0,ind]+dus[1,ind]*Ds[1,ind])/uparN[ind]**2
  
      # Check
      kRMin[kRMin<=0.] = 0.
      if kPOut is not None:
          kRMin[kRMin>kPOut] = kPOut[kRMin>kPOut]
  
      if v:
          kRMin = kRMin[0]
      return kRMin