@ -64,7 +64,7 @@ module psb_hash_map_mod
integer ( psb_ipk_ ) , allocatable :: hashv ( : ) , glb_lc ( : , : ) , loc_to_glob ( : )
integer ( psb_ipk_ ) , allocatable :: hashv ( : ) , glb_lc ( : , : ) , loc_to_glob ( : )
type ( psb_hash_type ) , allocatable :: hash
type ( psb_hash_type ) , allocatable :: hash
contains
contains
procedure , pass ( idxmap ) :: init_vl = > hash_init_vl
procedure , pass ( idxmap ) :: init_vl = > hash_init_vl
procedure , pass ( idxmap ) :: hash_map_init = > hash_init_vg
procedure , pass ( idxmap ) :: hash_map_init = > hash_init_vg
@ -94,9 +94,9 @@ contains
procedure , pass ( idxmap ) :: bld_g2l_map = > hash_bld_g2l_map
procedure , pass ( idxmap ) :: bld_g2l_map = > hash_bld_g2l_map
end type psb_hash_map
end type psb_hash_map
private :: hash_init_vl , hash_init_vg , hash_sizeof , hash_asb , &
private :: hash_init_vl , hash_init_vg , hash_sizeof , hash_asb , &
& hash_free , hash_get_fmt , hash_l2gs1 , hash_l2gs2 , &
& hash_free , hash_get_fmt , hash_l2gs1 , hash_l2gs2 , &
& hash_l2gv1 , hash_l2gv2 , hash_g2ls1 , hash_g2ls2 , &
& hash_l2gv1 , hash_l2gv2 , hash_g2ls1 , hash_g2ls2 , &
& hash_g2lv1 , hash_g2lv2 , hash_g2ls1_ins , hash_g2ls2_ins , &
& hash_g2lv1 , hash_g2lv2 , hash_g2ls1_ins , hash_g2ls2_ins , &
@ -104,22 +104,24 @@ private :: hash_init_vl, hash_init_vg, hash_sizeof, hash_asb, &
& hash_bld_g2l_map , hash_inner_cnvs1 , hash_inner_cnvs2 , &
& hash_bld_g2l_map , hash_inner_cnvs1 , hash_inner_cnvs2 , &
& hash_inner_cnv1 , hash_inner_cnv2 , hash_row_extendable
& hash_inner_cnv1 , hash_inner_cnv2 , hash_row_extendable
integer ( psb_ipk_ ) , private :: laddsz = 500
interface hash_inner_cnv
interface hash_inner_cnv
module procedure hash_inner_cnvs1 , hash_inner_cnvs2 , &
module procedure hash_inner_cnvs1 , hash_inner_cnvs2 , &
& hash_inner_cnv1 , hash_inner_cnv2
& hash_inner_cnv1 , hash_inner_cnv2
end interface hash_inner_cnv
end interface hash_inner_cnv
private :: hash_inner_cnv
private :: hash_inner_cnv
contains
contains
function hash_row_extendable ( ) result ( val )
function hash_row_extendable ( ) result ( val )
implicit none
implicit none
logical :: val
logical :: val
val = . true .
val = . true .
end function hash_row_extendable
end function hash_row_extendable
function hash_sizeof ( idxmap ) result ( val )
function hash_sizeof ( idxmap ) result ( val )
implicit none
implicit none
class ( psb_hash_map ) , intent ( in ) :: idxmap
class ( psb_hash_map ) , intent ( in ) :: idxmap
integer ( psb_long_int_k_ ) :: val
integer ( psb_long_int_k_ ) :: val
@ -133,10 +135,10 @@ function hash_sizeof(idxmap) result(val)
if ( allocated ( idxmap % hash ) ) &
if ( allocated ( idxmap % hash ) ) &
& val = val + psb_sizeof ( idxmap % hash )
& val = val + psb_sizeof ( idxmap % hash )
end function hash_sizeof
end function hash_sizeof
subroutine hash_free ( idxmap )
subroutine hash_free ( idxmap )
implicit none
implicit none
class ( psb_hash_map ) , intent ( inout ) :: idxmap
class ( psb_hash_map ) , intent ( inout ) :: idxmap
integer ( psb_ipk_ ) :: info
integer ( psb_ipk_ ) :: info
@ -153,10 +155,10 @@ subroutine hash_free(idxmap)
call idxmap % psb_indx_map % free ( )
call idxmap % psb_indx_map % free ( )
end subroutine hash_free
end subroutine hash_free
subroutine hash_l2gs1 ( idx , idxmap , info , mask , owned )
subroutine hash_l2gs1 ( idx , idxmap , info , mask , owned )
implicit none
implicit none
class ( psb_hash_map ) , intent ( in ) :: idxmap
class ( psb_hash_map ) , intent ( in ) :: idxmap
integer ( psb_ipk_ ) , intent ( inout ) :: idx
integer ( psb_ipk_ ) , intent ( inout ) :: idx
@ -173,9 +175,9 @@ subroutine hash_l2gs1(idx,idxmap,info,mask,owned)
call idxmap % l2g ( idxv , info , owned = owned )
call idxmap % l2g ( idxv , info , owned = owned )
idx = idxv ( 1 )
idx = idxv ( 1 )
end subroutine hash_l2gs1
end subroutine hash_l2gs1
subroutine hash_l2gs2 ( idxin , idxout , idxmap , info , mask , owned )
subroutine hash_l2gs2 ( idxin , idxout , idxmap , info , mask , owned )
implicit none
implicit none
class ( psb_hash_map ) , intent ( in ) :: idxmap
class ( psb_hash_map ) , intent ( in ) :: idxmap
integer ( psb_ipk_ ) , intent ( in ) :: idxin
integer ( psb_ipk_ ) , intent ( in ) :: idxin
@ -187,10 +189,10 @@ subroutine hash_l2gs2(idxin,idxout,idxmap,info,mask,owned)
idxout = idxin
idxout = idxin
call idxmap % l2g ( idxout , info , mask , owned )
call idxmap % l2g ( idxout , info , mask , owned )
end subroutine hash_l2gs2
end subroutine hash_l2gs2
subroutine hash_l2gv1 ( idx , idxmap , info , mask , owned )
subroutine hash_l2gv1 ( idx , idxmap , info , mask , owned )
implicit none
implicit none
class ( psb_hash_map ) , intent ( in ) :: idxmap
class ( psb_hash_map ) , intent ( in ) :: idxmap
integer ( psb_ipk_ ) , intent ( inout ) :: idx ( : )
integer ( psb_ipk_ ) , intent ( inout ) :: idx ( : )
@ -243,9 +245,9 @@ subroutine hash_l2gv1(idx,idxmap,info,mask,owned)
end if
end if
end subroutine hash_l2gv1
end subroutine hash_l2gv1
subroutine hash_l2gv2 ( idxin , idxout , idxmap , info , mask , owned )
subroutine hash_l2gv2 ( idxin , idxout , idxmap , info , mask , owned )
implicit none
implicit none
class ( psb_hash_map ) , intent ( in ) :: idxmap
class ( psb_hash_map ) , intent ( in ) :: idxmap
integer ( psb_ipk_ ) , intent ( in ) :: idxin ( : )
integer ( psb_ipk_ ) , intent ( in ) :: idxin ( : )
@ -264,10 +266,10 @@ subroutine hash_l2gv2(idxin,idxout,idxmap,info,mask,owned)
info = - 3
info = - 3
end if
end if
end subroutine hash_l2gv2
end subroutine hash_l2gv2
subroutine hash_g2ls1 ( idx , idxmap , info , mask , owned )
subroutine hash_g2ls1 ( idx , idxmap , info , mask , owned )
implicit none
implicit none
class ( psb_hash_map ) , intent ( in ) :: idxmap
class ( psb_hash_map ) , intent ( in ) :: idxmap
integer ( psb_ipk_ ) , intent ( inout ) :: idx
integer ( psb_ipk_ ) , intent ( inout ) :: idx
@ -285,9 +287,9 @@ subroutine hash_g2ls1(idx,idxmap,info,mask,owned)
call idxmap % g2l ( idxv , info , owned = owned )
call idxmap % g2l ( idxv , info , owned = owned )
idx = idxv ( 1 )
idx = idxv ( 1 )
end subroutine hash_g2ls1
end subroutine hash_g2ls1
subroutine hash_g2ls2 ( idxin , idxout , idxmap , info , mask , owned )
subroutine hash_g2ls2 ( idxin , idxout , idxmap , info , mask , owned )
implicit none
implicit none
class ( psb_hash_map ) , intent ( in ) :: idxmap
class ( psb_hash_map ) , intent ( in ) :: idxmap
integer ( psb_ipk_ ) , intent ( in ) :: idxin
integer ( psb_ipk_ ) , intent ( in ) :: idxin
@ -299,10 +301,10 @@ subroutine hash_g2ls2(idxin,idxout,idxmap,info,mask,owned)
idxout = idxin
idxout = idxin
call idxmap % g2l ( idxout , info , mask , owned )
call idxmap % g2l ( idxout , info , mask , owned )
end subroutine hash_g2ls2
end subroutine hash_g2ls2
subroutine hash_g2lv1 ( idx , idxmap , info , mask , owned )
subroutine hash_g2lv1 ( idx , idxmap , info , mask , owned )
use psb_penv_mod
use psb_penv_mod
use psb_sort_mod
use psb_sort_mod
implicit none
implicit none
@ -312,7 +314,7 @@ subroutine hash_g2lv1(idx,idxmap,info,mask,owned)
logical , intent ( in ) , optional :: mask ( : )
logical , intent ( in ) , optional :: mask ( : )
logical , intent ( in ) , optional :: owned
logical , intent ( in ) , optional :: owned
integer ( psb_ipk_ ) :: i , is , mglob , ip , lip , nrow , ncol , nrm
integer ( psb_ipk_ ) :: i , is , mglob , ip , lip , nrow , ncol , nrm
integer ( psb_ ip k_) :: ictxt , iam , np
integer ( psb_ mp ik_) :: ictxt , iam , np
logical :: owned_
logical :: owned_
info = 0
info = 0
@ -416,9 +418,9 @@ subroutine hash_g2lv1(idx,idxmap,info,mask,owned)
end if
end if
end subroutine hash_g2lv1
end subroutine hash_g2lv1
subroutine hash_g2lv2 ( idxin , idxout , idxmap , info , mask , owned )
subroutine hash_g2lv2 ( idxin , idxout , idxmap , info , mask , owned )
implicit none
implicit none
class ( psb_hash_map ) , intent ( in ) :: idxmap
class ( psb_hash_map ) , intent ( in ) :: idxmap
integer ( psb_ipk_ ) , intent ( in ) :: idxin ( : )
integer ( psb_ipk_ ) , intent ( in ) :: idxin ( : )
@ -438,11 +440,11 @@ subroutine hash_g2lv2(idxin,idxout,idxmap,info,mask,owned)
info = - 3
info = - 3
end if
end if
end subroutine hash_g2lv2
end subroutine hash_g2lv2
subroutine hash_g2ls1_ins ( idx , idxmap , info , mask )
subroutine hash_g2ls1_ins ( idx , idxmap , info , mask )
use psb_realloc_mod
use psb_realloc_mod
use psb_sort_mod
use psb_sort_mod
implicit none
implicit none
@ -461,9 +463,9 @@ subroutine hash_g2ls1_ins(idx,idxmap,info,mask)
call idxmap % g2l_ins ( idxv , info )
call idxmap % g2l_ins ( idxv , info )
idx = idxv ( 1 )
idx = idxv ( 1 )
end subroutine hash_g2ls1_ins
end subroutine hash_g2ls1_ins
subroutine hash_g2ls2_ins ( idxin , idxout , idxmap , info , mask )
subroutine hash_g2ls2_ins ( idxin , idxout , idxmap , info , mask )
implicit none
implicit none
class ( psb_hash_map ) , intent ( inout ) :: idxmap
class ( psb_hash_map ) , intent ( inout ) :: idxmap
integer ( psb_ipk_ ) , intent ( in ) :: idxin
integer ( psb_ipk_ ) , intent ( in ) :: idxin
@ -474,10 +476,10 @@ subroutine hash_g2ls2_ins(idxin,idxout,idxmap,info,mask)
idxout = idxin
idxout = idxin
call idxmap % g2l_ins ( idxout , info , mask = mask )
call idxmap % g2l_ins ( idxout , info , mask = mask )
end subroutine hash_g2ls2_ins
end subroutine hash_g2ls2_ins
subroutine hash_g2lv1_ins ( idx , idxmap , info , mask )
subroutine hash_g2lv1_ins ( idx , idxmap , info , mask )
use psb_error_mod
use psb_error_mod
use psb_realloc_mod
use psb_realloc_mod
use psb_sort_mod
use psb_sort_mod
@ -488,7 +490,8 @@ subroutine hash_g2lv1_ins(idx,idxmap,info,mask)
integer ( psb_ipk_ ) , intent ( out ) :: info
integer ( psb_ipk_ ) , intent ( out ) :: info
logical , intent ( in ) , optional :: mask ( : )
logical , intent ( in ) , optional :: mask ( : )
integer ( psb_ipk_ ) :: i , is , mglob , ip , lip , nrow , ncol , &
integer ( psb_ipk_ ) :: i , is , mglob , ip , lip , nrow , ncol , &
& nxt , err_act , ictxt , me , np
& nxt , err_act
integer ( psb_mpik_ ) :: ictxt , me , np
character ( len = 20 ) :: name , ch_err
character ( len = 20 ) :: name , ch_err
info = psb_success_
info = psb_success_
@ -529,12 +532,12 @@ subroutine hash_g2lv1_ins(idx,idxmap,info,mask)
if ( info > = 0 ) then
if ( info > = 0 ) then
if ( nxt == lip ) then
if ( nxt == lip ) then
ncol = nxt
ncol = nxt
call psb_ensure_size ( ncol , idxmap % loc_to_glob , info , pad = - 1 , addsz = 200 )
call psb_ensure_size ( ncol , idxmap % loc_to_glob , info , pad = - ione , addsz = laddsz )
if ( info / = psb_success_ ) then
if ( info / = psb_success_ ) then
info = 1
info = 1
ch_err = 'psb_ensure_size'
ch_err = 'psb_ensure_size'
call psb_errpush ( psb_err_from_subroutine_ai_ , name , &
call psb_errpush ( psb_err_from_subroutine_ai_ , name , &
& a_err = ch_err , i_err = ( / info , 0 , 0 , 0 , 0 / ) )
& a_err = ch_err , i_err = ( / info , izero , izero , izero , izero / ) )
go to 9999
go to 9999
end if
end if
idxmap % loc_to_glob ( nxt ) = ip
idxmap % loc_to_glob ( nxt ) = ip
@ -544,7 +547,7 @@ subroutine hash_g2lv1_ins(idx,idxmap,info,mask)
else
else
ch_err = 'SearchInsKeyVal'
ch_err = 'SearchInsKeyVal'
call psb_errpush ( psb_err_from_subroutine_ai_ , name , &
call psb_errpush ( psb_err_from_subroutine_ai_ , name , &
& a_err = ch_err , i_err = ( / info , 0 , 0 , 0 , 0 / ) )
& a_err = ch_err , i_err = ( / info , izero , izero , izero , izero / ) )
go to 9999
go to 9999
end if
end if
idx ( i ) = lip
idx ( i ) = lip
@ -570,12 +573,12 @@ subroutine hash_g2lv1_ins(idx,idxmap,info,mask)
if ( info > = 0 ) then
if ( info > = 0 ) then
if ( nxt == lip ) then
if ( nxt == lip ) then
ncol = nxt
ncol = nxt
call psb_ensure_size ( ncol , idxmap % loc_to_glob , info , pad = - 1 , addsz = 200 )
call psb_ensure_size ( ncol , idxmap % loc_to_glob , info , pad = - ione , addsz = laddsz )
if ( info / = psb_success_ ) then
if ( info / = psb_success_ ) then
info = 1
info = 1
ch_err = 'psb_ensure_size'
ch_err = 'psb_ensure_size'
call psb_errpush ( psb_err_from_subroutine_ai_ , name , &
call psb_errpush ( psb_err_from_subroutine_ai_ , name , &
& a_err = ch_err , i_err = ( / info , 0 , 0 , 0 , 0 / ) )
& a_err = ch_err , i_err = ( / info , izero , izero , izero , izero / ) )
go to 9999
go to 9999
end if
end if
idxmap % loc_to_glob ( nxt ) = ip
idxmap % loc_to_glob ( nxt ) = ip
@ -585,7 +588,7 @@ subroutine hash_g2lv1_ins(idx,idxmap,info,mask)
else
else
ch_err = 'SearchInsKeyVal'
ch_err = 'SearchInsKeyVal'
call psb_errpush ( psb_err_from_subroutine_ai_ , name , &
call psb_errpush ( psb_err_from_subroutine_ai_ , name , &
& a_err = ch_err , i_err = ( / info , 0 , 0 , 0 , 0 / ) )
& a_err = ch_err , i_err = ( / info , izero , izero , izero , izero / ) )
go to 9999
go to 9999
end if
end if
idx ( i ) = lip
idx ( i ) = lip
@ -613,9 +616,9 @@ subroutine hash_g2lv1_ins(idx,idxmap,info,mask)
end if
end if
return
return
end subroutine hash_g2lv1_ins
end subroutine hash_g2lv1_ins
subroutine hash_g2lv2_ins ( idxin , idxout , idxmap , info , mask )
subroutine hash_g2lv2_ins ( idxin , idxout , idxmap , info , mask )
implicit none
implicit none
class ( psb_hash_map ) , intent ( inout ) :: idxmap
class ( psb_hash_map ) , intent ( inout ) :: idxmap
integer ( psb_ipk_ ) , intent ( in ) :: idxin ( : )
integer ( psb_ipk_ ) , intent ( in ) :: idxin ( : )
@ -633,19 +636,21 @@ subroutine hash_g2lv2_ins(idxin,idxout,idxmap,info,mask)
info = - 3
info = - 3
end if
end if
end subroutine hash_g2lv2_ins
end subroutine hash_g2lv2_ins
subroutine hash_init_vl ( idxmap , ictxt , vl , info )
subroutine hash_init_vl ( idxmap , ictxt , vl , info )
use psb_penv_mod
use psb_penv_mod
use psb_error_mod
use psb_error_mod
use psb_sort_mod
use psb_sort_mod
use psb_realloc_mod
use psb_realloc_mod
implicit none
implicit none
class ( psb_hash_map ) , intent ( inout ) :: idxmap
class ( psb_hash_map ) , intent ( inout ) :: idxmap
integer ( psb_ipk_ ) , intent ( in ) :: ictxt , vl ( : )
integer ( psb_mpik_ ) , intent ( in ) :: ictxt
integer ( psb_ipk_ ) , intent ( in ) :: vl ( : )
integer ( psb_ipk_ ) , intent ( out ) :: info
integer ( psb_ipk_ ) , intent ( out ) :: info
! To be implemented
! To be implemented
integer ( psb_ipk_ ) :: iam , np , i , nlu , nl , m , nrt , int_err ( 5 )
integer ( psb_mpik_ ) :: iam , np
integer ( psb_ipk_ ) :: i , nlu , nl , m , nrt , int_err ( 5 )
integer ( psb_ipk_ ) , allocatable :: vlu ( : )
integer ( psb_ipk_ ) , allocatable :: vlu ( : )
character ( len = 20 ) , parameter :: name = 'hash_map_init_vl'
character ( len = 20 ) , parameter :: name = 'hash_map_init_vl'
@ -699,17 +704,19 @@ subroutine hash_init_vl(idxmap,ictxt,vl,info)
call hash_init_vlu ( idxmap , ictxt , m , nlu , vlu , info )
call hash_init_vlu ( idxmap , ictxt , m , nlu , vlu , info )
end subroutine hash_init_vl
end subroutine hash_init_vl
subroutine hash_init_vg ( idxmap , ictxt , vg , info )
subroutine hash_init_vg ( idxmap , ictxt , vg , info )
use psb_penv_mod
use psb_penv_mod
use psb_error_mod
use psb_error_mod
implicit none
implicit none
class ( psb_hash_map ) , intent ( inout ) :: idxmap
class ( psb_hash_map ) , intent ( inout ) :: idxmap
integer ( psb_ipk_ ) , intent ( in ) :: ictxt , vg ( : )
integer ( psb_mpik_ ) , intent ( in ) :: ictxt
integer ( psb_ipk_ ) , intent ( in ) :: vg ( : )
integer ( psb_ipk_ ) , intent ( out ) :: info
integer ( psb_ipk_ ) , intent ( out ) :: info
! To be implemented
! To be implemented
integer ( psb_ipk_ ) :: iam , np , i , j , nl , n , int_err ( 5 )
integer ( psb_mpik_ ) :: iam , np
integer ( psb_ipk_ ) :: i , j , nl , n , int_err ( 5 )
integer ( psb_ipk_ ) , allocatable :: vlu ( : )
integer ( psb_ipk_ ) , allocatable :: vlu ( : )
info = 0
info = 0
@ -751,20 +758,22 @@ subroutine hash_init_vg(idxmap,ictxt,vg,info)
call hash_init_vlu ( idxmap , ictxt , n , nl , vlu , info )
call hash_init_vlu ( idxmap , ictxt , n , nl , vlu , info )
end subroutine hash_init_vg
end subroutine hash_init_vg
subroutine hash_init_vlu ( idxmap , ictxt , ntot , nl , vlu , info )
subroutine hash_init_vlu ( idxmap , ictxt , ntot , nl , vlu , info )
use psb_penv_mod
use psb_penv_mod
use psb_error_mod
use psb_error_mod
use psb_sort_mod
use psb_sort_mod
use psb_realloc_mod
use psb_realloc_mod
implicit none
implicit none
class ( psb_hash_map ) , intent ( inout ) :: idxmap
class ( psb_hash_map ) , intent ( inout ) :: idxmap
integer ( psb_ipk_ ) , intent ( in ) :: ictxt , vlu ( : ) , nl , ntot
integer ( psb_mpik_ ) , intent ( in ) :: ictxt
integer ( psb_ipk_ ) , intent ( in ) :: vlu ( : ) , nl , ntot
integer ( psb_ipk_ ) , intent ( out ) :: info
integer ( psb_ipk_ ) , intent ( out ) :: info
! To be implemented
! To be implemented
integer ( psb_ipk_ ) :: iam , np , i , j , lc2 , nlu , m , nrt , int_err ( 5 )
integer ( psb_mpik_ ) :: iam , np
integer ( psb_ipk_ ) :: i , j , lc2 , nlu , m , nrt , int_err ( 5 )
character ( len = 20 ) , parameter :: name = 'hash_map_init_vlu'
character ( len = 20 ) , parameter :: name = 'hash_map_init_vlu'
info = 0
info = 0
@ -804,11 +813,11 @@ subroutine hash_init_vlu(idxmap,ictxt,ntot,nl,vlu,info)
call hash_bld_g2l_map ( idxmap , info )
call hash_bld_g2l_map ( idxmap , info )
call idxmap % set_state ( psb_desc_bld_ )
call idxmap % set_state ( psb_desc_bld_ )
end subroutine hash_init_vlu
end subroutine hash_init_vlu
subroutine hash_bld_g2l_map ( idxmap , info )
subroutine hash_bld_g2l_map ( idxmap , info )
use psb_penv_mod
use psb_penv_mod
use psb_error_mod
use psb_error_mod
use psb_sort_mod
use psb_sort_mod
@ -817,7 +826,8 @@ subroutine hash_bld_g2l_map(idxmap,info)
class ( psb_hash_map ) , intent ( inout ) :: idxmap
class ( psb_hash_map ) , intent ( inout ) :: idxmap
integer ( psb_ipk_ ) , intent ( out ) :: info
integer ( psb_ipk_ ) , intent ( out ) :: info
! To be implemented
! To be implemented
integer ( psb_ipk_ ) :: ictxt , iam , np , i , j , m , nl
integer ( psb_mpik_ ) :: ictxt , iam , np
integer ( psb_ipk_ ) :: i , j , m , nl
integer ( psb_ipk_ ) :: key , ih , nh , idx , nbits , hsize , hmask
integer ( psb_ipk_ ) :: key , ih , nh , idx , nbits , hsize , hmask
character ( len = 20 ) , parameter :: name = 'hash_map_init_vlu'
character ( len = 20 ) , parameter :: name = 'hash_map_init_vlu'
@ -857,7 +867,7 @@ subroutine hash_bld_g2l_map(idxmap,info)
idxmap % hashvmask = hmask
idxmap % hashvmask = hmask
if ( info == psb_success_ ) &
if ( info == psb_success_ ) &
& call psb_realloc ( hsize + 1 , idxmap % hashv , info , lb = 0 )
& call psb_realloc ( hsize + 1 , idxmap % hashv , info , lb = 0 _psb_ipk_ )
if ( info / = psb_success_ ) then
if ( info / = psb_success_ ) then
! ! $ ch_err = 'psb_realloc'
! ! $ ch_err = 'psb_realloc'
! ! $ call psb_errpush ( info , name , a_err = ch_err )
! ! $ call psb_errpush ( info , name , a_err = ch_err )
@ -907,10 +917,10 @@ subroutine hash_bld_g2l_map(idxmap,info)
end if
end if
end do
end do
end subroutine hash_bld_g2l_map
end subroutine hash_bld_g2l_map
subroutine hash_asb ( idxmap , info )
subroutine hash_asb ( idxmap , info )
use psb_penv_mod
use psb_penv_mod
use psb_error_mod
use psb_error_mod
use psb_realloc_mod
use psb_realloc_mod
@ -919,7 +929,8 @@ subroutine hash_asb(idxmap,info)
class ( psb_hash_map ) , intent ( inout ) :: idxmap
class ( psb_hash_map ) , intent ( inout ) :: idxmap
integer ( psb_ipk_ ) , intent ( out ) :: info
integer ( psb_ipk_ ) , intent ( out ) :: info
integer ( psb_ipk_ ) :: nhal , ictxt , iam , np
integer ( psb_mpik_ ) :: ictxt , iam , np
integer ( psb_ipk_ ) :: nhal
info = 0
info = 0
ictxt = idxmap % get_ctxt ( )
ictxt = idxmap % get_ctxt ( )
@ -942,16 +953,16 @@ subroutine hash_asb(idxmap,info)
call idxmap % set_state ( psb_desc_asb_ )
call idxmap % set_state ( psb_desc_asb_ )
end subroutine hash_asb
end subroutine hash_asb
function hash_get_fmt ( ) result ( res )
function hash_get_fmt ( ) result ( res )
implicit none
implicit none
character ( len = 5 ) :: res
character ( len = 5 ) :: res
res = 'HASH'
res = 'HASH'
end function hash_get_fmt
end function hash_get_fmt
subroutine hash_inner_cnvs1 ( x , hashmask , hashv , glb_lc , nrm )
subroutine hash_inner_cnvs1 ( x , hashmask , hashv , glb_lc , nrm )
integer ( psb_ipk_ ) , intent ( in ) :: hashmask , hashv ( 0 : ) , glb_lc ( : , : )
integer ( psb_ipk_ ) , intent ( in ) :: hashmask , hashv ( 0 : ) , glb_lc ( : , : )
integer ( psb_ipk_ ) , intent ( inout ) :: x
integer ( psb_ipk_ ) , intent ( inout ) :: x
@ -996,9 +1007,9 @@ subroutine hash_inner_cnvs1(x,hashmask,hashv,glb_lc,nrm)
else
else
x = tmp
x = tmp
end if
end if
end subroutine hash_inner_cnvs1
end subroutine hash_inner_cnvs1
subroutine hash_inner_cnvs2 ( x , y , hashmask , hashv , glb_lc , nrm )
subroutine hash_inner_cnvs2 ( x , y , hashmask , hashv , glb_lc , nrm )
integer ( psb_ipk_ ) , intent ( in ) :: hashmask , hashv ( 0 : ) , glb_lc ( : , : )
integer ( psb_ipk_ ) , intent ( in ) :: hashmask , hashv ( 0 : ) , glb_lc ( : , : )
integer ( psb_ipk_ ) , intent ( in ) :: x
integer ( psb_ipk_ ) , intent ( in ) :: x
integer ( psb_ipk_ ) , intent ( out ) :: y
integer ( psb_ipk_ ) , intent ( out ) :: y
@ -1043,10 +1054,10 @@ subroutine hash_inner_cnvs2(x,y,hashmask,hashv,glb_lc,nrm)
else
else
y = tmp
y = tmp
end if
end if
end subroutine hash_inner_cnvs2
end subroutine hash_inner_cnvs2
subroutine hash_inner_cnv1 ( n , x , hashmask , hashv , glb_lc , mask , nrm )
subroutine hash_inner_cnv1 ( n , x , hashmask , hashv , glb_lc , mask , nrm )
integer ( psb_ipk_ ) , intent ( in ) :: n , hashmask , hashv ( 0 : ) , glb_lc ( : , : )
integer ( psb_ipk_ ) , intent ( in ) :: n , hashmask , hashv ( 0 : ) , glb_lc ( : , : )
logical , intent ( in ) , optional :: mask ( : )
logical , intent ( in ) , optional :: mask ( : )
integer ( psb_ipk_ ) , intent ( in ) , optional :: nrm
integer ( psb_ipk_ ) , intent ( in ) , optional :: nrm
@ -1135,9 +1146,9 @@ subroutine hash_inner_cnv1(n,x,hashmask,hashv,glb_lc,mask,nrm)
end if
end if
end do
end do
end if
end if
end subroutine hash_inner_cnv1
end subroutine hash_inner_cnv1
subroutine hash_inner_cnv2 ( n , x , y , hashmask , hashv , glb_lc , mask , nrm )
subroutine hash_inner_cnv2 ( n , x , y , hashmask , hashv , glb_lc , mask , nrm )
integer ( psb_ipk_ ) , intent ( in ) :: n , hashmask , hashv ( 0 : ) , glb_lc ( : , : )
integer ( psb_ipk_ ) , intent ( in ) :: n , hashmask , hashv ( 0 : ) , glb_lc ( : , : )
logical , intent ( in ) , optional :: mask ( : )
logical , intent ( in ) , optional :: mask ( : )
integer ( psb_ipk_ ) , intent ( in ) , optional :: nrm
integer ( psb_ipk_ ) , intent ( in ) , optional :: nrm
@ -1235,7 +1246,7 @@ subroutine hash_inner_cnv2(n,x,y,hashmask,hashv,glb_lc,mask,nrm)
end if
end if
end do
end do
end if
end if
end subroutine hash_inner_cnv2
end subroutine hash_inner_cnv2
subroutine hash_clone ( idxmap , outmap , info )
subroutine hash_clone ( idxmap , outmap , info )