Applying Group Contribution Methods to C7+ Fraction

Applying Group Contribution Methods to C7+ Fraction

A stumbling block for the use of predictive cubic equations of state is that it is necessary to know something about the types of molecules that you are dealing with. For simple gas mixtures of light compoonents, a gas chromatograph mass spectrometer analysis from a lab can give you sufficient compositional breakdown to use these equations of state. But what about heavier hydrocarbon mixtures such as gas-condenate, volatile oil, or even crude oil itself? Here the C7+ components are not often well defined. Or at least there are two approaches used: (1) where the Katz-Firoozabadi single carbon number fractions are used to characterise the mixture, and (2) where an assay is performed separately that provides a lot of detail about the liquid composition, but is often not linked to the reservoir fluid composition.

The approach adopted by Pyrus is to use the assay results to guide the characterisation of a C7+ fraction where the MW, SG, SCN and PNA fractions are consistent. Whilst this is a somewhat simpler approach as it only considers a single C7+ fraction, it is very powerful and allows much better matching for a cubic equation of state to the laboratory results in comparison to a conventional cubic equation of state.

Once a plus fraction pseudo-component has been broken down into its constituent fractions of paraffins, naphthenes and aromatics, the door is opened to utilise methods that rely upon group contribution methods. These methods include cubic equations of state and estimation of viscosity.

Group Contribution Method for Enhanced Predictive Peng-Robinson Equation of State

Prediction of temperature-dependent binary interaction parameters (BIPs) with the Peng-Robinson equation of state for hydrocarbon fluids has led to improvements in vapour-liquid equilibrium calculations (Jaubert and Mutelet, 2004). The method introduced by Jaubert and Mutelet predicts the BIPs by breaking down components into molecular groups. Initially six groups were defined. These were CH3, CH2, CH, C, CH4 (methane) and C2H6 (ethane). This allowed prediction of BIPs to be used with the Peng-Robinson equation of state for normal and non-normal paraffins.

Since the initial method was published, several additional papers have been published which have expanded the number of groups, with the most recent also including compounds of relevance to carbon capture and sequestration (Xu et al, 2017). This allows prediction of BIPs to be expanded to compounds including naphthenes and aromatics.

A brief description of the equations used to predict BIPs can be found in an earlier post on cubic equations of state.

Advantages of EPPR78

The Enhanced Predictive Peng-Robinson (EPPR78) Equation of State is a powerful tool for modeling fluid properties, particularly in the field of petroleum engineering. When applied to simple mixtures of known hydrocarbon compounds, it has been reported that the predictive capabilities of the method are accurate and amongst the best performing equation of state models.

Equation of State models based on EPPR78 appear to require less tuning than other models to match experimental data. This improves the confidence in using results obtained using this method.

Challenges of Applying EPPR78 to Mixtures with C7+ Fraction

Group contribution methods such as EPPR78 have not found much application to real-world hydrocarbon mixtures. This is because of the difficulty associated with determining the groups that are present in a plus fraction. The plus fraction contains a wide number of different compounds, which makes it very hard to define the groups that are present in any plus fraction.

An approach to estimate the BIPs based on an estimation of the number of carbon atoms associated with paraffin, napthene and aromatic groups has been proposed (Xu et al, 2015). This approach is based on expressing the pseudo-component critical temperature (Tc), critical pressure (Pc) and acentric factor (ω) as functions of the number of carbon atoms for each group (NPAR, NNAP, NARO). The single carbon number for the cut is equal to NPAR + NNAP + NARO. Because three known properties can be expressed with three equations of three unknowns, the system can be solved.

