diff --git a/fvn_sparse/fvn_sparse.f90 b/fvn_sparse/fvn_sparse.f90 index 2fd3f2b..a7abc81 100644 --- a/fvn_sparse/fvn_sparse.f90 +++ b/fvn_sparse/fvn_sparse.f90 @@ -11,6 +11,46 @@ interface fvn_sparse_det module procedure fvn_zl_sparse_det,fvn_zi_sparse_det,fvn_dl_sparse_det,fvn_di_sparse_det end interface fvn_sparse_det contains + +function umfpack_return_code(c) + implicit none + integer(4), intent(in) :: c + character(len=80) :: umfpack_return_code + select case(c) + case(0) + umfpack_return_code="UMFPACK_OK" + case(1) + umfpack_return_code="UMFPACK_WARNING_singular_matrix" + case(2) + umfpack_return_code="UMFPACK_WARNING_determinant_underflow" + case(3) + umfpack_return_code="UMFPACK_WARNING_determinant_overflow" + case(-1) + umfpack_return_code="UMFPACK_ERROR_out_of_memory" + case(-3) + umfpack_return_code="UMFPACK_ERROR_invalid_Numeric_object" + case(-4) + umfpack_return_code="UMFPACK_ERROR_invalid_Symbolic_object" + case(-5) + umfpack_return_code="UMFPACK_ERROR_argument_missing" + case(-6) + umfpack_return_code="UMFPACK_ERROR_n_nonpositive" + case(-8) + umfpack_return_code="UMFPACK_ERROR_invalid_matrix" + case(-11) + umfpack_return_code="UMFPACK_ERROR_different_pattern" + case(-13) + umfpack_return_code="UMFPACK_ERROR_invalid_system" + case(-15) + umfpack_return_code="UMFPACK_ERROR_invalid_permutation" + case(-911) + umfpack_return_code="UMFPACK_ERROR_internal_error" + case(-17) + umfpack_return_code="UMFPACK_ERROR_file_IO" + case default + umfpack_return_code="Unknown return code" + end select +end function !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! SPARSE RESOLUTION