Skip to content
Open
2 changes: 1 addition & 1 deletion .integrated_tests.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
baselines:
bucket: geosx
baseline: integratedTests/baseline_integratedTests-pr3849-14514-aaaf0f9
baseline: integratedTests/baseline_integratedTests-pr3829-14672-bbae026

allow_fail:
all: ''
Expand Down
3 changes: 3 additions & 0 deletions BASELINE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ This file is designed to track changes to the integrated test baselines.
Any developer who updates the baseline ID in the .integrated_tests.yaml file is expected to create an entry in this file with the pull request number, date, and their justification for rebaselining.
These notes should be in reverse-chronological order, and use the following time format: (YYYY-MM-DD).

PR #3829 (2025-11-06) <https://storage.googleapis.com/geosx/integratedTests/baseline_integratedTests-pr3829-14672-bbae026.tar.gz>
Fix validation of average region stat needed by option

PR #3849 (2025-10-23) <https://storage.googleapis.com/geosx/integratedTests/baseline_integratedTests-pr3849-14514-aaaf0f9.tar.gz>
Add multiphase contact with wells

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@ restartcheck_params["atol"] = 1.0E-6
restartcheck_params["rtol"] = 1.0E-5

decks = [
TestDeck(
name="resvol_constraint",
description=
"Compositional multiphase well test (1D displacement, 2-phase 4-component, 2 wells, reservoir volume well constraint)",
partitions=[(1, 1, 1), (2, 1, 1)],
restart_step=5,
check_step=10,
restartcheck_params=RestartcheckParameters(**restartcheck_params)),
TestDeck(
name="compositional_multiphase_wells_1d",
description=
Expand Down
249 changes: 249 additions & 0 deletions inputFiles/compositionalMultiphaseWell/resvol_constraint.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,249 @@
<?xml version="1.0" ?>

<Problem>
<Solvers>
<CompositionalMultiphaseReservoir
name="reservoirSystem"
flowSolverName="compositionalMultiphaseFlow"
wellSolverName="compositionalMultiphaseWell"
logLevel="1"
targetRegions="{ Region1, wellRegion1, wellRegion2 }">
<NonlinearSolverParameters
newtonTol="1.0e-8"
lineSearchAction="None"
newtonMaxIter="40"/>
<LinearSolverParameters
directParallel="0"/>
</CompositionalMultiphaseReservoir>

<CompositionalMultiphaseFVM
name="compositionalMultiphaseFlow"
logLevel="1"
discretization="fluidTPFA"
targetRegions="{ Region1 }"
temperature="297.15"/>

<CompositionalMultiphaseWell
name="compositionalMultiphaseWell"
logLevel="1"
writeCSV="1"
targetRegions="{ wellRegion1, wellRegion2 }">
<WellControls
name="wellControls1"
type="producer"
control="BHP"
referenceElevation="2"
targetBHP="4e6"
targetPhaseRate="1e-7"
referenceReservoirRegion="Region1"
targetPhaseName="oil"/>
<WellControls
name="wellControls2"
type="injector"
control="totalVolRate"
referenceReservoirRegion="Region1"
referenceElevation="2"
targetBHP="1e8"
targetTotalRate="1e-7"
injectionTemperature="297.15"
injectionStream="{ 0.1, 0.1, 0.1, 0.7 }"/>
</CompositionalMultiphaseWell>
</Solvers>

<Mesh>
<InternalMesh
name="mesh1"
elementTypes="{ C3D8 }"
xCoords="{ 0, 5 }"
yCoords="{ 0, 1 }"
zCoords="{ 0, 1 }"
nx="{ 5 }"
ny="{ 1 }"
nz="{ 1 }"
cellBlockNames="{ cb1 }">

<InternalWell
name="well_producer1"
wellRegionName="wellRegion1"
wellControlsName="wellControls1"
polylineNodeCoords="{ { 4.5, 0, 2 },
{ 4.5, 0, 0.5 } }"
polylineSegmentConn="{ { 0, 1 } }"
radius="0.1"
numElementsPerSegment="2">
<Perforation
name="producer1_perf1"
distanceFromHead="1.45"/>
</InternalWell>

<InternalWell
name="well_injector1"
wellRegionName="wellRegion2"
wellControlsName="wellControls2"
polylineNodeCoords="{ { 0.5, 0, 2 },
{ 0.5, 0, 0.5 } }"
polylineSegmentConn="{ { 0, 1 } }"
radius="0.1"
numElementsPerSegment="3">
<Perforation
name="injector1_perf1"
distanceFromHead="1.45"/>
</InternalWell>
</InternalMesh>
</Mesh>

