CD_SONG_XU

Overview

Calculate drag coefficient of a particle using the Song-Xu correlation for spherical and non-spherical particles.

Excel Usage

=CD_SONG_XU(Re, sphericity, S)
  • Re (float, required): Particle Reynolds number [-]
  • sphericity (float, optional, default: 1): Sphericity of the particle (1.0 for sphere)
  • S (float, optional, default: 1): Ratio of equivalent sphere area to projected area [-]

Returns (float): Drag coefficient [-], or error message (str) if input is invalid.

Examples

Example 1: Sphere at Re = 30

Inputs:

Re
30

Excel formula:

=CD_SONG_XU(30)

Expected output:

2.3431

Example 2: Sphere at Re = 100

Inputs:

Re
100

Excel formula:

=CD_SONG_XU(100)

Expected output:

1.1614

Example 3: Non-spherical particle

Inputs:

Re sphericity S
50 0.8 1.2

Excel formula:

=CD_SONG_XU(50, 0.8, 1.2)

Expected output:

1.8969

Example 4: Cube-like particle

Inputs:

Re sphericity S
30 0.806 1

Excel formula:

=CD_SONG_XU(30, 0.806, 1)

Expected output:

2.6957

Python Code

from fluids.drag import Song_Xu as fluids_Song_Xu

def cd_song_xu(Re, sphericity=1, S=1):
    """
    Calculate drag coefficient of a particle using the Song-Xu correlation for spherical and non-spherical particles.

    See: https://fluids.readthedocs.io/fluids.drag.html#fluids.drag.Song_Xu

    This example function is provided as-is without any representation of accuracy.

    Args:
        Re (float): Particle Reynolds number [-]
        sphericity (float, optional): Sphericity of the particle (1.0 for sphere) Default is 1.
        S (float, optional): Ratio of equivalent sphere area to projected area [-] Default is 1.

    Returns:
        float: Drag coefficient [-], or error message (str) if input is invalid.
    """
    try:
      Re = float(Re)
      sphericity = float(sphericity)
      S = float(S)

      if Re <= 0:
        return "Error: Re must be positive."
      if sphericity <= 0 or sphericity > 1:
        return "Error: Sphericity must be between 0 and 1."
      if S <= 0:
        return "Error: S must be positive."

      result = fluids_Song_Xu(Re=Re, sphericity=sphericity, S=S)
      if result != result:  # NaN check
        return "Error: Calculation resulted in NaN."
      return float(result)
    except (ValueError, TypeError):
      return "Error: All parameters must be numbers."
    except Exception as e:
      return f"Error: {str(e)}"

Online Calculator