Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
04fbc7d
Just a test commit
Jun 25, 2025
9c9770d
phase contact specification added as an optional input under Hydrosta…
Jul 22, 2025
e2662a8
Merge branch 'develop' into feature/swaziri/3707-multiphase-hydrostat…
Jul 23, 2025
8fc8be2
Merge branch 'feature/swaziri/phase-contact-specification' into featu…
Jul 24, 2025
54a8b2e
Add capillary pressure inversion
dkachuma Jul 31, 2025
50f0fea
Update src/coreComponents/constitutive/capillaryPressure/InverseCapil…
dkachuma Jul 31, 2025
91255f8
Merge branch 'develop' into dkachuma/capillary-pressure-inverse
dkachuma Jul 31, 2025
16f0ef2
Two-phase hydrostatic pressure computation added
Jul 31, 2025
4d24bc3
Merge remote-tracking branch 'origin/dkachuma/capillary-pressure-inve…
Jul 31, 2025
d28177e
usage of inverse capillary pressure to compute target saturations giv…
Aug 5, 2025
849ce16
Refactor capillary pressure inverse
dkachuma Aug 5, 2025
1c4f28f
Merge remote-tracking branch 'origin' into feature/swaziri/3707-multi…
Aug 5, 2025
2017eec
Merge remote-tracking branch 'origin/feature/swaziri/3707-multiphase-…
Aug 5, 2025
f17fad7
Commented out unused vars from InverseCapillaryPressure.hpp and added…
Aug 5, 2025
777bf39
Saturation correction and phase correction added (works for two phase…
Aug 20, 2025
c760090
Flow initialization extended to three-phase cases
Aug 25, 2025
0d36943
Resolve conflicts in CompositionalMultiphaseBase.cpp
Aug 25, 2025
4b2df27
merge with develop
Aug 25, 2025
4ede493
save running version
Aug 26, 2025
d90b265
primary and contact phase evaluation and some code refactoring
Aug 29, 2025
b65c73e
refactor
Sep 9, 2025
0aba6fa
Initialise porosity and permeability
dkachuma Sep 9, 2025
bd398ad
Documentation related to multiphase hydrostatic initialization plus s…
Sep 19, 2025
45f272c
two and three phase cases added to input files
Sep 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
0
10
20
30
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
0.399
0.399
0.399
0.399
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
0.60
0.60
0.60
0.60
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
368.15
368.15
368.15
368.15
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
0.001
0.001
0.001
0.001
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Pg(Pa) Bg(m3/sm3) Visc(Pa.s)
3000000 0.04234 0.00005344
6000000 0.02046 0.0000542
9000000 0.01328 0.00005526
12000000 0.00977 0.0000566
15000000 0.00773 0.00005818
18000000 0.006426 0.00005994
21000000 0.005541 0.00006181
24000000 0.004919 0.0000637
27000000 0.004471 0.00006559
29500000 0.004194 0.00006714
31000000 0.004031 0.00006806
33000000 0.00391 0.00006832
53000000 0.003868 0.00006935
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# P[Pa] Bo[m3/sm3] Visc(Pa.s)
2000000 1.09 0.000449
5000000 1.08 0.00051
10000000 1.07 0.000594
20000000 1.05 0.000695
30000000 1.04 0.00083
40000000 1.03 0.00091
50000000.7 1.02 0.000975
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#Pref[Pa] Bw[m3/sm3] Cp[1/Pa] Visc[Pa.s]
30600000.1 1.03 0.00000000041 0.0003
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
<?xml version="1.0" ?>

<Problem>
<Solvers>
<CompositionalMultiphaseFVM
name="compflow"
logLevel="1"
discretization="fluidTPFA"
targetRelativePressureChangeInTimeStep="1"
targetPhaseVolFractionChangeInTimeStep="1"
targetRegions="{ region }"
temperature="368.15">
<NonlinearSolverParameters
newtonTol="1.0e-4"
newtonMaxIter="10"/>
<LinearSolverParameters
directParallel="0"/>
</CompositionalMultiphaseFVM>
</Solvers>

<Mesh>
<InternalMesh
name="mesh1"
elementTypes="{ C3D8 }"
xCoords="{ 0, 10 }"
yCoords="{ 0, 10 }"
zCoords="{ 0, 100 }"
nx="{ 10 }"
ny="{ 10 }"
nz="{ 100 }"
cellBlockNames="{ cellBlock }"/>
</Mesh>

<Events
maxTime="15768000000">

<!-- output from just after initialization to 1 yr at frequency = 100 days -->
<PeriodicEvent name="OUTPUT.01" target="/Outputs/vtkOutput" targetExactTimestep="1" beginTime="0" endTime="31536000" timeFrequency="8640000" />
<!-- output from 1 10 yr at frequency = 1 yr -->
<PeriodicEvent name="OUTPUT.02" target="/Outputs/vtkOutput" targetExactTimestep="1" beginTime="31536000" endTime="315360000" timeFrequency="31536000" />
<!-- output from 10 to 500 yr at frequency = 10 -->
<PeriodicEvent name="OUTPUT.03" target="/Outputs/vtkOutput" targetExactTimestep="1" beginTime="315360000" endTime="15768000000" timeFrequency="315360000" />

<!-- From 0 to 1 yr at max dt = 100 days -->
<PeriodicEvent name="solverApplications.01" beginTime="0" endTime="31536000" maxEventDt="8640000" target="/Solvers/compflow" />
<!-- From 1 to 10 yr at max dt = 1 yr -->
<PeriodicEvent name="solverApplications.02" beginTime="31536000" endTime="315360000" maxEventDt="31536000" target="/Solvers/compflow" />
<!-- From 10 to 500 yr at max dt = 10 yr -->
<PeriodicEvent name="solverApplications.03" beginTime="315360000" endTime="15768000000" maxEventDt="315360000" target="/Solvers/compflow" />

</Events>

<NumericalMethods>
<FiniteVolume>
<TwoPointFluxApproximation
name="fluidTPFA"/>
</FiniteVolume>
</NumericalMethods>

<ElementRegions>
<CellElementRegion
name="region"
cellBlocks="{ * }"
materialList="{ fluid, rock, relperm, cappres }"/>
</ElementRegions>

<Constitutive>
<DeadOilFluid
name="fluid"
phaseNames="{ oil, gas, water }"
surfaceDensities="{ 800.0, 0.9907, 1022.0 }"
componentMolarWeight="{ 114e-3, 16e-3, 18e-3 }"
tableFiles="{ pvdo.txt, pvdg.txt, pvtw.txt }"/>

<CompressibleSolidConstantPermeability
name="rock"
solidModelName="nullSolid"
porosityModelName="rockPorosity"
permeabilityModelName="rockPerm"/>

<NullModel
name="nullSolid"/>

<PressurePorosity
name="rockPorosity"
defaultReferencePorosity="0.2"
referencePressure="1.1e7"
compressibility="1.0e-9"/>

<ConstantPermeability
name="rockPerm"
permeabilityComponents="{ 1.0e-13, 1.0e-13, 1.0e-13 }"/>

<BrooksCoreyRelativePermeability
name="relperm"
phaseNames="{ oil, gas, water }"
phaseMinVolumeFraction="{ 0.05, 0.05, 0.05 }"
phaseRelPermExponent="{ 1.5, 1.5, 1.5 }"
phaseRelPermMaxValue="{ 0.9, 0.9, 0.9 }"/>

<BrooksCoreyCapillaryPressure
name="cappres"
phaseNames="{ oil, gas, water }"
phaseMinVolumeFraction="{ 0.05, 0.05, 0.05 }"
phaseCapPressureExponentInv="{ 10, 10, 10 }"
phaseEntryPressure="{ 1, 1, 1 }"
capPressureEpsilon="1e-8" />

</Constitutive>

<FieldSpecifications>
<HydrostaticEquilibrium
name="equil"
objectPath="ElementRegions"
datumElevation="50"
datumPressure="3.086e7"
elevationIncrementInHydrostaticPressureTable="0.5"
phaseContacts="{ 75, 35 }"
initialPhaseName="water"
componentNames="{ oil, gas, water }"
componentFractionVsElevationTableNames="{ initOilCompFracTable,
initGasCompFracTable,
initWaterCompFracTable }"
temperatureVsElevationTableName="initTempTable"/>

