Class FluidClassifier

java.lang.Object
neqsim.thermo.util.FluidClassifier

public final class FluidClassifier extends Object
Utility class for classifying reservoir fluids based on phase behavior characteristics.

Classification follows the Whitson methodology as described in:

  • https://wiki.whitson.com/phase_behavior/classification/reservoir_fluid_type/
  • SPE Monograph "Phase Behavior" by Whitson and Brulé

Classification Criteria:

Classification criteria for different reservoir fluid types
Fluid Type GOR (scf/STB) C7+ (mol%) API Gravity
Dry Gas > 100,000 < 0.7 N/A
Wet Gas 15,000 - 100,000 0.7 - 4 40-60°
Gas Condensate 3,300 - 15,000 4 - 12.5 40-60°
Volatile Oil 1,000 - 3,300 12.5 - 20 40-50°
Black Oil < 1,000 > 20 15-40°
Heavy Oil < 200 > 30 10-15°

Usage Example:


SystemInterface fluid = new SystemSrkEos(373.15, 100.0);
fluid.addComponent("methane", 0.70);
fluid.addComponent("ethane", 0.10);
fluid.addComponent("n-heptane", 0.20);
fluid.createDatabase(true);
fluid.setMixingRule("classic");

ReservoirFluidType type = FluidClassifier.classify(fluid);
System.out.println("Fluid type: " + type.getDisplayName());

Version:
1.0
Author:
ESOL
See Also:
  • Field Details

    • logger

      private static final org.apache.logging.log4j.Logger logger
      Logger object for class.
    • SM3_SM3_TO_SCF_STB

      private static final double SM3_SM3_TO_SCF_STB
      Conversion factor from Sm³/Sm³ to scf/STB.
      See Also:
    • GOR_DRY_GAS

      private static final double GOR_DRY_GAS
      GOR threshold for dry gas (scf/STB).
      See Also:
    • GOR_WET_GAS_LOWER

      private static final double GOR_WET_GAS_LOWER
      GOR threshold for wet gas lower bound (scf/STB).
      See Also:
    • GOR_GAS_CONDENSATE_LOWER

      private static final double GOR_GAS_CONDENSATE_LOWER
      GOR threshold for gas condensate lower bound (scf/STB).
      See Also:
    • GOR_VOLATILE_OIL_LOWER

      private static final double GOR_VOLATILE_OIL_LOWER
      GOR threshold for volatile oil lower bound (scf/STB).
      See Also:
    • GOR_HEAVY_OIL

      private static final double GOR_HEAVY_OIL
      GOR threshold for heavy oil upper bound (scf/STB).
      See Also:
    • C7PLUS_DRY_GAS

      private static final double C7PLUS_DRY_GAS
      C7+ threshold for dry gas (mol%).
      See Also:
    • C7PLUS_WET_GAS

      private static final double C7PLUS_WET_GAS
      C7+ threshold for wet gas upper bound (mol%).
      See Also:
    • C7PLUS_GAS_CONDENSATE

      private static final double C7PLUS_GAS_CONDENSATE
      C7+ threshold for gas condensate upper bound (mol%).
      See Also:
    • C7PLUS_VOLATILE_OIL

      private static final double C7PLUS_VOLATILE_OIL
      C7+ threshold for volatile oil upper bound (mol%).
      See Also:
    • C7PLUS_HEAVY_OIL

      private static final double C7PLUS_HEAVY_OIL
      C7+ threshold for heavy oil (mol%).
      See Also:
  • Constructor Details

    • FluidClassifier

      private FluidClassifier()
      Private constructor to prevent instantiation.
  • Method Details

    • classify

      public static ReservoirFluidType classify(SystemInterface fluid)
      Classify a reservoir fluid based on its composition.

      This method uses C7+ content as the primary classification criterion.

      Parameters:
      fluid - the fluid system to classify
      Returns:
      the reservoir fluid type
    • classifyByC7Plus

      public static ReservoirFluidType classifyByC7Plus(double c7PlusMolPercent)
      Classify a reservoir fluid based on C7+ content.
      Parameters:
      c7PlusMolPercent - C7+ content in mol%
      Returns:
      the reservoir fluid type
    • classifyByGOR

      public static ReservoirFluidType classifyByGOR(double gorScfStb)
      Classify a reservoir fluid based on GOR (gas-oil ratio).
      Parameters:
      gorScfStb - gas-oil ratio in scf/STB
      Returns:
      the reservoir fluid type
    • classifyWithPhaseEnvelope

      public static ReservoirFluidType classifyWithPhaseEnvelope(SystemInterface fluid, double reservoirTemperatureK)
      Classify a reservoir fluid using both composition and phase envelope analysis.

      This is the most comprehensive classification method, considering:

      • C7+ content
      • Critical point location
      • Cricondenbar and cricondentherm
      • Reservoir temperature relative to phase envelope
      Parameters:
      fluid - the fluid system to classify
      reservoirTemperatureK - reservoir temperature in Kelvin
      Returns:
      the reservoir fluid type
    • calculateC7PlusContent

      public static double calculateC7PlusContent(SystemInterface fluid)
      Calculate C7+ content in mol%.
      Parameters:
      fluid - the fluid system
      Returns:
      C7+ content in mol%
    • estimateAPIGravity

      public static double estimateAPIGravity(SystemInterface fluid)
      Estimate API gravity from fluid density at standard conditions.

      API = 141.5 / SG - 131.5, where SG is specific gravity relative to water at 60°F

      Parameters:
      fluid - the fluid system
      Returns:
      estimated API gravity, or NaN if not applicable
    • generateClassificationReport

      public static String generateClassificationReport(SystemInterface fluid)
      Generate a fluid classification report.
      Parameters:
      fluid - the fluid system to analyze
      Returns:
      formatted classification report