From c9e72d0e73aef17ada9a2fa4e8d9d0816810f3c5 Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Wed, 5 Oct 2011 10:27:31 +0000 Subject: [PATCH] psblas3: Makefile psb_c_prec_mod.f90 psb_d_prec_mod.f90 psb_prec_mod.f90 psb_s_prec_mod.f90 psb_z_prec_mod.f90 Split psb_prec for the sake of XLF. --- prec/Makefile | 9 +- prec/psb_c_prec_mod.f90 | 96 +++++++++++++++++++ prec/psb_d_prec_mod.f90 | 96 +++++++++++++++++++ prec/psb_prec_mod.f90 | 207 +--------------------------------------- prec/psb_s_prec_mod.f90 | 96 +++++++++++++++++++ prec/psb_z_prec_mod.f90 | 96 +++++++++++++++++++ 6 files changed, 395 insertions(+), 205 deletions(-) create mode 100644 prec/psb_c_prec_mod.f90 create mode 100644 prec/psb_d_prec_mod.f90 create mode 100644 prec/psb_s_prec_mod.f90 create mode 100644 prec/psb_z_prec_mod.f90 diff --git a/prec/Makefile b/prec/Makefile index 92142f70..ebac4474 100644 --- a/prec/Makefile +++ b/prec/Makefile @@ -5,7 +5,8 @@ HERE=. MODOBJS=psb_prec_const_mod.o\ psb_s_prec_type.o psb_d_prec_type.o psb_c_prec_type.o psb_z_prec_type.o \ psb_s_base_prec_mod.o psb_d_base_prec_mod.o psb_c_base_prec_mod.o psb_z_base_prec_mod.o \ - psb_prec_type.o psb_prec_mod.o\ + psb_prec_type.o \ + psb_prec_mod.o psb_s_prec_mod.o psb_d_prec_mod.o psb_c_prec_mod.o psb_z_prec_mod.o \ psb_d_diagprec.o psb_d_nullprec.o psb_d_bjacprec.o \ psb_s_diagprec.o psb_s_nullprec.o psb_s_bjacprec.o \ psb_c_diagprec.o psb_c_nullprec.o psb_c_bjacprec.o \ @@ -50,8 +51,12 @@ psb_s_prec_type.o: psb_s_base_prec_mod.o psb_d_prec_type.o: psb_d_base_prec_mod.o psb_c_prec_type.o: psb_c_base_prec_mod.o psb_z_prec_type.o: psb_z_base_prec_mod.o +psb_s_prec_mod.o: psb_s_prec_type.o +psb_d_prec_mod.o: psb_d_prec_type.o +psb_c_prec_mod.o: psb_c_prec_type.o +psb_z_prec_mod.o: psb_z_prec_type.o psb_prec_type.o: psb_s_prec_type.o psb_d_prec_type.o psb_c_prec_type.o psb_z_prec_type.o -psb_prec_mod.o: psb_prec_type.o +psb_prec_mod.o: psb_s_prec_mod.o psb_d_prec_mod.o psb_c_prec_mod.o psb_z_prec_mod.o psb_s_bjacprec.o psb_s_diagprec.o psb_s_nullprec.o: psb_prec_mod.o psb_s_base_prec_mod.o psb_d_bjacprec.o psb_d_diagprec.o psb_d_nullprec.o: psb_prec_mod.o psb_d_base_prec_mod.o psb_c_bjacprec.o psb_c_diagprec.o psb_c_nullprec.o: psb_prec_mod.o psb_c_base_prec_mod.o diff --git a/prec/psb_c_prec_mod.f90 b/prec/psb_c_prec_mod.f90 new file mode 100644 index 00000000..511b1203 --- /dev/null +++ b/prec/psb_c_prec_mod.f90 @@ -0,0 +1,96 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ 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 PSBLAS 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 PSBLAS 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. +!!$ +!!$ + +module psb_c_prec_mod + use psb_c_prec_type + + interface psb_precbld + subroutine psb_cprecbld(a,desc_a,prec,info,upd,mold,afmt) + use psb_base_mod, only : psb_desc_type, psb_cspmat_type,& + & psb_c_base_sparse_mat, psb_spk_ + use psb_prec_type, only : psb_cprec_type + implicit none + type(psb_cspmat_type), intent(in), target :: a + type(psb_desc_type), intent(in), target :: desc_a + type(psb_cprec_type), intent(inout) :: prec + integer, intent(out) :: info + character, intent(in),optional :: upd + character(len=*), intent(in), optional :: afmt + class(psb_c_base_sparse_mat), intent(in), optional :: mold + end subroutine psb_cprecbld + end interface + + interface psb_precinit + subroutine psb_cprecinit(prec,ptype,info) + use psb_base_mod, only : psb_desc_type, psb_cspmat_type, psb_spk_ + use psb_prec_type, only : psb_cprec_type + implicit none + type(psb_cprec_type), intent(inout) :: prec + character(len=*), intent(in) :: ptype + integer, intent(out) :: info + end subroutine psb_cprecinit + end interface + + interface psb_precset + subroutine psb_cprecseti(prec,what,val,info) + use psb_base_mod, only : psb_desc_type, psb_cspmat_type, psb_spk_ + use psb_prec_type, only : psb_cprec_type + implicit none + type(psb_cprec_type), intent(inout) :: prec + integer :: what, val + integer, intent(out) :: info + end subroutine psb_cprecseti + subroutine psb_cprecsets(prec,what,val,info) + use psb_base_mod, only : psb_desc_type, psb_cspmat_type, psb_spk_ + use psb_prec_type, only : psb_cprec_type + implicit none + type(psb_cprec_type), intent(inout) :: prec + integer :: what + real(psb_spk_) :: val + integer, intent(out) :: info + end subroutine psb_cprecsets + end interface + + interface psb_ilu_fct + subroutine psb_cilu_fct(a,l,u,d,info,blck) + use psb_base_mod, only : psb_desc_type, psb_cspmat_type, & + & psb_c_csr_sparse_mat, psb_spk_ + integer, intent(out) :: info + type(psb_cspmat_type),intent(in) :: a + type(psb_c_csr_sparse_mat),intent(inout) :: l,u + type(psb_cspmat_type),intent(in), optional, target :: blck + complex(psb_spk_), intent(inout) :: d(:) + end subroutine psb_cilu_fct + end interface + + +end module psb_c_prec_mod diff --git a/prec/psb_d_prec_mod.f90 b/prec/psb_d_prec_mod.f90 new file mode 100644 index 00000000..5d57a796 --- /dev/null +++ b/prec/psb_d_prec_mod.f90 @@ -0,0 +1,96 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ 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 PSBLAS 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 PSBLAS 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. +!!$ +!!$ + +module psb_d_prec_mod + use psb_d_prec_type + + interface psb_precbld + subroutine psb_dprecbld(a,desc_a,prec,info,upd,mold,afmt) + use psb_base_mod, only : psb_desc_type, psb_dspmat_type,& + & psb_d_base_sparse_mat, psb_dpk_ + use psb_prec_type, only : psb_dprec_type + implicit none + type(psb_dspmat_type), intent(in), target :: a + type(psb_desc_type), intent(in), target :: desc_a + type(psb_dprec_type), intent(inout) :: prec + integer, intent(out) :: info + character, intent(in),optional :: upd + character(len=*), intent(in), optional :: afmt + class(psb_d_base_sparse_mat), intent(in), optional :: mold + end subroutine psb_dprecbld + end interface + + interface psb_precinit + subroutine psb_dprecinit(prec,ptype,info) + use psb_base_mod, only : psb_desc_type, psb_dpk_ + use psb_prec_type, only : psb_dprec_type + implicit none + type(psb_dprec_type), intent(inout) :: prec + character(len=*), intent(in) :: ptype + integer, intent(out) :: info + end subroutine psb_dprecinit + end interface + + interface psb_precset + subroutine psb_dprecseti(prec,what,val,info) + use psb_base_mod, only : psb_desc_type, psb_dpk_ + use psb_prec_type, only : psb_dprec_type + implicit none + type(psb_dprec_type), intent(inout) :: prec + integer :: what, val + integer, intent(out) :: info + end subroutine psb_dprecseti + subroutine psb_dprecsetd(prec,what,val,info) + use psb_base_mod, only : psb_desc_type, psb_dpk_ + use psb_prec_type, only : psb_dprec_type + implicit none + type(psb_dprec_type), intent(inout) :: prec + integer :: what + real(psb_dpk_) :: val + integer, intent(out) :: info + end subroutine psb_dprecsetd + end interface + + interface psb_ilu_fct + subroutine psb_dilu_fct(a,l,u,d,info,blck) + use psb_base_mod, only : psb_desc_type, psb_dspmat_type,& + & psb_d_csr_sparse_mat, psb_dpk_ + integer, intent(out) :: info + type(psb_dspmat_type),intent(in) :: a + type(psb_d_csr_sparse_mat),intent(inout) :: l,u + type(psb_dspmat_type),intent(in), optional, target :: blck + real(psb_dpk_), intent(inout) :: d(:) + end subroutine psb_dilu_fct + end interface + + +end module psb_d_prec_mod diff --git a/prec/psb_prec_mod.f90 b/prec/psb_prec_mod.f90 index 3541555d..667c8f2e 100644 --- a/prec/psb_prec_mod.f90 +++ b/prec/psb_prec_mod.f90 @@ -31,207 +31,8 @@ !!$ module psb_prec_mod - use psb_prec_type - - interface psb_precbld - subroutine psb_sprecbld(a,desc_a,prec,info,upd,mold,afmt) - use psb_base_mod, only : psb_desc_type, psb_sspmat_type,& - & psb_s_base_sparse_mat, psb_spk_ - use psb_prec_type, only : psb_sprec_type - implicit none - type(psb_sspmat_type), intent(in), target :: a - type(psb_desc_type), intent(in), target :: desc_a - type(psb_sprec_type), intent(inout) :: prec - integer, intent(out) :: info - character, intent(in),optional :: upd - character(len=*), intent(in), optional :: afmt - class(psb_s_base_sparse_mat), intent(in), optional :: mold - end subroutine psb_sprecbld - subroutine psb_dprecbld(a,desc_a,prec,info,upd,mold,afmt) - use psb_base_mod, only : psb_desc_type, psb_dspmat_type,& - & psb_d_base_sparse_mat, psb_dpk_ - use psb_prec_type, only : psb_dprec_type - implicit none - type(psb_dspmat_type), intent(in), target :: a - type(psb_desc_type), intent(in), target :: desc_a - type(psb_dprec_type), intent(inout) :: prec - integer, intent(out) :: info - character, intent(in),optional :: upd - character(len=*), intent(in), optional :: afmt - class(psb_d_base_sparse_mat), intent(in), optional :: mold - end subroutine psb_dprecbld - subroutine psb_cprecbld(a,desc_a,prec,info,upd,mold,afmt) - use psb_base_mod, only : psb_desc_type, psb_cspmat_type,& - & psb_c_base_sparse_mat, psb_spk_ - use psb_prec_type, only : psb_cprec_type - implicit none - type(psb_cspmat_type), intent(in), target :: a - type(psb_desc_type), intent(in), target :: desc_a - type(psb_cprec_type), intent(inout) :: prec - integer, intent(out) :: info - character, intent(in),optional :: upd - character(len=*), intent(in), optional :: afmt - class(psb_c_base_sparse_mat), intent(in), optional :: mold - end subroutine psb_cprecbld - subroutine psb_zprecbld(a,desc_a,prec,info,upd,mold,afmt) - use psb_base_mod, only : psb_desc_type, psb_zspmat_type,& - & psb_z_base_sparse_mat, psb_dpk_ - use psb_prec_type, only : psb_zprec_type - implicit none - type(psb_zspmat_type), intent(in), target :: a - type(psb_desc_type), intent(in), target :: desc_a - type(psb_zprec_type), intent(inout) :: prec - integer, intent(out) :: info - character, intent(in),optional :: upd - character(len=*), intent(in), optional :: afmt - class(psb_z_base_sparse_mat), intent(in), optional :: mold - end subroutine psb_zprecbld - end interface - - interface psb_precinit - subroutine psb_sprecinit(prec,ptype,info) - use psb_base_mod, only : psb_desc_type, psb_sspmat_type, psb_spk_ - use psb_prec_type, only : psb_sprec_type - implicit none - type(psb_sprec_type), intent(inout) :: prec - character(len=*), intent(in) :: ptype - integer, intent(out) :: info - end subroutine psb_sprecinit - subroutine psb_dprecinit(prec,ptype,info) - use psb_base_mod, only : psb_desc_type, psb_dpk_ - use psb_prec_type, only : psb_dprec_type - implicit none - type(psb_dprec_type), intent(inout) :: prec - character(len=*), intent(in) :: ptype - integer, intent(out) :: info - end subroutine psb_dprecinit - subroutine psb_cprecinit(prec,ptype,info) - use psb_base_mod, only : psb_desc_type, psb_cspmat_type, psb_spk_ - use psb_prec_type, only : psb_cprec_type - implicit none - type(psb_cprec_type), intent(inout) :: prec - character(len=*), intent(in) :: ptype - integer, intent(out) :: info - end subroutine psb_cprecinit - subroutine psb_zprecinit(prec,ptype,info) - use psb_base_mod, only : psb_desc_type, psb_zspmat_type, psb_dpk_ - use psb_prec_type, only : psb_zprec_type - implicit none - type(psb_zprec_type), intent(inout) :: prec - character(len=*), intent(in) :: ptype - integer, intent(out) :: info - end subroutine psb_zprecinit - end interface - - interface psb_precset - subroutine psb_sprecseti(prec,what,val,info) - use psb_base_mod, only : psb_desc_type, psb_sspmat_type, psb_spk_ - use psb_prec_type, only : psb_sprec_type - implicit none - type(psb_sprec_type), intent(inout) :: prec - integer :: what, val - integer, intent(out) :: info - end subroutine psb_sprecseti - subroutine psb_sprecsets(prec,what,val,info) - use psb_base_mod, only : psb_desc_type, psb_sspmat_type, psb_spk_ - use psb_prec_type, only : psb_sprec_type - implicit none - type(psb_sprec_type), intent(inout) :: prec - integer :: what - real(psb_spk_) :: val - integer, intent(out) :: info - end subroutine psb_sprecsets - subroutine psb_dprecseti(prec,what,val,info) - use psb_base_mod, only : psb_desc_type, psb_dpk_ - use psb_prec_type, only : psb_dprec_type - implicit none - type(psb_dprec_type), intent(inout) :: prec - integer :: what, val - integer, intent(out) :: info - end subroutine psb_dprecseti - subroutine psb_dprecsetd(prec,what,val,info) - use psb_base_mod, only : psb_desc_type, psb_dpk_ - use psb_prec_type, only : psb_dprec_type - implicit none - type(psb_dprec_type), intent(inout) :: prec - integer :: what - real(psb_dpk_) :: val - integer, intent(out) :: info - end subroutine psb_dprecsetd - subroutine psb_cprecseti(prec,what,val,info) - use psb_base_mod, only : psb_desc_type, psb_cspmat_type, psb_spk_ - use psb_prec_type, only : psb_cprec_type - implicit none - type(psb_cprec_type), intent(inout) :: prec - integer :: what, val - integer, intent(out) :: info - end subroutine psb_cprecseti - subroutine psb_cprecsets(prec,what,val,info) - use psb_base_mod, only : psb_desc_type, psb_cspmat_type, psb_spk_ - use psb_prec_type, only : psb_cprec_type - implicit none - type(psb_cprec_type), intent(inout) :: prec - integer :: what - real(psb_spk_) :: val - integer, intent(out) :: info - end subroutine psb_cprecsets - subroutine psb_zprecseti(prec,what,val,info) - use psb_base_mod, only : psb_desc_type, psb_zspmat_type, psb_dpk_ - use psb_prec_type, only : psb_zprec_type - implicit none - type(psb_zprec_type), intent(inout) :: prec - integer :: what, val - integer, intent(out) :: info - end subroutine psb_zprecseti - subroutine psb_zprecsetd(prec,what,val,info) - use psb_base_mod, only : psb_desc_type, psb_zspmat_type, psb_dpk_ - use psb_prec_type, only : psb_zprec_type - implicit none - type(psb_zprec_type), intent(inout) :: prec - integer :: what - real(psb_dpk_) :: val - integer, intent(out) :: info - end subroutine psb_zprecsetd - end interface - - interface psb_ilu_fct - subroutine psb_silu_fct(a,l,u,d,info,blck) - use psb_base_mod, only : psb_desc_type, psb_sspmat_type,& - & psb_s_csr_sparse_mat, psb_spk_ - integer, intent(out) :: info - type(psb_sspmat_type),intent(in) :: a - type(psb_s_csr_sparse_mat),intent(inout) :: l,u - type(psb_sspmat_type),intent(in), optional, target :: blck - real(psb_spk_), intent(inout) :: d(:) - end subroutine psb_silu_fct - subroutine psb_dilu_fct(a,l,u,d,info,blck) - use psb_base_mod, only : psb_desc_type, psb_dspmat_type,& - & psb_d_csr_sparse_mat, psb_dpk_ - integer, intent(out) :: info - type(psb_dspmat_type),intent(in) :: a - type(psb_d_csr_sparse_mat),intent(inout) :: l,u - type(psb_dspmat_type),intent(in), optional, target :: blck - real(psb_dpk_), intent(inout) :: d(:) - end subroutine psb_dilu_fct - subroutine psb_cilu_fct(a,l,u,d,info,blck) - use psb_base_mod, only : psb_desc_type, psb_cspmat_type, & - & psb_c_csr_sparse_mat, psb_spk_ - integer, intent(out) :: info - type(psb_cspmat_type),intent(in) :: a - type(psb_c_csr_sparse_mat),intent(inout) :: l,u - type(psb_cspmat_type),intent(in), optional, target :: blck - complex(psb_spk_), intent(inout) :: d(:) - end subroutine psb_cilu_fct - subroutine psb_zilu_fct(a,l,u,d,info,blck) - use psb_base_mod, only : psb_desc_type, psb_zspmat_type, & - & psb_z_csr_sparse_mat, psb_dpk_ - integer, intent(out) :: info - type(psb_zspmat_type),intent(in) :: a - type(psb_z_csr_sparse_mat),intent(inout) :: l,u - type(psb_zspmat_type),intent(in), optional, target :: blck - complex(psb_dpk_), intent(inout) :: d(:) - end subroutine psb_zilu_fct - end interface - - + use psb_s_prec_mod + use psb_d_prec_mod + use psb_c_prec_mod + use psb_z_prec_mod end module psb_prec_mod diff --git a/prec/psb_s_prec_mod.f90 b/prec/psb_s_prec_mod.f90 new file mode 100644 index 00000000..e47696a8 --- /dev/null +++ b/prec/psb_s_prec_mod.f90 @@ -0,0 +1,96 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ 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 PSBLAS 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 PSBLAS 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. +!!$ +!!$ + +module psb_s_prec_mod + use psb_s_prec_type + + interface psb_precbld + subroutine psb_sprecbld(a,desc_a,prec,info,upd,mold,afmt) + use psb_base_mod, only : psb_desc_type, psb_sspmat_type,& + & psb_s_base_sparse_mat, psb_spk_ + use psb_prec_type, only : psb_sprec_type + implicit none + type(psb_sspmat_type), intent(in), target :: a + type(psb_desc_type), intent(in), target :: desc_a + type(psb_sprec_type), intent(inout) :: prec + integer, intent(out) :: info + character, intent(in),optional :: upd + character(len=*), intent(in), optional :: afmt + class(psb_s_base_sparse_mat), intent(in), optional :: mold + end subroutine psb_sprecbld + end interface + + interface psb_precinit + subroutine psb_sprecinit(prec,ptype,info) + use psb_base_mod, only : psb_desc_type, psb_sspmat_type, psb_spk_ + use psb_prec_type, only : psb_sprec_type + implicit none + type(psb_sprec_type), intent(inout) :: prec + character(len=*), intent(in) :: ptype + integer, intent(out) :: info + end subroutine psb_sprecinit + end interface + + interface psb_precset + subroutine psb_sprecseti(prec,what,val,info) + use psb_base_mod, only : psb_desc_type, psb_sspmat_type, psb_spk_ + use psb_prec_type, only : psb_sprec_type + implicit none + type(psb_sprec_type), intent(inout) :: prec + integer :: what, val + integer, intent(out) :: info + end subroutine psb_sprecseti + subroutine psb_sprecsets(prec,what,val,info) + use psb_base_mod, only : psb_desc_type, psb_sspmat_type, psb_spk_ + use psb_prec_type, only : psb_sprec_type + implicit none + type(psb_sprec_type), intent(inout) :: prec + integer :: what + real(psb_spk_) :: val + integer, intent(out) :: info + end subroutine psb_sprecsets + end interface + + interface psb_ilu_fct + subroutine psb_silu_fct(a,l,u,d,info,blck) + use psb_base_mod, only : psb_desc_type, psb_sspmat_type,& + & psb_s_csr_sparse_mat, psb_spk_ + integer, intent(out) :: info + type(psb_sspmat_type),intent(in) :: a + type(psb_s_csr_sparse_mat),intent(inout) :: l,u + type(psb_sspmat_type),intent(in), optional, target :: blck + real(psb_spk_), intent(inout) :: d(:) + end subroutine psb_silu_fct + end interface + + +end module psb_s_prec_mod diff --git a/prec/psb_z_prec_mod.f90 b/prec/psb_z_prec_mod.f90 new file mode 100644 index 00000000..d1dcf2d0 --- /dev/null +++ b/prec/psb_z_prec_mod.f90 @@ -0,0 +1,96 @@ +!!$ +!!$ Parallel Sparse BLAS version 3.0 +!!$ (C) Copyright 2006, 2007, 2008, 2009, 2010 +!!$ Salvatore Filippone University of Rome Tor Vergata +!!$ Alfredo Buttari CNRS-IRIT, Toulouse +!!$ +!!$ 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 PSBLAS 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 PSBLAS 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. +!!$ +!!$ + +module psb_z_prec_mod + use psb_z_prec_type + + interface psb_precbld + subroutine psb_zprecbld(a,desc_a,prec,info,upd,mold,afmt) + use psb_base_mod, only : psb_desc_type, psb_zspmat_type,& + & psb_z_base_sparse_mat, psb_dpk_ + use psb_prec_type, only : psb_zprec_type + implicit none + type(psb_zspmat_type), intent(in), target :: a + type(psb_desc_type), intent(in), target :: desc_a + type(psb_zprec_type), intent(inout) :: prec + integer, intent(out) :: info + character, intent(in),optional :: upd + character(len=*), intent(in), optional :: afmt + class(psb_z_base_sparse_mat), intent(in), optional :: mold + end subroutine psb_zprecbld + end interface + + interface psb_precinit + subroutine psb_zprecinit(prec,ptype,info) + use psb_base_mod, only : psb_desc_type, psb_zspmat_type, psb_dpk_ + use psb_prec_type, only : psb_zprec_type + implicit none + type(psb_zprec_type), intent(inout) :: prec + character(len=*), intent(in) :: ptype + integer, intent(out) :: info + end subroutine psb_zprecinit + end interface + + interface psb_precset + subroutine psb_zprecseti(prec,what,val,info) + use psb_base_mod, only : psb_desc_type, psb_zspmat_type, psb_dpk_ + use psb_prec_type, only : psb_zprec_type + implicit none + type(psb_zprec_type), intent(inout) :: prec + integer :: what, val + integer, intent(out) :: info + end subroutine psb_zprecseti + subroutine psb_zprecsetd(prec,what,val,info) + use psb_base_mod, only : psb_desc_type, psb_zspmat_type, psb_dpk_ + use psb_prec_type, only : psb_zprec_type + implicit none + type(psb_zprec_type), intent(inout) :: prec + integer :: what + real(psb_dpk_) :: val + integer, intent(out) :: info + end subroutine psb_zprecsetd + end interface + + interface psb_ilu_fct + subroutine psb_zilu_fct(a,l,u,d,info,blck) + use psb_base_mod, only : psb_desc_type, psb_zspmat_type, & + & psb_z_csr_sparse_mat, psb_dpk_ + integer, intent(out) :: info + type(psb_zspmat_type),intent(in) :: a + type(psb_z_csr_sparse_mat),intent(inout) :: l,u + type(psb_zspmat_type),intent(in), optional, target :: blck + complex(psb_dpk_), intent(inout) :: d(:) + end subroutine psb_zilu_fct + end interface + + +end module psb_z_prec_mod