diff --git a/Makefile b/Makefile index b5499eb7..8b9f3f63 100644 --- a/Makefile +++ b/Makefile @@ -19,7 +19,7 @@ libdir: amgobjs: mods cd amgprec && $(MAKE) objs -cbnd: mods +cbnd: amgobjs cd cbind && $(MAKE) objs install: all diff --git a/amgprec/amg_c_ainv_solver.F90 b/amgprec/amg_c_ainv_solver.F90 index d9c1fb9c..12f9d6bf 100644 --- a/amgprec/amg_c_ainv_solver.F90 +++ b/amgprec/amg_c_ainv_solver.F90 @@ -103,7 +103,7 @@ module amg_c_ainv_solver Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_ainv_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -225,7 +225,7 @@ module amg_c_ainv_solver import :: psb_desc_type, psb_cspmat_type, psb_c_base_sparse_mat, & & psb_d_vect_type, psb_c_base_vect_type, psb_spk_, psb_ipk_ implicit none - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a integer(psb_ipk_), intent(in) :: fillin,alg real(psb_spk_), intent(in) :: thresh type(psb_cspmat_type), intent(inout) :: wmat, zmat diff --git a/amgprec/amg_c_as_smoother.f90 b/amgprec/amg_c_as_smoother.f90 index 613d0c5a..06df1b8b 100644 --- a/amgprec/amg_c_as_smoother.f90 +++ b/amgprec/amg_c_as_smoother.f90 @@ -230,7 +230,7 @@ module amg_c_as_smoother & psb_desc_type, psb_c_base_sparse_mat, psb_ipk_,& & psb_i_base_vect_type implicit none - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_as_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_c_base_smoother_mod.f90 b/amgprec/amg_c_base_smoother_mod.f90 index a42aff30..0ad55a3d 100644 --- a/amgprec/amg_c_base_smoother_mod.f90 +++ b/amgprec/amg_c_base_smoother_mod.f90 @@ -237,7 +237,7 @@ module amg_c_base_smoother_mod & psb_c_vect_type, psb_c_base_vect_type, psb_spk_, & & amg_c_base_smoother_type, psb_ipk_, psb_i_base_vect_type ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_base_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_c_base_solver_mod.f90 b/amgprec/amg_c_base_solver_mod.f90 index e5acf07c..9810c09c 100644 --- a/amgprec/amg_c_base_solver_mod.f90 +++ b/amgprec/amg_c_base_solver_mod.f90 @@ -170,7 +170,7 @@ module amg_c_base_solver_mod Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_base_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_c_diag_solver.f90 b/amgprec/amg_c_diag_solver.f90 index f021f76e..3ff3cddf 100644 --- a/amgprec/amg_c_diag_solver.f90 +++ b/amgprec/amg_c_diag_solver.f90 @@ -119,7 +119,7 @@ module amg_c_diag_solver import :: psb_desc_type, psb_cspmat_type, psb_c_base_sparse_mat, & & psb_c_vect_type, psb_c_base_vect_type, psb_spk_, & & amg_c_diag_solver_type, psb_ipk_, psb_i_base_vect_type - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_diag_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -331,7 +331,7 @@ module amg_c_l1_diag_solver import :: psb_desc_type, psb_cspmat_type, psb_c_base_sparse_mat, & & psb_c_vect_type, psb_c_base_vect_type, psb_spk_, & & amg_c_l1_diag_solver_type, psb_ipk_, psb_i_base_vect_type - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_l1_diag_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_c_gs_solver.f90 b/amgprec/amg_c_gs_solver.f90 index ba5a1da9..8e80bac9 100644 --- a/amgprec/amg_c_gs_solver.f90 +++ b/amgprec/amg_c_gs_solver.f90 @@ -181,7 +181,7 @@ module amg_c_gs_solver & psb_cspmat_type, psb_c_base_sparse_mat, psb_c_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_gs_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -195,7 +195,7 @@ module amg_c_gs_solver & psb_cspmat_type, psb_c_base_sparse_mat, psb_c_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_bwgs_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_c_id_solver.f90 b/amgprec/amg_c_id_solver.f90 index 7a3b02ce..59f694a9 100644 --- a/amgprec/amg_c_id_solver.f90 +++ b/amgprec/amg_c_id_solver.f90 @@ -123,7 +123,7 @@ contains Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_id_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_c_ilu_solver.f90 b/amgprec/amg_c_ilu_solver.f90 index 9177d471..805d9fc0 100644 --- a/amgprec/amg_c_ilu_solver.f90 +++ b/amgprec/amg_c_ilu_solver.f90 @@ -144,7 +144,7 @@ module amg_c_ilu_solver & psb_cspmat_type, psb_c_base_sparse_mat, psb_c_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_ilu_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_c_inner_mod.f90 b/amgprec/amg_c_inner_mod.f90 index 17b19bee..48208290 100644 --- a/amgprec/amg_c_inner_mod.f90 +++ b/amgprec/amg_c_inner_mod.f90 @@ -56,7 +56,7 @@ module amg_c_inner_mod & psb_spk_, psb_c_base_sparse_mat, psb_c_base_vect_type, psb_ipk_ import :: amg_cprec_type implicit none - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a type(amg_cprec_type), intent(inout), target :: prec integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_c_invk_solver.f90 b/amgprec/amg_c_invk_solver.f90 index 2bac5a9a..4b56e104 100644 --- a/amgprec/amg_c_invk_solver.f90 +++ b/amgprec/amg_c_invk_solver.f90 @@ -94,7 +94,7 @@ module amg_c_invk_solver Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_invk_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_c_invt_solver.f90 b/amgprec/amg_c_invt_solver.f90 index 81662eac..90d236f4 100644 --- a/amgprec/amg_c_invt_solver.f90 +++ b/amgprec/amg_c_invt_solver.f90 @@ -94,7 +94,7 @@ module amg_c_invt_solver Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_invt_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_c_jac_smoother.f90 b/amgprec/amg_c_jac_smoother.f90 index 94229ff5..fa3efe78 100644 --- a/amgprec/amg_c_jac_smoother.f90 +++ b/amgprec/amg_c_jac_smoother.f90 @@ -151,7 +151,7 @@ module amg_c_jac_smoother import :: psb_desc_type, amg_c_jac_smoother_type, psb_c_vect_type, psb_spk_, & & psb_cspmat_type, psb_c_base_sparse_mat, psb_c_base_vect_type,& & psb_ipk_, psb_i_base_vect_type - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_jac_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info @@ -274,7 +274,7 @@ module amg_c_jac_smoother import :: psb_desc_type, amg_c_l1_jac_smoother_type, psb_c_vect_type, & & psb_cspmat_type, psb_c_base_sparse_mat, psb_c_base_vect_type,& & psb_ipk_, psb_i_base_vect_type - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_l1_jac_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_c_jac_solver.f90 b/amgprec/amg_c_jac_solver.f90 index c483a244..7cd29294 100644 --- a/amgprec/amg_c_jac_solver.f90 +++ b/amgprec/amg_c_jac_solver.f90 @@ -143,7 +143,7 @@ module amg_c_jac_solver & psb_cspmat_type, psb_c_base_sparse_mat, psb_c_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_jac_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -160,7 +160,7 @@ module amg_c_jac_solver & psb_cspmat_type, psb_c_base_sparse_mat, psb_c_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_l1_jac_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_c_krm_solver.f90 b/amgprec/amg_c_krm_solver.f90 index 084fd700..ce50a2d2 100644 --- a/amgprec/amg_c_krm_solver.f90 +++ b/amgprec/amg_c_krm_solver.f90 @@ -174,7 +174,7 @@ module amg_c_krm_solver & psb_cspmat_type, psb_c_base_sparse_mat, psb_c_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_krm_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_c_mumps_solver.F90 b/amgprec/amg_c_mumps_solver.F90 index cd519bd6..3156f0c3 100644 --- a/amgprec/amg_c_mumps_solver.F90 +++ b/amgprec/amg_c_mumps_solver.F90 @@ -163,7 +163,7 @@ module amg_c_mumps_solver Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_mumps_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_c_prec_type.f90 b/amgprec/amg_c_prec_type.f90 index 85e05366..6cb59939 100644 --- a/amgprec/amg_c_prec_type.f90 +++ b/amgprec/amg_c_prec_type.f90 @@ -311,7 +311,7 @@ module amg_c_prec_type & psb_c_base_sparse_mat, psb_c_base_vect_type, & & psb_i_base_vect_type, amg_cprec_type, psb_ipk_ implicit none - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a class(amg_cprec_type), intent(inout), target :: prec integer(psb_ipk_), intent(out) :: info @@ -323,14 +323,15 @@ module amg_c_prec_type end interface amg_precbld interface amg_hierarchy_bld - subroutine amg_c_hierarchy_bld(a,desc_a,prec,info) + subroutine amg_c_hierarchy_bld(a,desc_a,prec,info,cpymat) import :: psb_cspmat_type, psb_desc_type, psb_spk_, & & amg_cprec_type, psb_ipk_ implicit none - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a class(amg_cprec_type), intent(inout), target :: prec integer(psb_ipk_), intent(out) :: info + logical, intent(in), optional :: cpymat ! character, intent(in),optional :: upd end subroutine amg_c_hierarchy_bld end interface amg_hierarchy_bld @@ -1002,7 +1003,7 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_c_base_vect_type), intent(in), optional :: vmold ! - ! In MLD the DESC optional argument is ignored, since + ! In AMG the DESC optional argument is ignored, since ! the necessary info is contained in the various entries of the ! PRECV component. type(psb_desc_type), intent(in), optional :: desc diff --git a/amgprec/amg_c_slu_solver.F90 b/amgprec/amg_c_slu_solver.F90 index 10f5f1e9..8b9cfbff 100644 --- a/amgprec/amg_c_slu_solver.F90 +++ b/amgprec/amg_c_slu_solver.F90 @@ -124,7 +124,7 @@ module amg_c_slu_solver Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_slu_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_ainv_solver.F90 b/amgprec/amg_d_ainv_solver.F90 index 52f96551..56daac2c 100644 --- a/amgprec/amg_d_ainv_solver.F90 +++ b/amgprec/amg_d_ainv_solver.F90 @@ -103,7 +103,7 @@ module amg_d_ainv_solver Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_ainv_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -225,7 +225,7 @@ module amg_d_ainv_solver import :: psb_desc_type, psb_dspmat_type, psb_d_base_sparse_mat, & & psb_d_vect_type, psb_d_base_vect_type, psb_dpk_, psb_ipk_ implicit none - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a integer(psb_ipk_), intent(in) :: fillin,alg real(psb_dpk_), intent(in) :: thresh type(psb_dspmat_type), intent(inout) :: wmat, zmat diff --git a/amgprec/amg_d_as_smoother.f90 b/amgprec/amg_d_as_smoother.f90 index eaefd4c6..82746d26 100644 --- a/amgprec/amg_d_as_smoother.f90 +++ b/amgprec/amg_d_as_smoother.f90 @@ -230,7 +230,7 @@ module amg_d_as_smoother & psb_desc_type, psb_d_base_sparse_mat, psb_ipk_,& & psb_i_base_vect_type implicit none - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_as_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_base_smoother_mod.f90 b/amgprec/amg_d_base_smoother_mod.f90 index a7c0570a..aa7a1221 100644 --- a/amgprec/amg_d_base_smoother_mod.f90 +++ b/amgprec/amg_d_base_smoother_mod.f90 @@ -237,7 +237,7 @@ module amg_d_base_smoother_mod & psb_d_vect_type, psb_d_base_vect_type, psb_dpk_, & & amg_d_base_smoother_type, psb_ipk_, psb_i_base_vect_type ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_base_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_base_solver_mod.f90 b/amgprec/amg_d_base_solver_mod.f90 index 1534e315..f1f89551 100644 --- a/amgprec/amg_d_base_solver_mod.f90 +++ b/amgprec/amg_d_base_solver_mod.f90 @@ -170,7 +170,7 @@ module amg_d_base_solver_mod Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_base_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_diag_solver.f90 b/amgprec/amg_d_diag_solver.f90 index bb345109..c2558890 100644 --- a/amgprec/amg_d_diag_solver.f90 +++ b/amgprec/amg_d_diag_solver.f90 @@ -119,7 +119,7 @@ module amg_d_diag_solver import :: psb_desc_type, psb_dspmat_type, psb_d_base_sparse_mat, & & psb_d_vect_type, psb_d_base_vect_type, psb_dpk_, & & amg_d_diag_solver_type, psb_ipk_, psb_i_base_vect_type - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_diag_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -331,7 +331,7 @@ module amg_d_l1_diag_solver import :: psb_desc_type, psb_dspmat_type, psb_d_base_sparse_mat, & & psb_d_vect_type, psb_d_base_vect_type, psb_dpk_, & & amg_d_l1_diag_solver_type, psb_ipk_, psb_i_base_vect_type - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_l1_diag_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_gs_solver.f90 b/amgprec/amg_d_gs_solver.f90 index b77ae6d5..49110405 100644 --- a/amgprec/amg_d_gs_solver.f90 +++ b/amgprec/amg_d_gs_solver.f90 @@ -181,7 +181,7 @@ module amg_d_gs_solver & psb_dspmat_type, psb_d_base_sparse_mat, psb_d_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_gs_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -195,7 +195,7 @@ module amg_d_gs_solver & psb_dspmat_type, psb_d_base_sparse_mat, psb_d_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_bwgs_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_id_solver.f90 b/amgprec/amg_d_id_solver.f90 index 7aeeb50d..6be4dc5f 100644 --- a/amgprec/amg_d_id_solver.f90 +++ b/amgprec/amg_d_id_solver.f90 @@ -123,7 +123,7 @@ contains Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_id_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_ilu_solver.f90 b/amgprec/amg_d_ilu_solver.f90 index d01c5014..72315621 100644 --- a/amgprec/amg_d_ilu_solver.f90 +++ b/amgprec/amg_d_ilu_solver.f90 @@ -144,7 +144,7 @@ module amg_d_ilu_solver & psb_dspmat_type, psb_d_base_sparse_mat, psb_d_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_ilu_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_inner_mod.f90 b/amgprec/amg_d_inner_mod.f90 index 58f45c99..7f18cd0a 100644 --- a/amgprec/amg_d_inner_mod.f90 +++ b/amgprec/amg_d_inner_mod.f90 @@ -56,7 +56,7 @@ module amg_d_inner_mod & psb_dpk_, psb_d_base_sparse_mat, psb_d_base_vect_type, psb_ipk_ import :: amg_dprec_type implicit none - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a type(amg_dprec_type), intent(inout), target :: prec integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_invk_solver.f90 b/amgprec/amg_d_invk_solver.f90 index 3e0ded12..2a98dd13 100644 --- a/amgprec/amg_d_invk_solver.f90 +++ b/amgprec/amg_d_invk_solver.f90 @@ -94,7 +94,7 @@ module amg_d_invk_solver Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_invk_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_invt_solver.f90 b/amgprec/amg_d_invt_solver.f90 index 648d7b6f..c3cc07a0 100644 --- a/amgprec/amg_d_invt_solver.f90 +++ b/amgprec/amg_d_invt_solver.f90 @@ -94,7 +94,7 @@ module amg_d_invt_solver Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_invt_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_jac_smoother.f90 b/amgprec/amg_d_jac_smoother.f90 index fff8e22e..93136b48 100644 --- a/amgprec/amg_d_jac_smoother.f90 +++ b/amgprec/amg_d_jac_smoother.f90 @@ -151,7 +151,7 @@ module amg_d_jac_smoother import :: psb_desc_type, amg_d_jac_smoother_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 - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_jac_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info @@ -274,7 +274,7 @@ module amg_d_jac_smoother import :: psb_desc_type, amg_d_l1_jac_smoother_type, psb_d_vect_type, & & psb_dspmat_type, psb_d_base_sparse_mat, psb_d_base_vect_type,& & psb_ipk_, psb_i_base_vect_type - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_l1_jac_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_jac_solver.f90 b/amgprec/amg_d_jac_solver.f90 index 464e79e7..142fd2a0 100644 --- a/amgprec/amg_d_jac_solver.f90 +++ b/amgprec/amg_d_jac_solver.f90 @@ -143,7 +143,7 @@ module amg_d_jac_solver & psb_dspmat_type, psb_d_base_sparse_mat, psb_d_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_jac_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -160,7 +160,7 @@ module amg_d_jac_solver & psb_dspmat_type, psb_d_base_sparse_mat, psb_d_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_l1_jac_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_krm_solver.f90 b/amgprec/amg_d_krm_solver.f90 index b82e2bda..7503d7a4 100644 --- a/amgprec/amg_d_krm_solver.f90 +++ b/amgprec/amg_d_krm_solver.f90 @@ -174,7 +174,7 @@ module amg_d_krm_solver & psb_dspmat_type, psb_d_base_sparse_mat, psb_d_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_krm_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_mumps_solver.F90 b/amgprec/amg_d_mumps_solver.F90 index 4c915ef4..38357bb1 100644 --- a/amgprec/amg_d_mumps_solver.F90 +++ b/amgprec/amg_d_mumps_solver.F90 @@ -163,7 +163,7 @@ module amg_d_mumps_solver Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_mumps_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_poly_smoother.f90 b/amgprec/amg_d_poly_smoother.f90 index bd24b49a..7733ddfd 100644 --- a/amgprec/amg_d_poly_smoother.f90 +++ b/amgprec/amg_d_poly_smoother.f90 @@ -140,7 +140,7 @@ module amg_d_poly_smoother import :: psb_desc_type, amg_d_poly_smoother_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 - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_poly_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_prec_type.f90 b/amgprec/amg_d_prec_type.f90 index c7404e2d..4ff41d15 100644 --- a/amgprec/amg_d_prec_type.f90 +++ b/amgprec/amg_d_prec_type.f90 @@ -311,7 +311,7 @@ module amg_d_prec_type & psb_d_base_sparse_mat, psb_d_base_vect_type, & & psb_i_base_vect_type, amg_dprec_type, psb_ipk_ implicit none - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a class(amg_dprec_type), intent(inout), target :: prec integer(psb_ipk_), intent(out) :: info @@ -323,14 +323,15 @@ module amg_d_prec_type end interface amg_precbld interface amg_hierarchy_bld - subroutine amg_d_hierarchy_bld(a,desc_a,prec,info) + subroutine amg_d_hierarchy_bld(a,desc_a,prec,info,cpymat) import :: psb_dspmat_type, psb_desc_type, psb_dpk_, & & amg_dprec_type, psb_ipk_ implicit none - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a class(amg_dprec_type), intent(inout), target :: prec integer(psb_ipk_), intent(out) :: info + logical, intent(in), optional :: cpymat ! character, intent(in),optional :: upd end subroutine amg_d_hierarchy_bld end interface amg_hierarchy_bld @@ -1002,7 +1003,7 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_d_base_vect_type), intent(in), optional :: vmold ! - ! In MLD the DESC optional argument is ignored, since + ! In AMG the DESC optional argument is ignored, since ! the necessary info is contained in the various entries of the ! PRECV component. type(psb_desc_type), intent(in), optional :: desc diff --git a/amgprec/amg_d_slu_solver.F90 b/amgprec/amg_d_slu_solver.F90 index f94a1de1..01080c0b 100644 --- a/amgprec/amg_d_slu_solver.F90 +++ b/amgprec/amg_d_slu_solver.F90 @@ -124,7 +124,7 @@ module amg_d_slu_solver Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_slu_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_d_sludist_solver.F90 b/amgprec/amg_d_sludist_solver.F90 index 5c408c2a..4c8cf233 100644 --- a/amgprec/amg_d_sludist_solver.F90 +++ b/amgprec/amg_d_sludist_solver.F90 @@ -259,7 +259,7 @@ contains Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_sludist_solver_type), intent(inout) :: sv integer, intent(out) :: info diff --git a/amgprec/amg_d_umf_solver.F90 b/amgprec/amg_d_umf_solver.F90 index f9077e1f..81fa502f 100644 --- a/amgprec/amg_d_umf_solver.F90 +++ b/amgprec/amg_d_umf_solver.F90 @@ -163,7 +163,7 @@ module amg_d_umf_solver Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_umf_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_s_ainv_solver.F90 b/amgprec/amg_s_ainv_solver.F90 index 6bb5f7ae..7f465b33 100644 --- a/amgprec/amg_s_ainv_solver.F90 +++ b/amgprec/amg_s_ainv_solver.F90 @@ -103,7 +103,7 @@ module amg_s_ainv_solver Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_ainv_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -225,7 +225,7 @@ module amg_s_ainv_solver import :: psb_desc_type, psb_sspmat_type, psb_s_base_sparse_mat, & & psb_d_vect_type, psb_s_base_vect_type, psb_spk_, psb_ipk_ implicit none - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a integer(psb_ipk_), intent(in) :: fillin,alg real(psb_spk_), intent(in) :: thresh type(psb_sspmat_type), intent(inout) :: wmat, zmat diff --git a/amgprec/amg_s_as_smoother.f90 b/amgprec/amg_s_as_smoother.f90 index 218095bb..c8e23fcf 100644 --- a/amgprec/amg_s_as_smoother.f90 +++ b/amgprec/amg_s_as_smoother.f90 @@ -230,7 +230,7 @@ module amg_s_as_smoother & psb_desc_type, psb_s_base_sparse_mat, psb_ipk_,& & psb_i_base_vect_type implicit none - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_as_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_s_base_smoother_mod.f90 b/amgprec/amg_s_base_smoother_mod.f90 index 36d3adf4..a10c83b8 100644 --- a/amgprec/amg_s_base_smoother_mod.f90 +++ b/amgprec/amg_s_base_smoother_mod.f90 @@ -237,7 +237,7 @@ module amg_s_base_smoother_mod & psb_s_vect_type, psb_s_base_vect_type, psb_spk_, & & amg_s_base_smoother_type, psb_ipk_, psb_i_base_vect_type ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_base_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_s_base_solver_mod.f90 b/amgprec/amg_s_base_solver_mod.f90 index 65c66b3c..bfc66449 100644 --- a/amgprec/amg_s_base_solver_mod.f90 +++ b/amgprec/amg_s_base_solver_mod.f90 @@ -170,7 +170,7 @@ module amg_s_base_solver_mod Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_base_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_s_diag_solver.f90 b/amgprec/amg_s_diag_solver.f90 index 4aed4a98..519c43e2 100644 --- a/amgprec/amg_s_diag_solver.f90 +++ b/amgprec/amg_s_diag_solver.f90 @@ -119,7 +119,7 @@ module amg_s_diag_solver import :: psb_desc_type, psb_sspmat_type, psb_s_base_sparse_mat, & & psb_s_vect_type, psb_s_base_vect_type, psb_spk_, & & amg_s_diag_solver_type, psb_ipk_, psb_i_base_vect_type - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_diag_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -331,7 +331,7 @@ module amg_s_l1_diag_solver import :: psb_desc_type, psb_sspmat_type, psb_s_base_sparse_mat, & & psb_s_vect_type, psb_s_base_vect_type, psb_spk_, & & amg_s_l1_diag_solver_type, psb_ipk_, psb_i_base_vect_type - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_l1_diag_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_s_gs_solver.f90 b/amgprec/amg_s_gs_solver.f90 index 8148ce0d..7d947678 100644 --- a/amgprec/amg_s_gs_solver.f90 +++ b/amgprec/amg_s_gs_solver.f90 @@ -181,7 +181,7 @@ module amg_s_gs_solver & psb_sspmat_type, psb_s_base_sparse_mat, psb_s_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_gs_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -195,7 +195,7 @@ module amg_s_gs_solver & psb_sspmat_type, psb_s_base_sparse_mat, psb_s_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_bwgs_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_s_id_solver.f90 b/amgprec/amg_s_id_solver.f90 index e3218a2b..70ccf6f9 100644 --- a/amgprec/amg_s_id_solver.f90 +++ b/amgprec/amg_s_id_solver.f90 @@ -123,7 +123,7 @@ contains Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_id_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_s_ilu_solver.f90 b/amgprec/amg_s_ilu_solver.f90 index 9eccc6c8..73638a40 100644 --- a/amgprec/amg_s_ilu_solver.f90 +++ b/amgprec/amg_s_ilu_solver.f90 @@ -144,7 +144,7 @@ module amg_s_ilu_solver & psb_sspmat_type, psb_s_base_sparse_mat, psb_s_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_ilu_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_s_inner_mod.f90 b/amgprec/amg_s_inner_mod.f90 index 63f974ca..3c5c1ca0 100644 --- a/amgprec/amg_s_inner_mod.f90 +++ b/amgprec/amg_s_inner_mod.f90 @@ -56,7 +56,7 @@ module amg_s_inner_mod & psb_spk_, psb_s_base_sparse_mat, psb_s_base_vect_type, psb_ipk_ import :: amg_sprec_type implicit none - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a type(amg_sprec_type), intent(inout), target :: prec integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_s_invk_solver.f90 b/amgprec/amg_s_invk_solver.f90 index 8fd87da2..a634d01c 100644 --- a/amgprec/amg_s_invk_solver.f90 +++ b/amgprec/amg_s_invk_solver.f90 @@ -94,7 +94,7 @@ module amg_s_invk_solver Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_invk_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_s_invt_solver.f90 b/amgprec/amg_s_invt_solver.f90 index a62eb837..a07c2470 100644 --- a/amgprec/amg_s_invt_solver.f90 +++ b/amgprec/amg_s_invt_solver.f90 @@ -94,7 +94,7 @@ module amg_s_invt_solver Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_invt_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_s_jac_smoother.f90 b/amgprec/amg_s_jac_smoother.f90 index 256f9ecc..508495d3 100644 --- a/amgprec/amg_s_jac_smoother.f90 +++ b/amgprec/amg_s_jac_smoother.f90 @@ -151,7 +151,7 @@ module amg_s_jac_smoother import :: psb_desc_type, amg_s_jac_smoother_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 - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_jac_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info @@ -274,7 +274,7 @@ module amg_s_jac_smoother import :: psb_desc_type, amg_s_l1_jac_smoother_type, psb_s_vect_type, & & psb_sspmat_type, psb_s_base_sparse_mat, psb_s_base_vect_type,& & psb_ipk_, psb_i_base_vect_type - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_l1_jac_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_s_jac_solver.f90 b/amgprec/amg_s_jac_solver.f90 index d71f3e10..66789649 100644 --- a/amgprec/amg_s_jac_solver.f90 +++ b/amgprec/amg_s_jac_solver.f90 @@ -143,7 +143,7 @@ module amg_s_jac_solver & psb_sspmat_type, psb_s_base_sparse_mat, psb_s_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_jac_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -160,7 +160,7 @@ module amg_s_jac_solver & psb_sspmat_type, psb_s_base_sparse_mat, psb_s_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_l1_jac_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_s_krm_solver.f90 b/amgprec/amg_s_krm_solver.f90 index e92bc64d..34674d84 100644 --- a/amgprec/amg_s_krm_solver.f90 +++ b/amgprec/amg_s_krm_solver.f90 @@ -174,7 +174,7 @@ module amg_s_krm_solver & psb_sspmat_type, psb_s_base_sparse_mat, psb_s_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_krm_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_s_mumps_solver.F90 b/amgprec/amg_s_mumps_solver.F90 index cee4d7fa..63fa0e2d 100644 --- a/amgprec/amg_s_mumps_solver.F90 +++ b/amgprec/amg_s_mumps_solver.F90 @@ -163,7 +163,7 @@ module amg_s_mumps_solver Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_mumps_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_s_poly_smoother.f90 b/amgprec/amg_s_poly_smoother.f90 index aa905aad..a03e7e16 100644 --- a/amgprec/amg_s_poly_smoother.f90 +++ b/amgprec/amg_s_poly_smoother.f90 @@ -140,7 +140,7 @@ module amg_s_poly_smoother import :: psb_desc_type, amg_s_poly_smoother_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 - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_poly_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_s_prec_type.f90 b/amgprec/amg_s_prec_type.f90 index 7d45e184..68ff409b 100644 --- a/amgprec/amg_s_prec_type.f90 +++ b/amgprec/amg_s_prec_type.f90 @@ -311,7 +311,7 @@ module amg_s_prec_type & psb_s_base_sparse_mat, psb_s_base_vect_type, & & psb_i_base_vect_type, amg_sprec_type, psb_ipk_ implicit none - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a class(amg_sprec_type), intent(inout), target :: prec integer(psb_ipk_), intent(out) :: info @@ -323,14 +323,15 @@ module amg_s_prec_type end interface amg_precbld interface amg_hierarchy_bld - subroutine amg_s_hierarchy_bld(a,desc_a,prec,info) + subroutine amg_s_hierarchy_bld(a,desc_a,prec,info,cpymat) import :: psb_sspmat_type, psb_desc_type, psb_spk_, & & amg_sprec_type, psb_ipk_ implicit none - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a class(amg_sprec_type), intent(inout), target :: prec integer(psb_ipk_), intent(out) :: info + logical, intent(in), optional :: cpymat ! character, intent(in),optional :: upd end subroutine amg_s_hierarchy_bld end interface amg_hierarchy_bld @@ -1002,7 +1003,7 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_s_base_vect_type), intent(in), optional :: vmold ! - ! In MLD the DESC optional argument is ignored, since + ! In AMG the DESC optional argument is ignored, since ! the necessary info is contained in the various entries of the ! PRECV component. type(psb_desc_type), intent(in), optional :: desc diff --git a/amgprec/amg_s_slu_solver.F90 b/amgprec/amg_s_slu_solver.F90 index 8c25e77e..49f265d5 100644 --- a/amgprec/amg_s_slu_solver.F90 +++ b/amgprec/amg_s_slu_solver.F90 @@ -124,7 +124,7 @@ module amg_s_slu_solver Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_slu_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_z_ainv_solver.F90 b/amgprec/amg_z_ainv_solver.F90 index fb2d1543..1c40e162 100644 --- a/amgprec/amg_z_ainv_solver.F90 +++ b/amgprec/amg_z_ainv_solver.F90 @@ -103,7 +103,7 @@ module amg_z_ainv_solver Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_ainv_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -225,7 +225,7 @@ module amg_z_ainv_solver import :: psb_desc_type, psb_zspmat_type, psb_z_base_sparse_mat, & & psb_d_vect_type, psb_z_base_vect_type, psb_dpk_, psb_ipk_ implicit none - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a integer(psb_ipk_), intent(in) :: fillin,alg real(psb_dpk_), intent(in) :: thresh type(psb_zspmat_type), intent(inout) :: wmat, zmat diff --git a/amgprec/amg_z_as_smoother.f90 b/amgprec/amg_z_as_smoother.f90 index 40e08e78..23b61a73 100644 --- a/amgprec/amg_z_as_smoother.f90 +++ b/amgprec/amg_z_as_smoother.f90 @@ -230,7 +230,7 @@ module amg_z_as_smoother & psb_desc_type, psb_z_base_sparse_mat, psb_ipk_,& & psb_i_base_vect_type implicit none - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_as_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_z_base_smoother_mod.f90 b/amgprec/amg_z_base_smoother_mod.f90 index ac99e640..93893ac9 100644 --- a/amgprec/amg_z_base_smoother_mod.f90 +++ b/amgprec/amg_z_base_smoother_mod.f90 @@ -237,7 +237,7 @@ module amg_z_base_smoother_mod & psb_z_vect_type, psb_z_base_vect_type, psb_dpk_, & & amg_z_base_smoother_type, psb_ipk_, psb_i_base_vect_type ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_base_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_z_base_solver_mod.f90 b/amgprec/amg_z_base_solver_mod.f90 index 91ab6a88..a2ad7e8a 100644 --- a/amgprec/amg_z_base_solver_mod.f90 +++ b/amgprec/amg_z_base_solver_mod.f90 @@ -170,7 +170,7 @@ module amg_z_base_solver_mod Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_base_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_z_diag_solver.f90 b/amgprec/amg_z_diag_solver.f90 index 83658d57..6459a00f 100644 --- a/amgprec/amg_z_diag_solver.f90 +++ b/amgprec/amg_z_diag_solver.f90 @@ -119,7 +119,7 @@ module amg_z_diag_solver import :: psb_desc_type, psb_zspmat_type, psb_z_base_sparse_mat, & & psb_z_vect_type, psb_z_base_vect_type, psb_dpk_, & & amg_z_diag_solver_type, psb_ipk_, psb_i_base_vect_type - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_diag_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -331,7 +331,7 @@ module amg_z_l1_diag_solver import :: psb_desc_type, psb_zspmat_type, psb_z_base_sparse_mat, & & psb_z_vect_type, psb_z_base_vect_type, psb_dpk_, & & amg_z_l1_diag_solver_type, psb_ipk_, psb_i_base_vect_type - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_l1_diag_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_z_gs_solver.f90 b/amgprec/amg_z_gs_solver.f90 index 1836f9b2..67345b2a 100644 --- a/amgprec/amg_z_gs_solver.f90 +++ b/amgprec/amg_z_gs_solver.f90 @@ -181,7 +181,7 @@ module amg_z_gs_solver & psb_zspmat_type, psb_z_base_sparse_mat, psb_z_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_gs_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -195,7 +195,7 @@ module amg_z_gs_solver & psb_zspmat_type, psb_z_base_sparse_mat, psb_z_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_bwgs_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_z_id_solver.f90 b/amgprec/amg_z_id_solver.f90 index 412a6672..e7df4512 100644 --- a/amgprec/amg_z_id_solver.f90 +++ b/amgprec/amg_z_id_solver.f90 @@ -123,7 +123,7 @@ contains Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_id_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_z_ilu_solver.f90 b/amgprec/amg_z_ilu_solver.f90 index 9e1a8973..a54fae9f 100644 --- a/amgprec/amg_z_ilu_solver.f90 +++ b/amgprec/amg_z_ilu_solver.f90 @@ -144,7 +144,7 @@ module amg_z_ilu_solver & psb_zspmat_type, psb_z_base_sparse_mat, psb_z_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_ilu_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_z_inner_mod.f90 b/amgprec/amg_z_inner_mod.f90 index a19abea5..c5e3112f 100644 --- a/amgprec/amg_z_inner_mod.f90 +++ b/amgprec/amg_z_inner_mod.f90 @@ -56,7 +56,7 @@ module amg_z_inner_mod & psb_dpk_, psb_z_base_sparse_mat, psb_z_base_vect_type, psb_ipk_ import :: amg_zprec_type implicit none - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a type(amg_zprec_type), intent(inout), target :: prec integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_z_invk_solver.f90 b/amgprec/amg_z_invk_solver.f90 index 72e42b5d..eb8dd1da 100644 --- a/amgprec/amg_z_invk_solver.f90 +++ b/amgprec/amg_z_invk_solver.f90 @@ -94,7 +94,7 @@ module amg_z_invk_solver Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_invk_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_z_invt_solver.f90 b/amgprec/amg_z_invt_solver.f90 index 13b6ebea..6819b62d 100644 --- a/amgprec/amg_z_invt_solver.f90 +++ b/amgprec/amg_z_invt_solver.f90 @@ -94,7 +94,7 @@ module amg_z_invt_solver Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_invt_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_z_jac_smoother.f90 b/amgprec/amg_z_jac_smoother.f90 index f698f95b..5fecc0e9 100644 --- a/amgprec/amg_z_jac_smoother.f90 +++ b/amgprec/amg_z_jac_smoother.f90 @@ -151,7 +151,7 @@ module amg_z_jac_smoother import :: psb_desc_type, amg_z_jac_smoother_type, psb_z_vect_type, psb_dpk_, & & psb_zspmat_type, psb_z_base_sparse_mat, psb_z_base_vect_type,& & psb_ipk_, psb_i_base_vect_type - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_jac_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info @@ -274,7 +274,7 @@ module amg_z_jac_smoother import :: psb_desc_type, amg_z_l1_jac_smoother_type, psb_z_vect_type, & & psb_zspmat_type, psb_z_base_sparse_mat, psb_z_base_vect_type,& & psb_ipk_, psb_i_base_vect_type - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_l1_jac_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_z_jac_solver.f90 b/amgprec/amg_z_jac_solver.f90 index f76755d6..5ea2d156 100644 --- a/amgprec/amg_z_jac_solver.f90 +++ b/amgprec/amg_z_jac_solver.f90 @@ -143,7 +143,7 @@ module amg_z_jac_solver & psb_zspmat_type, psb_z_base_sparse_mat, psb_z_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_jac_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -160,7 +160,7 @@ module amg_z_jac_solver & psb_zspmat_type, psb_z_base_sparse_mat, psb_z_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_l1_jac_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_z_krm_solver.f90 b/amgprec/amg_z_krm_solver.f90 index 68c829b5..ee46156b 100644 --- a/amgprec/amg_z_krm_solver.f90 +++ b/amgprec/amg_z_krm_solver.f90 @@ -174,7 +174,7 @@ module amg_z_krm_solver & psb_zspmat_type, psb_z_base_sparse_mat, psb_z_base_vect_type,& & psb_ipk_, psb_i_base_vect_type implicit none - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_krm_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_z_mumps_solver.F90 b/amgprec/amg_z_mumps_solver.F90 index c62abe94..0cd5e646 100644 --- a/amgprec/amg_z_mumps_solver.F90 +++ b/amgprec/amg_z_mumps_solver.F90 @@ -163,7 +163,7 @@ module amg_z_mumps_solver Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_mumps_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_z_prec_type.f90 b/amgprec/amg_z_prec_type.f90 index dba1ab52..7bc73992 100644 --- a/amgprec/amg_z_prec_type.f90 +++ b/amgprec/amg_z_prec_type.f90 @@ -311,7 +311,7 @@ module amg_z_prec_type & psb_z_base_sparse_mat, psb_z_base_vect_type, & & psb_i_base_vect_type, amg_zprec_type, psb_ipk_ implicit none - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a class(amg_zprec_type), intent(inout), target :: prec integer(psb_ipk_), intent(out) :: info @@ -323,14 +323,15 @@ module amg_z_prec_type end interface amg_precbld interface amg_hierarchy_bld - subroutine amg_z_hierarchy_bld(a,desc_a,prec,info) + subroutine amg_z_hierarchy_bld(a,desc_a,prec,info,cpymat) import :: psb_zspmat_type, psb_desc_type, psb_dpk_, & & amg_zprec_type, psb_ipk_ implicit none - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a class(amg_zprec_type), intent(inout), target :: prec integer(psb_ipk_), intent(out) :: info + logical, intent(in), optional :: cpymat ! character, intent(in),optional :: upd end subroutine amg_z_hierarchy_bld end interface amg_hierarchy_bld @@ -1002,7 +1003,7 @@ contains integer(psb_ipk_), intent(out) :: info class(psb_z_base_vect_type), intent(in), optional :: vmold ! - ! In MLD the DESC optional argument is ignored, since + ! In AMG the DESC optional argument is ignored, since ! the necessary info is contained in the various entries of the ! PRECV component. type(psb_desc_type), intent(in), optional :: desc diff --git a/amgprec/amg_z_slu_solver.F90 b/amgprec/amg_z_slu_solver.F90 index c06acc69..8fa5ff27 100644 --- a/amgprec/amg_z_slu_solver.F90 +++ b/amgprec/amg_z_slu_solver.F90 @@ -124,7 +124,7 @@ module amg_z_slu_solver Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_slu_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/amg_z_sludist_solver.F90 b/amgprec/amg_z_sludist_solver.F90 index 6d8f6b69..d5251eda 100644 --- a/amgprec/amg_z_sludist_solver.F90 +++ b/amgprec/amg_z_sludist_solver.F90 @@ -259,7 +259,7 @@ contains Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_sludist_solver_type), intent(inout) :: sv integer, intent(out) :: info diff --git a/amgprec/amg_z_umf_solver.F90 b/amgprec/amg_z_umf_solver.F90 index c6b00a36..8a5edaf5 100644 --- a/amgprec/amg_z_umf_solver.F90 +++ b/amgprec/amg_z_umf_solver.F90 @@ -163,7 +163,7 @@ module amg_z_umf_solver Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_umf_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/amg_c_hierarchy_bld.F90 b/amgprec/impl/amg_c_hierarchy_bld.F90 index 642b97f7..8b04b474 100644 --- a/amgprec/impl/amg_c_hierarchy_bld.F90 +++ b/amgprec/impl/amg_c_hierarchy_bld.F90 @@ -63,7 +63,7 @@ ! info - integer, output. ! Error code. ! -subroutine amg_c_hierarchy_bld(a,desc_a,prec,info) +subroutine amg_c_hierarchy_bld(a,desc_a,prec,info,cpymat) use psb_base_mod use amg_c_inner_mod @@ -72,10 +72,11 @@ subroutine amg_c_hierarchy_bld(a,desc_a,prec,info) Implicit None ! Arguments - type(psb_cspmat_type),intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a class(amg_cprec_type),intent(inout),target :: prec integer(psb_ipk_), intent(out) :: info + logical, intent(in), optional :: cpymat ! Local Variables type(psb_ctxt_type) :: ctxt @@ -90,7 +91,8 @@ subroutine amg_c_hierarchy_bld(a,desc_a,prec,info) type(amg_sml_parms) :: medparms, coarseparms integer(psb_lpk_), allocatable :: ilaggr(:), nlaggr(:) type(psb_lcspmat_type) :: op_prol - type(amg_c_onelev_type), allocatable :: tprecv(:) + type(amg_c_onelev_type), allocatable :: tprecv(:) + logical :: cpymat_ integer(psb_ipk_) :: debug_level, debug_unit character(len=20) :: name, ch_err integer(psb_ipk_), save :: idx_bldtp=-1, idx_matasb=-1 @@ -125,7 +127,9 @@ subroutine amg_c_hierarchy_bld(a,desc_a,prec,info) call psb_errpush(info,name) goto 9999 end if - + cpymat_ = .false. + if (present(cpymat)) cpymat_ = cpymat + ! ! Check to ensure all procs have the same ! @@ -180,8 +184,15 @@ subroutine amg_c_hierarchy_bld(a,desc_a,prec,info) ! This is OK, since it may be called by the user even if there ! is only one level ! - prec%precv(1)%base_a => a - prec%precv(1)%base_desc => desc_a + if (cpymat_) then + call a%clone(prec%precv(1)%ac,info) + call desc_a%clone(prec%precv(1)%desc_ac,info) + prec%precv(1)%base_a => prec%precv(1)%ac + prec%precv(1)%base_desc => prec%precv(1)%desc_ac + else + prec%precv(1)%base_a => a + prec%precv(1)%base_desc => desc_a + end if call psb_erractionrestore(err_act) return @@ -280,10 +291,16 @@ subroutine amg_c_hierarchy_bld(a,desc_a,prec,info) ! ! Finest level first; create a GEN_BLOCK ! copy of the descriptor. - ! - prec%precv(1)%base_a => a + ! + if (cpymat_) then + call a%clone(prec%precv(1)%ac,info) + prec%precv(1)%base_a => prec%precv(1)%ac + else + prec%precv(1)%base_a => a + end if call psb_cd_renum_block(desc_a,prec%precv(1)%desc_ac,info) prec%precv(1)%base_desc => prec%precv(1)%desc_ac + newsz = 0 array_build_loop: do i=2, iszv ! @@ -448,6 +465,9 @@ subroutine amg_c_hierarchy_bld(a,desc_a,prec,info) iszv = newsz ! Fix the pointers, but the level 1 should ! be treated differently + if (.not.associated(prec%precv(1)%base_a,a)) then + prec%precv(1)%base_a => prec%precv(1)%ac + end if if (.not.associated(prec%precv(1)%base_desc,desc_a)) then prec%precv(1)%base_desc => prec%precv(1)%desc_ac end if diff --git a/amgprec/impl/amg_cmlprec_bld.f90 b/amgprec/impl/amg_cmlprec_bld.f90 index a39aaa4d..9eb60982 100644 --- a/amgprec/impl/amg_cmlprec_bld.f90 +++ b/amgprec/impl/amg_cmlprec_bld.f90 @@ -85,7 +85,7 @@ subroutine amg_cmlprec_bld(a,desc_a,p,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type),intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a type(amg_cprec_type),intent(inout),target :: p integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/amg_cprecbld.f90 b/amgprec/impl/amg_cprecbld.f90 index fcb865d9..7b58b061 100644 --- a/amgprec/impl/amg_cprecbld.f90 +++ b/amgprec/impl/amg_cprecbld.f90 @@ -65,7 +65,7 @@ subroutine amg_cprecbld(a,desc_a,prec,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type),intent(in), target :: a + type(psb_cspmat_type),intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a class(amg_cprec_type),intent(inout), target :: prec integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/amg_d_hierarchy_bld.F90 b/amgprec/impl/amg_d_hierarchy_bld.F90 index 3b8a6f4f..de45ffa7 100644 --- a/amgprec/impl/amg_d_hierarchy_bld.F90 +++ b/amgprec/impl/amg_d_hierarchy_bld.F90 @@ -63,7 +63,7 @@ ! info - integer, output. ! Error code. ! -subroutine amg_d_hierarchy_bld(a,desc_a,prec,info) +subroutine amg_d_hierarchy_bld(a,desc_a,prec,info,cpymat) use psb_base_mod use amg_d_inner_mod @@ -72,10 +72,11 @@ subroutine amg_d_hierarchy_bld(a,desc_a,prec,info) Implicit None ! Arguments - type(psb_dspmat_type),intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a class(amg_dprec_type),intent(inout),target :: prec integer(psb_ipk_), intent(out) :: info + logical, intent(in), optional :: cpymat ! Local Variables type(psb_ctxt_type) :: ctxt @@ -90,7 +91,8 @@ subroutine amg_d_hierarchy_bld(a,desc_a,prec,info) type(amg_dml_parms) :: medparms, coarseparms integer(psb_lpk_), allocatable :: ilaggr(:), nlaggr(:) type(psb_ldspmat_type) :: op_prol - type(amg_d_onelev_type), allocatable :: tprecv(:) + type(amg_d_onelev_type), allocatable :: tprecv(:) + logical :: cpymat_ integer(psb_ipk_) :: debug_level, debug_unit character(len=20) :: name, ch_err integer(psb_ipk_), save :: idx_bldtp=-1, idx_matasb=-1 @@ -125,7 +127,9 @@ subroutine amg_d_hierarchy_bld(a,desc_a,prec,info) call psb_errpush(info,name) goto 9999 end if - + cpymat_ = .false. + if (present(cpymat)) cpymat_ = cpymat + ! ! Check to ensure all procs have the same ! @@ -180,8 +184,15 @@ subroutine amg_d_hierarchy_bld(a,desc_a,prec,info) ! This is OK, since it may be called by the user even if there ! is only one level ! - prec%precv(1)%base_a => a - prec%precv(1)%base_desc => desc_a + if (cpymat_) then + call a%clone(prec%precv(1)%ac,info) + call desc_a%clone(prec%precv(1)%desc_ac,info) + prec%precv(1)%base_a => prec%precv(1)%ac + prec%precv(1)%base_desc => prec%precv(1)%desc_ac + else + prec%precv(1)%base_a => a + prec%precv(1)%base_desc => desc_a + end if call psb_erractionrestore(err_act) return @@ -280,10 +291,16 @@ subroutine amg_d_hierarchy_bld(a,desc_a,prec,info) ! ! Finest level first; create a GEN_BLOCK ! copy of the descriptor. - ! - prec%precv(1)%base_a => a + ! + if (cpymat_) then + call a%clone(prec%precv(1)%ac,info) + prec%precv(1)%base_a => prec%precv(1)%ac + else + prec%precv(1)%base_a => a + end if call psb_cd_renum_block(desc_a,prec%precv(1)%desc_ac,info) prec%precv(1)%base_desc => prec%precv(1)%desc_ac + newsz = 0 array_build_loop: do i=2, iszv ! @@ -448,6 +465,9 @@ subroutine amg_d_hierarchy_bld(a,desc_a,prec,info) iszv = newsz ! Fix the pointers, but the level 1 should ! be treated differently + if (.not.associated(prec%precv(1)%base_a,a)) then + prec%precv(1)%base_a => prec%precv(1)%ac + end if if (.not.associated(prec%precv(1)%base_desc,desc_a)) then prec%precv(1)%base_desc => prec%precv(1)%desc_ac end if diff --git a/amgprec/impl/amg_dmlprec_bld.f90 b/amgprec/impl/amg_dmlprec_bld.f90 index 95cd496f..a63cb9b6 100644 --- a/amgprec/impl/amg_dmlprec_bld.f90 +++ b/amgprec/impl/amg_dmlprec_bld.f90 @@ -85,7 +85,7 @@ subroutine amg_dmlprec_bld(a,desc_a,p,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type),intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a type(amg_dprec_type),intent(inout),target :: p integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/amg_dprecbld.f90 b/amgprec/impl/amg_dprecbld.f90 index 3fbc5600..37a52758 100644 --- a/amgprec/impl/amg_dprecbld.f90 +++ b/amgprec/impl/amg_dprecbld.f90 @@ -65,7 +65,7 @@ subroutine amg_dprecbld(a,desc_a,prec,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type),intent(in), target :: a + type(psb_dspmat_type),intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a class(amg_dprec_type),intent(inout), target :: prec integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/amg_s_hierarchy_bld.F90 b/amgprec/impl/amg_s_hierarchy_bld.F90 index 4e494b11..b8fba40d 100644 --- a/amgprec/impl/amg_s_hierarchy_bld.F90 +++ b/amgprec/impl/amg_s_hierarchy_bld.F90 @@ -63,7 +63,7 @@ ! info - integer, output. ! Error code. ! -subroutine amg_s_hierarchy_bld(a,desc_a,prec,info) +subroutine amg_s_hierarchy_bld(a,desc_a,prec,info,cpymat) use psb_base_mod use amg_s_inner_mod @@ -72,10 +72,11 @@ subroutine amg_s_hierarchy_bld(a,desc_a,prec,info) Implicit None ! Arguments - type(psb_sspmat_type),intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a class(amg_sprec_type),intent(inout),target :: prec integer(psb_ipk_), intent(out) :: info + logical, intent(in), optional :: cpymat ! Local Variables type(psb_ctxt_type) :: ctxt @@ -90,7 +91,8 @@ subroutine amg_s_hierarchy_bld(a,desc_a,prec,info) type(amg_sml_parms) :: medparms, coarseparms integer(psb_lpk_), allocatable :: ilaggr(:), nlaggr(:) type(psb_lsspmat_type) :: op_prol - type(amg_s_onelev_type), allocatable :: tprecv(:) + type(amg_s_onelev_type), allocatable :: tprecv(:) + logical :: cpymat_ integer(psb_ipk_) :: debug_level, debug_unit character(len=20) :: name, ch_err integer(psb_ipk_), save :: idx_bldtp=-1, idx_matasb=-1 @@ -125,7 +127,9 @@ subroutine amg_s_hierarchy_bld(a,desc_a,prec,info) call psb_errpush(info,name) goto 9999 end if - + cpymat_ = .false. + if (present(cpymat)) cpymat_ = cpymat + ! ! Check to ensure all procs have the same ! @@ -180,8 +184,15 @@ subroutine amg_s_hierarchy_bld(a,desc_a,prec,info) ! This is OK, since it may be called by the user even if there ! is only one level ! - prec%precv(1)%base_a => a - prec%precv(1)%base_desc => desc_a + if (cpymat_) then + call a%clone(prec%precv(1)%ac,info) + call desc_a%clone(prec%precv(1)%desc_ac,info) + prec%precv(1)%base_a => prec%precv(1)%ac + prec%precv(1)%base_desc => prec%precv(1)%desc_ac + else + prec%precv(1)%base_a => a + prec%precv(1)%base_desc => desc_a + end if call psb_erractionrestore(err_act) return @@ -280,10 +291,16 @@ subroutine amg_s_hierarchy_bld(a,desc_a,prec,info) ! ! Finest level first; create a GEN_BLOCK ! copy of the descriptor. - ! - prec%precv(1)%base_a => a + ! + if (cpymat_) then + call a%clone(prec%precv(1)%ac,info) + prec%precv(1)%base_a => prec%precv(1)%ac + else + prec%precv(1)%base_a => a + end if call psb_cd_renum_block(desc_a,prec%precv(1)%desc_ac,info) prec%precv(1)%base_desc => prec%precv(1)%desc_ac + newsz = 0 array_build_loop: do i=2, iszv ! @@ -448,6 +465,9 @@ subroutine amg_s_hierarchy_bld(a,desc_a,prec,info) iszv = newsz ! Fix the pointers, but the level 1 should ! be treated differently + if (.not.associated(prec%precv(1)%base_a,a)) then + prec%precv(1)%base_a => prec%precv(1)%ac + end if if (.not.associated(prec%precv(1)%base_desc,desc_a)) then prec%precv(1)%base_desc => prec%precv(1)%desc_ac end if diff --git a/amgprec/impl/amg_smlprec_bld.f90 b/amgprec/impl/amg_smlprec_bld.f90 index a5b06d2c..cce1c358 100644 --- a/amgprec/impl/amg_smlprec_bld.f90 +++ b/amgprec/impl/amg_smlprec_bld.f90 @@ -85,7 +85,7 @@ subroutine amg_smlprec_bld(a,desc_a,p,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type),intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a type(amg_sprec_type),intent(inout),target :: p integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/amg_sprecbld.f90 b/amgprec/impl/amg_sprecbld.f90 index 99ee581c..79f3bcc6 100644 --- a/amgprec/impl/amg_sprecbld.f90 +++ b/amgprec/impl/amg_sprecbld.f90 @@ -65,7 +65,7 @@ subroutine amg_sprecbld(a,desc_a,prec,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type),intent(in), target :: a + type(psb_sspmat_type),intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a class(amg_sprec_type),intent(inout), target :: prec integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/amg_z_hierarchy_bld.F90 b/amgprec/impl/amg_z_hierarchy_bld.F90 index 8d57474e..3588e381 100644 --- a/amgprec/impl/amg_z_hierarchy_bld.F90 +++ b/amgprec/impl/amg_z_hierarchy_bld.F90 @@ -63,7 +63,7 @@ ! info - integer, output. ! Error code. ! -subroutine amg_z_hierarchy_bld(a,desc_a,prec,info) +subroutine amg_z_hierarchy_bld(a,desc_a,prec,info,cpymat) use psb_base_mod use amg_z_inner_mod @@ -72,10 +72,11 @@ subroutine amg_z_hierarchy_bld(a,desc_a,prec,info) Implicit None ! Arguments - type(psb_zspmat_type),intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a class(amg_zprec_type),intent(inout),target :: prec integer(psb_ipk_), intent(out) :: info + logical, intent(in), optional :: cpymat ! Local Variables type(psb_ctxt_type) :: ctxt @@ -90,7 +91,8 @@ subroutine amg_z_hierarchy_bld(a,desc_a,prec,info) type(amg_dml_parms) :: medparms, coarseparms integer(psb_lpk_), allocatable :: ilaggr(:), nlaggr(:) type(psb_lzspmat_type) :: op_prol - type(amg_z_onelev_type), allocatable :: tprecv(:) + type(amg_z_onelev_type), allocatable :: tprecv(:) + logical :: cpymat_ integer(psb_ipk_) :: debug_level, debug_unit character(len=20) :: name, ch_err integer(psb_ipk_), save :: idx_bldtp=-1, idx_matasb=-1 @@ -125,7 +127,9 @@ subroutine amg_z_hierarchy_bld(a,desc_a,prec,info) call psb_errpush(info,name) goto 9999 end if - + cpymat_ = .false. + if (present(cpymat)) cpymat_ = cpymat + ! ! Check to ensure all procs have the same ! @@ -180,8 +184,15 @@ subroutine amg_z_hierarchy_bld(a,desc_a,prec,info) ! This is OK, since it may be called by the user even if there ! is only one level ! - prec%precv(1)%base_a => a - prec%precv(1)%base_desc => desc_a + if (cpymat_) then + call a%clone(prec%precv(1)%ac,info) + call desc_a%clone(prec%precv(1)%desc_ac,info) + prec%precv(1)%base_a => prec%precv(1)%ac + prec%precv(1)%base_desc => prec%precv(1)%desc_ac + else + prec%precv(1)%base_a => a + prec%precv(1)%base_desc => desc_a + end if call psb_erractionrestore(err_act) return @@ -280,10 +291,16 @@ subroutine amg_z_hierarchy_bld(a,desc_a,prec,info) ! ! Finest level first; create a GEN_BLOCK ! copy of the descriptor. - ! - prec%precv(1)%base_a => a + ! + if (cpymat_) then + call a%clone(prec%precv(1)%ac,info) + prec%precv(1)%base_a => prec%precv(1)%ac + else + prec%precv(1)%base_a => a + end if call psb_cd_renum_block(desc_a,prec%precv(1)%desc_ac,info) prec%precv(1)%base_desc => prec%precv(1)%desc_ac + newsz = 0 array_build_loop: do i=2, iszv ! @@ -448,6 +465,9 @@ subroutine amg_z_hierarchy_bld(a,desc_a,prec,info) iszv = newsz ! Fix the pointers, but the level 1 should ! be treated differently + if (.not.associated(prec%precv(1)%base_a,a)) then + prec%precv(1)%base_a => prec%precv(1)%ac + end if if (.not.associated(prec%precv(1)%base_desc,desc_a)) then prec%precv(1)%base_desc => prec%precv(1)%desc_ac end if diff --git a/amgprec/impl/amg_zmlprec_bld.f90 b/amgprec/impl/amg_zmlprec_bld.f90 index 59c7af26..c755ee73 100644 --- a/amgprec/impl/amg_zmlprec_bld.f90 +++ b/amgprec/impl/amg_zmlprec_bld.f90 @@ -85,7 +85,7 @@ subroutine amg_zmlprec_bld(a,desc_a,p,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type),intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a type(amg_zprec_type),intent(inout),target :: p integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/amg_zprecbld.f90 b/amgprec/impl/amg_zprecbld.f90 index 716dfe12..49bf474b 100644 --- a/amgprec/impl/amg_zprecbld.f90 +++ b/amgprec/impl/amg_zprecbld.f90 @@ -65,7 +65,7 @@ subroutine amg_zprecbld(a,desc_a,prec,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type),intent(in), target :: a + type(psb_zspmat_type),intent(inout), target :: a type(psb_desc_type), intent(inout), target :: desc_a class(amg_zprec_type),intent(inout), target :: prec integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_c_as_smoother_bld.f90 b/amgprec/impl/smoother/amg_c_as_smoother_bld.f90 index 1c277eb4..27d531ea 100644 --- a/amgprec/impl/smoother/amg_c_as_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_c_as_smoother_bld.f90 @@ -42,7 +42,7 @@ subroutine amg_c_as_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_as_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_c_base_smoother_bld.f90 b/amgprec/impl/smoother/amg_c_base_smoother_bld.f90 index 3439cdcd..dad040be 100644 --- a/amgprec/impl/smoother/amg_c_base_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_c_base_smoother_bld.f90 @@ -42,7 +42,7 @@ subroutine amg_c_base_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_base_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_c_jac_smoother_bld.f90 b/amgprec/impl/smoother/amg_c_jac_smoother_bld.f90 index 0c4747f3..60e5933d 100644 --- a/amgprec/impl/smoother/amg_c_jac_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_c_jac_smoother_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_c_jac_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_jac_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_c_l1_jac_smoother_bld.f90 b/amgprec/impl/smoother/amg_c_l1_jac_smoother_bld.f90 index a5952bfa..9b239271 100644 --- a/amgprec/impl/smoother/amg_c_l1_jac_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_c_l1_jac_smoother_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_c_l1_jac_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_l1_jac_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_d_as_smoother_bld.f90 b/amgprec/impl/smoother/amg_d_as_smoother_bld.f90 index 835e5a40..155df667 100644 --- a/amgprec/impl/smoother/amg_d_as_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_d_as_smoother_bld.f90 @@ -42,7 +42,7 @@ subroutine amg_d_as_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_as_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_d_base_smoother_bld.f90 b/amgprec/impl/smoother/amg_d_base_smoother_bld.f90 index 96e616df..403f33d2 100644 --- a/amgprec/impl/smoother/amg_d_base_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_d_base_smoother_bld.f90 @@ -42,7 +42,7 @@ subroutine amg_d_base_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_base_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_d_jac_smoother_bld.f90 b/amgprec/impl/smoother/amg_d_jac_smoother_bld.f90 index 27d4bd0c..f1353cb9 100644 --- a/amgprec/impl/smoother/amg_d_jac_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_d_jac_smoother_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_d_jac_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_jac_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_d_l1_jac_smoother_bld.f90 b/amgprec/impl/smoother/amg_d_l1_jac_smoother_bld.f90 index 2a890a1d..e19d3796 100644 --- a/amgprec/impl/smoother/amg_d_l1_jac_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_d_l1_jac_smoother_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_d_l1_jac_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_l1_jac_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_d_poly_smoother_bld.f90 b/amgprec/impl/smoother/amg_d_poly_smoother_bld.f90 index e568ea6c..88b28942 100644 --- a/amgprec/impl/smoother/amg_d_poly_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_d_poly_smoother_bld.f90 @@ -45,7 +45,7 @@ subroutine amg_d_poly_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_poly_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_s_as_smoother_bld.f90 b/amgprec/impl/smoother/amg_s_as_smoother_bld.f90 index f98b7440..36c45f10 100644 --- a/amgprec/impl/smoother/amg_s_as_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_s_as_smoother_bld.f90 @@ -42,7 +42,7 @@ subroutine amg_s_as_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_as_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_s_base_smoother_bld.f90 b/amgprec/impl/smoother/amg_s_base_smoother_bld.f90 index 4327dbae..0464c8cd 100644 --- a/amgprec/impl/smoother/amg_s_base_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_s_base_smoother_bld.f90 @@ -42,7 +42,7 @@ subroutine amg_s_base_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_base_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_s_jac_smoother_bld.f90 b/amgprec/impl/smoother/amg_s_jac_smoother_bld.f90 index e65e2569..a7027db4 100644 --- a/amgprec/impl/smoother/amg_s_jac_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_s_jac_smoother_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_s_jac_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_jac_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_s_l1_jac_smoother_bld.f90 b/amgprec/impl/smoother/amg_s_l1_jac_smoother_bld.f90 index c4f30c41..04631444 100644 --- a/amgprec/impl/smoother/amg_s_l1_jac_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_s_l1_jac_smoother_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_s_l1_jac_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_l1_jac_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_s_poly_smoother_bld.f90 b/amgprec/impl/smoother/amg_s_poly_smoother_bld.f90 index d0ac5e9e..f7ce3e0e 100644 --- a/amgprec/impl/smoother/amg_s_poly_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_s_poly_smoother_bld.f90 @@ -45,7 +45,7 @@ subroutine amg_s_poly_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_poly_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_z_as_smoother_bld.f90 b/amgprec/impl/smoother/amg_z_as_smoother_bld.f90 index 40f0d65d..764e9d28 100644 --- a/amgprec/impl/smoother/amg_z_as_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_z_as_smoother_bld.f90 @@ -42,7 +42,7 @@ subroutine amg_z_as_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_as_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_z_base_smoother_bld.f90 b/amgprec/impl/smoother/amg_z_base_smoother_bld.f90 index f805485a..44f613f9 100644 --- a/amgprec/impl/smoother/amg_z_base_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_z_base_smoother_bld.f90 @@ -42,7 +42,7 @@ subroutine amg_z_base_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_base_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_z_jac_smoother_bld.f90 b/amgprec/impl/smoother/amg_z_jac_smoother_bld.f90 index 0aa987bb..aed114b1 100644 --- a/amgprec/impl/smoother/amg_z_jac_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_z_jac_smoother_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_z_jac_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_jac_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/smoother/amg_z_l1_jac_smoother_bld.f90 b/amgprec/impl/smoother/amg_z_l1_jac_smoother_bld.f90 index f76ba9cb..c780e683 100644 --- a/amgprec/impl/smoother/amg_z_l1_jac_smoother_bld.f90 +++ b/amgprec/impl/smoother/amg_z_l1_jac_smoother_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_z_l1_jac_smoother_bld(a,desc_a,sm,info,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_l1_jac_smoother_type), intent(inout) :: sm integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_c_ainv_solver_bld.f90 b/amgprec/impl/solver/amg_c_ainv_solver_bld.f90 index 2bc80cce..4589825e 100644 --- a/amgprec/impl/solver/amg_c_ainv_solver_bld.f90 +++ b/amgprec/impl/solver/amg_c_ainv_solver_bld.f90 @@ -45,7 +45,7 @@ subroutine amg_c_ainv_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_ainv_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_c_base_solver_bld.f90 b/amgprec/impl/solver/amg_c_base_solver_bld.f90 index 7f71b558..8e92ba47 100644 --- a/amgprec/impl/solver/amg_c_base_solver_bld.f90 +++ b/amgprec/impl/solver/amg_c_base_solver_bld.f90 @@ -41,7 +41,7 @@ subroutine amg_c_base_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) use amg_c_base_solver_mod, amg_protect_name => amg_c_base_solver_bld Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_base_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_c_bwgs_solver_bld.f90 b/amgprec/impl/solver/amg_c_bwgs_solver_bld.f90 index c1bc388d..8f3d19be 100644 --- a/amgprec/impl/solver/amg_c_bwgs_solver_bld.f90 +++ b/amgprec/impl/solver/amg_c_bwgs_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_c_bwgs_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_bwgs_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_c_diag_solver_bld.f90 b/amgprec/impl/solver/amg_c_diag_solver_bld.f90 index 3048605f..ed294460 100644 --- a/amgprec/impl/solver/amg_c_diag_solver_bld.f90 +++ b/amgprec/impl/solver/amg_c_diag_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_c_diag_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_diag_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -122,7 +122,7 @@ subroutine amg_c_l1_diag_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_l1_diag_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_c_gs_solver_bld.f90 b/amgprec/impl/solver/amg_c_gs_solver_bld.f90 index 62dbabee..2726f4de 100644 --- a/amgprec/impl/solver/amg_c_gs_solver_bld.f90 +++ b/amgprec/impl/solver/amg_c_gs_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_c_gs_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_gs_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_c_ilu_solver_bld.f90 b/amgprec/impl/solver/amg_c_ilu_solver_bld.f90 index 3a897f8e..9d4ab328 100644 --- a/amgprec/impl/solver/amg_c_ilu_solver_bld.f90 +++ b/amgprec/impl/solver/amg_c_ilu_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_c_ilu_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_ilu_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_c_invk_solver_bld.f90 b/amgprec/impl/solver/amg_c_invk_solver_bld.f90 index 4d625568..c38665cc 100644 --- a/amgprec/impl/solver/amg_c_invk_solver_bld.f90 +++ b/amgprec/impl/solver/amg_c_invk_solver_bld.f90 @@ -46,7 +46,7 @@ subroutine amg_c_invk_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_invk_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_c_invt_solver_bld.f90 b/amgprec/impl/solver/amg_c_invt_solver_bld.f90 index 9dadba4a..f01409d4 100644 --- a/amgprec/impl/solver/amg_c_invt_solver_bld.f90 +++ b/amgprec/impl/solver/amg_c_invt_solver_bld.f90 @@ -44,7 +44,7 @@ subroutine amg_c_invt_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_invt_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_c_jac_solver_bld.f90 b/amgprec/impl/solver/amg_c_jac_solver_bld.f90 index 2a55b8b5..d6ab3f0b 100644 --- a/amgprec/impl/solver/amg_c_jac_solver_bld.f90 +++ b/amgprec/impl/solver/amg_c_jac_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_c_jac_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_jac_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_c_krm_solver_impl.f90 b/amgprec/impl/solver/amg_c_krm_solver_impl.f90 index a5bf23f1..e17096ec 100644 --- a/amgprec/impl/solver/amg_c_krm_solver_impl.f90 +++ b/amgprec/impl/solver/amg_c_krm_solver_impl.f90 @@ -85,7 +85,7 @@ subroutine amg_c_krm_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_krm_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_c_l1_jac_solver_bld.f90 b/amgprec/impl/solver/amg_c_l1_jac_solver_bld.f90 index b83fe53d..b5665ef4 100644 --- a/amgprec/impl/solver/amg_c_l1_jac_solver_bld.f90 +++ b/amgprec/impl/solver/amg_c_l1_jac_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_c_l1_jac_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_l1_jac_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_c_mumps_solver_bld.F90 b/amgprec/impl/solver/amg_c_mumps_solver_bld.F90 index 926b4ddd..719861b1 100644 --- a/amgprec/impl/solver/amg_c_mumps_solver_bld.F90 +++ b/amgprec/impl/solver/amg_c_mumps_solver_bld.F90 @@ -46,8 +46,7 @@ subroutine c_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type) :: c - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_mumps_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -56,6 +55,7 @@ subroutine c_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) class(psb_c_base_vect_type), intent(in), optional :: vmold class(psb_i_base_vect_type), intent(in), optional :: imold ! Local variables + type(psb_cspmat_type) :: c type(psb_cspmat_type) :: atmp type(psb_c_coo_sparse_mat), target :: acoo #if defined(PSB_IPK4) && defined(PSB_LPK8) diff --git a/amgprec/impl/solver/amg_c_slu_solver_impl.F90 b/amgprec/impl/solver/amg_c_slu_solver_impl.F90 index cdf1e69b..8fa09d84 100644 --- a/amgprec/impl/solver/amg_c_slu_solver_impl.F90 +++ b/amgprec/impl/solver/amg_c_slu_solver_impl.F90 @@ -6,7 +6,7 @@ subroutine amg_c_slu_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_slu_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_c_umf_solver_impl.F90 b/amgprec/impl/solver/amg_c_umf_solver_impl.F90 index 6ee06936..bfb8f7f7 100644 --- a/amgprec/impl/solver/amg_c_umf_solver_impl.F90 +++ b/amgprec/impl/solver/amg_c_umf_solver_impl.F90 @@ -140,7 +140,7 @@ subroutine amg_c_umf_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_cspmat_type), intent(in), target :: a + type(psb_cspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_c_umf_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_d_ainv_solver_bld.f90 b/amgprec/impl/solver/amg_d_ainv_solver_bld.f90 index 1701d74c..e830d9b7 100644 --- a/amgprec/impl/solver/amg_d_ainv_solver_bld.f90 +++ b/amgprec/impl/solver/amg_d_ainv_solver_bld.f90 @@ -45,7 +45,7 @@ subroutine amg_d_ainv_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_ainv_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_d_base_solver_bld.f90 b/amgprec/impl/solver/amg_d_base_solver_bld.f90 index d6a2a0a7..710923d1 100644 --- a/amgprec/impl/solver/amg_d_base_solver_bld.f90 +++ b/amgprec/impl/solver/amg_d_base_solver_bld.f90 @@ -41,7 +41,7 @@ subroutine amg_d_base_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) use amg_d_base_solver_mod, amg_protect_name => amg_d_base_solver_bld Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_base_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_d_bwgs_solver_bld.f90 b/amgprec/impl/solver/amg_d_bwgs_solver_bld.f90 index 29772b52..a8691ac6 100644 --- a/amgprec/impl/solver/amg_d_bwgs_solver_bld.f90 +++ b/amgprec/impl/solver/amg_d_bwgs_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_d_bwgs_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_bwgs_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_d_diag_solver_bld.f90 b/amgprec/impl/solver/amg_d_diag_solver_bld.f90 index 77d34ce7..507fe825 100644 --- a/amgprec/impl/solver/amg_d_diag_solver_bld.f90 +++ b/amgprec/impl/solver/amg_d_diag_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_d_diag_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_diag_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -122,7 +122,7 @@ subroutine amg_d_l1_diag_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_l1_diag_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_d_gs_solver_bld.f90 b/amgprec/impl/solver/amg_d_gs_solver_bld.f90 index 6f2d8c22..b007b2cb 100644 --- a/amgprec/impl/solver/amg_d_gs_solver_bld.f90 +++ b/amgprec/impl/solver/amg_d_gs_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_d_gs_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_gs_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_d_ilu_solver_bld.f90 b/amgprec/impl/solver/amg_d_ilu_solver_bld.f90 index 0a75fd34..40a6febb 100644 --- a/amgprec/impl/solver/amg_d_ilu_solver_bld.f90 +++ b/amgprec/impl/solver/amg_d_ilu_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_d_ilu_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_ilu_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_d_invk_solver_bld.f90 b/amgprec/impl/solver/amg_d_invk_solver_bld.f90 index efddf98b..a13ccbf6 100644 --- a/amgprec/impl/solver/amg_d_invk_solver_bld.f90 +++ b/amgprec/impl/solver/amg_d_invk_solver_bld.f90 @@ -46,7 +46,7 @@ subroutine amg_d_invk_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_invk_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_d_invt_solver_bld.f90 b/amgprec/impl/solver/amg_d_invt_solver_bld.f90 index 63822472..96bf21cd 100644 --- a/amgprec/impl/solver/amg_d_invt_solver_bld.f90 +++ b/amgprec/impl/solver/amg_d_invt_solver_bld.f90 @@ -44,7 +44,7 @@ subroutine amg_d_invt_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_invt_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_d_jac_solver_bld.f90 b/amgprec/impl/solver/amg_d_jac_solver_bld.f90 index 1a8f9456..3e5e5b38 100644 --- a/amgprec/impl/solver/amg_d_jac_solver_bld.f90 +++ b/amgprec/impl/solver/amg_d_jac_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_d_jac_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_jac_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_d_krm_solver_impl.f90 b/amgprec/impl/solver/amg_d_krm_solver_impl.f90 index 8dece46a..6830590c 100644 --- a/amgprec/impl/solver/amg_d_krm_solver_impl.f90 +++ b/amgprec/impl/solver/amg_d_krm_solver_impl.f90 @@ -85,7 +85,7 @@ subroutine amg_d_krm_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_krm_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_d_l1_jac_solver_bld.f90 b/amgprec/impl/solver/amg_d_l1_jac_solver_bld.f90 index 3ba0dc4a..cbe0adf3 100644 --- a/amgprec/impl/solver/amg_d_l1_jac_solver_bld.f90 +++ b/amgprec/impl/solver/amg_d_l1_jac_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_d_l1_jac_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_l1_jac_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_d_mumps_solver_bld.F90 b/amgprec/impl/solver/amg_d_mumps_solver_bld.F90 index 25ef79d1..5ad7e771 100644 --- a/amgprec/impl/solver/amg_d_mumps_solver_bld.F90 +++ b/amgprec/impl/solver/amg_d_mumps_solver_bld.F90 @@ -46,8 +46,7 @@ subroutine d_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type) :: c - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_mumps_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -56,6 +55,7 @@ subroutine d_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) class(psb_d_base_vect_type), intent(in), optional :: vmold class(psb_i_base_vect_type), intent(in), optional :: imold ! Local variables + type(psb_dspmat_type) :: c type(psb_dspmat_type) :: atmp type(psb_d_coo_sparse_mat), target :: acoo #if defined(PSB_IPK4) && defined(PSB_LPK8) diff --git a/amgprec/impl/solver/amg_d_slu_solver_impl.F90 b/amgprec/impl/solver/amg_d_slu_solver_impl.F90 index 2901d5bc..f6ef3dfa 100644 --- a/amgprec/impl/solver/amg_d_slu_solver_impl.F90 +++ b/amgprec/impl/solver/amg_d_slu_solver_impl.F90 @@ -6,7 +6,7 @@ subroutine amg_d_slu_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_slu_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_d_umf_solver_impl.F90 b/amgprec/impl/solver/amg_d_umf_solver_impl.F90 index 5acedfd8..ee2979a6 100644 --- a/amgprec/impl/solver/amg_d_umf_solver_impl.F90 +++ b/amgprec/impl/solver/amg_d_umf_solver_impl.F90 @@ -140,7 +140,7 @@ subroutine amg_d_umf_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_dspmat_type), intent(in), target :: a + type(psb_dspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_d_umf_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_s_ainv_solver_bld.f90 b/amgprec/impl/solver/amg_s_ainv_solver_bld.f90 index c1bfeb24..35c5c062 100644 --- a/amgprec/impl/solver/amg_s_ainv_solver_bld.f90 +++ b/amgprec/impl/solver/amg_s_ainv_solver_bld.f90 @@ -45,7 +45,7 @@ subroutine amg_s_ainv_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_ainv_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_s_base_solver_bld.f90 b/amgprec/impl/solver/amg_s_base_solver_bld.f90 index 5220ff5b..7457e645 100644 --- a/amgprec/impl/solver/amg_s_base_solver_bld.f90 +++ b/amgprec/impl/solver/amg_s_base_solver_bld.f90 @@ -41,7 +41,7 @@ subroutine amg_s_base_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) use amg_s_base_solver_mod, amg_protect_name => amg_s_base_solver_bld Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_base_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_s_bwgs_solver_bld.f90 b/amgprec/impl/solver/amg_s_bwgs_solver_bld.f90 index 4630fc12..4d6b87ad 100644 --- a/amgprec/impl/solver/amg_s_bwgs_solver_bld.f90 +++ b/amgprec/impl/solver/amg_s_bwgs_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_s_bwgs_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_bwgs_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_s_diag_solver_bld.f90 b/amgprec/impl/solver/amg_s_diag_solver_bld.f90 index 9e678a00..c1421dc9 100644 --- a/amgprec/impl/solver/amg_s_diag_solver_bld.f90 +++ b/amgprec/impl/solver/amg_s_diag_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_s_diag_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_diag_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -122,7 +122,7 @@ subroutine amg_s_l1_diag_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_l1_diag_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_s_gs_solver_bld.f90 b/amgprec/impl/solver/amg_s_gs_solver_bld.f90 index fdc5b931..87231eb1 100644 --- a/amgprec/impl/solver/amg_s_gs_solver_bld.f90 +++ b/amgprec/impl/solver/amg_s_gs_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_s_gs_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_gs_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_s_ilu_solver_bld.f90 b/amgprec/impl/solver/amg_s_ilu_solver_bld.f90 index dd0a8bb2..95610961 100644 --- a/amgprec/impl/solver/amg_s_ilu_solver_bld.f90 +++ b/amgprec/impl/solver/amg_s_ilu_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_s_ilu_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_ilu_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_s_invk_solver_bld.f90 b/amgprec/impl/solver/amg_s_invk_solver_bld.f90 index 4864efa3..18b5ff70 100644 --- a/amgprec/impl/solver/amg_s_invk_solver_bld.f90 +++ b/amgprec/impl/solver/amg_s_invk_solver_bld.f90 @@ -46,7 +46,7 @@ subroutine amg_s_invk_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_invk_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_s_invt_solver_bld.f90 b/amgprec/impl/solver/amg_s_invt_solver_bld.f90 index a6eaf54e..6d8ec658 100644 --- a/amgprec/impl/solver/amg_s_invt_solver_bld.f90 +++ b/amgprec/impl/solver/amg_s_invt_solver_bld.f90 @@ -44,7 +44,7 @@ subroutine amg_s_invt_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_invt_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_s_jac_solver_bld.f90 b/amgprec/impl/solver/amg_s_jac_solver_bld.f90 index 2486b017..1ffd0f53 100644 --- a/amgprec/impl/solver/amg_s_jac_solver_bld.f90 +++ b/amgprec/impl/solver/amg_s_jac_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_s_jac_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_jac_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_s_krm_solver_impl.f90 b/amgprec/impl/solver/amg_s_krm_solver_impl.f90 index 177bbfc7..5e304a86 100644 --- a/amgprec/impl/solver/amg_s_krm_solver_impl.f90 +++ b/amgprec/impl/solver/amg_s_krm_solver_impl.f90 @@ -85,7 +85,7 @@ subroutine amg_s_krm_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_krm_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_s_l1_jac_solver_bld.f90 b/amgprec/impl/solver/amg_s_l1_jac_solver_bld.f90 index 6cfff1e9..d87da5fd 100644 --- a/amgprec/impl/solver/amg_s_l1_jac_solver_bld.f90 +++ b/amgprec/impl/solver/amg_s_l1_jac_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_s_l1_jac_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_l1_jac_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_s_mumps_solver_bld.F90 b/amgprec/impl/solver/amg_s_mumps_solver_bld.F90 index 643b5a4d..28016694 100644 --- a/amgprec/impl/solver/amg_s_mumps_solver_bld.F90 +++ b/amgprec/impl/solver/amg_s_mumps_solver_bld.F90 @@ -46,8 +46,7 @@ subroutine s_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type) :: c - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_mumps_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -56,6 +55,7 @@ subroutine s_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) class(psb_s_base_vect_type), intent(in), optional :: vmold class(psb_i_base_vect_type), intent(in), optional :: imold ! Local variables + type(psb_sspmat_type) :: c type(psb_sspmat_type) :: atmp type(psb_s_coo_sparse_mat), target :: acoo #if defined(PSB_IPK4) && defined(PSB_LPK8) diff --git a/amgprec/impl/solver/amg_s_slu_solver_impl.F90 b/amgprec/impl/solver/amg_s_slu_solver_impl.F90 index ba874cc1..f1133d6c 100644 --- a/amgprec/impl/solver/amg_s_slu_solver_impl.F90 +++ b/amgprec/impl/solver/amg_s_slu_solver_impl.F90 @@ -6,7 +6,7 @@ subroutine amg_s_slu_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_slu_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_s_umf_solver_impl.F90 b/amgprec/impl/solver/amg_s_umf_solver_impl.F90 index d7d10448..4ad98c9a 100644 --- a/amgprec/impl/solver/amg_s_umf_solver_impl.F90 +++ b/amgprec/impl/solver/amg_s_umf_solver_impl.F90 @@ -140,7 +140,7 @@ subroutine amg_s_umf_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_sspmat_type), intent(in), target :: a + type(psb_sspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_s_umf_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_z_ainv_solver_bld.f90 b/amgprec/impl/solver/amg_z_ainv_solver_bld.f90 index 63622b33..d9d49fdd 100644 --- a/amgprec/impl/solver/amg_z_ainv_solver_bld.f90 +++ b/amgprec/impl/solver/amg_z_ainv_solver_bld.f90 @@ -45,7 +45,7 @@ subroutine amg_z_ainv_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_ainv_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_z_base_solver_bld.f90 b/amgprec/impl/solver/amg_z_base_solver_bld.f90 index 6e292f29..83aa15b9 100644 --- a/amgprec/impl/solver/amg_z_base_solver_bld.f90 +++ b/amgprec/impl/solver/amg_z_base_solver_bld.f90 @@ -41,7 +41,7 @@ subroutine amg_z_base_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) use amg_z_base_solver_mod, amg_protect_name => amg_z_base_solver_bld Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_base_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_z_bwgs_solver_bld.f90 b/amgprec/impl/solver/amg_z_bwgs_solver_bld.f90 index e48fe35d..bc0175ed 100644 --- a/amgprec/impl/solver/amg_z_bwgs_solver_bld.f90 +++ b/amgprec/impl/solver/amg_z_bwgs_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_z_bwgs_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_bwgs_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_z_diag_solver_bld.f90 b/amgprec/impl/solver/amg_z_diag_solver_bld.f90 index ef743861..6029fe71 100644 --- a/amgprec/impl/solver/amg_z_diag_solver_bld.f90 +++ b/amgprec/impl/solver/amg_z_diag_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_z_diag_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_diag_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -122,7 +122,7 @@ subroutine amg_z_l1_diag_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_l1_diag_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_z_gs_solver_bld.f90 b/amgprec/impl/solver/amg_z_gs_solver_bld.f90 index ff40fdbe..ac60cbaa 100644 --- a/amgprec/impl/solver/amg_z_gs_solver_bld.f90 +++ b/amgprec/impl/solver/amg_z_gs_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_z_gs_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_gs_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_z_ilu_solver_bld.f90 b/amgprec/impl/solver/amg_z_ilu_solver_bld.f90 index 4b109e35..48976430 100644 --- a/amgprec/impl/solver/amg_z_ilu_solver_bld.f90 +++ b/amgprec/impl/solver/amg_z_ilu_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_z_ilu_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_ilu_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_z_invk_solver_bld.f90 b/amgprec/impl/solver/amg_z_invk_solver_bld.f90 index 44776750..bc19bbe8 100644 --- a/amgprec/impl/solver/amg_z_invk_solver_bld.f90 +++ b/amgprec/impl/solver/amg_z_invk_solver_bld.f90 @@ -46,7 +46,7 @@ subroutine amg_z_invk_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_invk_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_z_invt_solver_bld.f90 b/amgprec/impl/solver/amg_z_invt_solver_bld.f90 index 9864fc40..d93b519a 100644 --- a/amgprec/impl/solver/amg_z_invt_solver_bld.f90 +++ b/amgprec/impl/solver/amg_z_invt_solver_bld.f90 @@ -44,7 +44,7 @@ subroutine amg_z_invt_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_invt_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_z_jac_solver_bld.f90 b/amgprec/impl/solver/amg_z_jac_solver_bld.f90 index 4185e069..172200ac 100644 --- a/amgprec/impl/solver/amg_z_jac_solver_bld.f90 +++ b/amgprec/impl/solver/amg_z_jac_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_z_jac_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_jac_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_z_krm_solver_impl.f90 b/amgprec/impl/solver/amg_z_krm_solver_impl.f90 index c0d88b18..87090641 100644 --- a/amgprec/impl/solver/amg_z_krm_solver_impl.f90 +++ b/amgprec/impl/solver/amg_z_krm_solver_impl.f90 @@ -85,7 +85,7 @@ subroutine amg_z_krm_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_krm_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_z_l1_jac_solver_bld.f90 b/amgprec/impl/solver/amg_z_l1_jac_solver_bld.f90 index febe2c3a..e9d7955c 100644 --- a/amgprec/impl/solver/amg_z_l1_jac_solver_bld.f90 +++ b/amgprec/impl/solver/amg_z_l1_jac_solver_bld.f90 @@ -43,7 +43,7 @@ subroutine amg_z_l1_jac_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_l1_jac_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_z_mumps_solver_bld.F90 b/amgprec/impl/solver/amg_z_mumps_solver_bld.F90 index 37997322..da77069a 100644 --- a/amgprec/impl/solver/amg_z_mumps_solver_bld.F90 +++ b/amgprec/impl/solver/amg_z_mumps_solver_bld.F90 @@ -46,8 +46,7 @@ subroutine z_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type) :: c - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_mumps_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info @@ -56,6 +55,7 @@ subroutine z_mumps_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) class(psb_z_base_vect_type), intent(in), optional :: vmold class(psb_i_base_vect_type), intent(in), optional :: imold ! Local variables + type(psb_zspmat_type) :: c type(psb_zspmat_type) :: atmp type(psb_z_coo_sparse_mat), target :: acoo #if defined(PSB_IPK4) && defined(PSB_LPK8) diff --git a/amgprec/impl/solver/amg_z_slu_solver_impl.F90 b/amgprec/impl/solver/amg_z_slu_solver_impl.F90 index d77946d0..d72360af 100644 --- a/amgprec/impl/solver/amg_z_slu_solver_impl.F90 +++ b/amgprec/impl/solver/amg_z_slu_solver_impl.F90 @@ -6,7 +6,7 @@ subroutine amg_z_slu_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_slu_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/amgprec/impl/solver/amg_z_umf_solver_impl.F90 b/amgprec/impl/solver/amg_z_umf_solver_impl.F90 index a6774616..299a4e5e 100644 --- a/amgprec/impl/solver/amg_z_umf_solver_impl.F90 +++ b/amgprec/impl/solver/amg_z_umf_solver_impl.F90 @@ -140,7 +140,7 @@ subroutine amg_z_umf_solver_bld(a,desc_a,sv,info,b,amold,vmold,imold) Implicit None ! Arguments - type(psb_zspmat_type), intent(in), target :: a + type(psb_zspmat_type), intent(inout), target :: a Type(psb_desc_type), Intent(inout) :: desc_a class(amg_z_umf_solver_type), intent(inout) :: sv integer(psb_ipk_), intent(out) :: info diff --git a/cbind/amgprec/Makefile b/cbind/amgprec/Makefile index 844f22dd..9030a368 100644 --- a/cbind/amgprec/Makefile +++ b/cbind/amgprec/Makefile @@ -30,7 +30,7 @@ lib: objs $(CMOD) /bin/cp -p $(HERE)/$(LIBNAME) $(DEST) amg_prec_cbind_mod.o: amg_dprec_cbind_mod.o amg_zprec_cbind_mod.o -#amg_prec_cbind_mod.o: psb_prec_cbind_mod.o + veryclean: clean /bin/rm -f $(HERE)/$(LIBNAME)