diff --git a/mlprec/impl/level/mld_c_base_onelev_dump.f90 b/mlprec/impl/level/mld_c_base_onelev_dump.f90 index 30d3e7fe..a4751e5c 100644 --- a/mlprec/impl/level/mld_c_base_onelev_dump.f90 +++ b/mlprec/impl/level/mld_c_base_onelev_dump.f90 @@ -146,13 +146,24 @@ subroutine mld_c_base_onelev_dump(lv,level,info,prefix,head,ac,rp,& end if end if - if (allocated(lv%sm)) then - call lv%sm%dump(lv%desc_ac,level,info,smoother=smoother, & - & solver=solver,prefix=trim(prefix_)//"_sm",global_num=global_num) - end if - if (allocated(lv%sm2a)) then - call lv%sm2a%dump(lv%desc_ac,level,info,smoother=smoother, & - & solver=solver,prefix=trim(prefix_)//"_sm2a",global_num=global_num) + if (level >= 2) then + if (allocated(lv%sm)) then + call lv%sm%dump(lv%desc_ac,level,info,smoother=smoother, & + & solver=solver,prefix=trim(prefix_)//"_sm",global_num=global_num) + end if + if (allocated(lv%sm2a)) then + call lv%sm2a%dump(lv%desc_ac,level,info,smoother=smoother, & + & solver=solver,prefix=trim(prefix_)//"_sm2a",global_num=global_num) + end if + else + if (allocated(lv%sm)) then + call lv%sm%dump(lv%base_desc,level,info,smoother=smoother, & + & solver=solver,prefix=trim(prefix_)//"_sm",global_num=global_num) + end if + if (allocated(lv%sm2a)) then + call lv%sm2a%dump(lv%base_desc,level,info,smoother=smoother, & + & solver=solver,prefix=trim(prefix_)//"_sm2a",global_num=global_num) + end if end if end subroutine mld_c_base_onelev_dump diff --git a/mlprec/impl/level/mld_d_base_onelev_dump.f90 b/mlprec/impl/level/mld_d_base_onelev_dump.f90 index a49f5b6d..e974b8ee 100644 --- a/mlprec/impl/level/mld_d_base_onelev_dump.f90 +++ b/mlprec/impl/level/mld_d_base_onelev_dump.f90 @@ -146,13 +146,24 @@ subroutine mld_d_base_onelev_dump(lv,level,info,prefix,head,ac,rp,& end if end if - if (allocated(lv%sm)) then - call lv%sm%dump(lv%desc_ac,level,info,smoother=smoother, & - & solver=solver,prefix=trim(prefix_)//"_sm",global_num=global_num) - end if - if (allocated(lv%sm2a)) then - call lv%sm2a%dump(lv%desc_ac,level,info,smoother=smoother, & - & solver=solver,prefix=trim(prefix_)//"_sm2a",global_num=global_num) + if (level >= 2) then + if (allocated(lv%sm)) then + call lv%sm%dump(lv%desc_ac,level,info,smoother=smoother, & + & solver=solver,prefix=trim(prefix_)//"_sm",global_num=global_num) + end if + if (allocated(lv%sm2a)) then + call lv%sm2a%dump(lv%desc_ac,level,info,smoother=smoother, & + & solver=solver,prefix=trim(prefix_)//"_sm2a",global_num=global_num) + end if + else + if (allocated(lv%sm)) then + call lv%sm%dump(lv%base_desc,level,info,smoother=smoother, & + & solver=solver,prefix=trim(prefix_)//"_sm",global_num=global_num) + end if + if (allocated(lv%sm2a)) then + call lv%sm2a%dump(lv%base_desc,level,info,smoother=smoother, & + & solver=solver,prefix=trim(prefix_)//"_sm2a",global_num=global_num) + end if end if end subroutine mld_d_base_onelev_dump diff --git a/mlprec/impl/level/mld_s_base_onelev_dump.f90 b/mlprec/impl/level/mld_s_base_onelev_dump.f90 index 36ef4341..931d8599 100644 --- a/mlprec/impl/level/mld_s_base_onelev_dump.f90 +++ b/mlprec/impl/level/mld_s_base_onelev_dump.f90 @@ -146,13 +146,24 @@ subroutine mld_s_base_onelev_dump(lv,level,info,prefix,head,ac,rp,& end if end if - if (allocated(lv%sm)) then - call lv%sm%dump(lv%desc_ac,level,info,smoother=smoother, & - & solver=solver,prefix=trim(prefix_)//"_sm",global_num=global_num) - end if - if (allocated(lv%sm2a)) then - call lv%sm2a%dump(lv%desc_ac,level,info,smoother=smoother, & - & solver=solver,prefix=trim(prefix_)//"_sm2a",global_num=global_num) + if (level >= 2) then + if (allocated(lv%sm)) then + call lv%sm%dump(lv%desc_ac,level,info,smoother=smoother, & + & solver=solver,prefix=trim(prefix_)//"_sm",global_num=global_num) + end if + if (allocated(lv%sm2a)) then + call lv%sm2a%dump(lv%desc_ac,level,info,smoother=smoother, & + & solver=solver,prefix=trim(prefix_)//"_sm2a",global_num=global_num) + end if + else + if (allocated(lv%sm)) then + call lv%sm%dump(lv%base_desc,level,info,smoother=smoother, & + & solver=solver,prefix=trim(prefix_)//"_sm",global_num=global_num) + end if + if (allocated(lv%sm2a)) then + call lv%sm2a%dump(lv%base_desc,level,info,smoother=smoother, & + & solver=solver,prefix=trim(prefix_)//"_sm2a",global_num=global_num) + end if end if end subroutine mld_s_base_onelev_dump diff --git a/mlprec/impl/level/mld_z_base_onelev_dump.f90 b/mlprec/impl/level/mld_z_base_onelev_dump.f90 index 87c6bca1..a7676b1c 100644 --- a/mlprec/impl/level/mld_z_base_onelev_dump.f90 +++ b/mlprec/impl/level/mld_z_base_onelev_dump.f90 @@ -146,13 +146,24 @@ subroutine mld_z_base_onelev_dump(lv,level,info,prefix,head,ac,rp,& end if end if - if (allocated(lv%sm)) then - call lv%sm%dump(lv%desc_ac,level,info,smoother=smoother, & - & solver=solver,prefix=trim(prefix_)//"_sm",global_num=global_num) - end if - if (allocated(lv%sm2a)) then - call lv%sm2a%dump(lv%desc_ac,level,info,smoother=smoother, & - & solver=solver,prefix=trim(prefix_)//"_sm2a",global_num=global_num) + if (level >= 2) then + if (allocated(lv%sm)) then + call lv%sm%dump(lv%desc_ac,level,info,smoother=smoother, & + & solver=solver,prefix=trim(prefix_)//"_sm",global_num=global_num) + end if + if (allocated(lv%sm2a)) then + call lv%sm2a%dump(lv%desc_ac,level,info,smoother=smoother, & + & solver=solver,prefix=trim(prefix_)//"_sm2a",global_num=global_num) + end if + else + if (allocated(lv%sm)) then + call lv%sm%dump(lv%base_desc,level,info,smoother=smoother, & + & solver=solver,prefix=trim(prefix_)//"_sm",global_num=global_num) + end if + if (allocated(lv%sm2a)) then + call lv%sm2a%dump(lv%base_desc,level,info,smoother=smoother, & + & solver=solver,prefix=trim(prefix_)//"_sm2a",global_num=global_num) + end if end if end subroutine mld_z_base_onelev_dump diff --git a/mlprec/impl/smoother/mld_c_as_smoother_dmp.f90 b/mlprec/impl/smoother/mld_c_as_smoother_dmp.f90 index 5c662299..4265d486 100644 --- a/mlprec/impl/smoother/mld_c_as_smoother_dmp.f90 +++ b/mlprec/impl/smoother/mld_c_as_smoother_dmp.f90 @@ -87,6 +87,6 @@ subroutine mld_c_as_smoother_dmp(sm,desc,level,info,prefix,head,smoother,solver, end if ! At base level do nothing for the smoother if (allocated(sm%sv)) & - & call sm%sv%dump(ictxt,level,info,solver=solver,prefix=prefix) + & call sm%sv%dump(desc,level,info,solver=solver,prefix=prefix,global_num=global_num) end subroutine mld_c_as_smoother_dmp diff --git a/mlprec/impl/smoother/mld_c_base_smoother_dmp.f90 b/mlprec/impl/smoother/mld_c_base_smoother_dmp.f90 index 9ef2a05e..ffb008bb 100644 --- a/mlprec/impl/smoother/mld_c_base_smoother_dmp.f90 +++ b/mlprec/impl/smoother/mld_c_base_smoother_dmp.f90 @@ -80,6 +80,6 @@ subroutine mld_c_base_smoother_dmp(sm,desc,level,info,prefix,head,smoother,solve ! At base level do nothing for the smoother if (allocated(sm%sv)) & - & call sm%sv%dump(ictxt,level,info,solver=solver,prefix=prefix) + & call sm%sv%dump(desc,level,info,solver=solver,prefix=prefix,global_num=global_num) end subroutine mld_c_base_smoother_dmp diff --git a/mlprec/impl/smoother/mld_c_jac_smoother_dmp.f90 b/mlprec/impl/smoother/mld_c_jac_smoother_dmp.f90 index 6581e740..79540aee 100644 --- a/mlprec/impl/smoother/mld_c_jac_smoother_dmp.f90 +++ b/mlprec/impl/smoother/mld_c_jac_smoother_dmp.f90 @@ -92,6 +92,6 @@ subroutine mld_c_jac_smoother_dmp(sm,desc,level,info,prefix,head,smoother,solver end if ! At base level do nothing for the smoother if (allocated(sm%sv)) & - & call sm%sv%dump(ictxt,level,info,solver=solver,prefix=prefix) + & call sm%sv%dump(desc,level,info,solver=solver,prefix=prefix,global_num=global_num) end subroutine mld_c_jac_smoother_dmp diff --git a/mlprec/impl/smoother/mld_d_as_smoother_dmp.f90 b/mlprec/impl/smoother/mld_d_as_smoother_dmp.f90 index f274a93a..566fde76 100644 --- a/mlprec/impl/smoother/mld_d_as_smoother_dmp.f90 +++ b/mlprec/impl/smoother/mld_d_as_smoother_dmp.f90 @@ -87,6 +87,6 @@ subroutine mld_d_as_smoother_dmp(sm,desc,level,info,prefix,head,smoother,solver, end if ! At base level do nothing for the smoother if (allocated(sm%sv)) & - & call sm%sv%dump(ictxt,level,info,solver=solver,prefix=prefix) + & call sm%sv%dump(desc,level,info,solver=solver,prefix=prefix,global_num=global_num) end subroutine mld_d_as_smoother_dmp diff --git a/mlprec/impl/smoother/mld_d_base_smoother_dmp.f90 b/mlprec/impl/smoother/mld_d_base_smoother_dmp.f90 index e8db6ea9..bc836eff 100644 --- a/mlprec/impl/smoother/mld_d_base_smoother_dmp.f90 +++ b/mlprec/impl/smoother/mld_d_base_smoother_dmp.f90 @@ -80,6 +80,6 @@ subroutine mld_d_base_smoother_dmp(sm,desc,level,info,prefix,head,smoother,solve ! At base level do nothing for the smoother if (allocated(sm%sv)) & - & call sm%sv%dump(ictxt,level,info,solver=solver,prefix=prefix) + & call sm%sv%dump(desc,level,info,solver=solver,prefix=prefix,global_num=global_num) end subroutine mld_d_base_smoother_dmp diff --git a/mlprec/impl/smoother/mld_d_jac_smoother_dmp.f90 b/mlprec/impl/smoother/mld_d_jac_smoother_dmp.f90 index 3ce48469..72f20bbd 100644 --- a/mlprec/impl/smoother/mld_d_jac_smoother_dmp.f90 +++ b/mlprec/impl/smoother/mld_d_jac_smoother_dmp.f90 @@ -92,6 +92,6 @@ subroutine mld_d_jac_smoother_dmp(sm,desc,level,info,prefix,head,smoother,solver end if ! At base level do nothing for the smoother if (allocated(sm%sv)) & - & call sm%sv%dump(ictxt,level,info,solver=solver,prefix=prefix) + & call sm%sv%dump(desc,level,info,solver=solver,prefix=prefix,global_num=global_num) end subroutine mld_d_jac_smoother_dmp diff --git a/mlprec/impl/smoother/mld_s_as_smoother_dmp.f90 b/mlprec/impl/smoother/mld_s_as_smoother_dmp.f90 index 15d7a322..00a6dd77 100644 --- a/mlprec/impl/smoother/mld_s_as_smoother_dmp.f90 +++ b/mlprec/impl/smoother/mld_s_as_smoother_dmp.f90 @@ -87,6 +87,6 @@ subroutine mld_s_as_smoother_dmp(sm,desc,level,info,prefix,head,smoother,solver, end if ! At base level do nothing for the smoother if (allocated(sm%sv)) & - & call sm%sv%dump(ictxt,level,info,solver=solver,prefix=prefix) + & call sm%sv%dump(desc,level,info,solver=solver,prefix=prefix,global_num=global_num) end subroutine mld_s_as_smoother_dmp diff --git a/mlprec/impl/smoother/mld_s_base_smoother_dmp.f90 b/mlprec/impl/smoother/mld_s_base_smoother_dmp.f90 index 34ff44cd..14f2ac9e 100644 --- a/mlprec/impl/smoother/mld_s_base_smoother_dmp.f90 +++ b/mlprec/impl/smoother/mld_s_base_smoother_dmp.f90 @@ -80,6 +80,6 @@ subroutine mld_s_base_smoother_dmp(sm,desc,level,info,prefix,head,smoother,solve ! At base level do nothing for the smoother if (allocated(sm%sv)) & - & call sm%sv%dump(ictxt,level,info,solver=solver,prefix=prefix) + & call sm%sv%dump(desc,level,info,solver=solver,prefix=prefix,global_num=global_num) end subroutine mld_s_base_smoother_dmp diff --git a/mlprec/impl/smoother/mld_s_jac_smoother_dmp.f90 b/mlprec/impl/smoother/mld_s_jac_smoother_dmp.f90 index cafe8bd9..c58c7074 100644 --- a/mlprec/impl/smoother/mld_s_jac_smoother_dmp.f90 +++ b/mlprec/impl/smoother/mld_s_jac_smoother_dmp.f90 @@ -92,6 +92,6 @@ subroutine mld_s_jac_smoother_dmp(sm,desc,level,info,prefix,head,smoother,solver end if ! At base level do nothing for the smoother if (allocated(sm%sv)) & - & call sm%sv%dump(ictxt,level,info,solver=solver,prefix=prefix) + & call sm%sv%dump(desc,level,info,solver=solver,prefix=prefix,global_num=global_num) end subroutine mld_s_jac_smoother_dmp diff --git a/mlprec/impl/smoother/mld_z_as_smoother_dmp.f90 b/mlprec/impl/smoother/mld_z_as_smoother_dmp.f90 index fd13cba6..42ed5828 100644 --- a/mlprec/impl/smoother/mld_z_as_smoother_dmp.f90 +++ b/mlprec/impl/smoother/mld_z_as_smoother_dmp.f90 @@ -87,6 +87,6 @@ subroutine mld_z_as_smoother_dmp(sm,desc,level,info,prefix,head,smoother,solver, end if ! At base level do nothing for the smoother if (allocated(sm%sv)) & - & call sm%sv%dump(ictxt,level,info,solver=solver,prefix=prefix) + & call sm%sv%dump(desc,level,info,solver=solver,prefix=prefix,global_num=global_num) end subroutine mld_z_as_smoother_dmp diff --git a/mlprec/impl/smoother/mld_z_base_smoother_dmp.f90 b/mlprec/impl/smoother/mld_z_base_smoother_dmp.f90 index f96c17d8..e17246d5 100644 --- a/mlprec/impl/smoother/mld_z_base_smoother_dmp.f90 +++ b/mlprec/impl/smoother/mld_z_base_smoother_dmp.f90 @@ -80,6 +80,6 @@ subroutine mld_z_base_smoother_dmp(sm,desc,level,info,prefix,head,smoother,solve ! At base level do nothing for the smoother if (allocated(sm%sv)) & - & call sm%sv%dump(ictxt,level,info,solver=solver,prefix=prefix) + & call sm%sv%dump(desc,level,info,solver=solver,prefix=prefix,global_num=global_num) end subroutine mld_z_base_smoother_dmp diff --git a/mlprec/impl/smoother/mld_z_jac_smoother_dmp.f90 b/mlprec/impl/smoother/mld_z_jac_smoother_dmp.f90 index 39d0a5be..dec5aed5 100644 --- a/mlprec/impl/smoother/mld_z_jac_smoother_dmp.f90 +++ b/mlprec/impl/smoother/mld_z_jac_smoother_dmp.f90 @@ -92,6 +92,6 @@ subroutine mld_z_jac_smoother_dmp(sm,desc,level,info,prefix,head,smoother,solver end if ! At base level do nothing for the smoother if (allocated(sm%sv)) & - & call sm%sv%dump(ictxt,level,info,solver=solver,prefix=prefix) + & call sm%sv%dump(desc,level,info,solver=solver,prefix=prefix,global_num=global_num) end subroutine mld_z_jac_smoother_dmp diff --git a/mlprec/impl/solver/mld_c_base_solver_dmp.f90 b/mlprec/impl/solver/mld_c_base_solver_dmp.f90 index 530a7ce4..dd23bc36 100644 --- a/mlprec/impl/solver/mld_c_base_solver_dmp.f90 +++ b/mlprec/impl/solver/mld_c_base_solver_dmp.f90 @@ -35,18 +35,19 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine mld_c_base_solver_dmp(sv,ictxt,level,info,prefix,head,solver) +subroutine mld_c_base_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) use psb_base_mod use mld_c_base_solver_mod, mld_protect_name => mld_c_base_solver_dmp implicit none class(mld_c_base_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than logical :: solver_ @@ -59,7 +60,7 @@ subroutine mld_c_base_solver_dmp(sv,ictxt,level,info,prefix,head,solver) else prefix_ = "dump_slv_c" end if - + ictxt = desc%get_context() call psb_info(ictxt,iam,np) if (present(solver)) then diff --git a/mlprec/impl/solver/mld_c_diag_solver_dmp.f90 b/mlprec/impl/solver/mld_c_diag_solver_dmp.f90 index beb2a1eb..0d7f5047 100644 --- a/mlprec/impl/solver/mld_c_diag_solver_dmp.f90 +++ b/mlprec/impl/solver/mld_c_diag_solver_dmp.f90 @@ -35,18 +35,19 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine mld_c_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) +subroutine mld_c_diag_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) use psb_base_mod use mld_c_diag_solver, mld_protect_name => mld_c_diag_solver_dmp implicit none class(mld_c_diag_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than logical :: solver_ @@ -54,6 +55,7 @@ subroutine mld_c_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) info = 0 + ictxt = desc%get_context() call psb_info(ictxt,iam,np) @@ -81,18 +83,19 @@ subroutine mld_c_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) end if end subroutine mld_c_diag_solver_dmp -subroutine mld_c_l1_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) +subroutine mld_c_l1_diag_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) use psb_base_mod use mld_c_l1_diag_solver, mld_protect_name => mld_c_l1_diag_solver_dmp implicit none class(mld_c_l1_diag_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than logical :: solver_ @@ -100,6 +103,7 @@ subroutine mld_c_l1_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) info = 0 + ictxt = desc%get_context() call psb_info(ictxt,iam,np) diff --git a/mlprec/impl/solver/mld_c_gs_solver_dmp.f90 b/mlprec/impl/solver/mld_c_gs_solver_dmp.f90 index 3459e594..4da0c5dd 100644 --- a/mlprec/impl/solver/mld_c_gs_solver_dmp.f90 +++ b/mlprec/impl/solver/mld_c_gs_solver_dmp.f90 @@ -35,26 +35,28 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine mld_c_gs_solver_dmp(sv,ictxt,level,info,prefix,head,solver) +subroutine mld_c_gs_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) use psb_base_mod use mld_c_gs_solver, mld_protect_name => mld_c_gs_solver_dmp implicit none class(mld_c_gs_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than - logical :: solver_ + integer(psb_lpk_), allocatable :: iv(:) + logical :: solver_, global_num_ ! len of prefix_ info = 0 - + ictxt = desc%get_context() call psb_info(ictxt,iam,np) if (present(solver)) then @@ -62,6 +64,11 @@ subroutine mld_c_gs_solver_dmp(sv,ictxt,level,info,prefix,head,solver) else solver_ = .false. end if + if (present(global_num)) then + global_num_ = global_num + else + global_num_ = .false. + end if if (solver_) then if (present(prefix)) then @@ -73,14 +80,23 @@ subroutine mld_c_gs_solver_dmp(sv,ictxt,level,info,prefix,head,solver) fname = trim(prefix_) write(fname(lname+1:lname+5),'(a,i3.3)') '_p',iam lname = lname + 5 - - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' - if (sv%l%is_asb()) & - & call sv%l%print(fname,head=head) - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' - if (sv%u%is_asb()) & - & call sv%u%print(fname,head=head) - + + if (global_num_) then + iv = desc%get_global_indices(owned=.false.) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' + if (sv%l%is_asb()) & + & call sv%l%print(fname,head=head,iv=iv) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' + if (sv%u%is_asb()) & + & call sv%u%print(fname,head=head,iv=iv) + else + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' + if (sv%l%is_asb()) & + & call sv%l%print(fname,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' + if (sv%u%is_asb()) & + & call sv%u%print(fname,head=head) + end if end if end subroutine mld_c_gs_solver_dmp diff --git a/mlprec/impl/solver/mld_c_ilu_solver_dmp.f90 b/mlprec/impl/solver/mld_c_ilu_solver_dmp.f90 index 61e7d1f1..11586e9d 100644 --- a/mlprec/impl/solver/mld_c_ilu_solver_dmp.f90 +++ b/mlprec/impl/solver/mld_c_ilu_solver_dmp.f90 @@ -35,26 +35,28 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine mld_c_ilu_solver_dmp(sv,ictxt,level,info,prefix,head,solver) - +subroutine mld_c_ilu_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) + use psb_base_mod use mld_c_ilu_solver, mld_protect_name => mld_c_ilu_solver_dmp implicit none class(mld_c_ilu_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than - logical :: solver_ + logical :: solver_, global_num_ + integer(psb_lpk_), allocatable :: iv(:) ! len of prefix_ info = 0 - + ictxt = desc%get_context() call psb_info(ictxt,iam,np) if (present(solver)) then @@ -62,6 +64,12 @@ subroutine mld_c_ilu_solver_dmp(sv,ictxt,level,info,prefix,head,solver) else solver_ = .false. end if + if (present(global_num)) then + global_num_ = global_num + else + global_num_ = .false. + end if + if (solver_) then if (present(prefix)) then @@ -73,17 +81,32 @@ subroutine mld_c_ilu_solver_dmp(sv,ictxt,level,info,prefix,head,solver) fname = trim(prefix_) write(fname(lname+1:lname+5),'(a,i3.3)') '_p',iam lname = lname + 5 + + if (global_num_) then + iv = desc%get_global_indices(owned=.false.) - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' - if (sv%l%is_asb()) & - & call sv%l%print(fname,head=head) - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_diag.mtx' - if (allocated(sv%d)) & - & call psb_geprt(fname,sv%d,head=head) - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' - if (sv%u%is_asb()) & - & call sv%u%print(fname,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' + if (sv%l%is_asb()) & + & call sv%l%print(fname,head=head,iv=iv) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_diag.mtx' + if (allocated(sv%d)) & + & call psb_geprt(fname,sv%d,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' + if (sv%u%is_asb()) & + & call sv%u%print(fname,head=head,iv=iv) + + else + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' + if (sv%l%is_asb()) & + & call sv%l%print(fname,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_diag.mtx' + if (allocated(sv%d)) & + & call psb_geprt(fname,sv%d,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' + if (sv%u%is_asb()) & + & call sv%u%print(fname,head=head) + end if end if end subroutine mld_c_ilu_solver_dmp diff --git a/mlprec/impl/solver/mld_d_base_solver_dmp.f90 b/mlprec/impl/solver/mld_d_base_solver_dmp.f90 index fbbb5208..fd6e3242 100644 --- a/mlprec/impl/solver/mld_d_base_solver_dmp.f90 +++ b/mlprec/impl/solver/mld_d_base_solver_dmp.f90 @@ -35,18 +35,19 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine mld_d_base_solver_dmp(sv,ictxt,level,info,prefix,head,solver) +subroutine mld_d_base_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) use psb_base_mod use mld_d_base_solver_mod, mld_protect_name => mld_d_base_solver_dmp implicit none class(mld_d_base_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than logical :: solver_ @@ -59,7 +60,7 @@ subroutine mld_d_base_solver_dmp(sv,ictxt,level,info,prefix,head,solver) else prefix_ = "dump_slv_d" end if - + ictxt = desc%get_context() call psb_info(ictxt,iam,np) if (present(solver)) then diff --git a/mlprec/impl/solver/mld_d_diag_solver_dmp.f90 b/mlprec/impl/solver/mld_d_diag_solver_dmp.f90 index c6119c1a..50244998 100644 --- a/mlprec/impl/solver/mld_d_diag_solver_dmp.f90 +++ b/mlprec/impl/solver/mld_d_diag_solver_dmp.f90 @@ -35,18 +35,19 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine mld_d_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) +subroutine mld_d_diag_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) use psb_base_mod use mld_d_diag_solver, mld_protect_name => mld_d_diag_solver_dmp implicit none class(mld_d_diag_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than logical :: solver_ @@ -54,6 +55,7 @@ subroutine mld_d_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) info = 0 + ictxt = desc%get_context() call psb_info(ictxt,iam,np) @@ -81,18 +83,19 @@ subroutine mld_d_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) end if end subroutine mld_d_diag_solver_dmp -subroutine mld_d_l1_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) +subroutine mld_d_l1_diag_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) use psb_base_mod use mld_d_l1_diag_solver, mld_protect_name => mld_d_l1_diag_solver_dmp implicit none class(mld_d_l1_diag_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than logical :: solver_ @@ -100,6 +103,7 @@ subroutine mld_d_l1_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) info = 0 + ictxt = desc%get_context() call psb_info(ictxt,iam,np) diff --git a/mlprec/impl/solver/mld_d_gs_solver_dmp.f90 b/mlprec/impl/solver/mld_d_gs_solver_dmp.f90 index f1d3b5cb..b1037f49 100644 --- a/mlprec/impl/solver/mld_d_gs_solver_dmp.f90 +++ b/mlprec/impl/solver/mld_d_gs_solver_dmp.f90 @@ -35,26 +35,28 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine mld_d_gs_solver_dmp(sv,ictxt,level,info,prefix,head,solver) +subroutine mld_d_gs_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) use psb_base_mod use mld_d_gs_solver, mld_protect_name => mld_d_gs_solver_dmp implicit none class(mld_d_gs_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than - logical :: solver_ + integer(psb_lpk_), allocatable :: iv(:) + logical :: solver_, global_num_ ! len of prefix_ info = 0 - + ictxt = desc%get_context() call psb_info(ictxt,iam,np) if (present(solver)) then @@ -62,6 +64,11 @@ subroutine mld_d_gs_solver_dmp(sv,ictxt,level,info,prefix,head,solver) else solver_ = .false. end if + if (present(global_num)) then + global_num_ = global_num + else + global_num_ = .false. + end if if (solver_) then if (present(prefix)) then @@ -73,14 +80,23 @@ subroutine mld_d_gs_solver_dmp(sv,ictxt,level,info,prefix,head,solver) fname = trim(prefix_) write(fname(lname+1:lname+5),'(a,i3.3)') '_p',iam lname = lname + 5 - - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' - if (sv%l%is_asb()) & - & call sv%l%print(fname,head=head) - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' - if (sv%u%is_asb()) & - & call sv%u%print(fname,head=head) - + + if (global_num_) then + iv = desc%get_global_indices(owned=.false.) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' + if (sv%l%is_asb()) & + & call sv%l%print(fname,head=head,iv=iv) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' + if (sv%u%is_asb()) & + & call sv%u%print(fname,head=head,iv=iv) + else + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' + if (sv%l%is_asb()) & + & call sv%l%print(fname,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' + if (sv%u%is_asb()) & + & call sv%u%print(fname,head=head) + end if end if end subroutine mld_d_gs_solver_dmp diff --git a/mlprec/impl/solver/mld_d_ilu_solver_dmp.f90 b/mlprec/impl/solver/mld_d_ilu_solver_dmp.f90 index 0a4c9b43..8ab7f36c 100644 --- a/mlprec/impl/solver/mld_d_ilu_solver_dmp.f90 +++ b/mlprec/impl/solver/mld_d_ilu_solver_dmp.f90 @@ -35,26 +35,28 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine mld_d_ilu_solver_dmp(sv,ictxt,level,info,prefix,head,solver) - +subroutine mld_d_ilu_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) + use psb_base_mod use mld_d_ilu_solver, mld_protect_name => mld_d_ilu_solver_dmp implicit none class(mld_d_ilu_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than - logical :: solver_ + logical :: solver_, global_num_ + integer(psb_lpk_), allocatable :: iv(:) ! len of prefix_ info = 0 - + ictxt = desc%get_context() call psb_info(ictxt,iam,np) if (present(solver)) then @@ -62,6 +64,12 @@ subroutine mld_d_ilu_solver_dmp(sv,ictxt,level,info,prefix,head,solver) else solver_ = .false. end if + if (present(global_num)) then + global_num_ = global_num + else + global_num_ = .false. + end if + if (solver_) then if (present(prefix)) then @@ -73,17 +81,32 @@ subroutine mld_d_ilu_solver_dmp(sv,ictxt,level,info,prefix,head,solver) fname = trim(prefix_) write(fname(lname+1:lname+5),'(a,i3.3)') '_p',iam lname = lname + 5 + + if (global_num_) then + iv = desc%get_global_indices(owned=.false.) - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' - if (sv%l%is_asb()) & - & call sv%l%print(fname,head=head) - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_diag.mtx' - if (allocated(sv%d)) & - & call psb_geprt(fname,sv%d,head=head) - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' - if (sv%u%is_asb()) & - & call sv%u%print(fname,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' + if (sv%l%is_asb()) & + & call sv%l%print(fname,head=head,iv=iv) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_diag.mtx' + if (allocated(sv%d)) & + & call psb_geprt(fname,sv%d,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' + if (sv%u%is_asb()) & + & call sv%u%print(fname,head=head,iv=iv) + + else + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' + if (sv%l%is_asb()) & + & call sv%l%print(fname,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_diag.mtx' + if (allocated(sv%d)) & + & call psb_geprt(fname,sv%d,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' + if (sv%u%is_asb()) & + & call sv%u%print(fname,head=head) + end if end if end subroutine mld_d_ilu_solver_dmp diff --git a/mlprec/impl/solver/mld_s_base_solver_dmp.f90 b/mlprec/impl/solver/mld_s_base_solver_dmp.f90 index 77ae6492..ffe0141f 100644 --- a/mlprec/impl/solver/mld_s_base_solver_dmp.f90 +++ b/mlprec/impl/solver/mld_s_base_solver_dmp.f90 @@ -35,18 +35,19 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine mld_s_base_solver_dmp(sv,ictxt,level,info,prefix,head,solver) +subroutine mld_s_base_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) use psb_base_mod use mld_s_base_solver_mod, mld_protect_name => mld_s_base_solver_dmp implicit none class(mld_s_base_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than logical :: solver_ @@ -59,7 +60,7 @@ subroutine mld_s_base_solver_dmp(sv,ictxt,level,info,prefix,head,solver) else prefix_ = "dump_slv_s" end if - + ictxt = desc%get_context() call psb_info(ictxt,iam,np) if (present(solver)) then diff --git a/mlprec/impl/solver/mld_s_diag_solver_dmp.f90 b/mlprec/impl/solver/mld_s_diag_solver_dmp.f90 index b201e712..d6143349 100644 --- a/mlprec/impl/solver/mld_s_diag_solver_dmp.f90 +++ b/mlprec/impl/solver/mld_s_diag_solver_dmp.f90 @@ -35,18 +35,19 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine mld_s_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) +subroutine mld_s_diag_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) use psb_base_mod use mld_s_diag_solver, mld_protect_name => mld_s_diag_solver_dmp implicit none class(mld_s_diag_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than logical :: solver_ @@ -54,6 +55,7 @@ subroutine mld_s_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) info = 0 + ictxt = desc%get_context() call psb_info(ictxt,iam,np) @@ -81,18 +83,19 @@ subroutine mld_s_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) end if end subroutine mld_s_diag_solver_dmp -subroutine mld_s_l1_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) +subroutine mld_s_l1_diag_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) use psb_base_mod use mld_s_l1_diag_solver, mld_protect_name => mld_s_l1_diag_solver_dmp implicit none class(mld_s_l1_diag_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than logical :: solver_ @@ -100,6 +103,7 @@ subroutine mld_s_l1_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) info = 0 + ictxt = desc%get_context() call psb_info(ictxt,iam,np) diff --git a/mlprec/impl/solver/mld_s_gs_solver_dmp.f90 b/mlprec/impl/solver/mld_s_gs_solver_dmp.f90 index 33af39a7..911d0104 100644 --- a/mlprec/impl/solver/mld_s_gs_solver_dmp.f90 +++ b/mlprec/impl/solver/mld_s_gs_solver_dmp.f90 @@ -35,26 +35,28 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine mld_s_gs_solver_dmp(sv,ictxt,level,info,prefix,head,solver) +subroutine mld_s_gs_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) use psb_base_mod use mld_s_gs_solver, mld_protect_name => mld_s_gs_solver_dmp implicit none class(mld_s_gs_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than - logical :: solver_ + integer(psb_lpk_), allocatable :: iv(:) + logical :: solver_, global_num_ ! len of prefix_ info = 0 - + ictxt = desc%get_context() call psb_info(ictxt,iam,np) if (present(solver)) then @@ -62,6 +64,11 @@ subroutine mld_s_gs_solver_dmp(sv,ictxt,level,info,prefix,head,solver) else solver_ = .false. end if + if (present(global_num)) then + global_num_ = global_num + else + global_num_ = .false. + end if if (solver_) then if (present(prefix)) then @@ -73,14 +80,23 @@ subroutine mld_s_gs_solver_dmp(sv,ictxt,level,info,prefix,head,solver) fname = trim(prefix_) write(fname(lname+1:lname+5),'(a,i3.3)') '_p',iam lname = lname + 5 - - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' - if (sv%l%is_asb()) & - & call sv%l%print(fname,head=head) - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' - if (sv%u%is_asb()) & - & call sv%u%print(fname,head=head) - + + if (global_num_) then + iv = desc%get_global_indices(owned=.false.) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' + if (sv%l%is_asb()) & + & call sv%l%print(fname,head=head,iv=iv) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' + if (sv%u%is_asb()) & + & call sv%u%print(fname,head=head,iv=iv) + else + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' + if (sv%l%is_asb()) & + & call sv%l%print(fname,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' + if (sv%u%is_asb()) & + & call sv%u%print(fname,head=head) + end if end if end subroutine mld_s_gs_solver_dmp diff --git a/mlprec/impl/solver/mld_s_ilu_solver_dmp.f90 b/mlprec/impl/solver/mld_s_ilu_solver_dmp.f90 index 5da73209..f388bbc5 100644 --- a/mlprec/impl/solver/mld_s_ilu_solver_dmp.f90 +++ b/mlprec/impl/solver/mld_s_ilu_solver_dmp.f90 @@ -35,26 +35,28 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine mld_s_ilu_solver_dmp(sv,ictxt,level,info,prefix,head,solver) - +subroutine mld_s_ilu_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) + use psb_base_mod use mld_s_ilu_solver, mld_protect_name => mld_s_ilu_solver_dmp implicit none class(mld_s_ilu_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than - logical :: solver_ + logical :: solver_, global_num_ + integer(psb_lpk_), allocatable :: iv(:) ! len of prefix_ info = 0 - + ictxt = desc%get_context() call psb_info(ictxt,iam,np) if (present(solver)) then @@ -62,6 +64,12 @@ subroutine mld_s_ilu_solver_dmp(sv,ictxt,level,info,prefix,head,solver) else solver_ = .false. end if + if (present(global_num)) then + global_num_ = global_num + else + global_num_ = .false. + end if + if (solver_) then if (present(prefix)) then @@ -73,17 +81,32 @@ subroutine mld_s_ilu_solver_dmp(sv,ictxt,level,info,prefix,head,solver) fname = trim(prefix_) write(fname(lname+1:lname+5),'(a,i3.3)') '_p',iam lname = lname + 5 + + if (global_num_) then + iv = desc%get_global_indices(owned=.false.) - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' - if (sv%l%is_asb()) & - & call sv%l%print(fname,head=head) - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_diag.mtx' - if (allocated(sv%d)) & - & call psb_geprt(fname,sv%d,head=head) - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' - if (sv%u%is_asb()) & - & call sv%u%print(fname,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' + if (sv%l%is_asb()) & + & call sv%l%print(fname,head=head,iv=iv) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_diag.mtx' + if (allocated(sv%d)) & + & call psb_geprt(fname,sv%d,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' + if (sv%u%is_asb()) & + & call sv%u%print(fname,head=head,iv=iv) + + else + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' + if (sv%l%is_asb()) & + & call sv%l%print(fname,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_diag.mtx' + if (allocated(sv%d)) & + & call psb_geprt(fname,sv%d,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' + if (sv%u%is_asb()) & + & call sv%u%print(fname,head=head) + end if end if end subroutine mld_s_ilu_solver_dmp diff --git a/mlprec/impl/solver/mld_z_base_solver_dmp.f90 b/mlprec/impl/solver/mld_z_base_solver_dmp.f90 index a85cd64c..1d54ee84 100644 --- a/mlprec/impl/solver/mld_z_base_solver_dmp.f90 +++ b/mlprec/impl/solver/mld_z_base_solver_dmp.f90 @@ -35,18 +35,19 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine mld_z_base_solver_dmp(sv,ictxt,level,info,prefix,head,solver) +subroutine mld_z_base_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) use psb_base_mod use mld_z_base_solver_mod, mld_protect_name => mld_z_base_solver_dmp implicit none class(mld_z_base_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than logical :: solver_ @@ -59,7 +60,7 @@ subroutine mld_z_base_solver_dmp(sv,ictxt,level,info,prefix,head,solver) else prefix_ = "dump_slv_z" end if - + ictxt = desc%get_context() call psb_info(ictxt,iam,np) if (present(solver)) then diff --git a/mlprec/impl/solver/mld_z_diag_solver_dmp.f90 b/mlprec/impl/solver/mld_z_diag_solver_dmp.f90 index 78663f21..5f52b8ff 100644 --- a/mlprec/impl/solver/mld_z_diag_solver_dmp.f90 +++ b/mlprec/impl/solver/mld_z_diag_solver_dmp.f90 @@ -35,18 +35,19 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine mld_z_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) +subroutine mld_z_diag_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) use psb_base_mod use mld_z_diag_solver, mld_protect_name => mld_z_diag_solver_dmp implicit none class(mld_z_diag_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than logical :: solver_ @@ -54,6 +55,7 @@ subroutine mld_z_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) info = 0 + ictxt = desc%get_context() call psb_info(ictxt,iam,np) @@ -81,18 +83,19 @@ subroutine mld_z_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) end if end subroutine mld_z_diag_solver_dmp -subroutine mld_z_l1_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) +subroutine mld_z_l1_diag_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) use psb_base_mod use mld_z_l1_diag_solver, mld_protect_name => mld_z_l1_diag_solver_dmp implicit none class(mld_z_l1_diag_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than logical :: solver_ @@ -100,6 +103,7 @@ subroutine mld_z_l1_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) info = 0 + ictxt = desc%get_context() call psb_info(ictxt,iam,np) diff --git a/mlprec/impl/solver/mld_z_gs_solver_dmp.f90 b/mlprec/impl/solver/mld_z_gs_solver_dmp.f90 index 3449cdd1..3f5908a9 100644 --- a/mlprec/impl/solver/mld_z_gs_solver_dmp.f90 +++ b/mlprec/impl/solver/mld_z_gs_solver_dmp.f90 @@ -35,26 +35,28 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine mld_z_gs_solver_dmp(sv,ictxt,level,info,prefix,head,solver) +subroutine mld_z_gs_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) use psb_base_mod use mld_z_gs_solver, mld_protect_name => mld_z_gs_solver_dmp implicit none class(mld_z_gs_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than - logical :: solver_ + integer(psb_lpk_), allocatable :: iv(:) + logical :: solver_, global_num_ ! len of prefix_ info = 0 - + ictxt = desc%get_context() call psb_info(ictxt,iam,np) if (present(solver)) then @@ -62,6 +64,11 @@ subroutine mld_z_gs_solver_dmp(sv,ictxt,level,info,prefix,head,solver) else solver_ = .false. end if + if (present(global_num)) then + global_num_ = global_num + else + global_num_ = .false. + end if if (solver_) then if (present(prefix)) then @@ -73,14 +80,23 @@ subroutine mld_z_gs_solver_dmp(sv,ictxt,level,info,prefix,head,solver) fname = trim(prefix_) write(fname(lname+1:lname+5),'(a,i3.3)') '_p',iam lname = lname + 5 - - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' - if (sv%l%is_asb()) & - & call sv%l%print(fname,head=head) - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' - if (sv%u%is_asb()) & - & call sv%u%print(fname,head=head) - + + if (global_num_) then + iv = desc%get_global_indices(owned=.false.) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' + if (sv%l%is_asb()) & + & call sv%l%print(fname,head=head,iv=iv) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' + if (sv%u%is_asb()) & + & call sv%u%print(fname,head=head,iv=iv) + else + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' + if (sv%l%is_asb()) & + & call sv%l%print(fname,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' + if (sv%u%is_asb()) & + & call sv%u%print(fname,head=head) + end if end if end subroutine mld_z_gs_solver_dmp diff --git a/mlprec/impl/solver/mld_z_ilu_solver_dmp.f90 b/mlprec/impl/solver/mld_z_ilu_solver_dmp.f90 index 8c40336d..a9a10ca4 100644 --- a/mlprec/impl/solver/mld_z_ilu_solver_dmp.f90 +++ b/mlprec/impl/solver/mld_z_ilu_solver_dmp.f90 @@ -35,26 +35,28 @@ ! POSSIBILITY OF SUCH DAMAGE. ! ! -subroutine mld_z_ilu_solver_dmp(sv,ictxt,level,info,prefix,head,solver) - +subroutine mld_z_ilu_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) + use psb_base_mod use mld_z_ilu_solver, mld_protect_name => mld_z_ilu_solver_dmp implicit none class(mld_z_ilu_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt,level + type(psb_desc_type), intent(in) :: desc + integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num integer(psb_ipk_) :: i, j, il1, iln, lname, lev - integer(psb_ipk_) :: icontxt,iam, np + integer(psb_ipk_) :: ictxt,iam, np character(len=80) :: prefix_ character(len=120) :: fname ! len should be at least 20 more than - logical :: solver_ + logical :: solver_, global_num_ + integer(psb_lpk_), allocatable :: iv(:) ! len of prefix_ info = 0 - + ictxt = desc%get_context() call psb_info(ictxt,iam,np) if (present(solver)) then @@ -62,6 +64,12 @@ subroutine mld_z_ilu_solver_dmp(sv,ictxt,level,info,prefix,head,solver) else solver_ = .false. end if + if (present(global_num)) then + global_num_ = global_num + else + global_num_ = .false. + end if + if (solver_) then if (present(prefix)) then @@ -73,17 +81,32 @@ subroutine mld_z_ilu_solver_dmp(sv,ictxt,level,info,prefix,head,solver) fname = trim(prefix_) write(fname(lname+1:lname+5),'(a,i3.3)') '_p',iam lname = lname + 5 + + if (global_num_) then + iv = desc%get_global_indices(owned=.false.) - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' - if (sv%l%is_asb()) & - & call sv%l%print(fname,head=head) - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_diag.mtx' - if (allocated(sv%d)) & - & call psb_geprt(fname,sv%d,head=head) - write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' - if (sv%u%is_asb()) & - & call sv%u%print(fname,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' + if (sv%l%is_asb()) & + & call sv%l%print(fname,head=head,iv=iv) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_diag.mtx' + if (allocated(sv%d)) & + & call psb_geprt(fname,sv%d,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' + if (sv%u%is_asb()) & + & call sv%u%print(fname,head=head,iv=iv) + + else + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_lower.mtx' + if (sv%l%is_asb()) & + & call sv%l%print(fname,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_diag.mtx' + if (allocated(sv%d)) & + & call psb_geprt(fname,sv%d,head=head) + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_upper.mtx' + if (sv%u%is_asb()) & + & call sv%u%print(fname,head=head) + end if end if end subroutine mld_z_ilu_solver_dmp diff --git a/mlprec/mld_c_base_solver_mod.f90 b/mlprec/mld_c_base_solver_mod.f90 index bc250976..fe0a1b07 100644 --- a/mlprec/mld_c_base_solver_mod.f90 +++ b/mlprec/mld_c_base_solver_mod.f90 @@ -286,17 +286,17 @@ module mld_c_base_solver_mod end interface interface - subroutine mld_c_base_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_c_base_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, psb_cspmat_type, psb_c_base_sparse_mat, & & psb_c_vect_type, psb_c_base_vect_type, psb_spk_, & & mld_c_base_solver_type, psb_ipk_ implicit none class(mld_c_base_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_c_base_solver_dmp end interface diff --git a/mlprec/mld_c_diag_solver.f90 b/mlprec/mld_c_diag_solver.f90 index 5f8c738d..e5212b63 100644 --- a/mlprec/mld_c_diag_solver.f90 +++ b/mlprec/mld_c_diag_solver.f90 @@ -143,17 +143,17 @@ module mld_c_diag_solver end interface interface - subroutine mld_c_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_c_diag_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, mld_c_diag_solver_type, psb_c_vect_type, psb_spk_, & & psb_cspmat_type, psb_c_base_sparse_mat, psb_c_base_vect_type, & & psb_ipk_ implicit none class(mld_c_diag_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_c_diag_solver_dmp end interface @@ -336,17 +336,17 @@ module mld_c_l1_diag_solver end interface interface - subroutine mld_c_l1_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_c_l1_diag_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, mld_c_l1_diag_solver_type, psb_c_vect_type, psb_spk_, & & psb_cspmat_type, psb_c_base_sparse_mat, psb_c_base_vect_type, & & psb_ipk_ implicit none class(mld_c_l1_diag_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_c_l1_diag_solver_dmp end interface diff --git a/mlprec/mld_c_gs_solver.f90 b/mlprec/mld_c_gs_solver.f90 index 4940b1e2..8bb92e83 100644 --- a/mlprec/mld_c_gs_solver.f90 +++ b/mlprec/mld_c_gs_solver.f90 @@ -221,17 +221,17 @@ module mld_c_gs_solver end interface interface - subroutine mld_c_gs_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_c_gs_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, mld_c_gs_solver_type, psb_c_vect_type, psb_spk_, & & psb_cspmat_type, psb_c_base_sparse_mat, psb_c_base_vect_type, & & psb_ipk_ implicit none class(mld_c_gs_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_c_gs_solver_dmp end interface diff --git a/mlprec/mld_c_ilu_solver.f90 b/mlprec/mld_c_ilu_solver.f90 index e8ab8f9c..184c9ad5 100644 --- a/mlprec/mld_c_ilu_solver.f90 +++ b/mlprec/mld_c_ilu_solver.f90 @@ -170,17 +170,17 @@ module mld_c_ilu_solver end interface interface - subroutine mld_c_ilu_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_c_ilu_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, mld_c_ilu_solver_type, psb_c_vect_type, psb_spk_, & & psb_cspmat_type, psb_c_base_sparse_mat, psb_c_base_vect_type, & & psb_ipk_ implicit none class(mld_c_ilu_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_c_ilu_solver_dmp end interface diff --git a/mlprec/mld_d_base_solver_mod.f90 b/mlprec/mld_d_base_solver_mod.f90 index 9a56ce6b..1db63184 100644 --- a/mlprec/mld_d_base_solver_mod.f90 +++ b/mlprec/mld_d_base_solver_mod.f90 @@ -286,17 +286,17 @@ module mld_d_base_solver_mod end interface interface - subroutine mld_d_base_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_d_base_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, psb_dspmat_type, psb_d_base_sparse_mat, & & psb_d_vect_type, psb_d_base_vect_type, psb_dpk_, & & mld_d_base_solver_type, psb_ipk_ implicit none class(mld_d_base_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_d_base_solver_dmp end interface diff --git a/mlprec/mld_d_diag_solver.f90 b/mlprec/mld_d_diag_solver.f90 index 0235e259..f73ef0ce 100644 --- a/mlprec/mld_d_diag_solver.f90 +++ b/mlprec/mld_d_diag_solver.f90 @@ -143,17 +143,17 @@ module mld_d_diag_solver end interface interface - subroutine mld_d_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_d_diag_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, mld_d_diag_solver_type, psb_d_vect_type, psb_dpk_, & & psb_dspmat_type, psb_d_base_sparse_mat, psb_d_base_vect_type, & & psb_ipk_ implicit none class(mld_d_diag_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_d_diag_solver_dmp end interface @@ -336,17 +336,17 @@ module mld_d_l1_diag_solver end interface interface - subroutine mld_d_l1_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_d_l1_diag_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, mld_d_l1_diag_solver_type, psb_d_vect_type, psb_dpk_, & & psb_dspmat_type, psb_d_base_sparse_mat, psb_d_base_vect_type, & & psb_ipk_ implicit none class(mld_d_l1_diag_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_d_l1_diag_solver_dmp end interface diff --git a/mlprec/mld_d_gs_solver.f90 b/mlprec/mld_d_gs_solver.f90 index 213eab55..ed89ce0f 100644 --- a/mlprec/mld_d_gs_solver.f90 +++ b/mlprec/mld_d_gs_solver.f90 @@ -221,17 +221,17 @@ module mld_d_gs_solver end interface interface - subroutine mld_d_gs_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_d_gs_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, mld_d_gs_solver_type, psb_d_vect_type, psb_dpk_, & & psb_dspmat_type, psb_d_base_sparse_mat, psb_d_base_vect_type, & & psb_ipk_ implicit none class(mld_d_gs_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_d_gs_solver_dmp end interface diff --git a/mlprec/mld_d_ilu_solver.f90 b/mlprec/mld_d_ilu_solver.f90 index b2ff7a0b..026e676f 100644 --- a/mlprec/mld_d_ilu_solver.f90 +++ b/mlprec/mld_d_ilu_solver.f90 @@ -170,17 +170,17 @@ module mld_d_ilu_solver end interface interface - subroutine mld_d_ilu_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_d_ilu_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, mld_d_ilu_solver_type, psb_d_vect_type, psb_dpk_, & & psb_dspmat_type, psb_d_base_sparse_mat, psb_d_base_vect_type, & & psb_ipk_ implicit none class(mld_d_ilu_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_d_ilu_solver_dmp end interface diff --git a/mlprec/mld_s_base_solver_mod.f90 b/mlprec/mld_s_base_solver_mod.f90 index 3df02c35..d9a2101b 100644 --- a/mlprec/mld_s_base_solver_mod.f90 +++ b/mlprec/mld_s_base_solver_mod.f90 @@ -286,17 +286,17 @@ module mld_s_base_solver_mod end interface interface - subroutine mld_s_base_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_s_base_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, psb_sspmat_type, psb_s_base_sparse_mat, & & psb_s_vect_type, psb_s_base_vect_type, psb_spk_, & & mld_s_base_solver_type, psb_ipk_ implicit none class(mld_s_base_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_s_base_solver_dmp end interface diff --git a/mlprec/mld_s_diag_solver.f90 b/mlprec/mld_s_diag_solver.f90 index 76c1151c..a0f76a33 100644 --- a/mlprec/mld_s_diag_solver.f90 +++ b/mlprec/mld_s_diag_solver.f90 @@ -143,17 +143,17 @@ module mld_s_diag_solver end interface interface - subroutine mld_s_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_s_diag_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, mld_s_diag_solver_type, psb_s_vect_type, psb_spk_, & & psb_sspmat_type, psb_s_base_sparse_mat, psb_s_base_vect_type, & & psb_ipk_ implicit none class(mld_s_diag_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_s_diag_solver_dmp end interface @@ -336,17 +336,17 @@ module mld_s_l1_diag_solver end interface interface - subroutine mld_s_l1_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_s_l1_diag_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, mld_s_l1_diag_solver_type, psb_s_vect_type, psb_spk_, & & psb_sspmat_type, psb_s_base_sparse_mat, psb_s_base_vect_type, & & psb_ipk_ implicit none class(mld_s_l1_diag_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_s_l1_diag_solver_dmp end interface diff --git a/mlprec/mld_s_gs_solver.f90 b/mlprec/mld_s_gs_solver.f90 index 9059ff58..e34766a4 100644 --- a/mlprec/mld_s_gs_solver.f90 +++ b/mlprec/mld_s_gs_solver.f90 @@ -221,17 +221,17 @@ module mld_s_gs_solver end interface interface - subroutine mld_s_gs_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_s_gs_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, mld_s_gs_solver_type, psb_s_vect_type, psb_spk_, & & psb_sspmat_type, psb_s_base_sparse_mat, psb_s_base_vect_type, & & psb_ipk_ implicit none class(mld_s_gs_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_s_gs_solver_dmp end interface diff --git a/mlprec/mld_s_ilu_solver.f90 b/mlprec/mld_s_ilu_solver.f90 index a9f3e3ad..b785ce04 100644 --- a/mlprec/mld_s_ilu_solver.f90 +++ b/mlprec/mld_s_ilu_solver.f90 @@ -170,17 +170,17 @@ module mld_s_ilu_solver end interface interface - subroutine mld_s_ilu_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_s_ilu_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, mld_s_ilu_solver_type, psb_s_vect_type, psb_spk_, & & psb_sspmat_type, psb_s_base_sparse_mat, psb_s_base_vect_type, & & psb_ipk_ implicit none class(mld_s_ilu_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_s_ilu_solver_dmp end interface diff --git a/mlprec/mld_z_base_solver_mod.f90 b/mlprec/mld_z_base_solver_mod.f90 index 3988d97e..3b3d47de 100644 --- a/mlprec/mld_z_base_solver_mod.f90 +++ b/mlprec/mld_z_base_solver_mod.f90 @@ -286,17 +286,17 @@ module mld_z_base_solver_mod end interface interface - subroutine mld_z_base_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_z_base_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, psb_zspmat_type, psb_z_base_sparse_mat, & & psb_z_vect_type, psb_z_base_vect_type, psb_dpk_, & & mld_z_base_solver_type, psb_ipk_ implicit none class(mld_z_base_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_z_base_solver_dmp end interface diff --git a/mlprec/mld_z_diag_solver.f90 b/mlprec/mld_z_diag_solver.f90 index b403a8e2..2a62ce11 100644 --- a/mlprec/mld_z_diag_solver.f90 +++ b/mlprec/mld_z_diag_solver.f90 @@ -143,17 +143,17 @@ module mld_z_diag_solver end interface interface - subroutine mld_z_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_z_diag_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, mld_z_diag_solver_type, psb_z_vect_type, psb_dpk_, & & psb_zspmat_type, psb_z_base_sparse_mat, psb_z_base_vect_type, & & psb_ipk_ implicit none class(mld_z_diag_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_z_diag_solver_dmp end interface @@ -336,17 +336,17 @@ module mld_z_l1_diag_solver end interface interface - subroutine mld_z_l1_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_z_l1_diag_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, mld_z_l1_diag_solver_type, psb_z_vect_type, psb_dpk_, & & psb_zspmat_type, psb_z_base_sparse_mat, psb_z_base_vect_type, & & psb_ipk_ implicit none class(mld_z_l1_diag_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_z_l1_diag_solver_dmp end interface diff --git a/mlprec/mld_z_gs_solver.f90 b/mlprec/mld_z_gs_solver.f90 index b3d3f21c..710867e7 100644 --- a/mlprec/mld_z_gs_solver.f90 +++ b/mlprec/mld_z_gs_solver.f90 @@ -221,17 +221,17 @@ module mld_z_gs_solver end interface interface - subroutine mld_z_gs_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_z_gs_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, mld_z_gs_solver_type, psb_z_vect_type, psb_dpk_, & & psb_zspmat_type, psb_z_base_sparse_mat, psb_z_base_vect_type, & & psb_ipk_ implicit none class(mld_z_gs_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_z_gs_solver_dmp end interface diff --git a/mlprec/mld_z_ilu_solver.f90 b/mlprec/mld_z_ilu_solver.f90 index b3585a2b..0b98de2b 100644 --- a/mlprec/mld_z_ilu_solver.f90 +++ b/mlprec/mld_z_ilu_solver.f90 @@ -170,17 +170,17 @@ module mld_z_ilu_solver end interface interface - subroutine mld_z_ilu_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + subroutine mld_z_ilu_solver_dmp(sv,desc,level,info,prefix,head,solver,global_num) import :: psb_desc_type, mld_z_ilu_solver_type, psb_z_vect_type, psb_dpk_, & & psb_zspmat_type, psb_z_base_sparse_mat, psb_z_base_vect_type, & & psb_ipk_ implicit none class(mld_z_ilu_solver_type), intent(in) :: sv - integer(psb_ipk_), intent(in) :: ictxt + type(psb_desc_type), intent(in) :: desc integer(psb_ipk_), intent(in) :: level integer(psb_ipk_), intent(out) :: info character(len=*), intent(in), optional :: prefix, head - logical, optional, intent(in) :: solver + logical, optional, intent(in) :: solver, global_num end subroutine mld_z_ilu_solver_dmp end interface