From 81d60d23c28bcd12e9e03b9fd8603e6c0a288322 Mon Sep 17 00:00:00 2001 From: sdargavi Date: Mon, 26 Jan 2026 21:21:23 +0000 Subject: [PATCH 1/2] Add -fp_trap to CI --- dockerfiles/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dockerfiles/Dockerfile b/dockerfiles/Dockerfile index a31c3b7..40c278f 100644 --- a/dockerfiles/Dockerfile +++ b/dockerfiles/Dockerfile @@ -14,7 +14,8 @@ LABEL description="PFLARE" ENV CHECKOUT_BRANCH=$BRANCH ENV PETSC_ARCH=$ARCH # -on_error_abort ensures any test failures are caught and the build fails -ENV PETSC_OPTIONS="-on_error_abort" +# fp trap turns on floating point exception trapping in petsc +ENV PETSC_OPTIONS="-on_error_abort -fp_trap on" WORKDIR /build From 0ec7c34dbb66deee587100d20f5db903fb2a401c Mon Sep 17 00:00:00 2001 From: sdargavi Date: Mon, 26 Jan 2026 21:26:14 +0000 Subject: [PATCH 2/2] Prevent fp exception by ensuring multiplication only happens in allowed range in assembled GMRES polynomial construction --- src/Gmres_Poly.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Gmres_Poly.F90 b/src/Gmres_Poly.F90 index 780da67..b5d88d4 100644 --- a/src/Gmres_Poly.F90 +++ b/src/Gmres_Poly.F90 @@ -1225,7 +1225,7 @@ subroutine mat_mult_powers_share_sparsity_cpu(matrix, poly_order, poly_sparsity_ ! ~~~~~~~~~~~ if (ncols /= 0 .AND. coefficients(term) /= 0d0) then call MatSetValues(cmat, one, [global_row_start + i_loc-1], ncols, cols, & - coefficients(term) * vals_power_temp, ADD_VALUES, ierr) + coefficients(term) * vals_power_temp(1:ncols), ADD_VALUES, ierr) end if ! This should now have the value of A^(term-1) in it