Skip to content
5 changes: 2 additions & 3 deletions .integrated_tests.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
baselines:
bucket: geosx
baseline: integratedTests/baseline_integratedTests-pr4164-17838-91151f5

baseline: integratedTests/baseline_integratedTests-pr4165-17850-4a6ed2e
allow_fail:
all: ''
streak: ''
streak: ''
4 changes: 4 additions & 0 deletions BASELINE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ 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 #4165 (2026-10-29) <https://storage.googleapis.com/geosx/integratedTests/baseline_integratedTests-pr4165-17850-4a6ed2e.tar.gz>
=====================
Add zero salinity, non-default compressibility pvt driver test

PR #4164 (2026-10-26) <https://storage.googleapis.com/geosx/integratedTests/baseline_integratedTests-pr4164-17838-91151f5.tar.gz>
=====================
Add a `Group` statistics layer for fracture surfaces.
Expand Down
26 changes: 26 additions & 0 deletions inputFiles/constitutiveDriver/testPVT_CO2Brine.xml
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,18 @@
outputMassDensity="1"
output="testPVT_CO2Brine_testCo2BrinePhillipsMixtureThermalB.txt"
logLevel="1" />
<PVTDriver
name="testCo2BrinePhillipsZeroSalinity"
fluid="co2BrinePhillipsZeroSalinity"
feedComposition="{ 0.2, 0.8 }"
pressureControl="pressureFunction"
temperatureControl="temperatureFunction"
steps="20"
outputCompressibility="1"
outputPhaseComposition="1"
outputMassDensity="1"
output="testPVT_CO2Brine_testCo2BrinePhillipsZeroSalinity.txt"
logLevel="1" />
</Tasks>

<Outputs>
Expand Down Expand Up @@ -126,6 +138,9 @@
<SoloEvent
name="eventCo2BrinePhillipsMixtureThermalB"
target="/Tasks/testCo2BrinePhillipsMixtureThermalB" />
<SoloEvent
name="eventCo2BrinePhillipsZeroSalinity"
target="/Tasks/testCo2BrinePhillipsZeroSalinity" />

<PeriodicEvent
name="restarts"
Expand Down Expand Up @@ -175,6 +190,17 @@
temperatureCoordinates="{340, 460}"
temperatureInterval="10"
salinity="1.0" />
<CO2BrinePhillipsFluid
name="co2BrinePhillipsZeroSalinity"
phaseNames="{ gas, water }"
componentNames="{ co2, water }"
componentMolarWeight="{ 44e-3, 18e-3 }"
pressureCoordinates="{1e6, 5e7}"
pressureInterval="1e6"
temperatureCoordinates="{340, 460}"
temperatureInterval="10"
waterCompressibility="4.1e-10"
salinity="0.0" />
</Constitutive>

<Functions>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ void calculateBrineDensity( PTTableCoordinates const & tableCoords,

void calculatePureWaterDensity( PTTableCoordinates const & tableCoords,
string const & functionName,
array1d< real64 > const & densities )
array1d< real64 > const & densities,
real64 const waterCompressibility )
{
// if no salinity, we fall back to the standard approach in three steps
// 1- Get the saturation density as a function of temperature
Expand Down Expand Up @@ -102,9 +103,6 @@ void calculatePureWaterDensity( PTTableCoordinates const & tableCoords,
// Step 2: get the saturation pressure
real64 const waterSatPressure = waterSatPressureTable->evaluate( &T );
// Step 3: get the pure water density
// Note: for now, we keep a constant water compressibility for consistency with the Ezrokhi model
// In the future, we should query the water compressibility as a function of pressure and temperature in a table
real64 const waterCompressibility = 4.5e-10; // Pa-1 // TODO: consolidate to a unique file as Dick started doing
densities[j*nPressures+i] = waterSatDensity * exp( waterCompressibility * ( P - waterSatPressure ) );
}
}
Expand Down Expand Up @@ -147,7 +145,8 @@ TableFunction const * makeDensityTable( BrineFluidParameters const & brineFluidP
{
// the Phillips correlation is inaccurate in the absence of salinity.
// since this is a very frequent case, we implement an alternate (more accurate) method below
calculatePureWaterDensity( tableCoords, functionName, densities );
real64 const waterCompressibility = brineFluidParameters.m_waterCompressibility;
calculatePureWaterDensity( tableCoords, functionName, densities, waterCompressibility );
Comment thread
dkachuma marked this conversation as resolved.
}

TableFunction * const densityTable = dynamicCast< TableFunction * >( functionManager.createChild( "TableFunction", tableName ) );
Expand Down