mirror of
https://github.com/sfilippone/amg4psblas.git
synced 2026-10-18 20:02:31 +00:00
mld2p4-2:
mlprec/Makefile mlprec/mld_c_mumps_solver.F90 mlprec/mld_d_mumps_solver.F90 mlprec/mld_s_mumps_solver.F90 mlprec/mld_z_mumps_solver.F90 Merge MUMPS changes
This commit is contained in:
+22
-21
@@ -10,23 +10,27 @@ FINCLUDES=$(FMFLAG). $(FMFLAG)$(LIBDIR) $(FMFLAG)$(PSBINCDIR) $(FMFLAG)$(PSBLIBD
|
||||
|
||||
DMODOBJS=mld_d_prec_type.o mld_d_ilu_fact_mod.o \
|
||||
mld_d_inner_mod.o mld_d_ilu_solver.o mld_d_diag_solver.o mld_d_jac_smoother.o mld_d_as_smoother.o \
|
||||
mld_d_umf_solver.o mld_d_slu_solver.o mld_d_sludist_solver.o mld_d_id_solver.o mld_d_mumps_solver.o\
|
||||
mld_d_base_solver_mod.o mld_d_base_smoother_mod.o mld_d_onelev_mod.o mld_d_mumps_solver.o mld_d_gs_solver.o
|
||||
mld_d_umf_solver.o mld_d_slu_solver.o mld_d_sludist_solver.o mld_d_id_solver.o\
|
||||
mld_d_base_solver_mod.o mld_d_base_smoother_mod.o mld_d_onelev_mod.o \
|
||||
mld_d_gs_solver.o mld_d_mumps_solver.o
|
||||
|
||||
SMODOBJS=mld_s_prec_type.o mld_s_ilu_fact_mod.o \
|
||||
mld_s_inner_mod.o mld_s_ilu_solver.o mld_s_diag_solver.o mld_s_jac_smoother.o mld_s_as_smoother.o \
|
||||
mld_s_slu_solver.o mld_s_sludist_solver.o mld_s_id_solver.o mld_s_mumps_solver.o\
|
||||
mld_s_base_solver_mod.o mld_s_base_smoother_mod.o mld_s_onelev_mod.o mld_s_mumps_solver.o mld_s_gs_solver.o
|
||||
mld_s_slu_solver.o mld_s_sludist_solver.o mld_s_id_solver.o\
|
||||
mld_s_base_solver_mod.o mld_s_base_smoother_mod.o mld_s_onelev_mod.o \
|
||||
mld_s_gs_solver.o mld_s_mumps_solver.o
|
||||
|
||||
ZMODOBJS=mld_z_prec_type.o mld_z_ilu_fact_mod.o \
|
||||
mld_z_inner_mod.o mld_z_ilu_solver.o mld_z_diag_solver.o mld_z_jac_smoother.o mld_z_as_smoother.o \
|
||||
mld_z_umf_solver.o mld_z_slu_solver.o mld_z_sludist_solver.o mld_z_id_solver.o\
|
||||
mld_z_base_solver_mod.o mld_z_base_smoother_mod.o mld_z_onelev_mod.o mld_z_mumps_solver.o mld_z_gs_solver.o
|
||||
mld_z_base_solver_mod.o mld_z_base_smoother_mod.o mld_z_onelev_mod.o \
|
||||
mld_z_gs_solver.o mld_z_mumps_solver.o
|
||||
|
||||
CMODOBJS=mld_c_prec_type.o mld_c_ilu_fact_mod.o \
|
||||
mld_c_inner_mod.o mld_c_ilu_solver.o mld_c_diag_solver.o mld_c_jac_smoother.o mld_c_as_smoother.o \
|
||||
mld_c_slu_solver.o mld_c_sludist_solver.o mld_c_id_solver.o mld_c_mumps_solver.o\
|
||||
mld_c_base_solver_mod.o mld_c_base_smoother_mod.o mld_c_onelev_mod.o mld_c_gs_solver.o mld_c_gs_solver.o
|
||||
mld_c_slu_solver.o mld_c_sludist_solver.o mld_c_id_solver.o\
|
||||
mld_c_base_solver_mod.o mld_c_base_smoother_mod.o mld_c_onelev_mod.o \
|
||||
mld_c_gs_solver.o mld_c_mumps_solver.o
|
||||
|
||||
|
||||
|
||||
@@ -53,6 +57,7 @@ lib: $(OBJS) impld
|
||||
|
||||
|
||||
$(MODOBJS): $(PSBINCDIR)/$(BASEMODNAME)$(.mod)
|
||||
|
||||
mld_base_prec_type.o: mld_const.h
|
||||
mld_s_prec_type.o mld_d_prec_type.o mld_c_prec_type.o mld_z_prec_type.o : mld_base_prec_type.o
|
||||
mld_prec_type.o: mld_s_prec_type.o mld_d_prec_type.o mld_c_prec_type.o mld_z_prec_type.o
|
||||
@@ -92,9 +97,8 @@ mld_z_base_smoother_mod.o: mld_z_base_solver_mod.o
|
||||
|
||||
mld_s_base_solver_mod.o mld_d_base_solver_mod.o mld_c_base_solver_mod.o mld_z_base_solver_mod.o: mld_base_prec_type.o
|
||||
|
||||
mld_d_gs_solver.o mld_d_id_solver.o mld_d_sludist_solver.o mld_d_slu_solver.o \
|
||||
mld_d_umf_solver.o mld_d_diag_solver.o mld_d_ilu_solver.o: mld_d_base_solver_mod.o mld_d_prec_type.o
|
||||
mld_d_mumps_solver.o: mld_d_base_solver_mod.o mld_d_prec_type.o
|
||||
mld_d_mumps_solver.o mld_d_gs_solver.o mld_d_id_solver.o mld_d_sludist_solver.o mld_d_slu_solver.o \
|
||||
mld_d_umf_solver.o mld_d_diag_solver.o mld_d_ilu_solver.o: mld_d_base_solver_mod.o mld_d_prec_type.o
|
||||
|
||||
mld_d_ilu_fact_mod.o: mld_base_prec_type.o mld_d_base_solver_mod.o
|
||||
mld_d_ilu_solver.o mld_d_iluk_fact.o: mld_d_ilu_fact_mod.o
|
||||
@@ -102,39 +106,36 @@ mld_d_as_smoother.o mld_d_jac_smoother.o: mld_d_base_smoother_mod.o
|
||||
mld_d_jac_smoother.o: mld_d_diag_solver.o
|
||||
mld_dprecinit.o mld_dprecset.o: mld_d_diag_solver.o mld_d_ilu_solver.o \
|
||||
mld_d_umf_solver.o mld_d_as_smoother.o mld_d_jac_smoother.o \
|
||||
mld_d_id_solver.o mld_d_slu_solver.o mld_d_sludist_solver.o mld_d_mumps_solver.o
|
||||
mld_d_id_solver.o mld_d_slu_solver.o mld_d_sludist_solver.o
|
||||
|
||||
mld_s_gs_solver.o mld_s_id_solver.o mld_s_sludist_solver.o mld_s_slu_solver.o \
|
||||
mld_s_diag_solver.o mld_s_ilu_solver.o: mld_s_base_solver_mod.o mld_s_prec_type.o
|
||||
mld_s_mumps_solver.o: mld_s_base_solver_mod.o mld_s_prec_type.o
|
||||
mld_s_mumps_solver.o mld_s_gs_solver.o mld_s_id_solver.o mld_s_sludist_solver.o mld_s_slu_solver.o \
|
||||
mld_s_diag_solver.o mld_s_ilu_solver.o: mld_s_base_solver_mod.o mld_s_prec_type.o
|
||||
mld_s_ilu_fact_mod.o: mld_base_prec_type.o mld_s_base_solver_mod.o
|
||||
mld_s_ilu_solver.o mld_s_iluk_fact.o: mld_s_ilu_fact_mod.o
|
||||
mld_s_as_smoother.o mld_s_jac_smoother.o: mld_s_base_smoother_mod.o
|
||||
mld_s_jac_smoother.o: mld_s_diag_solver.o
|
||||
mld_sprecinit.o mld_sprecset.o: mld_s_diag_solver.o mld_s_ilu_solver.o \
|
||||
mld_s_as_smoother.o mld_s_jac_smoother.o \
|
||||
mld_s_id_solver.o mld_s_slu_solver.o mld_s_sludist_solver.o mld_s_mumps_solver.o
|
||||
mld_s_id_solver.o mld_s_slu_solver.o mld_s_sludist_solver.o
|
||||
|
||||
mld_z_gs_solver.o mld_z_id_solver.o mld_z_sludist_solver.o mld_z_slu_solver.o \
|
||||
mld_z_mumps_solver.o mld_z_gs_solver.o mld_z_id_solver.o mld_z_sludist_solver.o mld_z_slu_solver.o \
|
||||
mld_z_umf_solver.o mld_z_diag_solver.o mld_z_ilu_solver.o: mld_z_base_solver_mod.o mld_z_prec_type.o
|
||||
mld_z_mumps_solver.o: mld_z_base_solver_mod.o mld_z_prec_type.o
|
||||
mld_z_ilu_fact_mod.o: mld_base_prec_type.o mld_z_base_solver_mod.o
|
||||
mld_z_ilu_solver.o mld_z_iluk_fact.o: mld_z_ilu_fact_mod.o
|
||||
mld_z_as_smoother.o mld_z_jac_smoother.o: mld_z_base_smoother_mod.o
|
||||
mld_z_jac_smoother.o: mld_z_diag_solver.o
|
||||
mld_zprecinit.o mld_zprecset.o: mld_z_diag_solver.o mld_z_ilu_solver.o \
|
||||
mld_z_umf_solver.o mld_z_as_smoother.o mld_z_jac_smoother.o \
|
||||
mld_z_id_solver.o mld_z_slu_solver.o mld_z_sludist_solver.o mld_z_mumps_solver.o
|
||||
mld_z_id_solver.o mld_z_slu_solver.o mld_z_sludist_solver.o
|
||||
|
||||
mld_c_gs_solver.o mld_c_id_solver.o mld_c_sludist_solver.o mld_c_slu_solver.o \
|
||||
mld_c_mumps_solver.o mld_c_gs_solver.o mld_c_id_solver.o mld_c_sludist_solver.o mld_c_slu_solver.o \
|
||||
mld_c_diag_solver.o mld_c_ilu_solver.o: mld_c_base_solver_mod.o mld_c_prec_type.o
|
||||
mld_c_mumps_solver.o: mld_c_base_solver_mod.o mld_c_prec_type.o
|
||||
mld_c_ilu_fact_mod.o: mld_base_prec_type.o mld_c_base_solver_mod.o
|
||||
mld_c_ilu_solver.o mld_c_iluk_fact.o: mld_c_ilu_fact_mod.o
|
||||
mld_c_as_smoother.o mld_c_jac_smoother.o: mld_c_base_smoother_mod.o
|
||||
mld_c_jac_smoother.o: mld_c_diag_solver.o
|
||||
mld_cprecinit.o mld_cprecset.o: mld_c_diag_solver.o mld_c_ilu_solver.o \
|
||||
mld_c_as_smoother.o mld_c_jac_smoother.o mld_c_mumps_solver.o\
|
||||
mld_c_as_smoother.o mld_c_jac_smoother.o \
|
||||
mld_c_id_solver.o mld_c_slu_solver.o mld_c_sludist_solver.o
|
||||
|
||||
|
||||
|
||||
@@ -270,6 +270,7 @@ contains
|
||||
info = psb_success_
|
||||
call psb_erractionsave(err_act)
|
||||
select case(what)
|
||||
#if defined(HAVE_MUMPS_)
|
||||
case(mld_as_sequential_)
|
||||
sv%ipar(1)=val
|
||||
case(mld_mumps_print_err_)
|
||||
@@ -280,6 +281,7 @@ contains
|
||||
!case(mld_print_glob_)
|
||||
! sv%id%icntl(3)=val
|
||||
! sv%ipar(3)=val
|
||||
#endif
|
||||
case default
|
||||
call sv%mld_c_base_solver_type%set(what,val,info)
|
||||
end select
|
||||
@@ -345,10 +347,12 @@ contains
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
select case(psb_toupper(what))
|
||||
#if defined(HAVE_MUMPS_)
|
||||
case('SET_AS_SEQUENTIAL')
|
||||
iwhat=mld_as_sequential_
|
||||
case('SET_MUMPS_PRINT_ERR')
|
||||
iwhat=mld_mumps_print_err_
|
||||
#endif
|
||||
case default
|
||||
iwhat=-1
|
||||
end select
|
||||
@@ -380,7 +384,7 @@ contains
|
||||
real(psb_spk_), intent(in) :: val
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
integer(psb_ipk_) :: err_act, iwhat
|
||||
character(len=20) :: name='z_mumps_solver_csetr'
|
||||
character(len=20) :: name='c_mumps_solver_csetr'
|
||||
|
||||
info = psb_success_
|
||||
call psb_erractionsave(err_act)
|
||||
@@ -422,6 +426,7 @@ contains
|
||||
info = psb_success_
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
#if defined(HAVE_MUMPS_)
|
||||
if (.not.allocated(sv%id)) then
|
||||
allocate(sv%id,stat=info)
|
||||
if (info /= psb_success_) then
|
||||
@@ -432,7 +437,7 @@ contains
|
||||
sv%built=.false.
|
||||
end if
|
||||
|
||||
!INSTANCIATION OF sv%id needed to set parmater but mpi communicator needed
|
||||
! INSTANTIATION OF sv%id needed to set parmater but mpi communicator needed
|
||||
! sv%id%job = -1
|
||||
! sv%id%par=1
|
||||
! call dmumps(sv%id)
|
||||
@@ -441,7 +446,7 @@ contains
|
||||
!sv%ipar(11)=0
|
||||
!sv%ipar(12)=6
|
||||
|
||||
|
||||
#endif
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
|
||||
@@ -138,7 +138,7 @@ module mld_d_mumps_solver
|
||||
subroutine d_mumps_solver_bld(a,desc_a,sv,upd,info,b,amold,vmold,imold)
|
||||
|
||||
use mpi
|
||||
import :: psb_desc_type, mld_d_mumps_solver_type, psb_d_vect_type, psb_spk_, &
|
||||
import :: psb_desc_type, mld_d_mumps_solver_type, psb_d_vect_type, psb_dpk_, &
|
||||
& psb_dspmat_type, psb_d_base_sparse_mat, psb_d_base_vect_type,&
|
||||
& psb_ipk_, psb_i_base_vect_type
|
||||
|
||||
@@ -270,6 +270,7 @@ contains
|
||||
info = psb_success_
|
||||
call psb_erractionsave(err_act)
|
||||
select case(what)
|
||||
#if defined(HAVE_MUMPS_)
|
||||
case(mld_as_sequential_)
|
||||
sv%ipar(1)=val
|
||||
case(mld_mumps_print_err_)
|
||||
@@ -280,6 +281,7 @@ contains
|
||||
!case(mld_print_glob_)
|
||||
! sv%id%icntl(3)=val
|
||||
! sv%ipar(3)=val
|
||||
#endif
|
||||
case default
|
||||
call sv%mld_d_base_solver_type%set(what,val,info)
|
||||
end select
|
||||
@@ -345,10 +347,12 @@ contains
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
select case(psb_toupper(what))
|
||||
#if defined(HAVE_MUMPS_)
|
||||
case('SET_AS_SEQUENTIAL')
|
||||
iwhat=mld_as_sequential_
|
||||
case('SET_MUMPS_PRINT_ERR')
|
||||
iwhat=mld_mumps_print_err_
|
||||
#endif
|
||||
case default
|
||||
iwhat=-1
|
||||
end select
|
||||
@@ -380,7 +384,7 @@ contains
|
||||
real(psb_dpk_), intent(in) :: val
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
integer(psb_ipk_) :: err_act, iwhat
|
||||
character(len=20) :: name='z_mumps_solver_csetr'
|
||||
character(len=20) :: name='d_mumps_solver_csetr'
|
||||
|
||||
info = psb_success_
|
||||
call psb_erractionsave(err_act)
|
||||
@@ -422,6 +426,7 @@ contains
|
||||
info = psb_success_
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
#if defined(HAVE_MUMPS_)
|
||||
if (.not.allocated(sv%id)) then
|
||||
allocate(sv%id,stat=info)
|
||||
if (info /= psb_success_) then
|
||||
@@ -432,7 +437,7 @@ contains
|
||||
sv%built=.false.
|
||||
end if
|
||||
|
||||
!INSTANCIATION OF sv%id needed to set parmater but mpi communicator needed
|
||||
! INSTANTIATION OF sv%id needed to set parmater but mpi communicator needed
|
||||
! sv%id%job = -1
|
||||
! sv%id%par=1
|
||||
! call dmumps(sv%id)
|
||||
@@ -441,7 +446,7 @@ contains
|
||||
!sv%ipar(11)=0
|
||||
!sv%ipar(12)=6
|
||||
|
||||
|
||||
#endif
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
@@ -465,7 +470,7 @@ contains
|
||||
#if defined(HAVE_MUMPS_)
|
||||
val = (sv%id%INFOG(22)+sv%id%INFOG(32))*1d+6
|
||||
#else
|
||||
val = 0
|
||||
val = 0
|
||||
#endif
|
||||
! val = 2*psb_sizeof_int + psb_sizeof_dp
|
||||
! val = val + sv%symbsize
|
||||
|
||||
@@ -72,7 +72,7 @@ module mld_s_mumps_solver
|
||||
procedure, pass(sv) :: sizeof => s_mumps_solver_sizeof
|
||||
procedure, pass(sv) :: seti => s_mumps_solver_seti
|
||||
procedure, pass(sv) :: setr => s_mumps_solver_setr
|
||||
procedure, pass(sv) :: cseti => s_mumps_solver_cseti
|
||||
procedure, pass(sv) :: cseti =>s_mumps_solver_cseti
|
||||
procedure, pass(sv) :: csetr => s_mumps_solver_csetr
|
||||
procedure, pass(sv) :: default => s_mumps_solver_default
|
||||
#if defined(HAVE_FINAL)
|
||||
@@ -94,7 +94,7 @@ module mld_s_mumps_solver
|
||||
|
||||
interface
|
||||
subroutine s_mumps_solver_apply_vect(alpha,sv,x,beta,y,desc_data,trans,work,info)
|
||||
import :: psb_desc_type, mld_s_mumps_solver_type, psb_s_vect_type, psb_spk_, &
|
||||
import :: psb_desc_type, mld_s_mumps_solver_type, psb_s_vect_type, psb_dpk_, psb_spk_, &
|
||||
& psb_sspmat_type, psb_s_base_sparse_mat, psb_s_base_vect_type, psb_ipk_
|
||||
implicit none
|
||||
type(psb_desc_type), intent(in) :: desc_data
|
||||
@@ -106,14 +106,14 @@ module mld_s_mumps_solver
|
||||
real(psb_spk_),target, intent(inout) :: work(:)
|
||||
integer, intent(out) :: info
|
||||
|
||||
integer :: err_act
|
||||
integer(psb_ipk_) :: err_act
|
||||
character(len=20) :: name='s_mumps_solver_apply_vect'
|
||||
end subroutine s_mumps_solver_apply_vect
|
||||
end interface
|
||||
|
||||
interface
|
||||
subroutine s_mumps_solver_apply(alpha,sv,x,beta,y,desc_data,trans,work,info)
|
||||
import :: psb_desc_type, mld_s_mumps_solver_type, psb_s_vect_type, psb_spk_, &
|
||||
import :: psb_desc_type, mld_s_mumps_solver_type, psb_s_vect_type, psb_dpk_, psb_spk_, &
|
||||
& psb_sspmat_type, psb_s_base_sparse_mat, psb_s_base_vect_type, psb_ipk_
|
||||
implicit none
|
||||
type(psb_desc_type), intent(in) :: desc_data
|
||||
@@ -123,12 +123,12 @@ module mld_s_mumps_solver
|
||||
real(psb_spk_),intent(in) :: alpha,beta
|
||||
character(len=1),intent(in) :: trans
|
||||
real(psb_spk_),target, intent(inout) :: work(:)
|
||||
integer, intent(out) :: info
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
|
||||
integer :: n_row, n_col, nglob
|
||||
integer(psb_ipk_) :: n_row, n_col, nglob
|
||||
real(psb_spk_), pointer :: ww(:)
|
||||
real(psb_spk_), allocatable, target :: gx(:)
|
||||
integer :: ictxt,np,me,i, err_act
|
||||
integer(psb_ipk_) :: ictxt,np,me,i, err_act
|
||||
character :: trans_
|
||||
character(len=20) :: name='s_mumps_solver_apply'
|
||||
end subroutine s_mumps_solver_apply
|
||||
@@ -138,7 +138,7 @@ module mld_s_mumps_solver
|
||||
subroutine s_mumps_solver_bld(a,desc_a,sv,upd,info,b,amold,vmold,imold)
|
||||
|
||||
use mpi
|
||||
import :: psb_desc_type, mld_s_mumps_solver_type, psb_s_vect_type, psb_spk_, psb_dpk_, &
|
||||
import :: psb_desc_type, mld_s_mumps_solver_type, psb_s_vect_type, psb_spk_, &
|
||||
& psb_sspmat_type, psb_s_base_sparse_mat, psb_s_base_vect_type,&
|
||||
& psb_ipk_, psb_i_base_vect_type
|
||||
|
||||
@@ -149,7 +149,7 @@ module mld_s_mumps_solver
|
||||
Type(psb_desc_type), Intent(in) :: desc_a
|
||||
class(mld_s_mumps_solver_type), intent(inout) :: sv
|
||||
character, intent(in) :: upd
|
||||
integer, intent(out) :: info
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
type(psb_sspmat_type), intent(in), target, optional :: b
|
||||
class(psb_s_base_sparse_mat), intent(in), optional :: amold
|
||||
class(psb_s_base_vect_type), intent(in), optional :: vmold
|
||||
@@ -165,8 +165,8 @@ contains
|
||||
|
||||
! Arguments
|
||||
class(mld_s_mumps_solver_type), intent(inout) :: sv
|
||||
integer, intent(out) :: info
|
||||
Integer :: err_act
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
Integer(psb_ipk_) :: err_act
|
||||
character(len=20) :: name='s_mumps_solver_free'
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
@@ -218,15 +218,15 @@ contains
|
||||
|
||||
! Arguments
|
||||
class(mld_s_mumps_solver_type), intent(in) :: sv
|
||||
integer, intent(out) :: info
|
||||
integer, intent(in), optional :: iout
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
integer(psb_ipk_), intent(in), optional :: iout
|
||||
logical, intent(in), optional :: coarse
|
||||
|
||||
! Local variables
|
||||
integer :: err_act
|
||||
integer :: ictxt, me, np
|
||||
character(len=20), parameter :: name='mld_s_mumps_solver_descr'
|
||||
integer :: iout_
|
||||
integer(psb_ipk_) :: err_act
|
||||
integer(psb_ipk_) :: ictxt, me, np
|
||||
character(len=20), parameter :: name='mld_z_mumps_solver_descr'
|
||||
integer(psb_ipk_) :: iout_
|
||||
|
||||
call psb_erractionsave(err_act)
|
||||
info = psb_success_
|
||||
@@ -265,11 +265,12 @@ contains
|
||||
integer(psb_ipk_), intent(in) :: val
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
integer(psb_ipk_) :: err_act
|
||||
character(len=20) :: name='s_mumps_solver_seti'
|
||||
character(len=20) :: name='z_mumps_solver_seti'
|
||||
|
||||
info = psb_success_
|
||||
call psb_erractionsave(err_act)
|
||||
select case(what)
|
||||
#if defined(HAVE_MUMPS_)
|
||||
case(mld_as_sequential_)
|
||||
sv%ipar(1)=val
|
||||
case(mld_mumps_print_err_)
|
||||
@@ -280,6 +281,7 @@ contains
|
||||
!case(mld_print_glob_)
|
||||
! sv%id%icntl(3)=val
|
||||
! sv%ipar(3)=val
|
||||
#endif
|
||||
case default
|
||||
call sv%mld_s_base_solver_type%set(what,val,info)
|
||||
end select
|
||||
@@ -307,7 +309,7 @@ contains
|
||||
real(psb_spk_), intent(in) :: val
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
integer(psb_ipk_) :: err_act
|
||||
character(len=20) :: name='s_mumps_solver_setr'
|
||||
character(len=20) :: name='z_mumps_solver_setr'
|
||||
|
||||
info = psb_success_
|
||||
call psb_erractionsave(err_act)
|
||||
@@ -345,10 +347,12 @@ contains
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
select case(psb_toupper(what))
|
||||
#if defined(HAVE_MUMPS_)
|
||||
case('SET_AS_SEQUENTIAL')
|
||||
iwhat=mld_as_sequential_
|
||||
case('SET_MUMPS_PRINT_ERR')
|
||||
iwhat=mld_mumps_print_err_
|
||||
#endif
|
||||
case default
|
||||
iwhat=-1
|
||||
end select
|
||||
@@ -377,7 +381,7 @@ contains
|
||||
! Arguments
|
||||
class(mld_s_mumps_solver_type), intent(inout) :: sv
|
||||
character(len=*), intent(in) :: what
|
||||
real(psb_spk_), intent(in) :: val
|
||||
real(psb_spk_), intent(in) :: val
|
||||
integer(psb_ipk_), intent(out) :: info
|
||||
integer(psb_ipk_) :: err_act, iwhat
|
||||
character(len=20) :: name='s_mumps_solver_csetr'
|
||||
@@ -422,6 +426,7 @@ contains
|
||||
info = psb_success_
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
#if defined(HAVE_MUMPS_)
|
||||
if (.not.allocated(sv%id)) then
|
||||
allocate(sv%id,stat=info)
|
||||
if (info /= psb_success_) then
|
||||
@@ -432,7 +437,7 @@ contains
|
||||
sv%built=.false.
|
||||
end if
|
||||
|
||||
!INSTANCIATION OF sv%id needed to set parmater but mpi communicator needed
|
||||
! INSTANTIATION OF sv%id needed to set parmater but mpi communicator needed
|
||||
! sv%id%job = -1
|
||||
! sv%id%par=1
|
||||
! call dmumps(sv%id)
|
||||
@@ -441,7 +446,7 @@ contains
|
||||
!sv%ipar(11)=0
|
||||
!sv%ipar(12)=6
|
||||
|
||||
|
||||
#endif
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
@@ -465,7 +470,7 @@ contains
|
||||
#if defined(HAVE_MUMPS_)
|
||||
val = (sv%id%INFOG(22)+sv%id%INFOG(32))*1d+6
|
||||
#else
|
||||
val = 0
|
||||
val = 0
|
||||
#endif
|
||||
! val = 2*psb_sizeof_int + psb_sizeof_dp
|
||||
! val = val + sv%symbsize
|
||||
|
||||
@@ -94,7 +94,7 @@ module mld_z_mumps_solver
|
||||
|
||||
interface
|
||||
subroutine z_mumps_solver_apply_vect(alpha,sv,x,beta,y,desc_data,trans,work,info)
|
||||
import :: psb_desc_type, mld_z_mumps_solver_type, psb_z_vect_type, psb_dpk_, &
|
||||
import :: psb_desc_type, mld_z_mumps_solver_type, psb_z_vect_type, psb_dpk_, psb_spk_, &
|
||||
& psb_zspmat_type, psb_z_base_sparse_mat, psb_z_base_vect_type, psb_ipk_
|
||||
implicit none
|
||||
type(psb_desc_type), intent(in) :: desc_data
|
||||
@@ -113,7 +113,7 @@ module mld_z_mumps_solver
|
||||
|
||||
interface
|
||||
subroutine z_mumps_solver_apply(alpha,sv,x,beta,y,desc_data,trans,work,info)
|
||||
import :: psb_desc_type, mld_z_mumps_solver_type, psb_z_vect_type, psb_dpk_, &
|
||||
import :: psb_desc_type, mld_z_mumps_solver_type, psb_z_vect_type, psb_dpk_, psb_spk_, &
|
||||
& psb_zspmat_type, psb_z_base_sparse_mat, psb_z_base_vect_type, psb_ipk_
|
||||
implicit none
|
||||
type(psb_desc_type), intent(in) :: desc_data
|
||||
@@ -270,6 +270,7 @@ contains
|
||||
info = psb_success_
|
||||
call psb_erractionsave(err_act)
|
||||
select case(what)
|
||||
#if defined(HAVE_MUMPS_)
|
||||
case(mld_as_sequential_)
|
||||
sv%ipar(1)=val
|
||||
case(mld_mumps_print_err_)
|
||||
@@ -280,6 +281,7 @@ contains
|
||||
!case(mld_print_glob_)
|
||||
! sv%id%icntl(3)=val
|
||||
! sv%ipar(3)=val
|
||||
#endif
|
||||
case default
|
||||
call sv%mld_z_base_solver_type%set(what,val,info)
|
||||
end select
|
||||
@@ -345,10 +347,12 @@ contains
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
select case(psb_toupper(what))
|
||||
#if defined(HAVE_MUMPS_)
|
||||
case('SET_AS_SEQUENTIAL')
|
||||
iwhat=mld_as_sequential_
|
||||
case('SET_MUMPS_PRINT_ERR')
|
||||
iwhat=mld_mumps_print_err_
|
||||
#endif
|
||||
case default
|
||||
iwhat=-1
|
||||
end select
|
||||
@@ -422,6 +426,7 @@ contains
|
||||
info = psb_success_
|
||||
call psb_erractionsave(err_act)
|
||||
|
||||
#if defined(HAVE_MUMPS_)
|
||||
if (.not.allocated(sv%id)) then
|
||||
allocate(sv%id,stat=info)
|
||||
if (info /= psb_success_) then
|
||||
@@ -432,7 +437,7 @@ contains
|
||||
sv%built=.false.
|
||||
end if
|
||||
|
||||
!INSTANCIATION OF sv%id needed to set parmater but mpi communicator needed
|
||||
! INSTANTIATION OF sv%id needed to set parmater but mpi communicator needed
|
||||
! sv%id%job = -1
|
||||
! sv%id%par=1
|
||||
! call dmumps(sv%id)
|
||||
@@ -441,7 +446,7 @@ contains
|
||||
!sv%ipar(11)=0
|
||||
!sv%ipar(12)=6
|
||||
|
||||
|
||||
#endif
|
||||
call psb_erractionrestore(err_act)
|
||||
return
|
||||
|
||||
@@ -465,7 +470,7 @@ contains
|
||||
#if defined(HAVE_MUMPS_)
|
||||
val = (sv%id%INFOG(22)+sv%id%INFOG(32))*1d+6
|
||||
#else
|
||||
val = 0
|
||||
val = 0
|
||||
#endif
|
||||
! val = 2*psb_sizeof_int + psb_sizeof_dp
|
||||
! val = val + sv%symbsize
|
||||
|
||||
Reference in New Issue
Block a user