Unfortunately the paper by Xu et al does not divulge much detail on how the group contributions for the different PNA content are best determined, but the paper does show that the performance of the characterised C7+ fraction versus a detailed reference description of the mixture is very good. An application of the methodology to a new cubic equation of state was described by Nasrifar and Rahmanian (2017). In their approach, it was assumed that all paraffins are represented by the CH2 or -CH2 group, all napthenes by the CH2, cyclic or -CH2- (R) group, and all aromatics by the CHaro or CH<( (R) group. This is evidently quite a simplistic assumption and it should not be hard to improve on the approach.

What this suggests is that if a reliable method of establishing the PNA content of a pseudo-component is used, a systematic approach to determining the group components for each of the paraffin, naphthene and aromatic fractions should allow EPPR78 to be used with pseudo-components.

Breaking Down the C7+ Fraction into Group Components

An alternative approach to determining the PNA fractions in a pseudo-component has already been described. Although this method was developed to describe the PNA content for different single carbon number fractionation cuts, it can equally be applied to a C7+ pseudo-component.

For any pseudo-component, it is possible to describe it using molecular weight, specific gravity, single carbon number and the PNA character. There is a relationship between all four characterisation parameters. Using these parameters, we can extend the approach to additionally define the group components that are associated with a pseudo-component. This is done by determining the typical average number of group components that are associated with each molecular type.

We will define the following parameters which are obtained from our pseudo-component characterisation:

  • MW: molecular weight
  • SG: specific gravity
  • xp: paraffin fraction
  • xn: naphthene fraction
  • xa: aromatic fraction
  • xma: mono-aromatic fraction
  • xpa: poly-aromatic fraction
  • PCN: Paraffin average carbon number
  • NCN: Naphthene average carbon number
  • ACN: Aromatic average carbon number
  • SCN: Single carbon number (equivalent average carbon number for PNA fractions)

For each of our PNA fractions, we will determine group components for two varieties of that fraction: a simple representation and a more complex representation. For paraffins this is the difference between normal alkanes and branched alkanes. For naphthenes it is the difference between a single cyclic ring and multiple cyclic rings. For aromatics it is the difference between a single aromatic ring (mono-aromatic) and multiple aromatic rings (poly-aromatic). By applying the overall PNA fractions and the ratio of simple to complex compounds for each PNA fraction, the average number of group components for the pseudo-component can be determined. For any given fraction with a percentage N% of normal compounds, the total fraction of a group component is given by the following equation:

G_{fraction}=G_{simple}\times&space;N\%+G_{complex}\times(1-N\%)

To determine the percentage of normal compounds (N%), we consider the specific gravity of the pseudo-component and compare this to the expected specific gravity for the normal paraffin with the same single carbon number for the paraffin fraction. More complex compounds tend to be smaller, and thus have a higher specific gravity.

/**
 * Guess the overall percentage of complex versus simple compounds for paraffins. This is based on the overall
 * specific gravity versus the normal paraffin specific gravity. It is a crude method that yields results that seem
 * appropriate, but which are not based on any actual research or hard data. As such, it should be possible to
 * improve the method if required.
 *
 * @param pcn paraffin carbon number for the distillation cut
 * @param gamma specific gravity in liquid phase relative to water = 1.0
 * @return educated guess for the overall percentage of complex compounds
 */
private static double complexPercentPN(double pcn, double gamma) {
    double normal_paraffin_gamma = pcn / (1.14984 * pcn + 2.280525);
    double model_gamma = getParaffinSgFromCarbonNum(pcn);

    // Method assumes that the average paraffin sg vs pcn trend is approximately 10% complex compounds. Higher SG
    // implies a larger percentage of complex compounds.
    double cmplx_frac = ((gamma - normal_paraffin_gamma) / (model_gamma - normal_paraffin_gamma)) / 10.0;
    return min(1.0, max(0.0, cmplx_frac)); // constrain to 0.0 to 1.0 range
}

Here, the method getParaffinSgFromCarbonNum obtains specific gravity of paraffinic components from the true average number of carbon atoms. It has been given in a previous blog post and establishes a trend for a mix of normal alkanes and branched alkanes versus the true average number of carbon atoms for those paraffin compounds.

Group Contributions for Paraffin Fraction

The paraffin fraction contains normal straight chain paraffins (n-alkanes) and non-normal paraffins which contain branches (branched alkanes). Equations have been derived to estimate the expected average fraction of groups associated with each of these paraffin types.

For normal paraffins with straight chains, such as n-Hexane shown below, there are only two groups: -CH3 and -CH2-. It is trivial to calculate the fraction for each of these groups given the average number of carbon atoms for the paraffin. There are always two -CH3 groups, with the remainder being -CH2- groups.

n-Hexane

The branched alkanes introduce two additional groups: >CH- and >C<. These can be seen in the molecular structures for 2-MethylPentane, 2,3-DiMethylButane and 2,2-DiMethylButane respectively:

2-MethylPentane

2,3-DiMethylButane

2,2-DiMethylButane

To calculate the number of groups for any given number of paraffin carbon atoms, it is necessary to make some assumptions. The strategy employed is to estimate the average fractions for the -CH3 and -CH groups. The -CH2 group can then be calculated by ensuring the number of hydrogen atoms for this PCN is consistent with that expected for a paraffin e.g., 2 × PCN + 2. Once the fractions for these three groups have been determined, the >CH< group can simply be calculated by ensuring that the fractions for all groups sum to unity.

For the -CH3 group we consider the minimum and maximum number of groups that might occur. The minimum is always three, where there is just a single branch e.g. 2-MethylPentane. This is given by the formula 3 / PCN. The maximum occurs when all available carbon atoms have a -CH3 group attached. The fraction is given by the formula FLOOR(2 + ((PCN - 2) / 2), 1) / PCN. Note the use of the floor function which rounds down to the nearest integer. This is required because for odd numbers of carbon atoms an orphan carbon atom remains along the spine of the molecule which cannot be paired with a -CH3 group. By calculating the minimum, maximum and average fractions for PCNs from 6 through to 40, a power trendline is fitted to the average fractions. This allows a generalised function to be applied.

For the >CH< group, the method requires some additional subtlety. This is because the number of groups can be zero, one (for our minimum -CH3 group molecules) up to (PCN - 2) / 2. To estimate the number of >CH< groups, we consider the maximum number of -CH3 groups case. Here, after ignoring the two end -CH3 groups, all other -CH3 groups are paired with a >CH< group. This is given by the formula FLOOR((PCN - 2) / 2, 1). Let us then consider that on average, only half of the maximum possible groups are actually >CH< groups. The fraction is thus given by the formula (FLOOR(FLOOR((PCN - 2) / 2, 1) / 2, 1)) / PCN. Again, a floor function is used to ensure an integer number of groups which creates a sawtooth effect when plotting against integer PCNs. As before, we plot these results for PCNs from 6 through to 40 and use a logarithmic trendline to allow a generalised application to any PCN.

Regressed trendline for branched paraffin group components based on average for different molecular structures.
Figure 1: Regressed trendline for branched paraffin group components based on average for different molecular structures.
Group Normal Paraffin Branched Paraffin
-CH3 2 / PCN 0.90751 × PCN−0.31425
-CH2- 1 − -CH3 ((-CH3normal × 3 + -CH2-normal × 2) − ((-CH3branched × 3) + >CH-branched) / 2
>CH- - 0.04914 × log(PCN) + 0.05358
>C< - 1 − (-CH3 + -CH2- + >CH-)

Group Contributions for Naphthene Fraction

The naphthenes comprise ringed structures with two hydrogen atoms associated with each carbon atom in the ring. The simple compounds contain a single ring with one or more branches off the ring. Complex compounds can consist of two or more rings.

For our simple compounds, we base the group component contributions on the EthylCycloHexane structure. This is a single ring with an ethyl branch (-CH2- and -CH3 groups). We can estimate the groups for integer numbers of carbon atoms easily based on this structure. For NCN < 8 we need to consider the special cases for NCN = 7 and NCN = 6. For NCN = 7 we change the ethyl branch to a methyl branch (single -CH3 group), thus losing a -CH2- group in comparison to NCN = 8. For NCN = 6 we have a CycloHexane ring, which loses the -CH3, -CH2- and >CH- (R) groups, and gains a -CH2- (R) group. For NCN > 9 we can add -CH2- groups. This is essentially a normal paraffin with a CycloHexane ring attached. The calculations that result from this logic are shown in the table below for the “Simple” column.

EthylCycloHexane

For our complex compounds we can look at how the groups evolve as the napthenic carbon number increases. As we increase the number of atoms above those in a single ring we start to add methyl (one carbon), ethyl (two carbons), propyl (three carbons) and butyl (four carbons) branches. With four carbon atoms we can also close a second ring. This sets up a pattern for the number of groups associated with each NCN. Whilst this is just for cyclohexane rings, and ignores the possibility of other cycloalkane ring structures, it should provide a reasonable estimate of the relative importance of different groups.

Molecule NCN -CH3 -CH2- >CH- >C< -CH2- (R) >CH- (R) >C< (R)
CycloHexane 6 - - - - 6 - -
MethylCycloHexane 7 1 - - - 5 1 -
EthylCycloHexane 8 1 1 - - 5 1 -
1,1-DimethylCycloHexane 8 2 - - - 5 - 1
PropylCycloHexane 9 1 2 - - 5 1 -
IsopropylCycloHexane 9 2 - 1 - 5 1 -
ButylCycloHexane 10 1 3 - - 5 1 -
IsobutylCycloHexane 10 2 1 1 - 5 1 -
TertbutylCycloHexane 10 3 - - 1 5 1 -
DecaHydroNaphthalene 10 - - - - 8 2 -
1-MethylDecaHydroNaphthalene 11 1 - - - 7 3 -

Using a similar approach to that used with the branched paraffins, we create equations that approximate the group component fractional amounts shown in the table. These equations are shown in the table below:

Group / Variable Simple Naphthene Complex Naphthene
ncyc - QUOTIENT(NCN - 7, 4) + 1
ncbranch - MAX(0, NCN - ((n_cyc - 1) * 4 + 6))
-CH3 (1 - (-CH2- + -CH2- (R))) / 2 (0.075 × nc_branch^2 − 0.045 × nc_branch + 0.975) / NCN
-CH2- (NCN > 7) ? NCN - 7 / NCN : 0 MAX(0, ((NCN - 1) - ((n_cyc - 1) * 4 + 6)) / 2.7) / NCN
>CH- - MAX(0, ((NCN - 1) - ((n_cyc - 1) * 4 + 6)) / 5.5) / NCN
>C< - MAX(0, ((NCN - 1) - ((n_cyc - 1) * 4 + 6)) / 12) / NCN
-CH2- (R) (NCN > 6) ? 5 / NCN : 1 ((n_cyc - 1) * 2 + 5) / NCN
>CH- (R) (1 - (-CH2- + -CH2- (R))) / 2 -CH2- (R) - (nc_branch / 10 + 4) / NCN
>C< (R) - MAX(0, 1 − (-CH3 + -CH2- + >CH- + >C< + -CH2- (R) + >CH- (R)))

Note: Table uses ternary conditional operator to express logic. The equations for all group components may not add to unity, so fractions must be normalised to 1.0 after calculation.

Group Contributions for Aromatic Fraction

The aromatics comprise ringed structures with two hydrogen atoms associated with each carbon atom in the ring. The simple compounds contain a single ring with one or more branches off the ring. Complex compounds can consist of two or more rings.

EthylBenzene

Molecule ACN -CH3 -CH2- >CH- >C< CH<( (R) -C<( (R) )>C<( (R)
Benzene 6 - - - - 6 - -
MethylBenzene 7 1 - - - 5 1 -
EthylBenzene 8 1 1 - - 5 1 -
1,1-DimethylBenzene 8 2 - - - 5 - 1
PropylBenzene 9 1 2 - - 5 1 -
IsopropylBenzene 9 2 - 1 - 5 1 -
ButylBenzene 10 1 3 - - 5 1 -
IsobutylBenzene 10 2 1 1 - 5 1 -
TertbutylBenzene 10 3 - - 1 5 1 -
Naphthalene 10 - - - - 8 2 -
1-MethylNaphthalene 11 1 - - - 7 3 -

Again we use a similar approach to that used with the branched paraffins. Equations are created that approximate the group component fractional amounts shown in the table. These equations are shown in the table below:

Group Mono Aromatic Poly Aromatic
naro - QUOTIENT(ACN - 7, 4) + 1
acbranch - MAX(0, ACN - ((n_aro - 1) * 4 + 6))
-CH3 (1 - (-CH2- + CH<( (R))) / 2 (0.075 × ac_branch^2 − 0.045 × ac_branch + 0.975) / ACN
-CH2- (ACN > 7) ? ACN - 7 / ACN : 0 MAX(0, ACN - ((n_aro - 1) * 4 + 6))
>CH- - MAX(0, ((ACN - 1) - ((n_aro - 1) * 4 + 6)) / 5.5) / ACN
>C< - MAX(0, ((ACN - 1) - ((n_aro - 1) * 4 + 6)) / 12) / ACN
CH<( (R) (ACN > 6) ? 5 / ACN : 1 ((n_aro - 1) * 2 + 5) / ACN
-C<( (R) (1 - (-CH2- + CH<( (R))) / 2 CH<( (R) - (ac_branch / 10 + 4) / ACN
)>C<( (R) - MAX(0, 1 − (-CH3 + -CH2- + >CH- + >C< + CH<( (R) + -C<( (R)))

Note: Table uses ternary conditional operator to express logic. The equations for all group components may not add to unity, so fractions must be normalised to 1.0 after calculation.

Combining PNA Groups

Once the group fractions for each of the paraffin, naphthene and aromatic fractions have been determined, the overall total group contributions can be calculated from the PNA fractions. This is a simple linear combination for each group component:

G_{total}=G_{paraffin}\times&space;x_{p}+G_{naphthene}\times&space;x_{n}+G_{aromatic}\times&space;x_{a}

A worked example based on the Katz-Firoozabadi C9 fraction is shown. This Katz-Firoozabadi has the following properties:

  • MW: 121.0 g/mole
  • SG: 0.768× relative to water

Properties for other variables are derived from these values in accordance with the approach used for C7+ characterisation but with updated methodology for determining PNA fractions. Boiling point is determined using the Soreide (1989) correlation. This allows Watson factor to be calculated from boiling point and API gravity (obtained from specific gravity). Critical temperature, pressure and volume can be determined from correlations such as Riazi-Adwani and Twu. Acentric factor is determined from the Kesler-Lee correlation. We can determine PNA fractions based on these values, and then from the MW, SG and PNA, the average number of carbon atoms can be calculated. Note that the single carbon number (SCN) which is the normal paraffin associated with the true boiling point is different to the average number of carbon atoms, and can be determined from the boiling point.

For the Katz-Firoozabadi C9 fraction the following parameters are obtained through use of the characterisation procedure:

  • PNA fractions: Paraffin = 63.13%, Naphthene = 12.95%, Aromatic = 23.91%
  • Complex ratio: Normal paraffin/naphthene = 62.37%
  • Aromatic ratio: Mono-aromatic fraction = 98.62%
  • Single carbon number (SCN): 9
  • Paraffin carbon number (PCN): 9.083
  • Naphthene carbon number (NCN): 8.314
  • Aromatic carbon number (ACN): 7.747
  • Average carbon number (nC): 8.662

Using the formulae described above, we obtain the following group components for the C9 pseudo-component.

Group Normal P Branched P Paraffin Simple N Complex N Naphthene Mono A Poly A Aromatic Overall
-CH3 0.2202 0.4537 0.3081 0.1203 0.1530 0.1326 0.1292 0.1452 0.1295 0.2426
-CH2- 0.7798 0.3486 0.6175 0.1580 0.0585 0.1206 0.0953 0.0353 0.0945 0.4281
>CH- - 0.1620 0.0610 - 0.0287 0.0108 - 0.0173 0.0002 0.0399
>C< - 0.0357 0.0134 - 0.0132 0.0050 - 0.0079 0.0001 0.0092
CH<( (R) - - - - - - 0.6462 0.6462 0.6462 0.1545
-C<( (R) - - - - - - 0.1292 0.1068 0.1289 0.0308
)>C<( (R) - - - - - - - 0.0413 0.0006 0.0001
-CH2- (R) - - - - - 0.6014 - - - 0.0779
>CH- (R) - - - - - 0.1098 - - - 0.0142
>C< (R) - - - - - 0.0198 - - - 0.0026

It can be seen that -CH2-, CH<( (R) and -CH2- (R) groups are the main groups for the paraffins, naphthenes and aromatics, but -CH3 is also predominant. Other groups are very minor contributions only.

A code snippet from Pyrus used to implement the described equations is as follows:

/**
 * The PPR78 equation of state requires that the ratio of group components for each component are defined. This is
 * challenging when dealing with a pseudo as the theoretical structures possible run into the many thousands.
 * Despite this we can generalise the nature of the components, and split the pseudo into three main types of
 * hydrocarbon e.g. paraffin, naphthene (single saturated cyclic ring) and aromatics (single ring). Paraffins and
 * naphthenes have been modelled with different degrees of branching complexity.
 *
 * @param pna proportion of pseudo-component describing PNA fractions as an array [p, n, a, pa, ma] where p
 * comprises straight chain or branched paraffins, n is the proportion comprising cyclic (saturated) ring as major
 * structure, a is the proportion of aromatic (single ring), pa is the proportion comprising poly-aromatic and ma is
 * the proportion comprising mono-aromatic
 * @param normal proportion of compounds that have simple chains
 */
private void setPNAGroups(double[] pna, double normal) {
    x_p = pna[0];
    x_n = pna[1];
    x_a = pna[2];
    x_pa = pna[3];
    x_ma = pna[4];

    /*
     * First we get the equivalent single carbon number from which all group component ratios are derived. This is
     * based on modelling of group components for common paraffins, napthenes and aromatics, and then tweaking the
     * SCN found so that the molecular mass calculated for Katz-Firoozabdi SCN components is reasonable using this
     * method. The adjustment to SCN is only for the calculation of group component fractions.
     */
    double pcn = estimatePCN(mass, x_p, x_a); // mass is molecular weight in g/mole
    double ncn = getNaphtheneCarbonNumFromPCN(pcn);
    double acn = getAromaticCarbonNumFromPCN(pcn);

    /* 
     * Calculate the paraffin group component ratios
     */
    double[] p_ch3 = new double[3];
    double[] p_ch2 = new double[3];
    double[] p_ch = new double[3];
    double[] p_c = new double[3];

    // Simple alkanes with length of chain dependent on average SCN
    p_ch3[0] = 2.0 / pcn;
    p_ch2[0] = 1.0 - p_ch3[0];

    // Branched paraffins with increased branching for higher SCN
    p_ch3[1] = 0.90751 * pow(pcn, -0.31425);
    p_ch[1] = 0.04914 * log(pcn) + 0.05358;
    p_ch2[1] = ((p_ch3[0] * 3.0 + p_ch2[0] * 2.0) - (p_ch3[1] * 3.0 + p_ch[1])) / 2.0;
    p_c[1] = 1.0 - (p_ch3[1] + p_ch2[1] + p_ch[1]);
    double p_grpsum = p_ch3[1] + p_ch2[1] + p_ch[1] + p_c[1];

    // Average fractions for each group contribution from paraffins
    p_ch3[2] = p_ch3[0] * normal + (p_ch3[1] / p_grpsum) * (1.0 - normal);
    p_ch2[2] = p_ch2[0] * normal + (p_ch2[1] / p_grpsum) * (1.0 - normal);
    p_ch[2] = p_ch[0] * normal + (p_ch[1] / p_grpsum) * (1.0 - normal);
    p_c[2] = p_c[0] * normal + (p_c[1] / p_grpsum) * (1.0 - normal);

    /*
     * Calculate the naphthene group component ratios
     */
    double[] n_ch3 = new double[3];
    double[] n_ch2 = new double[3];
    double[] n_ch = new double[3];
    double[] n_c = new double[3];
    double[] n_ch2cyc = new double[3];
    double[] n_chcyc = new double[3];
    double[] n_ccyc = new double[3];
    int n_cycring = ((int) ncn - 7) / 4 + 1;
    double nc_branch = max(0.0, ncn - ((n_cycring - 1.0) * 4.0 + 6.0));

    // Single cyclic ring with single branch
    n_ch2[0] = (ncn > 7) ? (ncn - 7.0) / ncn : 0.0;
    n_ch2cyc[0] = (ncn > 6) ? 5.0 / ncn : 1.0;
    n_ch3[0] = (1.0 - (n_ch2[0] + n_ch2cyc[0])) / 2.0;
    n_chcyc[0] = n_ch3[0];

    // Complex cyclic rings with branches
    n_ch3[1] = (0.075 * pow(nc_branch, 2.0) - 0.045 * nc_branch + 0.975) / ncn;
    n_ch2[1] = max(0.0, ((ncn - 1.0) - ((n_cycring - 1.0) * 4.0 + 6.0)) / 2.7) / ncn;
    n_ch[1] = max(0.0, ((ncn - 1.0) - ((n_cycring - 1.0) * 4.0 + 6.0)) / 5.5) / ncn;
    n_c[1] = max(0.0, ((ncn - 1.0) - ((n_cycring - 1.0) * 4.0 + 6.0)) / 12.0) / ncn;
    n_ch2cyc[1] = ((n_cycring - 1.0) * 2.0 + 5.0) / ncn;
    n_chcyc[1] = n_ch2cyc[1] - (nc_branch / 10.0 + 4.0) / ncn;
    n_ccyc[1] = max(0.0, 1.0 - (n_ch3[1] + n_ch2[1] + n_ch[1] + n_c[1] + n_ch2cyc[1] + n_chcyc[1]));
    double n_grpsum = n_ch3[1] + n_ch2[1] + n_ch[1] + n_c[1] + n_ch2cyc[1] + n_chcyc[1] + n_ccyc[1];

    // Average fractions for each group contribution from naphthenes
    n_ch3[2] = n_ch3[0] * normal + (n_ch3[1] / n_grpsum) * (1.0 - normal);
    n_ch2[2] = n_ch2[0] * normal + (n_ch2[1] / n_grpsum) * (1.0 - normal);
    n_ch[2] = n_ch[0] * normal + (n_ch[1] / n_grpsum) * (1.0 - normal);
    n_c[2] = n_c[0] * normal + (n_c[1] / n_grpsum) * (1.0 - normal);
    n_ch2cyc[2] = n_ch2cyc[0] * normal + (n_ch2cyc[1] / n_grpsum) * (1.0 - normal);
    n_chcyc[2] = n_chcyc[0] * normal + (n_chcyc[1] / n_grpsum) * (1.0 - normal);
    n_ccyc[2] = n_ccyc[0] * normal + (n_ccyc[1] / n_grpsum) * (1.0 - normal);

    /*
     * Calculate the aromatic group component ratios
     */
    double[] a_ch3 = new double[3];
    double[] a_ch2 = new double[3];
    double[] a_ch = new double[3];
    double[] a_c = new double[3];
    double[] a_charo = new double[3];
    double[] a_caro = new double[3];
    double[] a_cfused = new double[3];
    int a_aroring = ((int) acn - 7) / 4 + 1;
    double ac_branch = max(0.0, acn - ((a_aroring - 1.0) * 4.0 + 6.0));

    // Single aromatic ring with single branch
    a_ch2[0] = (acn > 7) ? (acn - 7.0) / acn : 0.0;
    a_charo[0] = (acn > 6) ? 5.0 / acn : 1.0;
    a_ch3[0] = (1.0 - (a_ch2[0] + a_charo[0])) / 2.0;
    a_caro[0] = a_ch3[0];

    // Poly-aromatic rings with branches
    a_ch3[1] = (0.075 * pow(ac_branch, 2.0) - 0.045 * ac_branch + 0.975) / acn;
    a_ch2[1] = max(0.0, ((acn - 1.0) - ((a_aroring - 1.0) * 4.0 + 6.0)) / 2.7) / acn;
    a_ch[1] = max(0.0, ((acn - 1.0) - ((a_aroring - 1.0) * 4.0 + 6.0)) / 5.5) / acn;
    a_c[1] = max(0.0, ((acn - 1.0) - ((a_aroring - 1.0) * 4.0 + 6.0)) / 12.0) / acn;
    a_charo[1] = ((a_aroring - 1.0) * 2.0 + 5.0) / acn;
    a_caro[1] = a_charo[1] - (ac_branch / 10.0 + 4.0) / acn;
    a_cfused[1] = max(0.0, 1.0 - (a_ch3[1] + a_ch2[1] + a_ch[1] + a_c[1] + a_charo[1] + a_caro[1]));
    double a_grpsum = a_ch3[1] + a_ch2[1] + a_ch[1] + a_c[1] + a_charo[1] + a_caro[1] + a_cfused[1];
    double monofrac = x_ma / (x_ma + x_pa);

    // Average fractions for each group contribution from aromatics
    a_ch3[2] = a_ch3[0] * monofrac + (a_ch3[1] / a_grpsum) * (1.0 - monofrac);
    a_ch2[2] = a_ch2[0] * monofrac + (a_ch2[1] / a_grpsum) * (1.0 - monofrac);
    a_ch[2] = a_ch[0] * monofrac + (a_ch[1] / a_grpsum) * (1.0 - monofrac);
    a_c[2] = a_c[0] * monofrac + (a_c[1] / a_grpsum) * (1.0 - monofrac);
    a_charo[2] = a_charo[0] * monofrac + (a_charo[1] / a_grpsum) * (1.0 - monofrac);
    a_caro[2] = a_caro[0] * monofrac + (a_caro[1] / a_grpsum) * (1.0 - monofrac);
    a_cfused[2] = a_cfused[0] * monofrac + (a_cfused[1] / a_grpsum) * (1.0 - monofrac);

    // Combine the paraffin, naphthene and aromatic group components together
    double ch3 = x_p * p_ch3[2] + x_n * n_ch3[2] + x_a * a_ch3[2];
    double ch2 = x_p * p_ch2[2] + x_n * n_ch2[2] + x_a * a_ch2[2];
    double ch = x_p * p_ch[2] + x_n * n_ch[2] + x_a * a_ch[2];
    double c = x_p * p_c[2] + x_n * n_c[2] + x_a * a_c[2];
    double charo = x_a * a_charo[2];
    double caro = x_a * a_caro[2];
    double cfused = x_a * a_cfused[2];
    double ch2cyc = x_n * n_ch2cyc[2];
    double chcyc = x_n * n_chcyc[2];
    double ccyc = x_n * n_ccyc[2];
    
    // Set the groups using the values obtained. Array here is specific for Pyrus but other structures are possible.
    groups = new double[]{ch3, ch2, ch, c, 0.0, 0.0, charo, caro, cfused, ch2cyc, chcyc, ccyc, 0.0, 0.0, 0.0, 0.0,
        0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
}

Application of EPPR78

Equinor’s Volve dataset is freely available and provides the opportunity to test the performance of the EPPR78 equation of state combined with the BIPs calculated for a C7+ component in accordance with the approach outlined in this post.

The composition of bottom hole sample #1 (BHS #1) is as follows:

Component Fraction
CO2 0.04938
N2 0.00459
CH4 0.43428
C2H6 0.06057
C3H8 0.0526
IC4 0.0069
NC4 0.02658
IC5 0.00921
NC5 0.01511
C6 0.02085
C7+ 0.31993
C+MW 244.3608102
C+GAMMA 0.820667077

Here the C+MW and C+GAMMA are the molecular weight and specific gravity of the C7+ fraction respectively.

The composition can be used with the Peng-Robinson cubic equation of state. The resultant phase envelope does not match the laboratory-measured bubble point. By switching to the EPPR78 equation of state, there is an improvement in the bubble point prediction. However, this is still not a good match. The distillation data from the Volve dataset shows that the aromatic content is actually higher than that implied by the MW and SG for the C7+ fraction. Given the the mass chromotograph is more likely to measure the weight% for the C7+ fraction more accurately than the density (which is inferred from a Katz-Firboozabadi calcuation/assumption), we can adjust the PNA to match the measured aromatic content of 35.2%. This inxreases the specific gravity to 0.8601, and leads to a closer match with the measured bubble point.

Ideally, no tuning for an equation of state would be necessary with a perfect model. However, this is not yet reasonable, and many compositions require a small amount of tuning. By using the EPPR78 and adjusting the C7+ specific gravity to match the PNA fractions, the amount of tuning required in comparison to the vanilla Peng-Robinson equation of state is greatly reduced.

In this case we have simply increased the heavy fraction α by 1.08×. This leads to a close match to the measured bubble point. A comparison of the different phase envelopes obtained using the Pyrus Suite and workflow described are shown in the figure below:

Improvement in phase envelope matching through use of EPPR78 equation of state, followed by matching aromatic content and finally tuning of heavy component alpha.
Figure 2: Improvement in phase envelope matching through use of EPPR78 equation of state, followed by matching aromatic content and finally tuning of heavy component alpha.

References

  • Jaubert, J. and Mutelet, F. 2004. VLE Predictions with the Peng-Robinson Equation of State and Temperature Dependent kij Calculated Through a Group Contribution Method. Fluid Phase Equilibria 224 (2): 2855-304. https://doi.org/10.1016/j.fluid.2004.06.059
  • Nasrifar, K. and Rahmanian, N. 2018. Equations of State with Group Contribution Binary Interaction Parameters for Calculation of Two-Phase Envelopes for Synthetic and Real Natural Gas Mixtures with Heavy Fractions. Oil & Gas Science & Technology 73 (7). https://doi.org/10.2516/ogst/2017044
  • Xu, X., Jaubert, J., Privat, R., Duchet-Suchaux, P., Braña-Mulero, F. 2015. Predicting Binary-Interaction Parameters of Cubic Equations of State for Petroleum Fluids Containing Pseudo-Components. Ind. Eng. Chem. Res. 54 (10): 2816-2824. https://doi.org/10.1021/ie504920g
  • Xu, X., Lasala, S., Privat, R., Jaubert, J. 2017. E-PPR78: A Proper Cubic EoS for Modelling Fluids Involved in the Design and Operation of Carbon Dioxide Capture and Storage (CCS) Processes. International Journal of Greenhouse Gas Control 56: 123-154. https://doi.org/10.1016/j.ijggc.2016.11.015

Similar Posts