Advanced Thermodynamics

advancedthermo.com

Thermodynamic properties of natural gas mixtures containing helium - Part 9

7 August 2021

This is Part 9 of a series.

In Part 8, I validated my earlier calculations for mixtures with helium against TREND 4.0 [1] and trialled a different mixing rule for the binary interaction parameters between methane and helium, with improved results for density predictions. In this part, I'll see whether the predictions of phase equilibria also improve.

Using the arithmetic_γ function developed in Part 8, it's a simple matter to compare against the pTxy dataset as was done in Part 7 using the 'classical' critical constants for helium reported by Messerly et al. [2]. The important statistics are given below:


    Results for γv = γT = 1
    -----------------------
    Statistic      lnK(methane)               lnK(helium)
    AAD            0.39529678667060447        8.089845336234148
    Bias           0.39393776759098836        -8.089845336234148
    RMS            0.5033200776369687         15.277498663484204
    Max            1.9302763783863863         -109.38993501770257

    Results for γv = 1.086694, γT = 2.044932
    ----------------------------------------
    Statistic      lnK(methane)               lnK(helium)
    AAD            0.2141818363559133         4.401756605836159
    Bias           0.2092722154474173         -4.401756605836159
    RMS            0.3363407531427379         9.216561743227535
    Max            1.8747999120906926         -67.62638550447191
The new interaction parameters seem to improve the statistics compared to the γv = γT = 1 case; however the Max deviation is unusually large and some flash cases still result in a single phase prediction.

I haven't yet looked in detail at the cause for the large Max deviations. With the GERG-2008 EOS [3], a point where my flash leads to anomalously large lnK values is:


    "Reference",            "n", "T",     "p",     "x1",    "x2",    "y1",    "y2"
    "DeVaney et al., 1971", 10,  154.01,  2757.9,  0.9950,  0.0050,  0.5258,  0.4742
After printing some intermediate calculations from the flash, I see that the successive substitution procedure is reaching the maximum number of iterations but is cycling between 2 points. Evidently, the quick-and-dirty phase equilibrium solver I implemented (see Part 5) is not performing well.

One possibility for creating a more robust solver is to use a sophisticated technique like in IntervalRootFinding.jl, the documentation for which can be found here. The phase equilibrium problem is fairly technical to try first, so instead I'll try making a more robust density solver than the one in Part 4. Setting up the call to IntervalRootFinding is straightforward:


function ρ_robust(m::FluidMixture,p_target,T,x)
    return IntervalRootFinding.roots(ρ->p(m,ρ,T,x)-p_target,1.e-4..1.e5)
end
(Note that additional logic is required to identify the correct root.) The main issue with this approach is its extreme slowness. For pure methane at 180 K, I get the following output at two pressures:

@time AdvancedThermo.ρ_robust(m,1.e6,T,x)
    2.209085 seconds (6.28 M allocations: 244.578 MiB, 5.04% gc time)
  1-element Vector{Root{Interval{Float64}}}:
   Root([736.006, 736.007], :unique)

@time AdvancedThermo.ρ_robust(m,3.3e6,T,x)
   23.685067 seconds (68.19 M allocations: 2.595 GiB, 5.10% gc time)
  3-element Vector{Root{Interval{Float64}}}:
   Root([3873.39, 3873.4], :unique)
   Root([17234.3, 17234.4], :unique)
   Root([7522.07, 7522.08], :unique)
For comparison, my quick-and-dirty density solver finds the stable root in well under 1 millisecond. Given that the phase equilibrium problem is considerably more complicated than solving for density, I expect it would take even longer to solve. I'm sure there is some possibility to enhance the performance of the interval root-finder, but I'd like to pursue other possibilities first.

Last time, I set up TREND [1] in a way that allowed me to calculate the properties of mixtures containing helium using the modified critical parameters from Messerly et al. [2]. As TREND has a phase equilibrium solver, I can use its Excel API to calculate the flash results. What I find is somewhat encouraging but not conclusive:

Incidentally, I didn't time the results but the flash was noticeably slower when GERG-2008 was used.

As TREND failed to find the correct two-phase equilibrium in a large percentage of cases with the GERG-2008 EOS, I can't compute a full complement of statistics. So I really need to find a more robust way to flash these mixtures before I can say which model is better. I happen to also have REFPROP 10 [4] available: it uses the same fluid files as TREND so, in principle, it should be relatively straightforward to try out the new model with. Unfortunately, when I try to flash the mixtures in pTxy_methane_helium.csv with the GERG-2008 EOS from REFPROP 10:

So it seems that REFPROP 10 — like TREND 4.0 — is not robust enough to handle these difficult flash cases with helium mixtures.

Discussion

At this point, I've exhausted the external tools available to me. Although they were not completely up-to-task, I was able to make some progress. My sense is that some set of critical parameters for helium will improve the predictive capability of the EOS, but that it may not be those of Messerly et al. [2], i.e. the critical temperature and critical density may need to be optimised in a similar way as we did when using the cubic EOS [5]. Either way, to reach a definitive conclusion, it will be necessary to have a more robust phase equilibrium solver.

Building a robust phase equilibrium solver is not an easy or straightforward task; I would have preferred to find an accessible tool to perform the calculations for me in a reliable way. It's disappointing to have investigated this far only to come up against a sizeable obstacle. However, I believe it is surmountable. I will pursue the development of a robust solver in another (hopefully short) series, and will resume this series once I have the necessary tools.

The code so far can be obtained by downloading the zip file.

References

[1] Span et al., TREND. Thermodynamic Reference and Engineering Data 4.0. Lehrstuhl für Thermodynamik, Ruhr-Universität Bochum, 2019

[2] Messerly et al., J. Chem. Eng. Data, 2020, 65, 1028 (link to publisher)

[3] Kunz and Wagner, J. Chem. Eng. Data, 2012, 57, 3032 (link to publisher)

[4] Lemmon et al., REFPROP Documentation, Release 10.0, NIST (link to FAQ)

[5] Rowland et al., J. Chem. Eng. Data, 2017, 62, 2799 (link to publisher)

Go to Home How to cite this page Permalink to this page