Skip to content

feat(separator): physics-based outlet pressure drop from mechanical d… - #2158

Open
dupuypablo wants to merge 5 commits into
masterfrom
feat/separator-pressure-drop
Open

feat(separator): physics-based outlet pressure drop from mechanical d…#2158
dupuypablo wants to merge 5 commits into
masterfrom
feat/separator-pressure-drop

Conversation

@dupuypablo

Copy link
Copy Markdown
Collaborator

…esign

Add a stateless SeparatorPressureDropCalculator that derives the gas-side outlet pressure drop from the existing mechanical design. Three contributions are modelled and reported as an immutable PressureDropBreakdown:

  • Inlet expansion: Borda-Carnot (1 - A_n/A_v)^2 . 0.5 . rho . v_n^2 when no inlet device is fitted, otherwise the inlet device's existing K-factor (no double-counting). Override via SeparatorMechanicalDesign.setInletExpansionLossCoefficient(K).

  • Internals: mist eliminator Eu . 0.5 . rho_g . v_g^2 (existing setMistEliminatorDpCoeff, default 0.5 for knitmesh on scrubbers); demisting cyclone bank Eu . rho_g . v_cyc^2 on GasScrubber (existing setCycloneEulerNumber, default 4.5).

  • Outlet contraction: K_con . 0.5 . rho_g . v_out^2, sharp-edged default 0.5; override via setOutletContractionLossCoefficient(K).

Wired into Separator via setEnhancedPressureDropCalculation(true). Off by default; existing simulations are unchanged. When enabled, run() overrides the static pressureDrop with the computed total and exposes the breakdown via getLastPressureDropBreakdown(). Calculator failures fall back to the static value silently. Includes unit tests covering Borda-Carnot, inlet device K, sharp-edged outlet K, user override, scrubber mesh + cyclones aggregation, outlet pressure consistency, and serialisability.

Pull Request

Thank you for contributing to NeqSim! Please complete the following checklist before requesting review:

  • Confirm ./mvnw test runs successfully
  • Verify code formatting using Checkstyle
  • Update any relevant docs/README
  • Link to an associated issue or discussion

See CONTRIBUTING.md for the full contribution process.

…esign

Add a stateless SeparatorPressureDropCalculator that derives the gas-side outlet pressure drop from the existing mechanical design. Three contributions are modelled and reported as an immutable PressureDropBreakdown:

- Inlet expansion: Borda-Carnot (1 - A_n/A_v)^2 . 0.5 . rho . v_n^2 when no inlet device is fitted, otherwise the inlet device's existing K-factor (no double-counting). Override via SeparatorMechanicalDesign.setInletExpansionLossCoefficient(K).

- Internals: mist eliminator Eu . 0.5 . rho_g . v_g^2 (existing setMistEliminatorDpCoeff, default 0.5 for knitmesh on scrubbers); demisting cyclone bank Eu . rho_g . v_cyc^2 on GasScrubber (existing setCycloneEulerNumber, default 4.5).

- Outlet contraction: K_con . 0.5 . rho_g . v_out^2, sharp-edged default 0.5; override via setOutletContractionLossCoefficient(K).

Wired into Separator via setEnhancedPressureDropCalculation(true). Off by default; existing simulations are unchanged. When enabled, run() overrides the static pressureDrop with the computed total and exposes the breakdown via getLastPressureDropBreakdown(). Calculator failures fall back to the static value silently. Includes unit tests covering Borda-Carnot, inlet device K, sharp-edged outlet K, user override, scrubber mesh + cyclones aggregation, outlet pressure consistency, and serialisability.
@dupuypablo
dupuypablo requested a review from EvenSol as a code owner May 7, 2026 08:38
@dupuypablo
dupuypablo force-pushed the feat/separator-pressure-drop branch from c638f58 to c828425 Compare May 8, 2026 09:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants