GEOS
GEOS copied to clipboard
Add Reactions for Geochemistry and a ReactiveMultiFluidModel
In this PR we
- [x] Create
ReactiveMultiFluidmodel that:- [x] adds Equilibrium and KineticReactions and all reactions related quantities
- [x] serves as base class to all reactive models
- [x] owns
EquilibriumReactionsandKineticReactionsand interfaces with them.
- [x] Create
ReactiveBrineFluidmodel 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
ReactiveFluidDriverto test Reactions. - [ ] Test implementation for a few specific examples:
- [x] equilibrium reactions
- [ ] kinetic reactions
- [x] Split
linearAlgebraanddenseLinearAlgebrainto 2 separate components (needed to avoid having constitutive depending onlinearAlgebrawhich 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
@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.