Yes, Dmitry, please do consider Bernd's suggestions. It would be
appreciated by more than one.

Best regards

On Fri, Mar 18, 2022, 2:24 AM Dmitry Pavlov <dmitry.pav...@outlook.com>
wrote:

> Bernd,
>
>
> Thank you. I will check with my managers regarding what I can do about
> publishing the code. The completeFluidState in my code is not a branch, but
> a method in a dedicated VolumeVariables variant which is assigned to the
> Problem via TypeTag. One "potential complication" that I can see is that
> the code in its present form is not going to be accepted into DuMux source
> because it does not comply with DuMux's C++ guidelines (that happened
> before with my merge requests). So either I will have to re-write it, or
> someone else will, or it will stay as an example/prototype outside DuMux
> source tree.
>
>
> To elaborate on my statement about complications with 2pnc PVS model:
> imagine that at one moment, you have a two-phase configuration:
>
>
> pressure, saturation, (n-2) mole fractions in one of the phases
>
>
> and then you run the Newton method, and then the Newton method orders to
> increase the pressure, leaving other variables intact:
>
>
> pressure + delta, saturation, (n-2) mole fractions in one of the phases
>
>
> It can happen that with the increased pressure, the two-phase
> configuration is to become one-phase. It is very hard, if possible, to
> figure that basing just on (n-2) mole fractions and the saturation. The
> saturation without the (original, two-phase-compatible) pressure is
> meaningless. And the old value or pressure is "lost" at this point. How to
> even guess the total mole fractions in this situation? I do not know.
>
>
> I imagine that a very intricate relay between the Newton method and
> PrimaryVariableSwitch could, in principle, allow to slowly approach the
> phase transition point and then change the primary variables... but there
> is no need to do that in presence of "classic" flash that works so well and
> converges so well. (I also have to say that figuring out the fluid state
> from the "pressure, saturation, n-2 mole fractions" is a big convergence
> pain).
>
>
>
> Best regards,
>
>
> Dmitry
>
>
>
>
> On 3/18/22 09:57, Flemisch, Bernd wrote:
>
> Hi Dmitry,
>
>
> thank you for your report, this is very valuable!
>
>
> It would be even more valuable and highly appreciated if you decide to add
> your model to DuMux. As far as I can see, this would in essence add the
> Michelsen test and your flash calculation. And the completeFluidState
> method would branch depending on whether the traditional "PVS" or the new
> "flash" model is used. Right? Or do you see potential complications?
>
>
> I consider your statement
>
> "The primary variables. Those must be the pressure and n-1 (overall) mole
> fractions. I do not think that it is possible at all to implement a
> two-phase compositional model with the usual primary variables of the 2pnc
> model"
>
> very bold. The 2pnc PVS model is standard which has been used
> successfully not only in DuMux to simulate two-phase compositional flow for
> many years.
>
>
> Nevertheless, I certainly acknowledge the fact that a flash-based model
> might be superior for particular applications. With the drawback on
> computational performance due to the more expensive flash calculations for
> one Newton step.
>
>
> In total, I would heartily encourage you to contribute your model!
>
>
> Kind regards
>
> Bernd
>
>
> --
> _________________________________________________________________
>
> Bernd Flemisch
> IWS, Universität Stuttgart               phone: +49 711 685 69162
> Pfaffenwaldring 61              email: be...@iws.uni-stuttgart.de
> D-70569 Stuttgart           url: www.iws.uni-stuttgart.de/en/lh2/
> _________________________________________________________________
> ------------------------------
> *Von:* DuMux <dumux-boun...@listserv.uni-stuttgart.de>
> <dumux-boun...@listserv.uni-stuttgart.de> im Auftrag von Dmitry Pavlov
> <dmitry.pav...@outlook.com> <dmitry.pav...@outlook.com>
> *Gesendet:* Donnerstag, 17. März 2022 23:20:09
> *An:* dumux@listserv.uni-stuttgart.de
> *Betreff:* [DuMux] Oil-gas compositional simulation in DuMux
>
>
> Hello,
>
> This is for anybody who will be wondering someday whether the two-phase
> oil-gas compositional model is doable in DuMux. The short answer is yes.
>
> The numerical algorithms required for such a model are described in many
> sources (e.g. [1]) and implemented in ECLIPSE and a lot of other programs,
> including the open-source MRST [2].
>
>
> Now, what is required for implementing the two-phase compositional model
> in DuMux:
>
> 1. The primary variables. Those must be the pressure and n-1 (overall)
> mole fractions. I do not think that it is possible at all to implement a
> two-phase compositional model with the usual primary variables of the 2pnc
> model [3] (pressure, saturation, n-2 mole fractions). But the good news is
> that DuMux, for the most part, does not care about what is stored in the
> primary variables. So it is possible to just treat 2pnc's primary variables
> as the pressure and n-1 (overall) mole fractions. The only thing that must
> be redesigned for that to work is VolumeVariables and, in particular,
> completeFluidState() method that builds the FluidState from the primary
> variables.
>
> 2. In order to build the FluidState from the primary variables, one needs
> two algorithms: the Michelsen stability test (it decides whether we have
> one-phase or two-phase composition with this pressure and temperature) and
> the two-phase flash algorithm (it calculates the mole fractions for each
> phase from overall mole fractions). Those algorithms are not present in
> DuMux. DuMux has constraint solvers called MiscibleMultiPhaseComposition
> and NcpFlash, but they will not work for this kind of problem. Only the
> "classic" flash algorithm works. One has to implement the Michelsen test
> and flash in the aforementioned completeFluidState() replacement. These
> algorithms, in turn, require an implementation of equation of state (EOS),
> usually Peng-Robinson (PR).
>
> 3. Good news: DuMux has a completely suitable implementation PR EOS! One
> pitfall is that the default behavior of PR in DuMux is "too correct" in its
> handling of single-root case, which causes Michelsen test to fail. A flag
> "handleUnphysicalPhase" was added to computeMolarVolume() method to allow
> to simplify the calculation and make it suitable for Michelsen test [4].
>
> 4. Switching of primary variables. Actually, no, this one is not needed at
> all. The built-in TwoPNCPrimaryVariableSwitch is not suitable for this
> problem; it is possible to implement a custom PrimaryVariableSwitch which
> would be based of the Michelsen test, but it creates more problems than it
> solves. To be specific, it reduces performance and worsens Newton
> convergence and gives nothing in return. Phase presence in FluidState is
> updated in completeFluidState() and it is fine.
>
>
> One must be cautious about the performance because DuMux tends to call the
> computationally expensive completeFluidState() more often than it is needed
> to do the job [5]. At least EnableGridVolumeVariablesCache and
> EnableGridFluxVariablesCache should be turned on to avoid unnecessary
> recalculations. Also, PrimaryVariableSwitch should be disabled, as said
> above. Finally, if the box method is used, DuMux calls completeFluidState()
> on every scv connected to every node, which on a 2D grid is 4x the number
> of nodes, while in principle, it is possible to complete the task by making
> 1x the number of nodes calls. Maybe a rewrite of GridVolumeVariables will
> help to achieve that. For now, oil-gas simulation in DuMux is inferior to
> MRST in performance. While MRST works on a much slower engine (Matlab), it
> does not waste time on 4x recalculations, and also uses automatic
> differentiation, while DuMux uses slow numerical differentiation. One the
> other hand, DuMux, unlike MRST, can be parallelized via both MPI and
> threads [6].
>
>
> This is it, thank you for attention.
>
>
> Regards,
>
> Dmitry
>
>
>
> [1] https://store.spe.org/Phase-Behavior-P46.aspx
> [2]
> https://www.sintef.no/contentassets/2551f5f85547478590ceca14bc13ad51/compositional.html
> [3] https://dumux.org/docs/doxygen/master/a18414.html
> [4]
> https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2831
> [5] https://listserv.uni-stuttgart.de/pipermail/dumux/2021q4/002811.html
> [6]
> https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2640
>
> _______________________________________________
> DuMux mailing list
> DuMux@listserv.uni-stuttgart.de
> https://listserv.uni-stuttgart.de/mailman/listinfo/dumux
>
_______________________________________________
DuMux mailing list
DuMux@listserv.uni-stuttgart.de
https://listserv.uni-stuttgart.de/mailman/listinfo/dumux

Reply via email to