Fix handling of errors inside UMFPACK.

This commit is contained in:
Salvatore Filippone
2006-05-08 09:54:45 +00:00
parent 05c867710a
commit f1a502ee8d
7 changed files with 34 additions and 7 deletions
+2
View File
@@ -439,6 +439,8 @@ contains
write (0,'("Error from call to a subroutine ")')
case(4012)
write (0,'("Error ",i0," from call to a subroutine ")')i_e_d(1)
case(4110)
write (0,'("Error ",i0," from call to an external package in subroutine ",a)')i_e_d(1),a_e_d
case (5001)
write (0,'("Invalid ISTOP: ",i0)')i_e_d(1)
case (5002)
+1 -1
View File
@@ -225,7 +225,7 @@ subroutine psb_dbaseprc_bld(a,desc_a,p,info,upd)
if(debug) write(0,*)me,': calling umf_bld'
call psb_umf_bld(a,desc_a,p,info)
if(debug) write(0,*)me,': Done umf_bld ',info
if(info /= 0) then
if (info /= 0) then
info=4010
ch_err='umf_bld'
call psb_errpush(info,name,a_err=ch_err)
+7
View File
@@ -168,6 +168,13 @@ subroutine psb_dmlprc_bld(a,desc_a,p,info)
call psb_baseprc_bld(ac,desc_p,p,info)
if (debug) write(0,*) 'Out from basaeprcbld',info
if(info /= 0) then
info=4010
ch_err='psb_baseprc_bld'
call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if
!
! We have used a separate ac because:
+5 -3
View File
@@ -52,6 +52,7 @@ subroutine psb_dumf_bld(a,desc_a,p,info)
character(len=5) :: fmt
character :: upd='F'
integer :: i,j,nza,nzb,nzt,icontxt, me,mycol,nprow,npcol,err_act
integer :: i_err(5)
logical, parameter :: debug=.false.
character(len=20) :: name, ch_err
@@ -183,10 +184,11 @@ subroutine psb_dumf_bld(a,desc_a,p,info)
call psb_dumf_factor(atmp%m,nzt,&
& atmp%aspk,atmp%ia1,atmp%ia2,&
& p%iprcparm(umf_symptr_),p%iprcparm(umf_numptr_),info)
if(info /= 0) then
info=4010
if (info /= 0) then
i_err(1) = info
info=4110
ch_err='psb_umf_fact'
call psb_errpush(info,name,a_err=ch_err)
call psb_errpush(info,name,a_err=ch_err,i_err=i_err)
goto 9999
end if
+4
View File
@@ -132,6 +132,9 @@ psb_dumf_factor_(int *n, int *nnz,
*info = 0;
} else {
printf("umfpack_di_symbolic() error returns INFO= %d\n", *info);
*info = -11;
*numptr = (fptr) NULL;
return;
}
*symptr = (fptr) Symbolic;
@@ -145,6 +148,7 @@ psb_dumf_factor_(int *n, int *nnz,
*numptr = (fptr) Numeric;
} else {
printf("umfpack_di_numeric() error returns INFO= %d\n", *info);
*info = -12;
*numptr = (fptr) NULL;
}
+7
View File
@@ -168,6 +168,13 @@ subroutine psb_zmlprc_bld(a,desc_a,p,info)
call psb_baseprc_bld(ac,desc_p,p,info)
if (debug) write(0,*) 'Out from basaeprcbld',info
if(info /= 0) then
info=4010
ch_err='psb_baseprc_bld'
call psb_errpush(info,name,a_err=ch_err)
goto 9999
end if
!
! We have used a separate ac because:
+8 -3
View File
@@ -131,7 +131,10 @@ psb_zumf_factor_(int *n, int *nnz,
if ( *info == UMFPACK_OK ) {
*info = 0;
} else {
printf("umfpack_di_symbolic() error returns INFO= %d\n", *info);
printf("umfpack_zi_symbolic() error returns INFO= %d\n", *info);
*info = -11;
*numptr = (fptr) NULL;
return;
}
*symptr = (fptr) Symbolic;
@@ -142,11 +145,13 @@ psb_zumf_factor_(int *n, int *nnz,
if ( *info == UMFPACK_OK ) {
*info = 0;
*numptr = (fptr) Numeric;
} else {
printf("umfpack_di_numeric() error returns INFO= %d\n", *info);
printf("umfpack_zi_numeric() error returns INFO= %d\n", *info);
*info = -12;
*numptr = (fptr) NULL;
}
*numptr = (fptr) Numeric;
for (i = 0; i <= *n; ++i) ++colptr[i];
for (i = 0; i < *nnz; ++i) ++rowind[i];
#else