Class FlowAssuranceScreener

java.lang.Object
neqsim.process.fielddevelopment.screening.FlowAssuranceScreener

public class FlowAssuranceScreener extends Object
Flow assurance screener for rapid envelope-based assessment.

This class provides automated screening of flow assurance risks for field development concepts. It uses NeqSim's thermodynamic engine to calculate phase behavior and identify potential production issues that could impact facility design and operating strategy.

Screening Categories

The screener evaluates the following risk categories:

  • Hydrate formation: Uses CPA equation of state for accurate hydrate equilibrium temperature prediction. Critical for subsea tiebacks and cold ambient conditions.
  • Wax deposition: Estimates Wax Appearance Temperature (WAT) based on fluid type. Important for waxy crudes in cold environments.
  • Asphaltene precipitation: Flags risk based on fluid type and GOR. Particularly relevant near bubble point conditions.
  • Corrosion: Evaluates CO2 and H2S content against industry thresholds for material selection (NACE MR0175 compliance).
  • Scale formation: Assesses risk based on water cut and water injection mixing.
  • Erosion: Flags high-rate wells that may require velocity management.

Result Classification

Each risk category is classified as:

Usage Example

FlowAssuranceScreener screener = new FlowAssuranceScreener();

// Full screening with specific conditions
FlowAssuranceReport report = screener.screen(concept, 4.0, 150.0); // 4°C seabed, 150 bara

// Quick screening with default conditions
FlowAssuranceReport quickReport = screener.quickScreen(concept);

// Check specific risks
if (report.getHydrateResult() == FlowAssuranceResult.FAIL) {
  System.out.println("Hydrate mitigation required: " + report.getHydrateMargin() + "°C margin");
  report.getMitigationOptions().forEach((k, v) -> System.out.println("  - " + v));
}

Limitations

  • Fluid compositions are estimated from fluid type; use actual PVT for detailed design
  • WAT calculations are correlation-based; laboratory measurements recommended
  • Asphaltene stability requires specialized analysis (e.g., SARA fractionation)
Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • HYDRATE_SAFE_MARGIN_C

      private static final double HYDRATE_SAFE_MARGIN_C
      Temperature margin below which hydrate risk is classified as PASS (°C). Operating temperature must be this much above hydrate formation temperature.
      See Also:
    • HYDRATE_MARGINAL_MARGIN_C

      private static final double HYDRATE_MARGINAL_MARGIN_C
      Temperature margin below which hydrate risk is classified as MARGINAL (°C). Between this and HYDRATE_SAFE_MARGIN_C requires monitoring.
      See Also:
    • WAX_SAFE_MARGIN_C

      private static final double WAX_SAFE_MARGIN_C
      Temperature margin for WAT above which wax risk is classified as PASS (°C). Operating temperature must be this much above wax appearance temperature.
      See Also:
    • WAX_MARGINAL_MARGIN_C

      private static final double WAX_MARGINAL_MARGIN_C
      Temperature margin for WAT below which wax risk is classified as MARGINAL (°C). Between this and WAX_SAFE_MARGIN_C requires monitoring.
      See Also:
    • CO2_HIGH_CORROSION_PERCENT

      private static final double CO2_HIGH_CORROSION_PERCENT
      CO2 concentration above which high corrosion risk is flagged (mol%). Requires CRA materials or continuous inhibition.
      See Also:
    • CO2_MARGINAL_CORROSION_PERCENT

      private static final double CO2_MARGINAL_CORROSION_PERCENT
      CO2 concentration above which marginal corrosion risk is flagged (mol%). Consider corrosion allowance.
      See Also:
    • H2S_HIGH_CORROSION_PPM

      private static final double H2S_HIGH_CORROSION_PPM
      H2S concentration above which high corrosion/SSC risk is flagged (ppm). Requires full sour service design per NACE MR0175.
      See Also:
    • H2S_MARGINAL_CORROSION_PPM

      private static final double H2S_MARGINAL_CORROSION_PPM
      H2S concentration above which marginal sour service is required (ppm). NACE MR0175 material selection required.
      See Also:
  • Constructor Details

    • FlowAssuranceScreener

      public FlowAssuranceScreener()
      Creates a new flow assurance screener.

      The screener is stateless and can be reused for multiple concept evaluations.

  • Method Details

    • screen

      public FlowAssuranceReport screen(FieldConcept concept, double minAmbientTempC, double operatingPressureBara)
      Performs flow assurance screening for a field concept.

      This method creates a representative fluid composition based on the concept's reservoir properties and performs thermodynamic calculations to assess flow assurance risks. The method evaluates all risk categories and returns a comprehensive report.

      Thermodynamic Calculations

      • Uses SystemSrkCPAstatoil for accurate hydrate calculations when water is present
      • Falls back to SystemSrkEos for dry gas systems
      • Estimates phase behavior from fluid type classification
      Parameters:
      concept - field concept to screen (must have reservoir input)
      minAmbientTempC - minimum ambient temperature in °C (e.g., seabed temperature for subsea, winter air temperature for topsides)
      operatingPressureBara - operating pressure in bara (typically wellhead or separator pressure)
      Returns:
      comprehensive flow assurance report with all risk assessments
      Throws:
      IllegalArgumentException - if concept has no reservoir input
    • quickScreen

      public FlowAssuranceReport quickScreen(FieldConcept concept)
      Performs quick screening using estimated fluid properties.
      Parameters:
      concept - field concept
      Returns:
      flow assurance report
    • createRepresentativeFluid

      private SystemInterface createRepresentativeFluid(ReservoirInput reservoir, double tempC, double pressureBara)
    • screenHydrateRisk

      private void screenHydrateRisk(FlowAssuranceReport.Builder builder, SystemInterface fluid, double minTempC, double pressureBara)
    • screenWaxRisk

      private void screenWaxRisk(FlowAssuranceReport.Builder builder, ReservoirInput reservoir, double minTempC)
    • screenAsphalteneRisk

      private void screenAsphalteneRisk(FlowAssuranceReport.Builder builder, ReservoirInput reservoir)
    • screenCorrosionRisk

      private void screenCorrosionRisk(FlowAssuranceReport.Builder builder, ReservoirInput reservoir)
    • screenScalingRisk

      private void screenScalingRisk(FlowAssuranceReport.Builder builder, ReservoirInput reservoir, FieldConcept concept)
    • screenErosionRisk

      private void screenErosionRisk(FlowAssuranceReport.Builder builder, FieldConcept concept)