Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[EPIC] PVT modeling #2465

Open
12 of 24 tasks
francoishamon opened this issue May 18, 2023 · 1 comment
Open
12 of 24 tasks

[EPIC] PVT modeling #2465

francoishamon opened this issue May 18, 2023 · 1 comment
Assignees
Labels
EPIC The agile epic concept

Comments

@francoishamon
Copy link
Contributor

francoishamon commented May 18, 2023

Description

The goal of this issue is to keep track of all developments related to PVT modeling capabilities for CO2 in depleted reservoirs.

Work Scope

Basic first steps to port PVTPackage capabilities in GEOS:

  1. Create and (unit) test functions to solve Rachford-Rice equation (@francoishamon)
  2. Create and (unit) test functions to model cubic EOS (@francoishamon)
  3. Add initialization heuristics for K-values (@dkachuma)
  4. Add and (unit) test the negative two-phase flash loop (@dkachuma)
  5. Add density calculation for multiphase fluid (@dkachuma)
  6. Add immiscible water three phase model

Steps to test the new functions in PVTDriver

  1. Create a class derived from MultiFluidBase to read an input and call the new flash functions (@dkachuma)
  2. Link MultiFluidBase class to static calculation functions.
  3. Allow the user to supply the viscosity values for the constant viscosity model
  4. Allow the user to select the mixing rule for the LBC viscosity calculation
  5. Allow the user to tune the flash calculation parameters
  6. Extend BlasLapackLA::solveLinearSystem to GPU

Steps to make the new code usable for simulations of CO2 injection in depleted reservoirs:

  1. Add Soreide Whitson modification to the cubic EOS functions (for the water phase) (@francoishamon)
  2. Add binary interaction coefficients
  3. Add phase identification in the two-phase flash to identify the water phase
  4. Add property calculations for density (CO2 with impurities, etc) and viscosity (LBC and others) (@dkachuma)
  5. Compute finite-difference derivatives

Steps to make the code efficient:

  1. Modify two-phase flash to do non-iterative K-value flash
  2. Compute analytical derivatives
  3. Explore Newton bisection in Rachford-Rice

Some tidying tasks

  1. Centralise code to convert compositions from mass fractions to mole fractions
  2. Simplify fluid model interface to have a single compute for both flow and initialisation
  3. Use variadic template parameter for phase types in compositional multiphase fluid model
  4. Refactor CubicEOSPhaseModel which has become too large/complex.

Issues in this EPIC

@paveltomin
Copy link
Contributor

Compute finite-difference derivatives - would you consider using AD instead? Flash is local, so AD operations are much easier.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
EPIC The agile epic concept
Projects
None yet
Development

No branches or pull requests

3 participants