docs: def SA_torispheroidal(D, fd, fk):
      r'''Calculates surface area of a torispherical head according to [1]_.
      Somewhat involved. Equations are adapted to be used for a full head.
  
      .. math::
          SA = S_1 + S_2
  
      .. math::
          S_1 = 2\pi D^2 f_d \alpha
  
      .. math::
          S_2 = 2\pi D^2 f_k\left(\alpha - \alpha_1 + (0.5 - f_k)\left(\sin^{-1}
          \left(\frac{\alpha-\alpha_2}{f_k}\right) - \sin^{-1}\left(\frac{
          \alpha_1-\alpha_2}{f_k}\right)\right)\right)
  
      .. math::
          \alpha_1 = f_d\left(1 - \sqrt{1 - \left(\frac{0.5 - f_k}{f_d-f_k}
          \right)^2}\right)
  
      .. math::
          \alpha_2 = f_d - \sqrt{f_d^2 - 2f_d f_k + f_k - 0.25}
  
      .. math::
          \alpha = \frac{a}{D_i}
  
      Parameters
      ----------
      D : float
          Diameter of the main cylindrical section, [m]
      fd : float
          Dish-radius parameter = f; fD  = dish radius [1/m]
      fk : float
          knuckle-radius parameter = k; kD = knuckle radius [1/m]
  
      Returns
      -------
      SA : float
          Surface area [m^2]
  
      Examples
      --------
      Example from [1]_.
  
      >>> SA_torispheroidal(D=2.54, fd=1.039370079, fk=0.062362205)
      6.00394283477063
  
      References
      ----------
      .. [1] Honeywell. "Calculate Surface Areas and Cross-sectional Areas in
         Vessels with Dished Heads". https://www.honeywellprocess.com/library/marketing/whitepapers/WP-VesselsWithDishedHeads-UniSimDesign.pdf
         Whitepaper. 2014.
      '''
      alpha_1 = fd*(1 - (1 - ((0.5-fk)/(fd-fk))**2)**0.5)
      alpha_2 = fd - (fd**2 - 2*fd*fk + fk - 0.25)**0.5
      alpha = alpha_1 # Up to top of dome
      S1 = 2*pi*D**2*fd*alpha_1
      alpha = alpha_2 # up to top of torus
      S2_sub = asin((alpha-alpha_2)/fk) - asin((alpha_1-alpha_2)/fk)
      S2 = 2*pi*D**2*fk*(alpha - alpha_1 + (0.5-fk)*S2_sub)
      return S1 + S2