psblas3:
prec/Makefile prec/psb_c_base_prec_mod.f03 prec/psb_c_bjacprec.f03 prec/psb_c_diagprec.f03 prec/psb_c_nullprec.f03 prec/psb_c_prec_type.f03 prec/psb_d_base_prec_mod.f03 prec/psb_d_bjacprec.f03 prec/psb_d_diagprec.f03 prec/psb_d_nullprec.f03 prec/psb_d_prec_type.f03 prec/psb_s_base_prec_mod.f03 prec/psb_s_bjacprec.f03 prec/psb_s_diagprec.f03 prec/psb_s_nullprec.f03 prec/psb_s_prec_type.f03 prec/psb_z_base_prec_mod.f03 prec/psb_z_bjacprec.f03 prec/psb_z_diagprec.f03 prec/psb_z_nullprec.f03 prec/psb_z_prec_type.f03 Restructured PREC inheritance chain.psblas3-type-indexed
parent
070b15cdb9
commit
5ceb49d165
@ -0,0 +1,351 @@
|
||||
!!$
|
||||
!!$ Parallel Sparse BLAS version 2.2
|
||||
!!$ (C) Copyright 2006/2007/2008
|
||||
!!$ Salvatore Filippone University of Rome Tor Vergata
|
||||
!!$ Alfredo Buttari University of Rome Tor Vergata
|
||||
!!$
|
||||
!!$ 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 to define PREC_DATA, !!
|
||||
!! structure for preconditioning. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
module psb_c_base_prec_mod
|
||||
|
||||
! Reduces size of .mod file.
|
||||
use psb_sparse_mod, only : psb_dpk_, psb_spk_, psb_long_int_k_,&
|
||||
& psb_desc_type, psb_sizeof, psb_free, psb_cdfree,&
|
||||
& psb_erractionsave, psb_erractionrestore, psb_error, psb_get_errstatus,&
|
||||
& psb_c_sparse_mat
|
||||
|
||||
use psb_prec_const_mod
|
||||
|
||||
type psb_c_base_prec_type
|
||||
contains
|
||||
procedure, pass(prec) :: apply => psb_c_base_apply
|
||||
procedure, pass(prec) :: precbld => psb_c_base_precbld
|
||||
procedure, pass(prec) :: precseti => psb_c_base_precseti
|
||||
procedure, pass(prec) :: precsetr => psb_c_base_precsetr
|
||||
procedure, pass(prec) :: precsetc => psb_c_base_precsetc
|
||||
procedure, pass(prec) :: sizeof => psb_c_base_sizeof
|
||||
generic, public :: precset => precseti, precsetr, precsetc
|
||||
procedure, pass(prec) :: precinit => psb_c_base_precinit
|
||||
procedure, pass(prec) :: precfree => psb_c_base_precfree
|
||||
procedure, pass(prec) :: precdescr => psb_c_base_precdescr
|
||||
end type psb_c_base_prec_type
|
||||
|
||||
private :: psb_c_base_apply, psb_c_base_precbld, psb_c_base_precseti,&
|
||||
& psb_c_base_precsetr, psb_c_base_precsetc, psb_c_base_sizeof,&
|
||||
& psb_c_base_precinit, psb_c_base_precfree, psb_c_base_precdescr
|
||||
|
||||
|
||||
contains
|
||||
|
||||
subroutine psb_c_base_apply(alpha,prec,x,beta,y,desc_data,info,trans,work)
|
||||
use psb_sparse_mod
|
||||
type(psb_desc_type),intent(in) :: desc_data
|
||||
class(psb_c_base_prec_type), intent(in) :: prec
|
||||
complex(psb_spk_),intent(in) :: alpha, beta
|
||||
complex(psb_spk_),intent(in) :: x(:)
|
||||
complex(psb_spk_),intent(inout) :: y(:)
|
||||
integer, intent(out) :: info
|
||||
character(len=1), optional :: trans
|
||||
complex(psb_spk_),intent(inout), optional, target :: work(:)
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='c_base_prec_apply'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
|
||||
end subroutine psb_c_base_apply
|
||||
|
||||
subroutine psb_c_base_precinit(prec,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_c_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='c_base_precinit'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_c_base_precinit
|
||||
|
||||
subroutine psb_c_base_precbld(a,desc_a,prec,info,upd)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
type(psb_c_sparse_mat), intent(in), target :: a
|
||||
type(psb_desc_type), intent(in), target :: desc_a
|
||||
class(psb_c_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(out) :: info
|
||||
character, intent(in), optional :: upd
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='c_base_precbld'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_c_base_precbld
|
||||
|
||||
subroutine psb_c_base_precseti(prec,what,val,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_c_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(in) :: what
|
||||
integer, intent(in) :: val
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='c_base_precseti'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_c_base_precseti
|
||||
|
||||
subroutine psb_c_base_precsetr(prec,what,val,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_c_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(in) :: what
|
||||
real(psb_spk_), intent(in) :: val
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='c_base_precsetr'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_c_base_precsetr
|
||||
|
||||
subroutine psb_c_base_precsetc(prec,what,val,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_c_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(in) :: what
|
||||
character(len=*), intent(in) :: val
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='c_base_precsetc'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_c_base_precsetc
|
||||
|
||||
subroutine psb_c_base_precfree(prec,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_c_base_prec_type), intent(inout) :: prec
|
||||
integer, intent(out) :: info
|
||||
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='c_base_precfree'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
|
||||
end subroutine psb_c_base_precfree
|
||||
|
||||
|
||||
subroutine psb_c_base_precdescr(prec,iout)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_c_base_prec_type), intent(in) :: prec
|
||||
integer, intent(in), optional :: iout
|
||||
|
||||
Integer :: err_act, nrow, info
|
||||
character(len=20) :: name='c_base_precdescr'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
|
||||
end subroutine psb_c_base_precdescr
|
||||
|
||||
|
||||
function psb_c_base_sizeof(prec) result(val)
|
||||
use psb_sparse_mod
|
||||
class(psb_c_base_prec_type), intent(in) :: prec
|
||||
integer(psb_long_int_k_) :: val
|
||||
|
||||
val = 0
|
||||
return
|
||||
end function psb_c_base_sizeof
|
||||
|
||||
end module psb_c_base_prec_mod
|
||||
@ -0,0 +1,352 @@
|
||||
!!$
|
||||
!!$ Parallel Sparse BLAS version 2.2
|
||||
!!$ (C) Copyright 2006/2007/2008
|
||||
!!$ Salvatore Filippone University of Rome Tor Vergata
|
||||
!!$ Alfredo Buttari University of Rome Tor Vergata
|
||||
!!$
|
||||
!!$ 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 to define PREC_DATA, !!
|
||||
!! structure for preconditioning. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
module psb_d_base_prec_mod
|
||||
|
||||
! Reduces size of .mod file.
|
||||
use psb_sparse_mod, only : psb_dpk_, psb_spk_, psb_long_int_k_,&
|
||||
& psb_desc_type, psb_sizeof, psb_free, psb_cdfree,&
|
||||
& psb_erractionsave, psb_erractionrestore, psb_error, psb_get_errstatus,&
|
||||
& psb_d_sparse_mat
|
||||
|
||||
|
||||
use psb_prec_const_mod
|
||||
|
||||
type psb_d_base_prec_type
|
||||
contains
|
||||
procedure, pass(prec) :: apply => psb_d_base_apply
|
||||
procedure, pass(prec) :: precbld => psb_d_base_precbld
|
||||
procedure, pass(prec) :: precseti => psb_d_base_precseti
|
||||
procedure, pass(prec) :: precsetr => psb_d_base_precsetr
|
||||
procedure, pass(prec) :: precsetc => psb_d_base_precsetc
|
||||
procedure, pass(prec) :: sizeof => psb_d_base_sizeof
|
||||
generic, public :: precset => precseti, precsetr, precsetc
|
||||
procedure, pass(prec) :: precinit => psb_d_base_precinit
|
||||
procedure, pass(prec) :: precfree => psb_d_base_precfree
|
||||
procedure, pass(prec) :: precdescr => psb_d_base_precdescr
|
||||
end type psb_d_base_prec_type
|
||||
|
||||
private :: psb_d_base_apply, psb_d_base_precbld, psb_d_base_precseti,&
|
||||
& psb_d_base_precsetr, psb_d_base_precsetc, psb_d_base_sizeof,&
|
||||
& psb_d_base_precinit, psb_d_base_precfree, psb_d_base_precdescr
|
||||
|
||||
|
||||
contains
|
||||
|
||||
subroutine psb_d_base_apply(alpha,prec,x,beta,y,desc_data,info,trans,work)
|
||||
use psb_sparse_mod
|
||||
type(psb_desc_type),intent(in) :: desc_data
|
||||
class(psb_d_base_prec_type), intent(in) :: prec
|
||||
real(psb_dpk_),intent(in) :: alpha, beta
|
||||
real(psb_dpk_),intent(in) :: x(:)
|
||||
real(psb_dpk_),intent(inout) :: y(:)
|
||||
integer, intent(out) :: info
|
||||
character(len=1), optional :: trans
|
||||
real(psb_dpk_),intent(inout), optional, target :: work(:)
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='d_base_prec_apply'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
|
||||
end subroutine psb_d_base_apply
|
||||
|
||||
subroutine psb_d_base_precinit(prec,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_d_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='d_base_precinit'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_d_base_precinit
|
||||
|
||||
subroutine psb_d_base_precbld(a,desc_a,prec,info,upd)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
type(psb_d_sparse_mat), intent(in), target :: a
|
||||
type(psb_desc_type), intent(in), target :: desc_a
|
||||
class(psb_d_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(out) :: info
|
||||
character, intent(in), optional :: upd
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='d_base_precbld'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_d_base_precbld
|
||||
|
||||
subroutine psb_d_base_precseti(prec,what,val,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_d_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(in) :: what
|
||||
integer, intent(in) :: val
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='d_base_precseti'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_d_base_precseti
|
||||
|
||||
subroutine psb_d_base_precsetr(prec,what,val,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_d_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(in) :: what
|
||||
real(psb_dpk_), intent(in) :: val
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='d_base_precsetr'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_d_base_precsetr
|
||||
|
||||
subroutine psb_d_base_precsetc(prec,what,val,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_d_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(in) :: what
|
||||
character(len=*), intent(in) :: val
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='d_base_precsetc'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_d_base_precsetc
|
||||
|
||||
subroutine psb_d_base_precfree(prec,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_d_base_prec_type), intent(inout) :: prec
|
||||
integer, intent(out) :: info
|
||||
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='d_base_precfree'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
|
||||
end subroutine psb_d_base_precfree
|
||||
|
||||
|
||||
subroutine psb_d_base_precdescr(prec,iout)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_d_base_prec_type), intent(in) :: prec
|
||||
integer, intent(in), optional :: iout
|
||||
|
||||
Integer :: err_act, nrow, info
|
||||
character(len=20) :: name='d_base_precdescr'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
|
||||
end subroutine psb_d_base_precdescr
|
||||
|
||||
|
||||
function psb_d_base_sizeof(prec) result(val)
|
||||
use psb_sparse_mod
|
||||
class(psb_d_base_prec_type), intent(in) :: prec
|
||||
integer(psb_long_int_k_) :: val
|
||||
|
||||
val = 0
|
||||
return
|
||||
end function psb_d_base_sizeof
|
||||
|
||||
end module psb_d_base_prec_mod
|
||||
@ -0,0 +1,352 @@
|
||||
!!$
|
||||
!!$ Parallel Sparse BLAS version 2.2
|
||||
!!$ (C) Copyright 2006/2007/2008
|
||||
!!$ Salvatore Filippone University of Rome Tor Vergata
|
||||
!!$ Alfredo Buttari University of Rome Tor Vergata
|
||||
!!$
|
||||
!!$ 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 to define PREC_DATA, !!
|
||||
!! structure for preconditioning. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
module psb_s_base_prec_mod
|
||||
|
||||
! Reduces size of .mod file.
|
||||
use psb_sparse_mod, only : psb_dpk_, psb_spk_, psb_long_int_k_,&
|
||||
& psb_desc_type, psb_sizeof, psb_free, psb_cdfree,&
|
||||
& psb_erractionsave, psb_erractionrestore, psb_error, psb_get_errstatus,&
|
||||
& psb_s_sparse_mat
|
||||
|
||||
use psb_prec_const_mod
|
||||
|
||||
type psb_s_base_prec_type
|
||||
contains
|
||||
procedure, pass(prec) :: apply => psb_s_base_apply
|
||||
procedure, pass(prec) :: precbld => psb_s_base_precbld
|
||||
procedure, pass(prec) :: precseti => psb_s_base_precseti
|
||||
procedure, pass(prec) :: precsetr => psb_s_base_precsetr
|
||||
procedure, pass(prec) :: precsetc => psb_s_base_precsetc
|
||||
procedure, pass(prec) :: sizeof => psb_s_base_sizeof
|
||||
generic, public :: precset => precseti, precsetr, precsetc
|
||||
procedure, pass(prec) :: precinit => psb_s_base_precinit
|
||||
procedure, pass(prec) :: precfree => psb_s_base_precfree
|
||||
procedure, pass(prec) :: precdescr => psb_s_base_precdescr
|
||||
end type psb_s_base_prec_type
|
||||
|
||||
private :: psb_s_base_apply, psb_s_base_precbld, psb_s_base_precseti,&
|
||||
& psb_s_base_precsetr, psb_s_base_precsetc, psb_s_base_sizeof,&
|
||||
& psb_s_base_precinit, psb_s_base_precfree, psb_s_base_precdescr
|
||||
|
||||
contains
|
||||
|
||||
|
||||
subroutine psb_s_base_apply(alpha,prec,x,beta,y,desc_data,info,trans,work)
|
||||
use psb_sparse_mod
|
||||
type(psb_desc_type),intent(in) :: desc_data
|
||||
class(psb_s_base_prec_type), intent(in) :: prec
|
||||
real(psb_spk_),intent(in) :: alpha, beta
|
||||
real(psb_spk_),intent(in) :: x(:)
|
||||
real(psb_spk_),intent(inout) :: y(:)
|
||||
integer, intent(out) :: info
|
||||
character(len=1), optional :: trans
|
||||
real(psb_spk_),intent(inout), optional, target :: work(:)
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='s_base_prec_apply'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
|
||||
end subroutine psb_s_base_apply
|
||||
|
||||
subroutine psb_s_base_precinit(prec,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_s_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='s_base_precinit'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_s_base_precinit
|
||||
|
||||
subroutine psb_s_base_precbld(a,desc_a,prec,info,upd)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
type(psb_s_sparse_mat), intent(in), target :: a
|
||||
type(psb_desc_type), intent(in), target :: desc_a
|
||||
class(psb_s_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(out) :: info
|
||||
character, intent(in), optional :: upd
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='s_base_precbld'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_s_base_precbld
|
||||
|
||||
subroutine psb_s_base_precseti(prec,what,val,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_s_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(in) :: what
|
||||
integer, intent(in) :: val
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='s_base_precseti'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_s_base_precseti
|
||||
|
||||
subroutine psb_s_base_precsetr(prec,what,val,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_s_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(in) :: what
|
||||
real(psb_spk_), intent(in) :: val
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='s_base_precsetr'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_s_base_precsetr
|
||||
|
||||
subroutine psb_s_base_precsetc(prec,what,val,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_s_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(in) :: what
|
||||
character(len=*), intent(in) :: val
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='s_base_precsetc'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_s_base_precsetc
|
||||
|
||||
subroutine psb_s_base_precfree(prec,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_s_base_prec_type), intent(inout) :: prec
|
||||
integer, intent(out) :: info
|
||||
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='s_base_precfree'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
|
||||
end subroutine psb_s_base_precfree
|
||||
|
||||
|
||||
subroutine psb_s_base_precdescr(prec,iout)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_s_base_prec_type), intent(in) :: prec
|
||||
integer, intent(in), optional :: iout
|
||||
|
||||
Integer :: err_act, nrow, info
|
||||
character(len=20) :: name='s_base_precdescr'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
|
||||
end subroutine psb_s_base_precdescr
|
||||
|
||||
|
||||
function psb_s_base_sizeof(prec) result(val)
|
||||
use psb_sparse_mod
|
||||
class(psb_s_base_prec_type), intent(in) :: prec
|
||||
integer(psb_long_int_k_) :: val
|
||||
|
||||
val = 0
|
||||
return
|
||||
end function psb_s_base_sizeof
|
||||
|
||||
|
||||
end module psb_s_base_prec_mod
|
||||
@ -0,0 +1,352 @@
|
||||
!!$
|
||||
!!$ Parallel Sparse BLAS version 2.2
|
||||
!!$ (C) Copyright 2006/2007/2008
|
||||
!!$ Salvatore Filippone University of Rome Tor Vergata
|
||||
!!$ Alfredo Buttari University of Rome Tor Vergata
|
||||
!!$
|
||||
!!$ 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 to define PREC_DATA, !!
|
||||
!! structure for preconditioning. !!
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
module psb_z_base_prec_mod
|
||||
|
||||
! Reduces size of .mod file.
|
||||
use psb_sparse_mod, only : psb_dpk_, psb_spk_, psb_long_int_k_,&
|
||||
& psb_desc_type, psb_sizeof, psb_free, psb_cdfree,&
|
||||
& psb_erractionsave, psb_erractionrestore, psb_error, psb_get_errstatus,&
|
||||
& psb_z_sparse_mat
|
||||
|
||||
use psb_prec_const_mod
|
||||
|
||||
type psb_z_base_prec_type
|
||||
contains
|
||||
procedure, pass(prec) :: apply => psb_z_base_apply
|
||||
procedure, pass(prec) :: precbld => psb_z_base_precbld
|
||||
procedure, pass(prec) :: precseti => psb_z_base_precseti
|
||||
procedure, pass(prec) :: precsetr => psb_z_base_precsetr
|
||||
procedure, pass(prec) :: precsetc => psb_z_base_precsetc
|
||||
procedure, pass(prec) :: sizeof => psb_z_base_sizeof
|
||||
generic, public :: precset => precseti, precsetr, precsetc
|
||||
procedure, pass(prec) :: precinit => psb_z_base_precinit
|
||||
procedure, pass(prec) :: precfree => psb_z_base_precfree
|
||||
procedure, pass(prec) :: precdescr => psb_z_base_precdescr
|
||||
end type psb_z_base_prec_type
|
||||
|
||||
private :: psb_z_base_apply, psb_z_base_precbld, psb_z_base_precseti,&
|
||||
& psb_z_base_precsetr, psb_z_base_precsetc, psb_z_base_sizeof,&
|
||||
& psb_z_base_precinit, psb_z_base_precfree, psb_z_base_precdescr
|
||||
|
||||
|
||||
contains
|
||||
|
||||
|
||||
subroutine psb_z_base_apply(alpha,prec,x,beta,y,desc_data,info,trans,work)
|
||||
use psb_sparse_mod
|
||||
type(psb_desc_type),intent(in) :: desc_data
|
||||
class(psb_z_base_prec_type), intent(in) :: prec
|
||||
complex(psb_dpk_),intent(in) :: alpha, beta
|
||||
complex(psb_dpk_),intent(in) :: x(:)
|
||||
complex(psb_dpk_),intent(inout) :: y(:)
|
||||
integer, intent(out) :: info
|
||||
character(len=1), optional :: trans
|
||||
complex(psb_dpk_),intent(inout), optional, target :: work(:)
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='z_base_prec_apply'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
|
||||
end subroutine psb_z_base_apply
|
||||
|
||||
subroutine psb_z_base_precinit(prec,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_z_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='z_base_precinit'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_z_base_precinit
|
||||
|
||||
subroutine psb_z_base_precbld(a,desc_a,prec,info,upd)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
type(psb_z_sparse_mat), intent(in), target :: a
|
||||
type(psb_desc_type), intent(in), target :: desc_a
|
||||
class(psb_z_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(out) :: info
|
||||
character, intent(in), optional :: upd
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='z_base_precbld'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_z_base_precbld
|
||||
|
||||
subroutine psb_z_base_precseti(prec,what,val,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_z_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(in) :: what
|
||||
integer, intent(in) :: val
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='z_base_precseti'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_z_base_precseti
|
||||
|
||||
subroutine psb_z_base_precsetr(prec,what,val,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_z_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(in) :: what
|
||||
real(psb_dpk_), intent(in) :: val
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='z_base_precsetr'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_z_base_precsetr
|
||||
|
||||
subroutine psb_z_base_precsetc(prec,what,val,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_z_base_prec_type),intent(inout) :: prec
|
||||
integer, intent(in) :: what
|
||||
character(len=*), intent(in) :: val
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='z_base_precsetc'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
end subroutine psb_z_base_precsetc
|
||||
|
||||
subroutine psb_z_base_precfree(prec,info)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_z_base_prec_type), intent(inout) :: prec
|
||||
integer, intent(out) :: info
|
||||
|
||||
Integer :: err_act, nrow
|
||||
character(len=20) :: name='z_base_precfree'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
|
||||
end subroutine psb_z_base_precfree
|
||||
|
||||
|
||||
subroutine psb_z_base_precdescr(prec,iout)
|
||||
|
||||
use psb_sparse_mod
|
||||
Implicit None
|
||||
|
||||
class(psb_z_base_prec_type), intent(in) :: prec
|
||||
integer, intent(in), optional :: iout
|
||||
|
||||
Integer :: err_act, nrow, info
|
||||
character(len=20) :: name='z_base_precdescr'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
!
|
||||
! This is the base version and we should throw an error.
|
||||
! Or should it be the NULL preonditioner???
|
||||
!
|
||||
info = 700
|
||||
call psb_errpush(info,name)
|
||||
goto 9999
|
||||
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
9999 continue
|
||||
call psb_erractionrestore(err_act)
|
||||
if (err_act == psb_act_abort_) then
|
||||
call psb_error()
|
||||
return
|
||||
end if
|
||||
return
|
||||
|
||||
end subroutine psb_z_base_precdescr
|
||||
|
||||
|
||||
function psb_z_base_sizeof(prec) result(val)
|
||||
use psb_sparse_mod
|
||||
class(psb_z_base_prec_type), intent(in) :: prec
|
||||
integer(psb_long_int_k_) :: val
|
||||
|
||||
val = 0
|
||||
return
|
||||
end function psb_z_base_sizeof
|
||||
|
||||
end module psb_z_base_prec_mod
|
||||
Loading…
Reference in New Issue