Skip to content

Commit bf5796b

Browse files
authored
feat: Improve linear solvers testing (#4108)
* Add hypre/hypredrive regression tests covering most MGR strategies * Compare hypredrive and legacy hypre paths against common baselines * Add iteration-count parity checks to detect solver quality regressions * Add CI support for hypredrive and forced-legacy test passes * Add warnings and unit tests for hypredrive fallback and numerical equivalence * Fix hypredrive solver integration and configuration inconsistencies * Make ILU configuration consistent between legacy hypre and hypredrive paths * Fix MGR configurations for hybrid-FVM and reservoir solver strategies * Add ILU F-relaxation support for MGR * Fix issues uncovered by the expanded solver test coverage and update documentation/baselines
1 parent 79a0b86 commit bf5796b

124 files changed

Lines changed: 6470 additions & 2299 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build_and_test.yml

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,11 @@ jobs:
110110
env:
111111
GITHUB_TOKEN: ${{ github.token }}
112112
run: |
113+
# The device jobs query the same PR endpoint concurrently. Retry
114+
# transient GitHub API throttling so an optional build does not turn a
115+
# healthy matrix into a failure before compilation starts.
113116
pr_json=$(curl --fail --silent --show-error \
117+
--retry 5 --retry-all-errors --retry-delay 5 --retry-max-time 90 \
114118
-H "Accept: application/vnd.github+json" \
115119
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
116120
https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.number }})
@@ -387,6 +391,7 @@ jobs:
387391
run: |
388392
EXIT_STATUS=${GEOS_BUILD_EXIT_STATUS:-1}
389393
DATA_BASENAME=${GEOS_DATA_BASENAME}
394+
DATA_BASENAME_WE=${DATA_BASENAME%%.*}
390395
DATA_EXCHANGE_DIR=${GEOS_DATA_EXCHANGE_DIR}
391396
UPLOAD_HEADER_PRINTED=false
392397
GCP_CREDENTIALS_STATUS="not set"
@@ -399,8 +404,8 @@ jobs:
399404
echo "Generated artifact at ${DATA_EXCHANGE_DIR}/${DATA_BASENAME}"
400405
fi
401406
402-
if [ -f "${DATA_EXCHANGE_DIR}/test_logs_${DATA_BASENAME}" ]; then
403-
echo "Generated integrated test logs at ${DATA_EXCHANGE_DIR}/test_logs_${DATA_BASENAME}"
407+
if [ -f "${DATA_EXCHANGE_DIR}/test_logs_${DATA_BASENAME_WE}.tar.gz" ]; then
408+
echo "Generated integrated test logs at ${DATA_EXCHANGE_DIR}/test_logs_${DATA_BASENAME_WE}.tar.gz"
404409
fi
405410
406411
if [[ -n "${{ inputs.LOCAL_BASELINE_DIR }}" ]]; then
@@ -409,8 +414,8 @@ jobs:
409414
mkdir -p "${TARGET_DIR}"
410415
411416
for file in \
412-
"${DATA_EXCHANGE_DIR}/baseline_${DATA_BASENAME}" \
413-
"${DATA_EXCHANGE_DIR}/test_logs_${DATA_BASENAME}"
417+
"${DATA_EXCHANGE_DIR}/baseline_${DATA_BASENAME_WE}.tar.gz" \
418+
"${DATA_EXCHANGE_DIR}/test_logs_${DATA_BASENAME_WE}.tar.gz"
414419
do
415420
if [ -f "${file}" ]; then
416421
cp "${file}" "${TARGET_DIR}"
@@ -419,11 +424,10 @@ jobs:
419424
done
420425
fi
421426
422-
if [ ! -f "${DATA_EXCHANGE_DIR}/baseline_${DATA_BASENAME}" ]; then
427+
if [ ! -f "${DATA_EXCHANGE_DIR}/baseline_${DATA_BASENAME_WE}.tar.gz" ]; then
423428
echo "No new baseline archive was generated."
424429
fi
425430
fi
426-
427431
if [[ "${{ inputs.UPLOAD_TO_GCP }}" == "true" && -n "${{ inputs.GCP_BUCKET }}" ]]; then
428432
if [[ "${{ inputs.BUILD_TYPE }}" = "integrated_tests" || ${EXIT_STATUS} -eq 0 ]]; then
429433
if ! CLOUDSDK_PYTHON=python3 gcloud config set storage/parallel_composite_upload_enabled True; then
@@ -434,8 +438,8 @@ jobs:
434438
435439
for file in \
436440
"${DATA_EXCHANGE_DIR}/${DATA_BASENAME}" \
437-
"${DATA_EXCHANGE_DIR}/test_logs_${DATA_BASENAME}" \
438-
"${DATA_EXCHANGE_DIR}/baseline_${DATA_BASENAME}"
441+
"${DATA_EXCHANGE_DIR}/test_logs_${DATA_BASENAME_WE}.tar.gz" \
442+
"${DATA_EXCHANGE_DIR}/baseline_${DATA_BASENAME_WE}.tar.gz"
439443
do
440444
if [ -f "${file}" ]; then
441445
case "$(basename "${file}")" in

.github/workflows/ci_tests.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@ jobs:
275275
DOCKER_IMAGE_TAG: ${{ needs.is_not_draft_pull_request.outputs.DOCKER_IMAGE_TAG }}
276276
DOCKER_REPOSITORY: geosx/ubuntu24.04-gcc12
277277
ENABLE_HYPRE: ON
278+
ENABLE_HYPREDRV: ON
278279
ENABLE_TRILINOS: OFF
279280
GEOS_ENABLE_BOUNDS_CHECK: ON
280281
GCP_BUCKET: geosx/integratedTests
@@ -455,7 +456,7 @@ jobs:
455456
DOCKER_REPOSITORY: geosx/ubuntu24.04-amdclang19.0.0-rocm6.4.3
456457
ENABLE_HYPRE_DEVICE: HIP
457458
ENABLE_HYPRE: ON
458-
ENABLE_HYPREDRV: OFF
459+
ENABLE_HYPREDRV: ON
459460
ENABLE_TRILINOS: OFF
460461
GEOS_ENABLE_BOUNDS_CHECK: OFF
461462
RUNS_ON: streak2

.integrated_tests.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
baselines:
22
bucket: geosx
3-
baseline: integratedTests/baseline_integratedTests-pr3994-17525-4ae3593
3+
baseline: integratedTests/baseline_integratedTests-pr4108-17561-eb62184
44

55
allow_fail:
66
all: ''

BASELINE_NOTES.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ PR #4083 (2026-09-01) <https://storage.googleapis.com/geosx/integratedTests/base
1717
=====================
1818
Dispatch scaling wrt to fracture element type for ALM contact solver
1919

20+
PR #4127 (2026-08-28) <https://storage.googleapis.com/geosx/integratedTests/baseline_integratedTests-pr4127-17440-e6bc364.tar.gz>
21+
=====================
22+
Refresh the integrated-test baseline after the Hypre/TPL update and the
23+
iterative test additions. The prior archive did not contain restart outputs
24+
for the iterative cases and caused ATS baseline-missing failures.
25+
2026
PR #4096 (2026-08-27) <https://storage.googleapis.com/geosx/integratedTests/baseline_integratedTests-pr4096-17439-18734f3.tar.gz>
2127
=====================
2228
Refactor the phase-field module and add new benchmarks for baseline
@@ -37,6 +43,10 @@ PR #4088 (2026-07-27) <https://storage.googleapis.com/geosx/integratedTests/base
3743
=====================
3844
Fluid reset after convergence failure
3945

46+
PR #3972 (2026-08-DD) <https://storage.googleapis.com/geosx/integratedTests/baseline_integratedTests-pr4108-17194-fec5349.tar.gz>
47+
=====================
48+
Add MGR tests to ATS
49+
4050
PR #3972 (2026-07-28) <https://storage.googleapis.com/geosx/integratedTests/baseline_integratedTests-pr3972-17154-316e6d8.tar.gz>
4151
=====================
4252
Well model refactor . Integrated test update due to schema changes

inputFiles/compositionalMultiphaseFlow/compositionalMultiphaseFlow.ats

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,14 @@ decks = [
7777
restart_step=28,
7878
check_step=38,
7979
restartcheck_params=RestartcheckParameters(**restartcheck_params)),
80+
TestDeck(
81+
name="deadoil_3ph_staircase_3d_iterative",
82+
description=
83+
"hypre MGR variant (exercises the hypredrive path when available)",
84+
partitions=((1, 1, 1), (2, 2, 2)),
85+
restart_step=28,
86+
check_step=38,
87+
restartcheck_params=RestartcheckParameters(atol=1e-6, rtol=1e-5)),
8088
TestDeck(
8189
name="deadoil_3ph_staircase_hybrid_3d",
8290
description=
@@ -85,6 +93,14 @@ decks = [
8593
restart_step=28,
8694
check_step=38,
8795
restartcheck_params=RestartcheckParameters(**restartcheck_params)),
96+
TestDeck(
97+
name="deadoil_3ph_staircase_hybrid_3d_iterative",
98+
description=
99+
"hypre MGR variant (exercises the hypredrive path when available)",
100+
partitions=((1, 1, 1), (2, 2, 2)),
101+
restart_step=28,
102+
check_step=38,
103+
restartcheck_params=RestartcheckParameters(atol=1e-6, rtol=1e-5)),
88104
TestDeck(
89105
name="deadoil_3ph_staircase_obl_3d",
90106
description=
@@ -93,6 +109,14 @@ decks = [
93109
restart_step=28,
94110
check_step=38,
95111
restartcheck_params=RestartcheckParameters(**restartcheck_params)),
112+
TestDeck(
113+
name="deadoil_3ph_staircase_obl_3d_iterative",
114+
description=
115+
"hypre MGR variant (exercises the hypredrive path when available)",
116+
partitions=((1, 1, 1), (2, 2, 2)),
117+
restart_step=28,
118+
check_step=38,
119+
restartcheck_params=RestartcheckParameters(atol=1e-6, rtol=1e-5)),
96120
TestDeck(
97121
name="deadoil_2ph_staircase_gravity_segregation_3d",
98122
description=

0 commit comments

Comments
 (0)