</FieldSpecifications>

<Functions>
<TableFunction
name="initGasCompFracTable"
coordinateFiles="{ elevation.txt }"
voxelFile="initGasCompFrac.txt"/>

<TableFunction
name="initOilCompFracTable"
coordinateFiles="{ elevation.txt }"
voxelFile="initOilCompFrac.txt"/>

<TableFunction
name="initWaterCompFracTable"
coordinateFiles="{ elevation.txt }"
voxelFile="initWaterCompFrac.txt"/>

<TableFunction
name="initTempTable"
coordinateFiles="{ elevation.txt }"
voxelFile="initTemp.txt"/>

</Functions>

<Outputs>
<VTK
name="vtkOutput"
plotFileRoot="threePhase"/>
</Outputs>

</Problem>
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
FlashModel CO2Solubility 1e6 1.5e7 5e4 367.15 369.15 1 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
0
10
20
30
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
0.04
0.04
0.04
0.04
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
368.15
368.15
368.15
368.15
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
0.96
0.96
0.96
0.96
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
DensityFun SpanWagnerCO2Density 1e6 1.5e7 5e4 367.15 369.15 1
ViscosityFun FenghourCO2Viscosity 1e6 1.5e7 5e4 367.15 369.15 1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
DensityFun PhillipsBrineDensity 1e6 1.5e7 5e4 367.15 369.15 1 0
ViscosityFun PhillipsBrineViscosity 0
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
<?xml version="1.0" ?>

<Problem>
<Solvers>
<CompositionalMultiphaseFVM
name="compflow"
logLevel="1"
discretization="fluidTPFA"
temperature="368.15"
useMass="1"
useTotalMassEquation="0"
targetRegions="{ region }">
<NonlinearSolverParameters
newtonTol="1.0e-5"
newtonMaxIter="10"
lineSearchAction="None"/>
<LinearSolverParameters
directParallel="0"/>
</CompositionalMultiphaseFVM>
</Solvers>

