Class AUSMPlusFluxCalculator
java.lang.Object
neqsim.process.equipment.pipeline.twophasepipe.numerics.AUSMPlusFluxCalculator
- All Implemented Interfaces:
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classFlux vector for one phase.static classState vector for one phase at a cell interface.static classCombined flux result for both phases. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleAUSM+ parameter α (typically 3/16 for AUSM+).private doubleAUSM+ parameter β (typically 1/8).private doubleMinimum sound speed to avoid division by zero.private static final long -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondoublecalcMachMinus(double M) AUSM+ M⁻ splitting function.doublecalcMachPlus(double M) AUSM+ M⁺ splitting function.calcPhaseFlux(AUSMPlusFluxCalculator.PhaseState left, AUSMPlusFluxCalculator.PhaseState right, double area) Calculate AUSM+ flux for a single phase.doublecalcPressureMinus(double M) AUSM+ P⁻ pressure splitting function.doublecalcPressurePlus(double M) AUSM+ P⁺ pressure splitting function.calcRusanovFlux(AUSMPlusFluxCalculator.PhaseState left, AUSMPlusFluxCalculator.PhaseState right, double area) Calculate Rusanov (local Lax-Friedrichs) flux for robustness.calcTwoFluidFlux(AUSMPlusFluxCalculator.PhaseState gasLeft, AUSMPlusFluxCalculator.PhaseState gasRight, AUSMPlusFluxCalculator.PhaseState liquidLeft, AUSMPlusFluxCalculator.PhaseState liquidRight, double area) Calculate AUSM+ fluxes for both phases in two-fluid model.calcUpwindFlux(AUSMPlusFluxCalculator.PhaseState left, AUSMPlusFluxCalculator.PhaseState right, double area) Calculate simple first-order upwind flux (for comparison/fallback).doublegetAlpha()Get AUSM+ α parameter.doublegetBeta()Get AUSM+ β parameter.doubleGet minimum sound speed.voidsetAlpha(double alpha) Set AUSM+ α parameter.voidsetBeta(double beta) Set AUSM+ β parameter.voidsetMinSoundSpeed(double minSoundSpeed) Set minimum sound speed.
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
alpha
private double alphaAUSM+ parameter α (typically 3/16 for AUSM+). -
beta
private double betaAUSM+ parameter β (typically 1/8). -
minSoundSpeed
private double minSoundSpeedMinimum sound speed to avoid division by zero.
-
-
Constructor Details
-
AUSMPlusFluxCalculator
public AUSMPlusFluxCalculator()Constructor.
-
-
Method Details
-
calcPhaseFlux
public AUSMPlusFluxCalculator.PhaseFlux calcPhaseFlux(AUSMPlusFluxCalculator.PhaseState left, AUSMPlusFluxCalculator.PhaseState right, double area) Calculate AUSM+ flux for a single phase.- Parameters:
left- Left stateright- Right statearea- Cross-sectional area (m²)- Returns:
- Phase flux at interface
-
calcTwoFluidFlux
public AUSMPlusFluxCalculator.TwoFluidFlux calcTwoFluidFlux(AUSMPlusFluxCalculator.PhaseState gasLeft, AUSMPlusFluxCalculator.PhaseState gasRight, AUSMPlusFluxCalculator.PhaseState liquidLeft, AUSMPlusFluxCalculator.PhaseState liquidRight, double area) Calculate AUSM+ fluxes for both phases in two-fluid model.- Parameters:
gasLeft- Gas state on left of interfacegasRight- Gas state on right of interfaceliquidLeft- Liquid state on left of interfaceliquidRight- Liquid state on right of interfacearea- 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
public AUSMPlusFluxCalculator.PhaseFlux calcUpwindFlux(AUSMPlusFluxCalculator.PhaseState left, AUSMPlusFluxCalculator.PhaseState right, double area) Calculate simple first-order upwind flux (for comparison/fallback).- Parameters:
left- Left stateright- Right statearea- Cross-sectional area (m²)- Returns:
- Phase flux at interface
-
calcRusanovFlux
public AUSMPlusFluxCalculator.PhaseFlux calcRusanovFlux(AUSMPlusFluxCalculator.PhaseState left, AUSMPlusFluxCalculator.PhaseState right, double area) Calculate Rusanov (local Lax-Friedrichs) flux for robustness.More dissipative but unconditionally stable. Useful for startup.
- Parameters:
left- Left stateright- Right statearea- 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)
-