GEOS
GEOS copied to clipboard
Add Reactions for Geochemistry and a ReactiveMultiFluidModel
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
andKineticReactions
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
anddenseLinearAlgebra
into 2 separate components (needed to avoid having constitutive depending onlinearAlgebra
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
@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.