<Mesh>
<InternalMesh
name="mesh1"
elementTypes="{ C3D8 }"
xCoords="{ 0, 10 }"
yCoords="{ 0, 10 }"
zCoords="{ 0, 100 }"
nx="{ 10 }"
ny="{ 10 }"
nz="{ 100 }"
cellBlockNames="{ cellBlock }"/>
</Mesh>

<Events
maxTime="15768000000">
<!-- output from just after initialization to 1 yr at frequency = 100 days -->
<PeriodicEvent name="OUTPUT.01" target="/Outputs/vtkOutput" targetExactTimestep="1" beginTime="0" endTime="31536000" timeFrequency="8640000" />
<!-- output from 1 10 yr at frequency = 1 yr -->
<PeriodicEvent name="OUTPUT.02" target="/Outputs/vtkOutput" targetExactTimestep="1" beginTime="31536000" endTime="315360000" timeFrequency="31536000" />
<!-- output from 10 to 500 yr at frequency = 10 -->
<PeriodicEvent name="OUTPUT.03" target="/Outputs/vtkOutput" targetExactTimestep="1" beginTime="315360000" endTime="15768000000" timeFrequency="315360000" />

<!-- From 0 to 1 yr at max dt = 100 days -->
<PeriodicEvent name="solverApplications.01" beginTime="0" endTime="31536000" maxEventDt="8640000" target="/Solvers/compflow" />
<!-- From 1 to 10 yr at max dt = 1 yr -->
<PeriodicEvent name="solverApplications.02" beginTime="31536000" endTime="315360000" maxEventDt="31536000" target="/Solvers/compflow" />
<!-- From 10 to 500 yr at max dt = 10 yr -->
<PeriodicEvent name="solverApplications.03" beginTime="315360000" endTime="15768000000" maxEventDt="315360000" target="/Solvers/compflow" />

</Events>

<NumericalMethods>
<FiniteVolume>
<TwoPointFluxApproximation
name="fluidTPFA"/>
</FiniteVolume>
</NumericalMethods>

<ElementRegions>
<CellElementRegion
name="region"
cellBlocks="{ * }"
materialList="{ fluid, rock, relperm, cappres }"/>
</ElementRegions>

<Constitutive>
<CO2BrinePhillipsFluid
name="fluid"
logLevel="1"
phaseNames="{ gas, water }"
componentNames="{ co2, water }"
componentMolarWeight="{ 44e-3, 18e-3 }"
phasePVTParaFiles="{ pvtgas.txt, pvtliquid.txt }"
flashModelParaFile="co2flash.txt"/>

<CompressibleSolidConstantPermeability
name="rock"
solidModelName="nullSolid"
porosityModelName="rockPorosity"
permeabilityModelName="rockPerm"/>

<NullModel
name="nullSolid"/>

<PressurePorosity
name="rockPorosity"
defaultReferencePorosity="0.2"
referencePressure="1.1e7"
compressibility="1.0e-9"/>

<ConstantPermeability
name="rockPerm"
permeabilityComponents="{ 1.0e-13, 1.0e-13, 1.0e-13 }"/>

<BrooksCoreyRelativePermeability
name="relperm"
phaseNames="{ gas, water }"
phaseMinVolumeFraction="{ 0.05, 0.05 }"
phaseRelPermExponent="{ 3, 3 }"
phaseRelPermMaxValue="{ 0.4, 0.9 }"/>

<BrooksCoreyCapillaryPressure
name="cappres"
phaseNames="{ gas, water }"
phaseMinVolumeFraction="{ 0.05, 0.05 }"
phaseCapPressureExponentInv="{ 5 , 5 }"
phaseEntryPressure="{ 1, 1 }"
capPressureEpsilon="1e-8" />
</Constitutive>

<FieldSpecifications>
<HydrostaticEquilibrium
name="equil"
objectPath="ElementRegions"
datumElevation="25"
datumPressure="1.1e7"
elevationIncrementInHydrostaticPressureTable="0.5"
initialPhaseName="water"
phaseContacts="{ 50 }"
componentNames="{ co2, water }"
componentFractionVsElevationTableNames="{ initCO2CompFracTable,
initWaterCompFracTable }"
temperatureVsElevationTableName="initTempTable"/>
</FieldSpecifications>

<Functions>
<TableFunction
name="initCO2CompFracTable"
coordinateFiles="{ elevation.txt }"
voxelFile="initCO2CompFrac.txt"/>

<TableFunction
name="initWaterCompFracTable"
coordinateFiles="{ elevation.txt }"
voxelFile="initWaterCompFrac.txt"/>

<TableFunction
name="initTempTable"
coordinateFiles="{ elevation.txt }"
voxelFile="initTemp.txt"/>

</Functions>

<Outputs>
<VTK
name="vtkOutput"
plotFileRoot="twoPhase"/>
</Outputs>

</Problem>
Loading