<Events
maxTime="2.5e4">
<PeriodicEvent
name="compositionalMultipshaseFlowStatistics"
beginTime="0"
cycleFrequency="1"
target="/Tasks/compositionalMultiphaseFlowStatistics"/>
<PeriodicEvent
name="solverApplications"
forceDt="2.5e3"
target="/Solvers/reservoirSystem"/>

<PeriodicEvent
name="outputs"
timeFrequency="2.5e3"
target="/Outputs/vtkOutput"/>

<PeriodicEvent
name="restarts"
timeFrequency="1.25e4"
targetExactTimestep="0"
target="/Outputs/restartOutput"/>

</Events>

<Tasks>
<CompositionalMultiphaseStatistics
name="compositionalMultiphaseFlowStatistics"
flowSolverName="compositionalMultiphaseFlow"
computeRegionStatistics="1"
logLevel="1"
writeCSV="1"/>
</Tasks>
<NumericalMethods>
<FiniteVolume>
<TwoPointFluxApproximation
name="fluidTPFA"
/>
</FiniteVolume>
</NumericalMethods>

<ElementRegions>
<CellElementRegion
name="Region1"
cellBlocks="{ * }"
materialList="{ fluid1, rock, relperm }"/>

<WellElementRegion
name="wellRegion1"
materialList="{ fluid1 }"/>

<WellElementRegion
name="wellRegion2"
materialList="{ fluid1 }"/>
</ElementRegions>

<Constitutive>
<CompositionalMultiphaseFluid
name="fluid1"
phaseNames="{ oil, gas }"
equationsOfState="{ PR, PR }"
componentNames="{ N2, C10, C20, H2O }"
componentCriticalPressure="{ 34e5, 25.3e5, 14.6e5, 220.5e5 }"
componentCriticalTemperature="{ 126.2, 622.0, 782.0, 647.0 }"
componentAcentricFactor="{ 0.04, 0.443, 0.816, 0.344 }"
componentMolarWeight="{ 28e-3, 134e-3, 275e-3, 18e-3 }"
componentVolumeShift="{ 0, 0, 0, 0 }"
componentBinaryCoeff="{ { 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 } }"/>

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

<NullModel
name="nullSolid"/>

<PressurePorosity
name="rockPorosity"
defaultReferencePorosity="0.05"
referencePressure="0.0"
compressibility="1.0e-9"/>

<BrooksCoreyRelativePermeability
name="relperm"
phaseNames="{ oil, gas }"
phaseMinVolumeFraction="{ 0.1, 0.15 }"
phaseRelPermExponent="{ 2.0, 2.0 }"
phaseRelPermMaxValue="{ 0.8, 0.9 }"/>

<ConstantPermeability
name="rockPerm"
permeabilityComponents="{ 2.0e-16, 2.0e-16, 2.0e-16 }"/>
</Constitutive>

<FieldSpecifications>
<!-- Initial pressure: ~5 bar -->
<FieldSpecification
name="initialPressure"
initialCondition="1"
setNames="{ all }"
objectPath="ElementRegions/Region1/cb1"
fieldName="pressure"
scale="5e6"/>

<!-- Initial composition: no water, only heavy hydrocarbon components and N2 -->
<FieldSpecification
name="initialComposition_N2"
initialCondition="1"
setNames="{ all }"
objectPath="ElementRegions/Region1/cb1"
fieldName="globalCompFraction"
component="0"
scale="0.099"/>

<FieldSpecification
name="initialComposition_C10"
initialCondition="1"
setNames="{ all }"
objectPath="ElementRegions/Region1/cb1"
fieldName="globalCompFraction"
component="1"
scale="0.3"/>

<FieldSpecification
name="initialComposition_C20"
initialCondition="1"
setNames="{ all }"
objectPath="ElementRegions/Region1/cb1"
fieldName="globalCompFraction"
component="2"
scale="0.6"/>

<FieldSpecification
name="initialComposition_H20"
initialCondition="1"
setNames="{ all }"
objectPath="ElementRegions/Region1/cb1"
fieldName="globalCompFraction"
component="3"
scale="0.001"/>
</FieldSpecifications>

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

<Restart
name="restartOutput"/>
</Outputs>
</Problem>
Loading
Loading