diff --git a/mlprec/impl/level/mld_c_base_onelev_dump.f90 b/mlprec/impl/level/mld_c_base_onelev_dump.f90 index ef5211c6..545071f0 100644 --- a/mlprec/impl/level/mld_c_base_onelev_dump.f90 +++ b/mlprec/impl/level/mld_c_base_onelev_dump.f90 @@ -98,5 +98,10 @@ subroutine mld_c_base_onelev_dump(lv,level,info,prefix,head,ac,rp,smoother,solve if (allocated(lv%sm)) & & call lv%sm%dump(icontxt,level,info,smoother=smoother, & & solver=solver,prefix=prefix) + if (allocated(lv%sm2a)) then + prefix_=trim(prefix_)//"_sm2a" + call lv%sm2a%dump(icontxt,level,info,smoother=smoother, & + & solver=solver,prefix=prefix_) + 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 8028369a..7254e535 100644 --- a/mlprec/impl/level/mld_d_base_onelev_dump.f90 +++ b/mlprec/impl/level/mld_d_base_onelev_dump.f90 @@ -98,5 +98,10 @@ subroutine mld_d_base_onelev_dump(lv,level,info,prefix,head,ac,rp,smoother,solve if (allocated(lv%sm)) & & call lv%sm%dump(icontxt,level,info,smoother=smoother, & & solver=solver,prefix=prefix) + if (allocated(lv%sm2a)) then + prefix_=trim(prefix_)//"_sm2a" + call lv%sm2a%dump(icontxt,level,info,smoother=smoother, & + & solver=solver,prefix=prefix_) + 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 15b260da..9b020017 100644 --- a/mlprec/impl/level/mld_s_base_onelev_dump.f90 +++ b/mlprec/impl/level/mld_s_base_onelev_dump.f90 @@ -98,5 +98,10 @@ subroutine mld_s_base_onelev_dump(lv,level,info,prefix,head,ac,rp,smoother,solve if (allocated(lv%sm)) & & call lv%sm%dump(icontxt,level,info,smoother=smoother, & & solver=solver,prefix=prefix) + if (allocated(lv%sm2a)) then + prefix_=trim(prefix_)//"_sm2a" + call lv%sm2a%dump(icontxt,level,info,smoother=smoother, & + & solver=solver,prefix=prefix_) + 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 6f8ec069..fab0c9ff 100644 --- a/mlprec/impl/level/mld_z_base_onelev_dump.f90 +++ b/mlprec/impl/level/mld_z_base_onelev_dump.f90 @@ -98,5 +98,10 @@ subroutine mld_z_base_onelev_dump(lv,level,info,prefix,head,ac,rp,smoother,solve if (allocated(lv%sm)) & & call lv%sm%dump(icontxt,level,info,smoother=smoother, & & solver=solver,prefix=prefix) + if (allocated(lv%sm2a)) then + prefix_=trim(prefix_)//"_sm2a" + call lv%sm2a%dump(icontxt,level,info,smoother=smoother, & + & solver=solver,prefix=prefix_) + end if end subroutine mld_z_base_onelev_dump diff --git a/mlprec/impl/smoother/Makefile b/mlprec/impl/smoother/Makefile index 16add2fe..6201076e 100644 --- a/mlprec/impl/smoother/Makefile +++ b/mlprec/impl/smoother/Makefile @@ -40,6 +40,7 @@ mld_c_base_smoother_setr.o \ mld_c_jac_smoother_apply.o \ mld_c_jac_smoother_apply_vect.o \ mld_c_jac_smoother_bld.o \ +mld_c_jac_smoother_dmp.o \ mld_c_jac_smoother_clone.o \ mld_c_jac_smoother_cnv.o \ mld_d_as_smoother_apply.o \ @@ -74,6 +75,7 @@ mld_d_base_smoother_setr.o \ mld_d_jac_smoother_apply.o \ mld_d_jac_smoother_apply_vect.o \ mld_d_jac_smoother_bld.o \ +mld_d_jac_smoother_dmp.o \ mld_d_jac_smoother_clone.o \ mld_d_jac_smoother_cnv.o \ mld_s_as_smoother_apply.o \ @@ -108,6 +110,7 @@ mld_s_base_smoother_setr.o \ mld_s_jac_smoother_apply.o \ mld_s_jac_smoother_apply_vect.o \ mld_s_jac_smoother_bld.o \ +mld_s_jac_smoother_dmp.o \ mld_s_jac_smoother_clone.o \ mld_s_jac_smoother_cnv.o \ mld_z_as_smoother_apply.o \ @@ -142,6 +145,7 @@ mld_z_base_smoother_setr.o \ mld_z_jac_smoother_apply.o \ mld_z_jac_smoother_apply_vect.o \ mld_z_jac_smoother_bld.o \ +mld_z_jac_smoother_dmp.o \ mld_z_jac_smoother_clone.o \ mld_z_jac_smoother_cnv.o diff --git a/mlprec/impl/smoother/mld_c_jac_smoother_dmp.f90 b/mlprec/impl/smoother/mld_c_jac_smoother_dmp.f90 new file mode 100644 index 00000000..3a1ebc77 --- /dev/null +++ b/mlprec/impl/smoother/mld_c_jac_smoother_dmp.f90 @@ -0,0 +1,85 @@ +!!$ +!!$ +!!$ MLD2P4 version 2.0 +!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package +!!$ based on PSBLAS (Parallel Sparse BLAS version 3.3) +!!$ +!!$ (C) Copyright 2008, 2010, 2012, 2015 +!!$ +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ Pasqua D'Ambra ICAR-CNR, Naples +!!$ Daniela di Serafino Second University of Naples +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the MLD2P4 group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +subroutine mld_c_jac_smoother_dmp(sm,ictxt,level,info,prefix,head,smoother,solver) + + use psb_base_mod + use mld_c_jac_smoother, mld_protect_nam => mld_c_jac_smoother_dmp + implicit none + class(mld_c_jac_smoother_type), intent(in) :: sm + integer(psb_ipk_), intent(in) :: ictxt,level + integer(psb_ipk_), intent(out) :: info + character(len=*), intent(in), optional :: prefix, head + logical, optional, intent(in) :: smoother, solver + integer(psb_ipk_) :: i, j, il1, iln, lname, lev + integer(psb_ipk_) :: icontxt,iam, np + character(len=80) :: prefix_ + character(len=120) :: fname ! len should be at least 20 more than + logical :: smoother_ + ! len of prefix_ + + info = 0 + + if (present(prefix)) then + prefix_ = trim(prefix(1:min(len(prefix),len(prefix_)))) + else + prefix_ = "dump_smth_c" + end if + + call psb_info(ictxt,iam,np) + + if (present(smoother)) then + smoother_ = smoother + else + smoother_ = .false. + end if + lname = len_trim(prefix_) + fname = trim(prefix_) + write(fname(lname+1:lname+5),'(a,i3.3)') '_p',iam + lname = lname + 5 + + if (smoother_) then + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_nd.mtx' + if (sm%nd%is_asb()) & + & call sm%nd%print(fname,head=head) + 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) + +end subroutine mld_c_jac_smoother_dmp diff --git a/mlprec/impl/smoother/mld_d_jac_smoother_dmp.f90 b/mlprec/impl/smoother/mld_d_jac_smoother_dmp.f90 new file mode 100644 index 00000000..e72217db --- /dev/null +++ b/mlprec/impl/smoother/mld_d_jac_smoother_dmp.f90 @@ -0,0 +1,85 @@ +!!$ +!!$ +!!$ MLD2P4 version 2.0 +!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package +!!$ based on PSBLAS (Parallel Sparse BLAS version 3.3) +!!$ +!!$ (C) Copyright 2008, 2010, 2012, 2015 +!!$ +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ Pasqua D'Ambra ICAR-CNR, Naples +!!$ Daniela di Serafino Second University of Naples +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the MLD2P4 group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +subroutine mld_d_jac_smoother_dmp(sm,ictxt,level,info,prefix,head,smoother,solver) + + use psb_base_mod + use mld_d_jac_smoother, mld_protect_nam => mld_d_jac_smoother_dmp + implicit none + class(mld_d_jac_smoother_type), intent(in) :: sm + integer(psb_ipk_), intent(in) :: ictxt,level + integer(psb_ipk_), intent(out) :: info + character(len=*), intent(in), optional :: prefix, head + logical, optional, intent(in) :: smoother, solver + integer(psb_ipk_) :: i, j, il1, iln, lname, lev + integer(psb_ipk_) :: icontxt,iam, np + character(len=80) :: prefix_ + character(len=120) :: fname ! len should be at least 20 more than + logical :: smoother_ + ! len of prefix_ + + info = 0 + + if (present(prefix)) then + prefix_ = trim(prefix(1:min(len(prefix),len(prefix_)))) + else + prefix_ = "dump_smth_d" + end if + + call psb_info(ictxt,iam,np) + + if (present(smoother)) then + smoother_ = smoother + else + smoother_ = .false. + end if + lname = len_trim(prefix_) + fname = trim(prefix_) + write(fname(lname+1:lname+5),'(a,i3.3)') '_p',iam + lname = lname + 5 + + if (smoother_) then + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_nd.mtx' + if (sm%nd%is_asb()) & + & call sm%nd%print(fname,head=head) + 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) + +end subroutine mld_d_jac_smoother_dmp diff --git a/mlprec/impl/smoother/mld_s_jac_smoother_dmp.f90 b/mlprec/impl/smoother/mld_s_jac_smoother_dmp.f90 new file mode 100644 index 00000000..f1ce7d03 --- /dev/null +++ b/mlprec/impl/smoother/mld_s_jac_smoother_dmp.f90 @@ -0,0 +1,85 @@ +!!$ +!!$ +!!$ MLD2P4 version 2.0 +!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package +!!$ based on PSBLAS (Parallel Sparse BLAS version 3.3) +!!$ +!!$ (C) Copyright 2008, 2010, 2012, 2015 +!!$ +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ Pasqua D'Ambra ICAR-CNR, Naples +!!$ Daniela di Serafino Second University of Naples +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the MLD2P4 group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +subroutine mld_s_jac_smoother_dmp(sm,ictxt,level,info,prefix,head,smoother,solver) + + use psb_base_mod + use mld_s_jac_smoother, mld_protect_nam => mld_s_jac_smoother_dmp + implicit none + class(mld_s_jac_smoother_type), intent(in) :: sm + integer(psb_ipk_), intent(in) :: ictxt,level + integer(psb_ipk_), intent(out) :: info + character(len=*), intent(in), optional :: prefix, head + logical, optional, intent(in) :: smoother, solver + integer(psb_ipk_) :: i, j, il1, iln, lname, lev + integer(psb_ipk_) :: icontxt,iam, np + character(len=80) :: prefix_ + character(len=120) :: fname ! len should be at least 20 more than + logical :: smoother_ + ! len of prefix_ + + info = 0 + + if (present(prefix)) then + prefix_ = trim(prefix(1:min(len(prefix),len(prefix_)))) + else + prefix_ = "dump_smth_s" + end if + + call psb_info(ictxt,iam,np) + + if (present(smoother)) then + smoother_ = smoother + else + smoother_ = .false. + end if + lname = len_trim(prefix_) + fname = trim(prefix_) + write(fname(lname+1:lname+5),'(a,i3.3)') '_p',iam + lname = lname + 5 + + if (smoother_) then + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_nd.mtx' + if (sm%nd%is_asb()) & + & call sm%nd%print(fname,head=head) + 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) + +end subroutine mld_s_jac_smoother_dmp diff --git a/mlprec/impl/smoother/mld_z_jac_smoother_dmp.f90 b/mlprec/impl/smoother/mld_z_jac_smoother_dmp.f90 new file mode 100644 index 00000000..2e390e85 --- /dev/null +++ b/mlprec/impl/smoother/mld_z_jac_smoother_dmp.f90 @@ -0,0 +1,85 @@ +!!$ +!!$ +!!$ MLD2P4 version 2.0 +!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package +!!$ based on PSBLAS (Parallel Sparse BLAS version 3.3) +!!$ +!!$ (C) Copyright 2008, 2010, 2012, 2015 +!!$ +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ Pasqua D'Ambra ICAR-CNR, Naples +!!$ Daniela di Serafino Second University of Naples +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the MLD2P4 group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +subroutine mld_z_jac_smoother_dmp(sm,ictxt,level,info,prefix,head,smoother,solver) + + use psb_base_mod + use mld_z_jac_smoother, mld_protect_nam => mld_z_jac_smoother_dmp + implicit none + class(mld_z_jac_smoother_type), intent(in) :: sm + integer(psb_ipk_), intent(in) :: ictxt,level + integer(psb_ipk_), intent(out) :: info + character(len=*), intent(in), optional :: prefix, head + logical, optional, intent(in) :: smoother, solver + integer(psb_ipk_) :: i, j, il1, iln, lname, lev + integer(psb_ipk_) :: icontxt,iam, np + character(len=80) :: prefix_ + character(len=120) :: fname ! len should be at least 20 more than + logical :: smoother_ + ! len of prefix_ + + info = 0 + + if (present(prefix)) then + prefix_ = trim(prefix(1:min(len(prefix),len(prefix_)))) + else + prefix_ = "dump_smth_z" + end if + + call psb_info(ictxt,iam,np) + + if (present(smoother)) then + smoother_ = smoother + else + smoother_ = .false. + end if + lname = len_trim(prefix_) + fname = trim(prefix_) + write(fname(lname+1:lname+5),'(a,i3.3)') '_p',iam + lname = lname + 5 + + if (smoother_) then + write(fname(lname+1:),'(a,i3.3,a)')'_l',level,'_nd.mtx' + if (sm%nd%is_asb()) & + & call sm%nd%print(fname,head=head) + 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) + +end subroutine mld_z_jac_smoother_dmp diff --git a/mlprec/impl/solver/Makefile b/mlprec/impl/solver/Makefile index d8040aa6..f384275f 100644 --- a/mlprec/impl/solver/Makefile +++ b/mlprec/impl/solver/Makefile @@ -26,6 +26,7 @@ mld_c_base_solver_setr.o \ mld_c_diag_solver_apply.o \ mld_c_diag_solver_apply_vect.o \ mld_c_diag_solver_bld.o \ +mld_c_diag_solver_dmp.o \ mld_c_diag_solver_clone.o \ mld_c_diag_solver_cnv.o \ mld_c_gs_solver_bld.o \ @@ -67,6 +68,7 @@ mld_d_base_solver_setr.o \ mld_d_diag_solver_apply.o \ mld_d_diag_solver_apply_vect.o \ mld_d_diag_solver_bld.o \ +mld_d_diag_solver_dmp.o \ mld_d_diag_solver_clone.o \ mld_d_diag_solver_cnv.o \ mld_d_bwgs_solver_bld.o \ @@ -108,6 +110,7 @@ mld_s_base_solver_setr.o \ mld_s_diag_solver_apply.o \ mld_s_diag_solver_apply_vect.o \ mld_s_diag_solver_bld.o \ +mld_s_diag_solver_dmp.o \ mld_s_diag_solver_clone.o \ mld_s_diag_solver_cnv.o \ mld_s_gs_solver_bld.o \ @@ -149,6 +152,7 @@ mld_z_base_solver_setr.o \ mld_z_diag_solver_apply.o \ mld_z_diag_solver_apply_vect.o \ mld_z_diag_solver_bld.o \ +mld_z_diag_solver_dmp.o \ mld_z_diag_solver_clone.o \ mld_z_diag_solver_cnv.o \ mld_z_gs_solver_bld.o \ diff --git a/mlprec/impl/solver/mld_c_diag_solver_dmp.f90 b/mlprec/impl/solver/mld_c_diag_solver_dmp.f90 new file mode 100644 index 00000000..739dacb3 --- /dev/null +++ b/mlprec/impl/solver/mld_c_diag_solver_dmp.f90 @@ -0,0 +1,84 @@ +!!$ +!!$ +!!$ MLD2P4 version 2.0 +!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package +!!$ based on PSBLAS (Parallel Sparse BLAS version 3.3) +!!$ +!!$ (C) Copyright 2008, 2010, 2012, 2015 +!!$ +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ Pasqua D'Ambra ICAR-CNR, Naples +!!$ Daniela di Serafino Second University of Naples +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the MLD2P4 group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +subroutine mld_c_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + + 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 + integer(psb_ipk_), intent(out) :: info + character(len=*), intent(in), optional :: prefix, head + logical, optional, intent(in) :: solver + integer(psb_ipk_) :: i, j, il1, iln, lname, lev + integer(psb_ipk_) :: icontxt,iam, np + character(len=80) :: prefix_ + character(len=120) :: fname ! len should be at least 20 more than + logical :: solver_ + ! len of prefix_ + + info = 0 + + + call psb_info(ictxt,iam,np) + + if (present(solver)) then + solver_ = solver + else + solver_ = .false. + end if + + if (solver_) then + if (present(prefix)) then + prefix_ = trim(prefix(1:min(len(prefix),len(prefix_)))) + else + prefix_ = "dump_slv_c" + end if + lname = len_trim(prefix_) + 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,'_diag.mtx' + if (allocated(sv%d)) & + & call psb_geprt(fname,sv%d,head=head) + + end if + +end subroutine mld_c_diag_solver_dmp diff --git a/mlprec/impl/solver/mld_d_diag_solver_dmp.f90 b/mlprec/impl/solver/mld_d_diag_solver_dmp.f90 new file mode 100644 index 00000000..ce5e3fa0 --- /dev/null +++ b/mlprec/impl/solver/mld_d_diag_solver_dmp.f90 @@ -0,0 +1,84 @@ +!!$ +!!$ +!!$ MLD2P4 version 2.0 +!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package +!!$ based on PSBLAS (Parallel Sparse BLAS version 3.3) +!!$ +!!$ (C) Copyright 2008, 2010, 2012, 2015 +!!$ +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ Pasqua D'Ambra ICAR-CNR, Naples +!!$ Daniela di Serafino Second University of Naples +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the MLD2P4 group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +subroutine mld_d_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + + 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 + integer(psb_ipk_), intent(out) :: info + character(len=*), intent(in), optional :: prefix, head + logical, optional, intent(in) :: solver + integer(psb_ipk_) :: i, j, il1, iln, lname, lev + integer(psb_ipk_) :: icontxt,iam, np + character(len=80) :: prefix_ + character(len=120) :: fname ! len should be at least 20 more than + logical :: solver_ + ! len of prefix_ + + info = 0 + + + call psb_info(ictxt,iam,np) + + if (present(solver)) then + solver_ = solver + else + solver_ = .false. + end if + + if (solver_) then + if (present(prefix)) then + prefix_ = trim(prefix(1:min(len(prefix),len(prefix_)))) + else + prefix_ = "dump_slv_d" + end if + lname = len_trim(prefix_) + 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,'_diag.mtx' + if (allocated(sv%d)) & + & call psb_geprt(fname,sv%d,head=head) + + end if + +end subroutine mld_d_diag_solver_dmp diff --git a/mlprec/impl/solver/mld_s_diag_solver_dmp.f90 b/mlprec/impl/solver/mld_s_diag_solver_dmp.f90 new file mode 100644 index 00000000..590f424d --- /dev/null +++ b/mlprec/impl/solver/mld_s_diag_solver_dmp.f90 @@ -0,0 +1,84 @@ +!!$ +!!$ +!!$ MLD2P4 version 2.0 +!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package +!!$ based on PSBLAS (Parallel Sparse BLAS version 3.3) +!!$ +!!$ (C) Copyright 2008, 2010, 2012, 2015 +!!$ +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ Pasqua D'Ambra ICAR-CNR, Naples +!!$ Daniela di Serafino Second University of Naples +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the MLD2P4 group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +subroutine mld_s_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + + 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 + integer(psb_ipk_), intent(out) :: info + character(len=*), intent(in), optional :: prefix, head + logical, optional, intent(in) :: solver + integer(psb_ipk_) :: i, j, il1, iln, lname, lev + integer(psb_ipk_) :: icontxt,iam, np + character(len=80) :: prefix_ + character(len=120) :: fname ! len should be at least 20 more than + logical :: solver_ + ! len of prefix_ + + info = 0 + + + call psb_info(ictxt,iam,np) + + if (present(solver)) then + solver_ = solver + else + solver_ = .false. + end if + + if (solver_) then + if (present(prefix)) then + prefix_ = trim(prefix(1:min(len(prefix),len(prefix_)))) + else + prefix_ = "dump_slv_s" + end if + lname = len_trim(prefix_) + 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,'_diag.mtx' + if (allocated(sv%d)) & + & call psb_geprt(fname,sv%d,head=head) + + end if + +end subroutine mld_s_diag_solver_dmp diff --git a/mlprec/impl/solver/mld_z_diag_solver_dmp.f90 b/mlprec/impl/solver/mld_z_diag_solver_dmp.f90 new file mode 100644 index 00000000..adca0c59 --- /dev/null +++ b/mlprec/impl/solver/mld_z_diag_solver_dmp.f90 @@ -0,0 +1,84 @@ +!!$ +!!$ +!!$ MLD2P4 version 2.0 +!!$ MultiLevel Domain Decomposition Parallel Preconditioners Package +!!$ based on PSBLAS (Parallel Sparse BLAS version 3.3) +!!$ +!!$ (C) Copyright 2008, 2010, 2012, 2015 +!!$ +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ Pasqua D'Ambra ICAR-CNR, Naples +!!$ Daniela di Serafino Second University of Naples +!!$ +!!$ Redistribution and use in source and binary forms, with or without +!!$ modification, are permitted provided that the following conditions +!!$ are met: +!!$ 1. Redistributions of source code must retain the above copyright +!!$ notice, this list of conditions and the following disclaimer. +!!$ 2. Redistributions in binary form must reproduce the above copyright +!!$ notice, this list of conditions, and the following disclaimer in the +!!$ documentation and/or other materials provided with the distribution. +!!$ 3. The name of the MLD2P4 group or the names of its contributors may +!!$ not be used to endorse or promote products derived from this +!!$ software without specific written permission. +!!$ +!!$ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +!!$ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +!!$ TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +!!$ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS +!!$ BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +!!$ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +!!$ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +!!$ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +!!$ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +!!$ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +!!$ POSSIBILITY OF SUCH DAMAGE. +!!$ +!!$ +subroutine mld_z_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + + 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 + integer(psb_ipk_), intent(out) :: info + character(len=*), intent(in), optional :: prefix, head + logical, optional, intent(in) :: solver + integer(psb_ipk_) :: i, j, il1, iln, lname, lev + integer(psb_ipk_) :: icontxt,iam, np + character(len=80) :: prefix_ + character(len=120) :: fname ! len should be at least 20 more than + logical :: solver_ + ! len of prefix_ + + info = 0 + + + call psb_info(ictxt,iam,np) + + if (present(solver)) then + solver_ = solver + else + solver_ = .false. + end if + + if (solver_) then + if (present(prefix)) then + prefix_ = trim(prefix(1:min(len(prefix),len(prefix_)))) + else + prefix_ = "dump_slv_z" + end if + lname = len_trim(prefix_) + 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,'_diag.mtx' + if (allocated(sv%d)) & + & call psb_geprt(fname,sv%d,head=head) + + end if + +end subroutine mld_z_diag_solver_dmp diff --git a/mlprec/mld_c_diag_solver.f90 b/mlprec/mld_c_diag_solver.f90 index 67b2ab54..87018ee9 100644 --- a/mlprec/mld_c_diag_solver.f90 +++ b/mlprec/mld_c_diag_solver.f90 @@ -51,6 +51,7 @@ module mld_c_diag_solver type(psb_c_vect_type), allocatable :: dv complex(psb_spk_), allocatable :: d(:) contains + procedure, pass(sv) :: dump => mld_c_diag_solver_dmp procedure, pass(sv) :: build => mld_c_diag_solver_bld procedure, pass(sv) :: cnv => mld_c_diag_solver_cnv procedure, pass(sv) :: clone => mld_c_diag_solver_clone @@ -135,7 +136,22 @@ module mld_c_diag_solver class(psb_i_base_vect_type), intent(in), optional :: imold end subroutine mld_c_diag_solver_cnv end interface - + + interface + subroutine mld_c_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + 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 + integer(psb_ipk_), intent(in) :: level + integer(psb_ipk_), intent(out) :: info + character(len=*), intent(in), optional :: prefix, head + logical, optional, intent(in) :: solver + end subroutine mld_c_diag_solver_dmp + end interface + interface subroutine mld_c_diag_solver_clone(sv,svout,info) import :: psb_desc_type, psb_cspmat_type, psb_c_base_sparse_mat, & diff --git a/mlprec/mld_c_jac_smoother.f90 b/mlprec/mld_c_jac_smoother.f90 index cdd9aa60..9611722d 100644 --- a/mlprec/mld_c_jac_smoother.f90 +++ b/mlprec/mld_c_jac_smoother.f90 @@ -54,6 +54,7 @@ module mld_c_jac_smoother type(psb_cspmat_type) :: nd integer(psb_ipk_) :: nnz_nd_tot contains + procedure, pass(sm) :: dump => mld_c_jac_smoother_dmp procedure, pass(sm) :: build => mld_c_jac_smoother_bld procedure, pass(sm) :: cnv => mld_c_jac_smoother_cnv procedure, pass(sm) :: clone => mld_c_jac_smoother_clone @@ -142,6 +143,21 @@ module mld_c_jac_smoother end subroutine mld_c_jac_smoother_cnv end interface + interface + subroutine mld_c_jac_smoother_dmp(sm,ictxt,level,info,prefix,head,smoother,solver) + import :: psb_cspmat_type, psb_c_vect_type, psb_c_base_vect_type, & + & psb_spk_, mld_c_jac_smoother_type, psb_long_int_k_, psb_desc_type, & + & psb_ipk_ + implicit none + class(mld_c_jac_smoother_type), intent(in) :: sm + integer(psb_ipk_), intent(in) :: ictxt + integer(psb_ipk_), intent(in) :: level + integer(psb_ipk_), intent(out) :: info + character(len=*), intent(in), optional :: prefix, head + logical, optional, intent(in) :: smoother, solver + end subroutine mld_c_jac_smoother_dmp + end interface + interface subroutine mld_c_jac_smoother_clone(sm,smout,info) import :: mld_c_jac_smoother_type, psb_spk_, & diff --git a/mlprec/mld_d_diag_solver.f90 b/mlprec/mld_d_diag_solver.f90 index 9c3e4525..f1b18432 100644 --- a/mlprec/mld_d_diag_solver.f90 +++ b/mlprec/mld_d_diag_solver.f90 @@ -51,6 +51,7 @@ module mld_d_diag_solver type(psb_d_vect_type), allocatable :: dv real(psb_dpk_), allocatable :: d(:) contains + procedure, pass(sv) :: dump => mld_d_diag_solver_dmp procedure, pass(sv) :: build => mld_d_diag_solver_bld procedure, pass(sv) :: cnv => mld_d_diag_solver_cnv procedure, pass(sv) :: clone => mld_d_diag_solver_clone @@ -135,7 +136,22 @@ module mld_d_diag_solver class(psb_i_base_vect_type), intent(in), optional :: imold end subroutine mld_d_diag_solver_cnv end interface - + + interface + subroutine mld_d_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + 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 + integer(psb_ipk_), intent(in) :: level + integer(psb_ipk_), intent(out) :: info + character(len=*), intent(in), optional :: prefix, head + logical, optional, intent(in) :: solver + end subroutine mld_d_diag_solver_dmp + end interface + interface subroutine mld_d_diag_solver_clone(sv,svout,info) import :: psb_desc_type, psb_dspmat_type, psb_d_base_sparse_mat, & diff --git a/mlprec/mld_d_jac_smoother.f90 b/mlprec/mld_d_jac_smoother.f90 index 2f7cf54d..54a8bd11 100644 --- a/mlprec/mld_d_jac_smoother.f90 +++ b/mlprec/mld_d_jac_smoother.f90 @@ -54,6 +54,7 @@ module mld_d_jac_smoother type(psb_dspmat_type) :: nd integer(psb_ipk_) :: nnz_nd_tot contains + procedure, pass(sm) :: dump => mld_d_jac_smoother_dmp procedure, pass(sm) :: build => mld_d_jac_smoother_bld procedure, pass(sm) :: cnv => mld_d_jac_smoother_cnv procedure, pass(sm) :: clone => mld_d_jac_smoother_clone @@ -142,6 +143,21 @@ module mld_d_jac_smoother end subroutine mld_d_jac_smoother_cnv end interface + interface + subroutine mld_d_jac_smoother_dmp(sm,ictxt,level,info,prefix,head,smoother,solver) + import :: psb_dspmat_type, psb_d_vect_type, psb_d_base_vect_type, & + & psb_dpk_, mld_d_jac_smoother_type, psb_long_int_k_, psb_desc_type, & + & psb_ipk_ + implicit none + class(mld_d_jac_smoother_type), intent(in) :: sm + integer(psb_ipk_), intent(in) :: ictxt + integer(psb_ipk_), intent(in) :: level + integer(psb_ipk_), intent(out) :: info + character(len=*), intent(in), optional :: prefix, head + logical, optional, intent(in) :: smoother, solver + end subroutine mld_d_jac_smoother_dmp + end interface + interface subroutine mld_d_jac_smoother_clone(sm,smout,info) import :: mld_d_jac_smoother_type, psb_dpk_, & diff --git a/mlprec/mld_s_diag_solver.f90 b/mlprec/mld_s_diag_solver.f90 index 8137067d..e7450211 100644 --- a/mlprec/mld_s_diag_solver.f90 +++ b/mlprec/mld_s_diag_solver.f90 @@ -51,6 +51,7 @@ module mld_s_diag_solver type(psb_s_vect_type), allocatable :: dv real(psb_spk_), allocatable :: d(:) contains + procedure, pass(sv) :: dump => mld_s_diag_solver_dmp procedure, pass(sv) :: build => mld_s_diag_solver_bld procedure, pass(sv) :: cnv => mld_s_diag_solver_cnv procedure, pass(sv) :: clone => mld_s_diag_solver_clone @@ -135,7 +136,22 @@ module mld_s_diag_solver class(psb_i_base_vect_type), intent(in), optional :: imold end subroutine mld_s_diag_solver_cnv end interface - + + interface + subroutine mld_s_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + 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 + integer(psb_ipk_), intent(in) :: level + integer(psb_ipk_), intent(out) :: info + character(len=*), intent(in), optional :: prefix, head + logical, optional, intent(in) :: solver + end subroutine mld_s_diag_solver_dmp + end interface + interface subroutine mld_s_diag_solver_clone(sv,svout,info) import :: psb_desc_type, psb_sspmat_type, psb_s_base_sparse_mat, & diff --git a/mlprec/mld_s_jac_smoother.f90 b/mlprec/mld_s_jac_smoother.f90 index 96b1923b..6648e062 100644 --- a/mlprec/mld_s_jac_smoother.f90 +++ b/mlprec/mld_s_jac_smoother.f90 @@ -54,6 +54,7 @@ module mld_s_jac_smoother type(psb_sspmat_type) :: nd integer(psb_ipk_) :: nnz_nd_tot contains + procedure, pass(sm) :: dump => mld_s_jac_smoother_dmp procedure, pass(sm) :: build => mld_s_jac_smoother_bld procedure, pass(sm) :: cnv => mld_s_jac_smoother_cnv procedure, pass(sm) :: clone => mld_s_jac_smoother_clone @@ -142,6 +143,21 @@ module mld_s_jac_smoother end subroutine mld_s_jac_smoother_cnv end interface + interface + subroutine mld_s_jac_smoother_dmp(sm,ictxt,level,info,prefix,head,smoother,solver) + import :: psb_sspmat_type, psb_s_vect_type, psb_s_base_vect_type, & + & psb_spk_, mld_s_jac_smoother_type, psb_long_int_k_, psb_desc_type, & + & psb_ipk_ + implicit none + class(mld_s_jac_smoother_type), intent(in) :: sm + integer(psb_ipk_), intent(in) :: ictxt + integer(psb_ipk_), intent(in) :: level + integer(psb_ipk_), intent(out) :: info + character(len=*), intent(in), optional :: prefix, head + logical, optional, intent(in) :: smoother, solver + end subroutine mld_s_jac_smoother_dmp + end interface + interface subroutine mld_s_jac_smoother_clone(sm,smout,info) import :: mld_s_jac_smoother_type, psb_spk_, & diff --git a/mlprec/mld_z_diag_solver.f90 b/mlprec/mld_z_diag_solver.f90 index d51f4bf6..b16d65cd 100644 --- a/mlprec/mld_z_diag_solver.f90 +++ b/mlprec/mld_z_diag_solver.f90 @@ -51,6 +51,7 @@ module mld_z_diag_solver type(psb_z_vect_type), allocatable :: dv complex(psb_dpk_), allocatable :: d(:) contains + procedure, pass(sv) :: dump => mld_z_diag_solver_dmp procedure, pass(sv) :: build => mld_z_diag_solver_bld procedure, pass(sv) :: cnv => mld_z_diag_solver_cnv procedure, pass(sv) :: clone => mld_z_diag_solver_clone @@ -135,7 +136,22 @@ module mld_z_diag_solver class(psb_i_base_vect_type), intent(in), optional :: imold end subroutine mld_z_diag_solver_cnv end interface - + + interface + subroutine mld_z_diag_solver_dmp(sv,ictxt,level,info,prefix,head,solver) + 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 + integer(psb_ipk_), intent(in) :: level + integer(psb_ipk_), intent(out) :: info + character(len=*), intent(in), optional :: prefix, head + logical, optional, intent(in) :: solver + end subroutine mld_z_diag_solver_dmp + end interface + interface subroutine mld_z_diag_solver_clone(sv,svout,info) import :: psb_desc_type, psb_zspmat_type, psb_z_base_sparse_mat, & diff --git a/mlprec/mld_z_jac_smoother.f90 b/mlprec/mld_z_jac_smoother.f90 index a9772d08..88664b2f 100644 --- a/mlprec/mld_z_jac_smoother.f90 +++ b/mlprec/mld_z_jac_smoother.f90 @@ -54,6 +54,7 @@ module mld_z_jac_smoother type(psb_zspmat_type) :: nd integer(psb_ipk_) :: nnz_nd_tot contains + procedure, pass(sm) :: dump => mld_z_jac_smoother_dmp procedure, pass(sm) :: build => mld_z_jac_smoother_bld procedure, pass(sm) :: cnv => mld_z_jac_smoother_cnv procedure, pass(sm) :: clone => mld_z_jac_smoother_clone @@ -142,6 +143,21 @@ module mld_z_jac_smoother end subroutine mld_z_jac_smoother_cnv end interface + interface + subroutine mld_z_jac_smoother_dmp(sm,ictxt,level,info,prefix,head,smoother,solver) + import :: psb_zspmat_type, psb_z_vect_type, psb_z_base_vect_type, & + & psb_dpk_, mld_z_jac_smoother_type, psb_long_int_k_, psb_desc_type, & + & psb_ipk_ + implicit none + class(mld_z_jac_smoother_type), intent(in) :: sm + integer(psb_ipk_), intent(in) :: ictxt + integer(psb_ipk_), intent(in) :: level + integer(psb_ipk_), intent(out) :: info + character(len=*), intent(in), optional :: prefix, head + logical, optional, intent(in) :: smoother, solver + end subroutine mld_z_jac_smoother_dmp + end interface + interface subroutine mld_z_jac_smoother_clone(sm,smout,info) import :: mld_z_jac_smoother_type, psb_dpk_, &