diff --git a/mlprec/impl/mld_c_dec_map_bld.f90 b/mlprec/impl/mld_c_dec_map_bld.f90 index cf7cc616..602f006b 100644 --- a/mlprec/impl/mld_c_dec_map_bld.f90 +++ b/mlprec/impl/mld_c_dec_map_bld.f90 @@ -54,7 +54,7 @@ subroutine mld_c_dec_map_bld(theta,a,desc_a,nlaggr,ilaggr,info) ! Local variables integer(psb_ipk_), allocatable :: ils(:), neigh(:), irow(:), icol(:) complex(psb_spk_), allocatable :: val(:), diag(:) - integer(psb_ipk_) :: icnt,nlp,k,n,ia,isz,nr, naggr,i,j,m, nz + integer(psb_ipk_) :: icnt,nlp,k,n,ia,isz,nr, naggr,i,j,m, nz, ilg real(psb_spk_) :: cpling, tcl logical :: recovery integer(psb_ipk_) :: debug_level, debug_unit,err_act @@ -125,7 +125,8 @@ subroutine mld_c_dec_map_bld(theta,a,desc_a,nlaggr,ilaggr,info) do k=1, nz j = icol(k) - if ((1<=j).and.(j<=nr).and.(i /= j)) then + ilg = ilaggr(j) + if ((ilg<0).and.(1<=j).and.(j<=nr).and.(i /= j)) then if (abs(val(k)) > theta*sqrt(abs(diag(i)*diag(j)))) then ilaggr(j) = naggr else diff --git a/mlprec/impl/mld_d_dec_map_bld.f90 b/mlprec/impl/mld_d_dec_map_bld.f90 index f7861595..fa9514bd 100644 --- a/mlprec/impl/mld_d_dec_map_bld.f90 +++ b/mlprec/impl/mld_d_dec_map_bld.f90 @@ -54,7 +54,7 @@ subroutine mld_d_dec_map_bld(theta,a,desc_a,nlaggr,ilaggr,info) ! Local variables integer(psb_ipk_), allocatable :: ils(:), neigh(:), irow(:), icol(:) real(psb_dpk_), allocatable :: val(:), diag(:) - integer(psb_ipk_) :: icnt,nlp,k,n,ia,isz,nr, naggr,i,j,m, nz + integer(psb_ipk_) :: icnt,nlp,k,n,ia,isz,nr, naggr,i,j,m, nz, ilg real(psb_dpk_) :: cpling, tcl logical :: recovery integer(psb_ipk_) :: debug_level, debug_unit,err_act @@ -125,7 +125,8 @@ subroutine mld_d_dec_map_bld(theta,a,desc_a,nlaggr,ilaggr,info) do k=1, nz j = icol(k) - if ((1<=j).and.(j<=nr).and.(i /= j)) then + ilg = ilaggr(j) + if ((ilg<0).and.(1<=j).and.(j<=nr).and.(i /= j)) then if (abs(val(k)) > theta*sqrt(abs(diag(i)*diag(j)))) then ilaggr(j) = naggr else diff --git a/mlprec/impl/mld_s_dec_map_bld.f90 b/mlprec/impl/mld_s_dec_map_bld.f90 index af4ebb09..2fa3a6c3 100644 --- a/mlprec/impl/mld_s_dec_map_bld.f90 +++ b/mlprec/impl/mld_s_dec_map_bld.f90 @@ -54,7 +54,7 @@ subroutine mld_s_dec_map_bld(theta,a,desc_a,nlaggr,ilaggr,info) ! Local variables integer(psb_ipk_), allocatable :: ils(:), neigh(:), irow(:), icol(:) real(psb_spk_), allocatable :: val(:), diag(:) - integer(psb_ipk_) :: icnt,nlp,k,n,ia,isz,nr, naggr,i,j,m, nz + integer(psb_ipk_) :: icnt,nlp,k,n,ia,isz,nr, naggr,i,j,m, nz, ilg real(psb_spk_) :: cpling, tcl logical :: recovery integer(psb_ipk_) :: debug_level, debug_unit,err_act @@ -125,7 +125,8 @@ subroutine mld_s_dec_map_bld(theta,a,desc_a,nlaggr,ilaggr,info) do k=1, nz j = icol(k) - if ((1<=j).and.(j<=nr).and.(i /= j)) then + ilg = ilaggr(j) + if ((ilg<0).and.(1<=j).and.(j<=nr).and.(i /= j)) then if (abs(val(k)) > theta*sqrt(abs(diag(i)*diag(j)))) then ilaggr(j) = naggr else diff --git a/mlprec/impl/mld_z_dec_map_bld.f90 b/mlprec/impl/mld_z_dec_map_bld.f90 index a49fd771..c8d49502 100644 --- a/mlprec/impl/mld_z_dec_map_bld.f90 +++ b/mlprec/impl/mld_z_dec_map_bld.f90 @@ -54,7 +54,7 @@ subroutine mld_z_dec_map_bld(theta,a,desc_a,nlaggr,ilaggr,info) ! Local variables integer(psb_ipk_), allocatable :: ils(:), neigh(:), irow(:), icol(:) complex(psb_dpk_), allocatable :: val(:), diag(:) - integer(psb_ipk_) :: icnt,nlp,k,n,ia,isz,nr, naggr,i,j,m, nz + integer(psb_ipk_) :: icnt,nlp,k,n,ia,isz,nr, naggr,i,j,m, nz, ilg real(psb_dpk_) :: cpling, tcl logical :: recovery integer(psb_ipk_) :: debug_level, debug_unit,err_act @@ -125,7 +125,8 @@ subroutine mld_z_dec_map_bld(theta,a,desc_a,nlaggr,ilaggr,info) do k=1, nz j = icol(k) - if ((1<=j).and.(j<=nr).and.(i /= j)) then + ilg = ilaggr(j) + if ((ilg<0).and.(1<=j).and.(j<=nr).and.(i /= j)) then if (abs(val(k)) > theta*sqrt(abs(diag(i)*diag(j)))) then ilaggr(j) = naggr else diff --git a/mlprec/impl/solver/mld_d_mumps_solver_apply.F90 b/mlprec/impl/solver/mld_d_mumps_solver_apply.F90 index 39d4bbb5..38666ea0 100644 --- a/mlprec/impl/solver/mld_d_mumps_solver_apply.F90 +++ b/mlprec/impl/solver/mld_d_mumps_solver_apply.F90 @@ -106,13 +106,13 @@ subroutine d_mumps_solver_apply(alpha,sv,x,beta,y,desc_data,trans,work,info) goto 9999 end select - sv%id%rhs => gx - sv%id%nrhs = 1 - sv%id%icntl(1)=-1 - sv%id%icntl(2)=-1 - sv%id%icntl(3)=-1 - sv%id%icntl(4)=-1 - sv%id%job = 3 + sv%id%rhs => gx + sv%id%nrhs = 1 + sv%id%icntl(1) = -1 + sv%id%icntl(2) = -1 + sv%id%icntl(3) = -1 + sv%id%icntl(4) = -1 + sv%id%job = 3 call dmumps(sv%id) call psb_scatter(gx, ww, desc_data, info, root=0) diff --git a/mlprec/impl/solver/mld_d_mumps_solver_bld.F90 b/mlprec/impl/solver/mld_d_mumps_solver_bld.F90 index 44d3320a..dbf3c190 100644 --- a/mlprec/impl/solver/mld_d_mumps_solver_bld.F90 +++ b/mlprec/impl/solver/mld_d_mumps_solver_bld.F90 @@ -106,8 +106,8 @@ if (psb_toupper(upd) == 'F') then sv%id%comm = icomm - sv%id%job = -1 - sv%id%par=1 + sv%id%job = -1 + sv%id%par = 1 call dmumps(sv%id) !WARNING: CALLING dMUMPS WITH JOB=-1 DESTROY THE SETTING OF DEFAULT:TO FIX sv%id%icntl(3)=sv%ipar(2) @@ -131,9 +131,9 @@ call psb_loc_to_glob(acoo%ia(1:nztota), desc_a, info, iact='I') end if - sv%id%irn_loc=> acoo%ia - sv%id%jcn_loc=> acoo%ja - sv%id%a_loc=> acoo%val + sv%id%irn_loc => acoo%ia + sv%id%jcn_loc => acoo%ja + sv%id%a_loc => acoo%val sv%id%icntl(18)=3 if(acoo%is_upper() .or. acoo%is_lower()) then sv%id%sym = 2 @@ -144,7 +144,7 @@ ! there should be a better way for this sv%id%nz_loc = acoo%get_nzeros() sv%id%nz = acoo%get_nzeros() - sv%id%job = 4 + sv%id%job = 4 call psb_barrier(ictxt) write(*,*)'calling mumps N,nz,nz_loc',sv%id%n,sv%id%nz,sv%id%nz_loc call dmumps(sv%id) diff --git a/mlprec/mld_base_prec_type.F90 b/mlprec/mld_base_prec_type.F90 index d81736b1..d3e07fbb 100644 --- a/mlprec/mld_base_prec_type.F90 +++ b/mlprec/mld_base_prec_type.F90 @@ -331,7 +331,7 @@ module mld_base_prec_type & mld_fact_names(0:mld_max_sub_solve_)=(/& & 'none ','none ',& & 'none ','none ',& - & 'none ', 'Point Jacobi ',& + & 'none ','Point Jacobi ',& & 'Gauss-Seidel ','ILU(n) ',& & 'MILU(n) ','ILU(t,n) ',& & 'SuperLU ','UMFPACK LU ',&