GEOS-DEV / GEOS-DEV/GEOS

[EPIC] PVT modeling

Open
#2,465 1 comment 0 reactions 2 assignees View on GitHub

@dkachuma is already working on this.

Since May 18, 2023.

EPIC
Dominant language
C++
Stars
287
Forks
109
Avg merge
4d 41m
Merged PRs (30d)
5

Description

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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.