docs: def bm3_v_single(p, v0, k0, k0p, p_ref=0.0, min_strain=0.01):
      """
      find volume at given pressure using brenth in scipy.optimize
      this is for single p value, not vectorized
      this cannot handle uncertainties
  
      :param p: pressure
      :param v0: volume at reference conditions
      :param k0: bulk modulus at reference conditions
      :param k0p: pressure derivative of bulk modulus at different conditions
      :param p_ref: reference pressure (default = 0)
      :param min_strain: minimum strain value to find solution (default = 0.01)
      :return: volume at high pressure
      """
      if p <= 1.e-5:
          return v0
  
      def f_diff(v, v0, k0, k0p, p, p_ref=0.0):
          return bm3_p(v, v0, k0, k0p, p_ref=p_ref) - p
      v = brenth(f_diff, v0, v0 * min_strain, args=(v0, k0, k0p, p, p_ref))
      return v