Class ComponentCoutinhoWax

All Implemented Interfaces:
Serializable, Cloneable, ComponentEosInterface, ComponentInterface, ThermodynamicConstantsInterface

public class ComponentCoutinhoWax extends ComponentSolid
Wax component model based on the Coutinho predictive UNIQUAC approach.

Implements the solid-liquid equilibrium model of Coutinho (1998, 2001) for wax precipitation in petroleum fluids. The model uses the UNIQUAC local composition framework for the solid-phase activity coefficient, with predictive interaction parameters derived from the Hildebrand-Scatchard regular solution theory and the Wilson equation for the liquid phase.

The solid-liquid equilibrium condition for each component i is:

ln(x_i ^ s * gamma_i ^ s) = ln(x_i ^ l * gamma_i ^ l) - (DeltaH_f_i / (R * T)) * (1 - T / T_f_i)
    + (DeltaCp_SL_i / R) * (T_f_i / T - 1 - ln(T_f_i / T))

The solid-phase activity coefficient is calculated using the predictive UNIQUAC equation with combinatorial and residual contributions. The UNIQUAC interaction parameters lambda_ij for the solid phase are estimated from the sublimation enthalpies of pure components.

References:

  • Coutinho, J.A.P., "Predictive UNIQUAC: A New Model for the Description of Multiphase Solid-Liquid Equilibria in Complex Hydrocarbon Mixtures," Ind. Eng. Chem. Res., 37, 4870-4875, 1998.
  • Coutinho, J.A.P. and Daridon, J.-L., "Low-Pressure Modeling of Wax Formation in Crude Oils," Energy & Fuels, 15, 1454-1460, 2001.
  • Coutinho, J.A.P. and Stenby, E.H., "Predictive Local Composition Models for Solid/Liquid Equilibrium in n-Alkane Systems," Ind. Eng. Chem. Res., 35, 918-925, 1996.
Version:
1.0
Author:
NeqSim
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Serialization version UID.
      See Also:
    • logger

      static org.apache.logging.log4j.Logger logger
      Logger object for class.
    • Z_COORD

      private static final double Z_COORD
      Coordination number for UNIQUAC model. Standard value is 10 as recommended by Abrams and Prausnitz (1975).
      See Also:
  • Constructor Details

    • ComponentCoutinhoWax

      public ComponentCoutinhoWax(String name, double moles, double molesInPhase, int compIndex)
      Constructor for ComponentCoutinhoWax.
      Parameters:
      name - Name of component.
      moles - Total number of moles of component.
      molesInPhase - Number of moles in phase.
      compIndex - Index number of component in phase object component array.
  • Method Details

    • fugcoef

      public double fugcoef(PhaseInterface phase1)

      Calculate, set and return fugacity coefficient.

      Uses Claperyons equation to calculate the solid fugacity

      Specified by:
      fugcoef in interface ComponentInterface
      Overrides:
      fugcoef in class ComponentSolid
      Parameters:
      phase1 - a PhaseInterface object to get fugacity coefficient of.
      Returns:
      Fugacity coefficient
    • fugcoef2

      public double fugcoef2(PhaseInterface phase1)

      Calculate, set and return fugacity coefficient.

      Calculates the solid fugacity coefficient using the Coutinho predictive UNIQUAC model. The solid-phase fugacity is computed from the liquid reference fugacity, heat of fusion, heat capacity difference, and the UNIQUAC solid-phase activity coefficient.

      Overrides:
      fugcoef2 in class ComponentSolid
      Parameters:
      phase1 - a PhaseInterface object to get fugacity coefficient of.
      Returns:
      Fugacity coefficient
    • calcLnGammaUNIQUAC

      public double calcLnGammaUNIQUAC(PhaseInterface phase1)
      Calculates the natural logarithm of the UNIQUAC activity coefficient for this component in the solid (wax) phase.

      The UNIQUAC model splits the activity coefficient into a combinatorial (entropic) term and a residual (enthalpic) term:

      ln(gamma_i) = ln(gamma_i ^ comb) + ln(gamma_i ^ res)
      

      The combinatorial term accounts for differences in molecular size and shape, while the residual term accounts for energetic interactions between unlike molecules in the solid solution.

      Parameters:
      phase1 - The phase for which to calculate the activity coefficient.
      Returns:
      The natural logarithm of the UNIQUAC activity coefficient.
    • calcLambdaIJ

      public double calcLambdaIJ(PhaseInterface phase1, int comp1, int comp2)
      Calculates the UNIQUAC binary interaction parameter lambda_ij for the solid phase.

      Following Coutinho (1998), the interaction parameters are estimated from the sublimation enthalpies using the geometric mean combining rule. For the solid phase, the interaction energy between molecules i and j is related to the geometric mean of their sublimation enthalpies:

      lambda_ij = lambda_ji = -(2 / Z) * sqrt((DH_sub_i - RT) * (DH_sub_j - RT))
          + (1 - alpha_ij) * (1 / Z) * ((DH_sub_i - RT) + (DH_sub_j - RT))
      

      where alpha_ij is a non-randomness correction parameter. For equal chain molecules, lambda_ii = -(2/Z) * (DH_sub_i - RT). The deviation from the geometric mean rule is captured by the excess parameter alpha_ij which is zero for same-size molecules and increases with size difference.

      Parameters:
      phase1 - Current phase
      comp1 - Index of component 1
      comp2 - Index of component 2
      Returns:
      The UNIQUAC interaction parameter lambda_ij [J/mol]
    • calcSublimationEnthalpy

      public double calcSublimationEnthalpy(PhaseInterface phase1, int compIndex)
      Calculates the sublimation enthalpy of a pure n-alkane at the given temperature.

      DH_sub = DH_vap(T) + DH_fus + DH_trans

      where DH_vap is the enthalpy of vaporization, DH_fus is the enthalpy of fusion, and DH_trans is the solid-solid transition enthalpy (relevant for odd-numbered n-alkanes).

      Parameters:
      phase1 - Current phase
      compIndex - Component index
      Returns:
      Sublimation enthalpy [J/mol]
    • getCarbonNumber

      private double getCarbonNumber(ComponentInterface comp)
      Estimates the effective carbon number for a component.

      Uses the molecular weight to estimate carbon number, assuming the component is approximately an n-alkane (CnH2n+2): MW = 14.027 * n + 2.016.

      Parameters:
      comp - Component interface
      Returns:
      Estimated carbon number