From 29903fda2325422bc4a474311aac8154b6968272 Mon Sep 17 00:00:00 2001 From: Nick Gould Date: Wed, 7 Feb 2024 08:37:50 +0000 Subject: [PATCH] skip solve tests if factorize fails for sbls --- src/makedefs/intermediaries | 3 ++- src/sbls/sblst.F90 | 15 ++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/makedefs/intermediaries b/src/makedefs/intermediaries index c90bcafd65..0f27380548 100644 --- a/src/makedefs/intermediaries +++ b/src/makedefs/intermediaries @@ -498,7 +498,8 @@ make_sls_deps_single: make_dummy make_specfile make_sort make_zd11 \ make_smt make_svt make_space make_sils make_ma57 \ make_ma77 make_ma86 make_ma87 make_ma97 \ make_mc61 make_mc64 make_mc68 make_copyright \ - make_spralrb make_amd make_ssids_dum + make_spralrb make_amd make_$(SSIDS) +# make_spralrb make_amd make_ssids_dum make_sls_deps_double: make_dummy make_specfile make_sort make_zd11 \ make_smt make_svt make_space make_sils make_ma57 \ make_ma77 make_ma86 make_ma87 make_ma97 \ diff --git a/src/sbls/sblst.F90 b/src/sbls/sblst.F90 index 4022fdd7d4..e026e558f4 100644 --- a/src/sbls/sblst.F90 +++ b/src/sbls/sblst.F90 @@ -696,7 +696,8 @@ PROGRAM GALAHAD_SBLS_EXAMPLE ! control%print_level = 4 CALL SBLS_form_and_factorize( n, m, H, A, C, data, control, info ) - CALL SBLS_solve( n, m, A, C, data, control, info, SOL ) + IF ( info%status == 0 ) & + CALL SBLS_solve( n, m, A, C, data, control, info, SOL ) ! write(6,"('x=', 2ES12.4)") X IF ( info%status == 0 ) THEN WRITE( 6, "( I5, I9, A9 )" ) & @@ -763,7 +764,8 @@ PROGRAM GALAHAD_SBLS_EXAMPLE control%sls_control%ordering = 7 OPEN( UNIT = scratch_out, STATUS = 'SCRATCH' ) CALL SBLS_form_and_factorize( n, m, H, A, C, data, control, info ) - CALL SBLS_solve( n, m, A, C, data, control, info, SOL ) + IF ( info%status == 0 ) & + CALL SBLS_solve( n, m, A, C, data, control, info, SOL ) CLOSE( UNIT = scratch_out ) IF ( info%status == 0 ) THEN WRITE( 6, "( I5, I9, A9 )" ) & @@ -815,7 +817,8 @@ PROGRAM GALAHAD_SBLS_EXAMPLE ! control%sls_control%ordering = 7 ! control%unsymmetric_linear_solver = 'getr' CALL SBLS_form_and_factorize( n, m, H, A, C, data, control, info ) - CALL SBLS_solve( n, m, A, C, data, control, info, SOL ) + IF ( info%status == 0 ) & + CALL SBLS_solve( n, m, A, C, data, control, info, SOL ) IF ( info%status == 0 ) THEN WRITE( 6, "( I5, I9, A9 )" ) & 2, info%status, type_residual( info%norm_residual ) @@ -880,7 +883,8 @@ PROGRAM GALAHAD_SBLS_EXAMPLE control%preconditioner = 2 ; control%factorization = 1 control%min_diagonal = 1.0_rp_ CALL SBLS_form_and_factorize( n, m, H, A, C, data, control, info ) - CALL SBLS_solve( n, m, A, C, data, control, info, SOL ) + IF ( info%status == 0 ) & + CALL SBLS_solve( n, m, A, C, data, control, info, SOL ) ! ALLOCATE( SOL1( n + m ) ) ! SOL1 = SOL ! WRITE( 6, "( ' solution ', /, ( 3ES24.16 ) )" ) SOL @@ -934,7 +938,8 @@ PROGRAM GALAHAD_SBLS_EXAMPLE control%preconditioner = 2 ; control%factorization = 3 control%min_diagonal = 1.0_rp_ CALL SBLS_form_and_factorize( n, m, H, A, C, data, control, info ) - CALL SBLS_solve( n, m, A, C, data, control, info, SOL ) + IF ( info%status == 0 ) & + CALL SBLS_solve( n, m, A, C, data, control, info, SOL ) ! WRITE( 6, "( ' solution ', /, ( 3ES24.16 ) )" ) SOL ! WRITE(6,*) ' diff ', MAXVAL( ABS( SOL - SOL1 ) ) ! WRITE( 25,"( ' solution ', /, ( 5ES24.16 ) )" ) SOL