Class AUSMPlusFluxCalculator

java.lang.Object
neqsim.process.equipment.pipeline.twophasepipe.numerics.AUSMPlusFluxCalculator
All Implemented Interfaces:
Serializable

public class AUSMPlusFluxCalculator extends Object implements Serializable
AUSM+ (Advection Upstream Splitting Method Plus) flux calculator for two-fluid model.

Implements the AUSM+ scheme of Liou (1996) adapted for multiphase flow. This scheme is particularly well-suited for:

  • Large density ratios (gas/liquid ~100-1000x)
  • Low Mach number flows (typical in pipelines)
  • Robust handling of contact discontinuities

AUSM+ Splitting

The convective flux F = ρu is split into:

  • Convective flux: F_conv = M_{1/2} * c_{1/2} * Φ (where Φ = ρ or ρu or ρE)
  • Pressure flux: P_{1/2}

The interface Mach number M_{1/2} = M⁺(M_L) + M⁻(M_R) determines upwinding.

References

  • Liou, M.S. (1996) - A sequel to AUSM: AUSM+, J. Comp. Physics 129:364-382
  • Liou, M.S. (2006) - A sequel to AUSM, Part II: AUSM+-up for all speeds
Version:
1.0
Author:
Even Solbraa
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • alpha

      private double alpha
      AUSM+ parameter α (typically 3/16 for AUSM+).
    • beta

      private double beta
      AUSM+ parameter β (typically 1/8).
    • minSoundSpeed

      private double minSoundSpeed
      Minimum sound speed to avoid division by zero.
  • Constructor Details

    • AUSMPlusFluxCalculator

      public AUSMPlusFluxCalculator()
      Constructor.
  • Method Details

    • calcPhaseFlux

      Calculate AUSM+ flux for a single phase.
      Parameters:
      left - Left state
      right - Right state
      area - Cross-sectional area (m²)
      Returns:
      Phase flux at interface
    • calcTwoFluidFlux

      Calculate AUSM+ fluxes for both phases in two-fluid model.
      Parameters:
      gasLeft - Gas state on left of interface
      gasRight - Gas state on right of interface
      liquidLeft - Liquid state on left of interface
      liquidRight - Liquid state on right of interface
      area - Cross-sectional area (m²)
      Returns:
      Combined flux for both phases
    • calcMachPlus

      public double calcMachPlus(double M)
      AUSM+ M⁺ splitting function.

      For |M| ≤ 1: M⁺ = ¼(M+1)² + β(M²-1)². For M > 1: M⁺ = ½(M + |M|). For M < -1: M⁺ = 0.

      Parameters:
      M - Mach number
      Returns:
      M⁺ value
    • calcMachMinus

      public double calcMachMinus(double M)
      AUSM+ M⁻ splitting function.

      For |M| ≤ 1: M⁻ = -¼(M-1)² - β(M²-1)². For M < -1: M⁻ = ½(M - |M|). For M > 1: M⁻ = 0.

      Parameters:
      M - Mach number
      Returns:
      M⁻ value
    • calcPressurePlus

      public double calcPressurePlus(double M)
      AUSM+ P⁺ pressure splitting function.

      For |M| ≤ 1: P⁺ = ¼(M+1)²(2-M) + α*M*(M²-1)². For M > 1: P⁺ = 1. For M < -1: P⁺ = 0.

      Parameters:
      M - Mach number
      Returns:
      P⁺ value
    • calcPressureMinus

      public double calcPressureMinus(double M)
      AUSM+ P⁻ pressure splitting function.

      For |M| ≤ 1: P⁻ = ¼(M-1)²(2+M) - α*M*(M²-1)². For M < -1: P⁻ = 1. For M > 1: P⁻ = 0.

      Parameters:
      M - Mach number
      Returns:
      P⁻ value
    • calcUpwindFlux

      Calculate simple first-order upwind flux (for comparison/fallback).
      Parameters:
      left - Left state
      right - Right state
      area - Cross-sectional area (m²)
      Returns:
      Phase flux at interface
    • calcRusanovFlux

      Calculate Rusanov (local Lax-Friedrichs) flux for robustness.

      More dissipative but unconditionally stable. Useful for startup.

      Parameters:
      left - Left state
      right - Right state
      area - Cross-sectional area (m²)
      Returns:
      Phase flux at interface
    • getAlpha

      public double getAlpha()
      Get AUSM+ α parameter.
      Returns:
      α value
    • setAlpha

      public void setAlpha(double alpha)
      Set AUSM+ α parameter.
      Parameters:
      alpha - New α value (typically 3/16)
    • getBeta

      public double getBeta()
      Get AUSM+ β parameter.
      Returns:
      β value
    • setBeta

      public void setBeta(double beta)
      Set AUSM+ β parameter.
      Parameters:
      beta - New β value (typically 1/8)
    • getMinSoundSpeed

      public double getMinSoundSpeed()
      Get minimum sound speed.
      Returns:
      Minimum sound speed (m/s)
    • setMinSoundSpeed

      public void setMinSoundSpeed(double minSoundSpeed)
      Set minimum sound speed.
      Parameters:
      minSoundSpeed - Minimum sound speed (m/s)