diff --git a/amgprec/amg_c_prec_type.f90 b/amgprec/amg_c_prec_type.f90 index 3b0f62ce..ae9a79cc 100644 --- a/amgprec/amg_c_prec_type.f90 +++ b/amgprec/amg_c_prec_type.f90 @@ -572,13 +572,17 @@ contains integer(psb_ipk_) :: il, nl, iam, np avgcr = szero - ctxt = prec%ctxt - call psb_info(ctxt,iam,np) nl = prec%get_nlevs() do il=2,nl - avgcr = avgcr + max(szero,prec%precv(il)%szratio) + if (prec%precv(il)%base_desc%is_ok()) then + ctxt = prec%precv(il)%base_desc%get_ctxt() + call psb_info(ctxt,iam,np) + if (iam >=0) avgcr = avgcr + max(szero,prec%precv(il)%szratio) + end if end do avgcr = avgcr / (nl-1) + ctxt = prec%ctxt + call psb_info(ctxt,iam,np) call psb_sum(ctxt,avgcr) prec%ag_data%avg_cr = avgcr/np end subroutine amg_c_cmp_avg_cr diff --git a/amgprec/amg_d_prec_type.f90 b/amgprec/amg_d_prec_type.f90 index 9e5eeda5..0924ef79 100644 --- a/amgprec/amg_d_prec_type.f90 +++ b/amgprec/amg_d_prec_type.f90 @@ -572,13 +572,17 @@ contains integer(psb_ipk_) :: il, nl, iam, np avgcr = dzero - ctxt = prec%ctxt - call psb_info(ctxt,iam,np) nl = prec%get_nlevs() do il=2,nl - avgcr = avgcr + max(dzero,prec%precv(il)%szratio) + if (prec%precv(il)%base_desc%is_ok()) then + ctxt = prec%precv(il)%base_desc%get_ctxt() + call psb_info(ctxt,iam,np) + if (iam >=0) avgcr = avgcr + max(dzero,prec%precv(il)%szratio) + end if end do avgcr = avgcr / (nl-1) + ctxt = prec%ctxt + call psb_info(ctxt,iam,np) call psb_sum(ctxt,avgcr) prec%ag_data%avg_cr = avgcr/np end subroutine amg_d_cmp_avg_cr diff --git a/amgprec/amg_s_prec_type.f90 b/amgprec/amg_s_prec_type.f90 index 6574fe12..2030f52b 100644 --- a/amgprec/amg_s_prec_type.f90 +++ b/amgprec/amg_s_prec_type.f90 @@ -572,13 +572,17 @@ contains integer(psb_ipk_) :: il, nl, iam, np avgcr = szero - ctxt = prec%ctxt - call psb_info(ctxt,iam,np) nl = prec%get_nlevs() do il=2,nl - avgcr = avgcr + max(szero,prec%precv(il)%szratio) + if (prec%precv(il)%base_desc%is_ok()) then + ctxt = prec%precv(il)%base_desc%get_ctxt() + call psb_info(ctxt,iam,np) + if (iam >=0) avgcr = avgcr + max(szero,prec%precv(il)%szratio) + end if end do avgcr = avgcr / (nl-1) + ctxt = prec%ctxt + call psb_info(ctxt,iam,np) call psb_sum(ctxt,avgcr) prec%ag_data%avg_cr = avgcr/np end subroutine amg_s_cmp_avg_cr diff --git a/amgprec/amg_z_prec_type.f90 b/amgprec/amg_z_prec_type.f90 index 2d8b362a..8d6cdb53 100644 --- a/amgprec/amg_z_prec_type.f90 +++ b/amgprec/amg_z_prec_type.f90 @@ -572,13 +572,17 @@ contains integer(psb_ipk_) :: il, nl, iam, np avgcr = dzero - ctxt = prec%ctxt - call psb_info(ctxt,iam,np) nl = prec%get_nlevs() do il=2,nl - avgcr = avgcr + max(dzero,prec%precv(il)%szratio) + if (prec%precv(il)%base_desc%is_ok()) then + ctxt = prec%precv(il)%base_desc%get_ctxt() + call psb_info(ctxt,iam,np) + if (iam >=0) avgcr = avgcr + max(dzero,prec%precv(il)%szratio) + end if end do avgcr = avgcr / (nl-1) + ctxt = prec%ctxt + call psb_info(ctxt,iam,np) call psb_sum(ctxt,avgcr) prec%ag_data%avg_cr = avgcr/np end subroutine amg_z_cmp_avg_cr