Using Rs from Eclipse for CO2 Dissolution

171 views
Skip to first unread message

Karen Chen

unread,
Aug 31, 2023, 5:31:05 PM8/31/23
to MRST-users: The Matlab Reservoir Simulation Toolbox User Group
Greetings all,

I know MRST-co2lab models dissolution differently than Eclipse, but if I want to incorporate Rs from the Eclipse deck to dissolution modeling, what would be the best way?

Thanks!

Kind regards,
Karen


odd.an...@gmail.com

unread,
Sep 7, 2023, 11:56:04 AM9/7/23
to MRST-users: The Matlab Reservoir Simulation Toolbox User Group
Hi Karen,

As in Eclipse, `rs` in MRST-co2lab refers to the amount of gas (in terms of volume per volume).  As you write, there are differences in interpretation.  In the vertical-equilibrium based simulator in MRST-co2lab, `rs` refers to the gas (i.e. CO2) contents in the complete vertical water column (volume per volume), i.e. it refers to the vertically integrated value.

Also, dissolution in MRST-co2lab is handled with the understanding that the two phases (CO2 and brine) do not primarily occupy the same pore space, but are segregated into a CO2-rich upper "plume" and a underlying brine zone.  This has implications for dissolution as fluids are not in general in contact with each other except around the zone where the two fluid regions meet.

One way to approach this is to assume "instant" dissolution.  In a sense, this amounts to ignoring that the fluids are segregated, and let CO2 dissolve in brine up to the threshold defined by `rsSat(p)` (the maximum saturation value, which can be set up as a function of pressure).  The handling of dissolution is then equivalent to that of a full 3D black oil simulation, except that the "cells" are now full 3D columns.  This approach generally lead to an overestimate of dissolution, since it ignores the fact that the fluids are mostly segregated into different zones.

Another way to approach this is to assume a rate-driven dissolution.  In this model, gas from the CO2 plume is only gradually dissolved in the underlying brine, with a rate that is set up to represent the gradual transport of CO2 downwards into the underlying brine through convective mixing.  This rate has (to the best of my knowledge) no equivalent representation in an Eclipse deck, as it an upscaled quantity that really depends on the local conditions and geology.

As for your question, incorporating cell-wise Rs-values from a 3D Eclipse grid would require converting the values from being cell-based ot being column based (vertical averaging), and then have them written into the 'rs' field of the initial state object (state0).  Is this what you are asking about?

Best regards,
Odd Andersen

Applied Computational Science Group
SINTEF Digital

Karen Chen

unread,
Sep 7, 2023, 5:46:11 PM9/7/23
to MRST-users: The Matlab Reservoir Simulation Toolbox User Group
Hi Odd,

Thank you very much for your response!

Regarding the first approach, I tried using rsSat (Rs from the Eclipse deck) for the VE model, and it did indeed lead to dissolving most of the CO2.

For the second approach, I think you're talking about the parameter 'dis_rate'. In my case, I set it to zero thinking zero would mean instantaneous dissolution. The parameter that constrains dissolution is 'dis_max', which by design is a user input. In the code, I believe 'dis_max' becomes essentially 'rsSat' for the VE fluid object. Then the question for me becomes "how to define 'dis_max' using Rs from the deck".

So, no, I don't think taking the average of Rs for each vertical column and attaching it to the solution is what I want, since Rs is part of the solution for MRST, I'm looking to use Rs from Eclipse to constrain dissolution.

Kind regards,
Karen

odd.an...@gmail.com

unread,
Sep 10, 2023, 5:36:45 AM9/10/23
to MRST-users: The Matlab Reservoir Simulation Toolbox User Group
Hi Karen,

Setting 'dis_rate' to zero in the fluid object is how you specify that instantaneous dissolution should be used (a finite, positive value on the other hand, signals that a rate-driven model should be used).  So setting 'dis_rate' to zero would normally lead to overestimation of dissolution.

As you write, 'dis_max' sets the upper bound on dissolution, which can be further adjusted for pressure using the `rsSat` function (the default version of this function only returns `dis_max` directly).  Implementing a version of `rsSat` that truly depends on pressure might (at least partially) be what you are looking for here. 

I might have misunderstood what you meant with 'Rs', as I took it to mean the initially dissolved quantity of gas (CO2) in the brine, whereas perhaps you meant the maximum value.  If so, I agree that taking the average for each column is not the way to go.   How is `Rs` defined in your deck, and is it given as a single scalar value or perhaps as a sampled table?  (In the Eclipse manual, I see it described as a scalar, but then again in the context or representing an initially dissolved quantity).

Best regards,
Odd

Hatem ALAMARA

unread,
Jan 16, 2024, 6:37:02 AM1/16/24
to MRST-users: The Matlab Reservoir Simulation Toolbox User Group
Hi Andersen,

I am wondering if DRSDT (if used for 2D-VE model) in Eclipse is equivalent to dis_rate in the rate-dependent dissolution model in MRST. I assume that dis_rate is a relative volumetric rate [vol/vol/time]. 

Thank you so much for your answer.

Best regards,
Hatem

Reply all
Reply to author
Forward
0 new messages