GEOS icon indicating copy to clipboard operation
GEOS copied to clipboard

Add Reactions for Geochemistry and a ReactiveMultiFluidModel

Open CusiniM opened this issue 2 years ago • 1 comments

In this PR we

  • [x] Create ReactiveMultiFluid model that:
    • [x] adds Equilibrium and KineticReactions and all reactions related quantities
    • [x] serves as base class to all reactive models
    • [x] owns EquilibriumReactions and KineticReactions and interfaces with them.
  • [x] Create ReactiveBrineFluid model that:
    • [x] adds a single phase (brine) with its own constitutive laws for viscosity, density, etc.
    • [x] handles conversion from standard compositional variables to what's needed for geochem (volumetric concentrations)
  • [x] Add WaterDensity model to have a simple density model for the brine that does not depend on the phase composition.
  • [x] Add two type of reactions:
    • [x] Equilibrium reactions
    • [x] kinetic reactions
  • [x] Create a dedicated ReactiveFluidDriver to test Reactions.
  • [ ] Test implementation for a few specific examples:
    • [x] equilibrium reactions
    • [ ] kinetic reactions
  • [x] Split linearAlgebra and denseLinearAlgebra into 2 separate components (needed to avoid having constitutive depending on linearAlgebra which would also create a circular dependency).

The ReactiveFluidDriver can be run from the build directory with

./tests/testReactiveFluid -i ../src/coreComponents/unitTests/constitutiveTests/testReactiveFluid.xml

CusiniM avatar Mar 11 '22 00:03 CusiniM

@francoishamon, @klevzoff I think this is ready for a first round of comments while I am gone. Ignore the std::output which is there for @jiyer28 to validate the implementation against her matlab code.

CusiniM avatar Jul 28 '22 00:07 CusiniM