diff --git a/amgprec/amg_c_ainv_solver.F90 b/amgprec/amg_c_ainv_solver.F90 index 2b20847f..e2f4806a 100644 --- a/amgprec/amg_c_ainv_solver.F90 +++ b/amgprec/amg_c_ainv_solver.F90 @@ -106,7 +106,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 diff --git a/amgprec/amg_c_as_smoother.f90 b/amgprec/amg_c_as_smoother.f90 index 27c39e71..8c51c785 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 3004c616..4478d436 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 a113774b..47ca6178 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 ccf86bf2..938d7c7f 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 39c0fa10..2262026b 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 1b277a07..536190ae 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 d9b4a1d2..6884d70b 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_invk_solver.f90 b/amgprec/amg_c_invk_solver.f90 index 40eb3613..181c94c1 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 a73fd19e..bddfb14b 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 70aba712..1d84e4c7 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 90ed85ce..db05c18d 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 4b8b1faa..b64c4582 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 d65fc671..31535809 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_slu_solver.F90 b/amgprec/amg_c_slu_solver.F90 index 5d9e1db9..29f91e8d 100644 --- a/amgprec/amg_c_slu_solver.F90 +++ b/amgprec/amg_c_slu_solver.F90 @@ -256,7 +256,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_slu_solver_type), intent(inout) :: sv integer, intent(out) :: info diff --git a/amgprec/amg_d_ainv_solver.F90 b/amgprec/amg_d_ainv_solver.F90 index d091305b..2d2c9436 100644 --- a/amgprec/amg_d_ainv_solver.F90 +++ b/amgprec/amg_d_ainv_solver.F90 @@ -106,7 +106,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 diff --git a/amgprec/amg_d_as_smoother.f90 b/amgprec/amg_d_as_smoother.f90 index 6e411de4..c93bf296 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 52e52a4d..7a2b3bec 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 f29e4340..77765cee 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 1bc32a8b..e3f607cb 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 22ed4fad..96d8457a 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 5f3d183b..100027c7 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 c7813e6e..e0276fc3 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_invk_solver.f90 b/amgprec/amg_d_invk_solver.f90 index 23c04c6c..4389aac3 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 0ba91619..a6738e67 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 8f3845a0..19dd38ba 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 eb7c93ce..919fd09d 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 9bb48a9e..344b8fac 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 ceaf1735..9ac1633b 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 a87fbb1b..f468f688 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_slu_solver.F90 b/amgprec/amg_d_slu_solver.F90 index 69983efe..3ccb2d52 100644 --- a/amgprec/amg_d_slu_solver.F90 +++ b/amgprec/amg_d_slu_solver.F90 @@ -256,7 +256,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_slu_solver_type), intent(inout) :: sv integer, intent(out) :: info diff --git a/amgprec/amg_d_sludist_solver.F90 b/amgprec/amg_d_sludist_solver.F90 index c962b248..e90a5ff6 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 7a34ff3f..bb542071 100644 --- a/amgprec/amg_d_umf_solver.F90 +++ b/amgprec/amg_d_umf_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_umf_solver_type), intent(inout) :: sv integer, intent(out) :: info diff --git a/amgprec/amg_s_ainv_solver.F90 b/amgprec/amg_s_ainv_solver.F90 index 654ffcd1..1b13d3e5 100644 --- a/amgprec/amg_s_ainv_solver.F90 +++ b/amgprec/amg_s_ainv_solver.F90 @@ -106,7 +106,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 diff --git a/amgprec/amg_s_as_smoother.f90 b/amgprec/amg_s_as_smoother.f90 index 84a7ba8c..8c1922a4 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 39d367f8..1b38fe47 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 ad701e41..cb0e8789 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 ae0f9aef..e5f4e8d3 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 80ee821e..8b2ff68b 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 d88aebca..2254ac89 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 8bca532b..c323e93e 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_invk_solver.f90 b/amgprec/amg_s_invk_solver.f90 index bb663a5f..0128ce8d 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 d4ff72bc..3ae3f6f0 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 6d4ded83..d10aee1a 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 0ecbd10d..54e72597 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 fcabfd13..e1678b8e 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 0f6fb16c..47a5dedf 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 79cbcb00..ba0d869d 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_slu_solver.F90 b/amgprec/amg_s_slu_solver.F90 index 89cbfc5a..74efb17a 100644 --- a/amgprec/amg_s_slu_solver.F90 +++ b/amgprec/amg_s_slu_solver.F90 @@ -256,7 +256,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_slu_solver_type), intent(inout) :: sv integer, intent(out) :: info diff --git a/amgprec/amg_z_ainv_solver.F90 b/amgprec/amg_z_ainv_solver.F90 index e88d83f3..686cb565 100644 --- a/amgprec/amg_z_ainv_solver.F90 +++ b/amgprec/amg_z_ainv_solver.F90 @@ -106,7 +106,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 diff --git a/amgprec/amg_z_as_smoother.f90 b/amgprec/amg_z_as_smoother.f90 index 619ee2a9..98488d47 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 548571c9..baa156d3 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 7c017459..979186d6 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 4d3746d9..96f280d6 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 1ac665b3..1b2a56dc 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 6a1a3afb..8677ea87 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 f2c6f29b..65e170a9 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_invk_solver.f90 b/amgprec/amg_z_invk_solver.f90 index db5d84e2..391f4c2a 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 45d59f8e..ac30045d 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 bfe83949..ace8ad88 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 5d273537..c4eba84e 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 da539732..bf69e31b 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 6e11096c..d7ffb5e4 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_slu_solver.F90 b/amgprec/amg_z_slu_solver.F90 index 54957513..39eaf095 100644 --- a/amgprec/amg_z_slu_solver.F90 +++ b/amgprec/amg_z_slu_solver.F90 @@ -256,7 +256,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_slu_solver_type), intent(inout) :: sv integer, intent(out) :: info diff --git a/amgprec/amg_z_sludist_solver.F90 b/amgprec/amg_z_sludist_solver.F90 index d78356a3..9248d181 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 549da100..e935ac24 100644 --- a/amgprec/amg_z_umf_solver.F90 +++ b/amgprec/amg_z_umf_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_umf_solver_type), intent(inout) :: sv integer, intent(out) :: info diff --git a/amgprec/impl/amg_dmlprec_aply.f90 b/amgprec/impl/amg_dmlprec_aply.f90 index 983fb937..1becfe33 100644 --- a/amgprec/impl/amg_dmlprec_aply.f90 +++ b/amgprec/impl/amg_dmlprec_aply.f90 @@ -230,6 +230,7 @@ subroutine amg_dmlprec_aply_vect(alpha,p,x,beta,y,desc_data,trans,work,info) character :: trans_ real(psb_dpk_) :: beta_ logical :: do_alloc_wrk + logical, parameter :: log_dbg=.false. type(amg_dmlprec_wrk_type), allocatable, target :: mlprec_wrk(:) name='amg_dmlprec_aply' @@ -273,6 +274,8 @@ subroutine amg_dmlprec_aply_vect(alpha,p,x,beta,y,desc_data,trans,work,info) goto 9999 end if + if (log_dbg) write(debug_unit,*) 'mlprec 0:',& + & psb_genrm2(vx2l,base_desc,info) do isweep = 1, p%outer_sweeps - 1 ! ! With the current implementation, y2l is zeroed internally at first smoother. @@ -305,7 +308,9 @@ subroutine amg_dmlprec_aply_vect(alpha,p,x,beta,y,desc_data,trans,work,info) ! call p%wrk(level)%vy2l%zero() ! call inner_ml_aply(level,p,trans_,work,info) - + if (log_dbg) write(debug_unit,*) 'mlprec e:',& + & psb_genrm2(vy2l,base_desc,info) + if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& & a_err='Inner prec aply') @@ -591,6 +596,9 @@ contains integer(psb_ipk_) :: nlev, ilev, sweeps logical :: pre, post character(len=20) :: name + logical, parameter :: do_timings=.true. + logical, parameter :: log_dbg=.false. + integer(psb_ipk_), save :: ml_mlt_smth=-1, ml_mlt_rp=-1, ml_mlt_rsd=-1 name = 'inner_inner_mult' info = psb_success_ @@ -608,6 +616,12 @@ contains if(debug_level > 1) then write(debug_unit,*) me,' inner_mult at level ',level end if + if ((do_timings).and.(ml_mlt_smth==-1)) & + & ml_mlt_smth = psb_get_timer_idx("ML-MLT: smoother ") + if ((do_timings).and.(ml_mlt_rp==-1)) & + & ml_mlt_rp = psb_get_timer_idx("ML-MLT: RestProl") + if ((do_timings).and.(ml_mlt_rsd==-1)) & + & ml_mlt_rsd = psb_get_timer_idx("ML-MLT: Residual") sweeps_post = p%precv(level)%parms%sweeps_post sweeps_pre = p%precv(level)%parms%sweeps_pre @@ -623,7 +637,10 @@ contains ! Apply the first smoother ! The residual has been prepared before the recursive call. ! + if (log_dbg) write(debug_unit,*) 'mlprec 1:',level,& + & psb_genrm2(vx2l,base_desc,info) + if (do_timings) call psb_tic(ml_mlt_smth) if (pre) then if (me >=0) then !!$ write(0,*) me,'Applying smoother pre ', level @@ -646,10 +663,15 @@ contains end if end if endif + if (do_timings) call psb_toc(ml_mlt_smth) + if (log_dbg) write(debug_unit,*) 'mlprec 2:',level,& + & psb_genrm2(vy2l,base_desc,info) + ! ! Compute the residual for next level and call recursively ! if (pre) then + if (do_timings) call psb_tic(ml_mlt_rsd) call psb_geaxpby(done,vx2l,& & dzero,vty,& & base_desc,info) @@ -657,6 +679,12 @@ contains if (info == psb_success_) call psb_spmm(-done,base_a,& & vy2l,done,vty,& & base_desc,info,work=work,trans=trans) + if (do_timings) call psb_toc(ml_mlt_rsd) + if (log_dbg) write(debug_unit,*) 'mlprec 3:',level,& + & psb_genrm2(vty,base_desc,info) + + if (do_timings) call psb_tic(ml_mlt_rp) + if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& & a_err='Error during residue') @@ -671,7 +699,9 @@ contains & a_err='Error during restriction') goto 9999 end if + if (do_timings) call psb_toc(ml_mlt_rp) else + if (do_timings) call psb_tic(ml_mlt_rp) ! Shortcut: just transfer x2l. call p%precv(level+1)%map_rstr(done,vx2l,& & dzero,p%precv(level+1)%wrk%vx2l,& @@ -682,6 +712,7 @@ contains & a_err='Error during restriction') goto 9999 end if + if (do_timings) call psb_toc(ml_mlt_rp) endif call inner_ml_aply(level+1,p,trans,work,info) @@ -689,18 +720,22 @@ contains ! ! Apply the prolongator ! + if (do_timings) call psb_tic(ml_mlt_rp) call p%precv(level+1)%map_prol(done,& & p%precv(level+1)%wrk%vy2l,done,vy2l,& & info,work=work,& & vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1)) + if (do_timings) call psb_toc(ml_mlt_rp) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& & a_err='Error during prolongation') goto 9999 end if + if (log_dbg) write(debug_unit,*) 'mlprec 5:',level,& + & psb_genrm2(vy2l,base_desc,info) if (p%precv(level)%parms%ml_cycle == amg_wcycle_ml_) then - + if (do_timings) call psb_tic(ml_mlt_rsd) if (me >=0) then call psb_geaxpby(done,vx2l, dzero,vty,& & base_desc,info) @@ -708,10 +743,13 @@ contains & vy2l,done,vty,& & base_desc,info,work=work,trans=trans) end if + if (do_timings) call psb_toc(ml_mlt_rsd) + if (do_timings) call psb_tic(ml_mlt_rp) if (info == psb_success_) & & call p%precv(level+1)%map_rstr(done,vty,& & dzero,p%precv(level+1)%wrk%vx2l,info,work=work,& & vtx=wv(1),vty=p%precv(level+1)%wrk%wv(1)) + if (do_timings) call psb_toc(ml_mlt_rp) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& & a_err='Error during W-cycle restriction') @@ -720,10 +758,12 @@ contains call inner_ml_aply(level+1,p,trans,work,info) + if (do_timings) call psb_tic(ml_mlt_rp) if (info == psb_success_) call p%precv(level+1)%map_prol(done, & & p%precv(level+1)%wrk%vy2l,done,vy2l,& & info,work=work,& & vtx=p%precv(level+1)%wrk%wv(1),vty=wv(1)) + if (do_timings) call psb_toc(ml_mlt_rp) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& @@ -736,6 +776,7 @@ contains if (post) then if (me >=0) then + if (do_timings) call psb_tic(ml_mlt_rsd) call psb_geaxpby(done,vx2l,& & dzero,vty,& & base_desc,info) @@ -747,7 +788,9 @@ contains & a_err='Error during residue') goto 9999 end if + if (do_timings) call psb_toc(ml_mlt_rsd) + if (do_timings) call psb_tic(ml_mlt_smth) ! ! Apply the second smoother ! @@ -762,7 +805,10 @@ contains & vty,done,vy2l, base_desc, trans,& & sweeps,work,wv,info,init='Z') end if + if (do_timings) call psb_toc(ml_mlt_smth) end if + if (log_dbg) write(debug_unit,*) 'mlprec 6:',level,& + & psb_genrm2(vty,base_desc,info) if (info /= psb_success_) then call psb_errpush(psb_err_internal_error_,name,& @@ -774,12 +820,16 @@ contains else if (level == nlev) then !!$ write(0,*) me,'Applying smoother at top level ',psb_errstatus_fatal() + if (do_timings) call psb_tic(ml_mlt_smth) if (me >=0) then sweeps = p%precv(level)%parms%sweeps_pre if (info == psb_success_) call p%precv(level)%sm%apply(done,& & vx2l,dzero,vy2l,base_desc, trans,& & sweeps,work,wv,info) end if + if (do_timings) call psb_toc(ml_mlt_smth) + if (log_dbg) write(debug_unit,*) 'mlprec 7:',level,& + & psb_genrm2(vy2l,base_desc,info) !!$ write(0,*) me,' Done applying smoother at top level ',psb_errstatus_fatal() else diff --git a/amgprec/impl/level/amg_c_base_onelev_memory_use.f90 b/amgprec/impl/level/amg_c_base_onelev_memory_use.f90 index f4147bb3..4b58000d 100644 --- a/amgprec/impl/level/amg_c_base_onelev_memory_use.f90 +++ b/amgprec/impl/level/amg_c_base_onelev_memory_use.f90 @@ -89,7 +89,7 @@ subroutine amg_c_base_onelev_memory_use(lv,il,nl,ilmin,info,iout,verbosity,prefi if (present(global)) then global_ = global else - global_ = .false. + global_ = .true. end if if (present(prefix)) then diff --git a/amgprec/impl/level/amg_d_base_onelev_memory_use.f90 b/amgprec/impl/level/amg_d_base_onelev_memory_use.f90 index 0a5e2066..25534fd0 100644 --- a/amgprec/impl/level/amg_d_base_onelev_memory_use.f90 +++ b/amgprec/impl/level/amg_d_base_onelev_memory_use.f90 @@ -89,7 +89,7 @@ subroutine amg_d_base_onelev_memory_use(lv,il,nl,ilmin,info,iout,verbosity,prefi if (present(global)) then global_ = global else - global_ = .false. + global_ = .true. end if if (present(prefix)) then diff --git a/amgprec/impl/level/amg_s_base_onelev_memory_use.f90 b/amgprec/impl/level/amg_s_base_onelev_memory_use.f90 index f59d8dd9..9709ba3e 100644 --- a/amgprec/impl/level/amg_s_base_onelev_memory_use.f90 +++ b/amgprec/impl/level/amg_s_base_onelev_memory_use.f90 @@ -89,7 +89,7 @@ subroutine amg_s_base_onelev_memory_use(lv,il,nl,ilmin,info,iout,verbosity,prefi if (present(global)) then global_ = global else - global_ = .false. + global_ = .true. end if if (present(prefix)) then diff --git a/amgprec/impl/level/amg_z_base_onelev_memory_use.f90 b/amgprec/impl/level/amg_z_base_onelev_memory_use.f90 index 4c1e3432..0e12a6bc 100644 --- a/amgprec/impl/level/amg_z_base_onelev_memory_use.f90 +++ b/amgprec/impl/level/amg_z_base_onelev_memory_use.f90 @@ -89,7 +89,7 @@ subroutine amg_z_base_onelev_memory_use(lv,il,nl,ilmin,info,iout,verbosity,prefi if (present(global)) then global_ = global else - global_ = .false. + global_ = .true. end if if (present(prefix)) then diff --git a/amgprec/impl/smoother/amg_c_as_smoother_bld.f90 b/amgprec/impl/smoother/amg_c_as_smoother_bld.f90 index 3b06552f..0fb1c390 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 5b87b794..a25f670b 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 3efd6cbf..4a3e34c6 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 86b5b4c7..3c6e52a7 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 2c8b6048..30f5362a 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 86726ba9..f58d1e97 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_apply_vect.f90 b/amgprec/impl/smoother/amg_d_jac_smoother_apply_vect.f90 index cafb6c8c..d4edbd32 100644 --- a/amgprec/impl/smoother/amg_d_jac_smoother_apply_vect.f90 +++ b/amgprec/impl/smoother/amg_d_jac_smoother_apply_vect.f90 @@ -64,6 +64,7 @@ subroutine amg_d_jac_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,& character :: trans_, init_ real(psb_dpk_) :: res, resdenum character(len=20) :: name='d_jac_smoother_apply_v' + logical, parameter :: log_dbg=.false. call psb_erractionsave(err_act) @@ -159,6 +160,8 @@ subroutine amg_d_jac_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,& & a_err='wrong init to smoother_apply') goto 9999 end select + if (log_dbg) write(0,*) 'smoother jac 1 :',& + & psb_genrm2(ty,desc_data,info) do i=1, sweeps-1 ! diff --git a/amgprec/impl/smoother/amg_d_jac_smoother_bld.f90 b/amgprec/impl/smoother/amg_d_jac_smoother_bld.f90 index 35b61297..7a863023 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 19dcac7f..7238951d 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_apply_vect.f90 b/amgprec/impl/smoother/amg_d_poly_smoother_apply_vect.f90 index 32926bd6..3c181841 100644 --- a/amgprec/impl/smoother/amg_d_poly_smoother_apply_vect.f90 +++ b/amgprec/impl/smoother/amg_d_poly_smoother_apply_vect.f90 @@ -36,7 +36,7 @@ ! ! subroutine amg_d_poly_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,& - & sweeps,work,wv,info,init,initu) + & sweeps,work,wv,info,init,initu) use psb_base_mod use amg_d_diag_solver @@ -55,6 +55,10 @@ subroutine amg_d_poly_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,& integer(psb_ipk_), intent(out) :: info character, intent(in), optional :: init type(psb_d_vect_type),intent(inout), optional :: initu + ! Timers + logical, parameter :: do_timings=.true. + integer(psb_ipk_), save :: poly_1=-1, poly_2=-1, poly_3=-1 + integer(psb_ipk_), save :: poly_mv=-1, poly_sv=-1, poly_vect=-1 ! integer(psb_ipk_) :: n_row,n_col type(psb_d_vect_type) :: tx, ty, tz, r @@ -92,7 +96,19 @@ subroutine amg_d_poly_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,& call psb_errpush(info,name) goto 9999 end if - + + if ((do_timings).and.(poly_1==-1)) & + & poly_1 = psb_get_timer_idx("POLY: Chebychev4") + if ((do_timings).and.(poly_2==-1)) & + & poly_2 = psb_get_timer_idx("POLY: OptChebychev4") + if ((do_timings).and.(poly_3==-1)) & + & poly_3 = psb_get_timer_idx("POLY: OptChebychev1") + if ((do_timings).and.(poly_mv==-1)) & + & poly_mv = psb_get_timer_idx("POLY: spMV") + if ((do_timings).and.(poly_vect==-1)) & + & poly_vect = psb_get_timer_idx("POLY: Vectors") + if ((do_timings).and.(poly_sv==-1)) & + & poly_sv = psb_get_timer_idx("POLY: solver") n_row = desc_data%get_local_rows() n_col = desc_data%get_local_cols() @@ -125,38 +141,39 @@ subroutine amg_d_poly_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,& select case(sm%variant) case(amg_poly_lottes_) + if (do_timings) call psb_tic(poly_1) block real(psb_dpk_) :: cz, cr ! b == x ! x == tx ! - do i=1, sm%pdegree + do i=1, sm%pdegree-1 ! B r_{k-1} - call sm%sv%apply(done,r,dzero,ty,desc_data,trans_,aux,wv(5:),info,init='Z') + if (do_timings) call psb_tic(poly_sv) + call sm%sv%apply(done,r,dzero,ty,desc_data,trans_,aux,wv(5:),info,init='Z') ! ty = M^{-1} r + if (do_timings) call psb_toc(poly_sv) cz = (2*i*done-3)/(2*i*done+done) cr = (8*i*done-4)/((2*i*done+done)*sm%rho_ba) - if (.false.) then - ! z_k = cz z_{k-1} + cr ty = cz z_{k-1} + cr Br_{k-1} - call psb_geaxpby(cr,ty,cz,tz,desc_data,info) - ! r_k = b-Ax_k = x -A tx - call psb_geaxpby(done,tz,done,tx,desc_data,info) - else - call psb_abgdxyz(cr,cz,done,done,ty,tz,tx,desc_data,info) - end if - if (.false.) then - call psb_geaxpby(done,x,dzero,r,desc_data,info) - call psb_spmm(-done,sm%pa,tx,done,r,desc_data,info,work=aux,trans=trans_) - else - call psb_spmm(-done,sm%pa,tz,done,r,desc_data,info,work=aux,trans=trans_) - end if -!!$ res = psb_genrm2(r,desc_data,info) -!!$ write(0,*) 'Polynomial smoother LOTTES',i,res - ! x_k = x_{k-1} + z_k + if (do_timings) call psb_tic(poly_vect) + call psb_abgdxyz(cr,cz,done,done,ty,tz,tx,desc_data,info) ! zk = cz * zk-1 + cr * rk-1 + if (do_timings) call psb_toc(poly_vect) + if (do_timings) call psb_tic(poly_mv) + call psb_spmm(-done,sm%pa,tz,done,r,desc_data,info,work=aux,trans=trans_) + if (do_timings) call psb_toc(poly_mv) end do + if (do_timings) call psb_tic(poly_sv) + call sm%sv%apply(done,r,dzero,ty,desc_data,trans_,aux,wv(5:),info,init='Z') ! ty = M^{-1} r + if (do_timings) call psb_toc(poly_sv) + cz = (2*sm%pdegree*done-3)/(2*sm%pdegree*done+done) + cr = (8*sm%pdegree*done-4)/((2*sm%pdegree*done+done)*sm%rho_ba) + if (do_timings) call psb_tic(poly_vect) + call psb_abgdxyz(cr,cz,done,done,ty,tz,tx,desc_data,info) + if (do_timings) call psb_toc(poly_vect) end block + if (do_timings) call psb_toc(poly_1) case(amg_poly_lottes_beta_) - + if (do_timings) call psb_tic(poly_2) block real(psb_dpk_) :: cz, cr ! b == x @@ -170,32 +187,30 @@ subroutine amg_d_poly_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,& sm%poly_beta(1:sm%pdegree) = amg_d_poly_beta_mat(1:sm%pdegree,sm%pdegree) end if - do i=1, sm%pdegree + do i=1, sm%pdegree-1 ! B r_{k-1} + if (do_timings) call psb_tic(poly_sv) call sm%sv%apply(done,r,dzero,ty,desc_data,trans_,aux,wv(5:),info,init='Z') + if (do_timings) call psb_toc(poly_sv) cz = (2*i*done-3)/(2*i*done+done) cr = (8*i*done-4)/((2*i*done+done)*sm%rho_ba) - if (.false.) then - ! z_k = cz z_{k-1} + cr ty = cz z_{k-1} + cr Br_{k-1} - call psb_geaxpby(cr,ty,cz,tz,desc_data,info) - ! r_k = b-Ax_k = x -A tx - call psb_geaxpby(sm%poly_beta(i),tz,done,tx,desc_data,info) - else - call psb_abgdxyz(cr,cz,sm%poly_beta(i),done,ty,tz,tx,desc_data,info) - end if - if (.false.) then - call psb_geaxpby(done,x,dzero,r,desc_data,info) - call psb_spmm(-done,sm%pa,tx,done,r,desc_data,info,work=aux,trans=trans_) - else - call psb_spmm(-done,sm%pa,tz,done,r,desc_data,info,work=aux,trans=trans_) - end if -!!$ res = psb_genrm2(r,desc_data,info) -!!$ write(0,*) 'Polynomial smoother LOTTES_BETA',i,res - ! x_k = x_{k-1} + z_k + if (do_timings) call psb_tic(poly_vect) + call psb_abgdxyz(cr,cz,sm%poly_beta(i),done,ty,tz,tx,desc_data,info) + if (do_timings) call psb_toc(poly_vect) + if (do_timings) call psb_tic(poly_mv) + call psb_spmm(-done,sm%pa,tz,done,r,desc_data,info,work=aux,trans=trans_) + if (do_timings) call psb_toc(poly_mv) end do + call sm%sv%apply(done,r,dzero,ty,desc_data,trans_,aux,wv(5:),info,init='Z') + cz = (2*sm%pdegree*done-3)/(2*sm%pdegree*done+done) + cr = (8*sm%pdegree*done-4)/((2*sm%pdegree*done+done)*sm%rho_ba) + if (do_timings) call psb_tic(poly_vect) + call psb_abgdxyz(cr,cz,sm%poly_beta(sm%pdegree),done,ty,tz,tx,desc_data,info) + if (do_timings) call psb_toc(poly_vect) end block - + if (do_timings) call psb_toc(poly_2) case(amg_poly_new_) + if (do_timings) call psb_tic(poly_3) block real(psb_dpk_) :: sigma, theta, delta, rho_old, rho ! b == x @@ -206,40 +221,35 @@ subroutine amg_d_poly_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,& delta = (done-sm%cf_a)/2 sigma = theta/delta rho_old = done/sigma + if (do_timings) call psb_tic(poly_sv) call sm%sv%apply(done,r,dzero,ty,desc_data,trans_,aux,wv(5:),info,init='Z') + if (do_timings) call psb_toc(poly_sv) call psb_geaxpby((done/sm%rho_ba),ty,dzero,r,desc_data,info) - if (.false.) then - call psb_geaxpby((done/theta),r,dzero,tz,desc_data,info) - call psb_geaxpby(done,tz,done,tx,desc_data,info) - else - call psb_abgdxyz((done/theta),dzero,done,done,r,tz,tx,desc_data,info) - end if + if (do_timings) call psb_tic(poly_vect) + call psb_abgdxyz((done/theta),dzero,done,done,r,tz,tx,desc_data,info) + if (do_timings) call psb_toc(poly_vect) ! tz == d do i=1, sm%pdegree-1 ! - ! + ! ! r_{k-1} = r_k - (1/rho(BA)) B A d_k + if (do_timings) call psb_tic(poly_mv) call psb_spmm(done,sm%pa,tz,dzero,ty,desc_data,info,work=aux,trans=trans_) + if (do_timings) call psb_toc(poly_mv) + if (do_timings) call psb_tic(poly_sv) call sm%sv%apply(-(done/sm%rho_ba),ty,done,r,desc_data,trans_,aux,wv(5:),info,init='Z') - + if (do_timings) call psb_toc(poly_sv) ! ! d_{k+1} = (rho rho_old) d_k + 2(rho/delta) r_{k+1} rho = done/(2*sigma - rho_old) - if (.false.) then - call psb_geaxpby((2*rho/delta),r,(rho*rho_old),tz,desc_data,info) - call psb_geaxpby(done,tz,done,tx,desc_data,info) - else - call psb_abgdxyz((2*rho/delta),(rho*rho_old),done,done,r,tz,tx,desc_data,info) - end if -!!$ res = psb_genrm2(r,desc_data,info) -!!$ write(0,*) 'Polynomial smoother NEW ',i,res - ! x_k = x_{k-1} + z_k + if (do_timings) call psb_tic(poly_vect) + call psb_abgdxyz((2*rho/delta),(rho*rho_old),done,done,r,tz,tx,desc_data,info) + if (do_timings) call psb_toc(poly_vect) rho_old = rho end do end block - - + if (do_timings) call psb_toc(poly_3) case default info=psb_err_internal_error_ call psb_errpush(info,name,& diff --git a/amgprec/impl/smoother/amg_d_poly_smoother_bld.f90 b/amgprec/impl/smoother/amg_d_poly_smoother_bld.f90 index dd156912..7b50f461 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 81e42463..2b40dc11 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 177c1084..684d8ac9 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 738b92bf..ab8906ee 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 1deea048..407ee9d8 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_apply_vect.f90 b/amgprec/impl/smoother/amg_s_poly_smoother_apply_vect.f90 index fca259ff..de05bedb 100644 --- a/amgprec/impl/smoother/amg_s_poly_smoother_apply_vect.f90 +++ b/amgprec/impl/smoother/amg_s_poly_smoother_apply_vect.f90 @@ -36,7 +36,7 @@ ! ! subroutine amg_s_poly_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,& - & sweeps,work,wv,info,init,initu) + & sweeps,work,wv,info,init,initu) use psb_base_mod use amg_s_diag_solver @@ -55,6 +55,10 @@ subroutine amg_s_poly_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,& integer(psb_ipk_), intent(out) :: info character, intent(in), optional :: init type(psb_s_vect_type),intent(inout), optional :: initu + ! Timers + logical, parameter :: do_timings=.true. + integer(psb_ipk_), save :: poly_1=-1, poly_2=-1, poly_3=-1 + integer(psb_ipk_), save :: poly_mv=-1, poly_sv=-1, poly_vect=-1 ! integer(psb_ipk_) :: n_row,n_col type(psb_s_vect_type) :: tx, ty, tz, r @@ -92,7 +96,19 @@ subroutine amg_s_poly_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,& call psb_errpush(info,name) goto 9999 end if - + + if ((do_timings).and.(poly_1==-1)) & + & poly_1 = psb_get_timer_idx("POLY: Chebychev4") + if ((do_timings).and.(poly_2==-1)) & + & poly_2 = psb_get_timer_idx("POLY: OptChebychev4") + if ((do_timings).and.(poly_3==-1)) & + & poly_3 = psb_get_timer_idx("POLY: OptChebychev1") + if ((do_timings).and.(poly_mv==-1)) & + & poly_mv = psb_get_timer_idx("POLY: spMV") + if ((do_timings).and.(poly_vect==-1)) & + & poly_vect = psb_get_timer_idx("POLY: Vectors") + if ((do_timings).and.(poly_sv==-1)) & + & poly_sv = psb_get_timer_idx("POLY: solver") n_row = desc_data%get_local_rows() n_col = desc_data%get_local_cols() @@ -125,38 +141,39 @@ subroutine amg_s_poly_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,& select case(sm%variant) case(amg_poly_lottes_) + if (do_timings) call psb_tic(poly_1) block real(psb_spk_) :: cz, cr ! b == x ! x == tx ! - do i=1, sm%pdegree + do i=1, sm%pdegree-1 ! B r_{k-1} - call sm%sv%apply(sone,r,szero,ty,desc_data,trans_,aux,wv(5:),info,init='Z') + if (do_timings) call psb_tic(poly_sv) + call sm%sv%apply(sone,r,szero,ty,desc_data,trans_,aux,wv(5:),info,init='Z') ! ty = M^{-1} r + if (do_timings) call psb_toc(poly_sv) cz = (2*i*sone-3)/(2*i*sone+sone) cr = (8*i*sone-4)/((2*i*sone+sone)*sm%rho_ba) - if (.false.) then - ! z_k = cz z_{k-1} + cr ty = cz z_{k-1} + cr Br_{k-1} - call psb_geaxpby(cr,ty,cz,tz,desc_data,info) - ! r_k = b-Ax_k = x -A tx - call psb_geaxpby(sone,tz,sone,tx,desc_data,info) - else - call psb_abgdxyz(cr,cz,sone,sone,ty,tz,tx,desc_data,info) - end if - if (.false.) then - call psb_geaxpby(sone,x,szero,r,desc_data,info) - call psb_spmm(-sone,sm%pa,tx,sone,r,desc_data,info,work=aux,trans=trans_) - else - call psb_spmm(-sone,sm%pa,tz,sone,r,desc_data,info,work=aux,trans=trans_) - end if -!!$ res = psb_genrm2(r,desc_data,info) -!!$ write(0,*) 'Polynomial smoother LOTTES',i,res - ! x_k = x_{k-1} + z_k + if (do_timings) call psb_tic(poly_vect) + call psb_abgdxyz(cr,cz,sone,sone,ty,tz,tx,desc_data,info) ! zk = cz * zk-1 + cr * rk-1 + if (do_timings) call psb_toc(poly_vect) + if (do_timings) call psb_tic(poly_mv) + call psb_spmm(-sone,sm%pa,tz,sone,r,desc_data,info,work=aux,trans=trans_) + if (do_timings) call psb_toc(poly_mv) end do + if (do_timings) call psb_tic(poly_sv) + call sm%sv%apply(sone,r,szero,ty,desc_data,trans_,aux,wv(5:),info,init='Z') ! ty = M^{-1} r + if (do_timings) call psb_toc(poly_sv) + cz = (2*sm%pdegree*sone-3)/(2*sm%pdegree*sone+sone) + cr = (8*sm%pdegree*sone-4)/((2*sm%pdegree*sone+sone)*sm%rho_ba) + if (do_timings) call psb_tic(poly_vect) + call psb_abgdxyz(cr,cz,sone,sone,ty,tz,tx,desc_data,info) + if (do_timings) call psb_toc(poly_vect) end block + if (do_timings) call psb_toc(poly_1) case(amg_poly_lottes_beta_) - + if (do_timings) call psb_tic(poly_2) block real(psb_spk_) :: cz, cr ! b == x @@ -170,32 +187,30 @@ subroutine amg_s_poly_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,& sm%poly_beta(1:sm%pdegree) = amg_d_poly_beta_mat(1:sm%pdegree,sm%pdegree) end if - do i=1, sm%pdegree + do i=1, sm%pdegree-1 ! B r_{k-1} + if (do_timings) call psb_tic(poly_sv) call sm%sv%apply(sone,r,szero,ty,desc_data,trans_,aux,wv(5:),info,init='Z') + if (do_timings) call psb_toc(poly_sv) cz = (2*i*sone-3)/(2*i*sone+sone) cr = (8*i*sone-4)/((2*i*sone+sone)*sm%rho_ba) - if (.false.) then - ! z_k = cz z_{k-1} + cr ty = cz z_{k-1} + cr Br_{k-1} - call psb_geaxpby(cr,ty,cz,tz,desc_data,info) - ! r_k = b-Ax_k = x -A tx - call psb_geaxpby(sm%poly_beta(i),tz,sone,tx,desc_data,info) - else - call psb_abgdxyz(cr,cz,sm%poly_beta(i),sone,ty,tz,tx,desc_data,info) - end if - if (.false.) then - call psb_geaxpby(sone,x,szero,r,desc_data,info) - call psb_spmm(-sone,sm%pa,tx,sone,r,desc_data,info,work=aux,trans=trans_) - else - call psb_spmm(-sone,sm%pa,tz,sone,r,desc_data,info,work=aux,trans=trans_) - end if -!!$ res = psb_genrm2(r,desc_data,info) -!!$ write(0,*) 'Polynomial smoother LOTTES_BETA',i,res - ! x_k = x_{k-1} + z_k + if (do_timings) call psb_tic(poly_vect) + call psb_abgdxyz(cr,cz,sm%poly_beta(i),sone,ty,tz,tx,desc_data,info) + if (do_timings) call psb_toc(poly_vect) + if (do_timings) call psb_tic(poly_mv) + call psb_spmm(-sone,sm%pa,tz,sone,r,desc_data,info,work=aux,trans=trans_) + if (do_timings) call psb_toc(poly_mv) end do + call sm%sv%apply(sone,r,szero,ty,desc_data,trans_,aux,wv(5:),info,init='Z') + cz = (2*sm%pdegree*sone-3)/(2*sm%pdegree*sone+sone) + cr = (8*sm%pdegree*sone-4)/((2*sm%pdegree*sone+sone)*sm%rho_ba) + if (do_timings) call psb_tic(poly_vect) + call psb_abgdxyz(cr,cz,sm%poly_beta(sm%pdegree),sone,ty,tz,tx,desc_data,info) + if (do_timings) call psb_toc(poly_vect) end block - + if (do_timings) call psb_toc(poly_2) case(amg_poly_new_) + if (do_timings) call psb_tic(poly_3) block real(psb_spk_) :: sigma, theta, delta, rho_old, rho ! b == x @@ -206,40 +221,35 @@ subroutine amg_s_poly_smoother_apply_vect(alpha,sm,x,beta,y,desc_data,trans,& delta = (sone-sm%cf_a)/2 sigma = theta/delta rho_old = sone/sigma + if (do_timings) call psb_tic(poly_sv) call sm%sv%apply(sone,r,szero,ty,desc_data,trans_,aux,wv(5:),info,init='Z') + if (do_timings) call psb_toc(poly_sv) call psb_geaxpby((sone/sm%rho_ba),ty,szero,r,desc_data,info) - if (.false.) then - call psb_geaxpby((sone/theta),r,szero,tz,desc_data,info) - call psb_geaxpby(sone,tz,sone,tx,desc_data,info) - else - call psb_abgdxyz((sone/theta),szero,sone,sone,r,tz,tx,desc_data,info) - end if + if (do_timings) call psb_tic(poly_vect) + call psb_abgdxyz((sone/theta),szero,sone,sone,r,tz,tx,desc_data,info) + if (do_timings) call psb_toc(poly_vect) ! tz == d do i=1, sm%pdegree-1 ! - ! + ! ! r_{k-1} = r_k - (1/rho(BA)) B A d_k + if (do_timings) call psb_tic(poly_mv) call psb_spmm(sone,sm%pa,tz,szero,ty,desc_data,info,work=aux,trans=trans_) + if (do_timings) call psb_toc(poly_mv) + if (do_timings) call psb_tic(poly_sv) call sm%sv%apply(-(sone/sm%rho_ba),ty,sone,r,desc_data,trans_,aux,wv(5:),info,init='Z') - + if (do_timings) call psb_toc(poly_sv) ! ! d_{k+1} = (rho rho_old) d_k + 2(rho/delta) r_{k+1} rho = sone/(2*sigma - rho_old) - if (.false.) then - call psb_geaxpby((2*rho/delta),r,(rho*rho_old),tz,desc_data,info) - call psb_geaxpby(sone,tz,sone,tx,desc_data,info) - else - call psb_abgdxyz((2*rho/delta),(rho*rho_old),sone,sone,r,tz,tx,desc_data,info) - end if -!!$ res = psb_genrm2(r,desc_data,info) -!!$ write(0,*) 'Polynomial smoother NEW ',i,res - ! x_k = x_{k-1} + z_k + if (do_timings) call psb_tic(poly_vect) + call psb_abgdxyz((2*rho/delta),(rho*rho_old),sone,sone,r,tz,tx,desc_data,info) + if (do_timings) call psb_toc(poly_vect) rho_old = rho end do end block - - + if (do_timings) call psb_toc(poly_3) case default info=psb_err_internal_error_ call psb_errpush(info,name,& diff --git a/amgprec/impl/smoother/amg_s_poly_smoother_bld.f90 b/amgprec/impl/smoother/amg_s_poly_smoother_bld.f90 index 09b01248..b5bae635 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 c4fc6deb..7b3d521a 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 4f4b0985..5f779d25 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 3a95bf32..62176538 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 571933a3..5074d1e6 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 33e011c7..40cd54dc 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 c4b498ed..68cb2f42 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 11ea6576..afd612c3 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 fa16a66f..e0970cab 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 79be20b5..0e0eed58 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 a348fcea..2218457f 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 e70515e0..3fc9dd1e 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 b81edf62..64acc010 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 c896de1d..e7550b89 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_l1_jac_solver_bld.f90 b/amgprec/impl/solver/amg_c_l1_jac_solver_bld.f90 index 12bb2b3b..618bcc17 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 1debd9a6..53b548a1 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(IPK4) && defined(LPK8) diff --git a/amgprec/impl/solver/amg_d_ainv_solver_bld.f90 b/amgprec/impl/solver/amg_d_ainv_solver_bld.f90 index d271cb8e..218e6c17 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 95c38f46..8084013b 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 de5f91f8..49639824 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 e9fda7a9..0256c6c6 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_apply_vect.f90 b/amgprec/impl/solver/amg_d_gs_solver_apply_vect.f90 index d7b31026..121876a7 100644 --- a/amgprec/impl/solver/amg_d_gs_solver_apply_vect.f90 +++ b/amgprec/impl/solver/amg_d_gs_solver_apply_vect.f90 @@ -60,6 +60,7 @@ subroutine amg_d_gs_solver_apply_vect(alpha,sv,x,beta,y,desc_data,& integer(psb_ipk_) :: np, me, i, err_act character :: trans_, init_ character(len=20) :: name='d_gs_solver_apply' + logical, parameter :: log_dbg=.false. call psb_erractionsave(err_act) ctxt = desc_data%get_ctxt() @@ -133,7 +134,12 @@ subroutine amg_d_gs_solver_apply_vect(alpha,sv,x,beta,y,desc_data,& select case (init_) case('Z') call psb_geaxpby(done,x,dzero,tw,desc_data,info) + if (log_dbg) write(0,*) 'gs 1:',& + & psb_genrm2(tw,desc_data,info) + call psb_spsm(done,sv%l,tw,dzero,xit,desc_data,info) + if (log_dbg) write(0,*) 'gs 2:',& + & psb_genrm2(xit,desc_data,info) itxst = 2 case('Y') call psb_geaxpby(done,y,dzero,xit,desc_data,info) @@ -159,13 +165,23 @@ subroutine amg_d_gs_solver_apply_vect(alpha,sv,x,beta,y,desc_data,& ! do itx=itxst,sv%sweeps call psb_geaxpby(done,x,dzero,tw,desc_data,info) + if (log_dbg) write(0,*) 'gs 3:',& + & psb_genrm2(tw,desc_data,info) ! Update with U. The off-diagonal block is taken care ! from the Jacobi smoother, hence this is purely local. call psb_spmm(-done,sv%u,xit,done,tw,desc_data,info,doswap=.false.) + if (log_dbg) write(0,*) 'gs 4:',& + & psb_genrm2(xit,desc_data,info) + call psb_spsm(done,sv%l,tw,dzero,xit,desc_data,info) + if (log_dbg) write(0,*) 'gs 5:',& + & psb_genrm2(xit,desc_data,info) + end do call psb_geaxpby(alpha,xit,beta,y,desc_data,info) + if (log_dbg) write(0,*) 'gs 6:',& + & psb_genrm2(y,desc_data,info) else ! diff --git a/amgprec/impl/solver/amg_d_gs_solver_bld.f90 b/amgprec/impl/solver/amg_d_gs_solver_bld.f90 index 918712b5..f8e9e0f7 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 7a49e47e..18087ebf 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 2471ae71..d17227ab 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 d87ddabe..368d3769 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 4effcca5..4b88b741 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_l1_jac_solver_bld.f90 b/amgprec/impl/solver/amg_d_l1_jac_solver_bld.f90 index c5979ccd..184ae453 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 da9a1f21..0de5d586 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(IPK4) && defined(LPK8) diff --git a/amgprec/impl/solver/amg_s_ainv_solver_bld.f90 b/amgprec/impl/solver/amg_s_ainv_solver_bld.f90 index 7b67f339..db4fc98b 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 73a0f448..31ae14ff 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 d285d0b3..9ae451da 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 54ec6bc4..9bd2a614 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 6e0870b7..3b5ffc96 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 6c36bec2..d590214e 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 2bf38536..4de5a569 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 d6918971..3f3aadc9 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 0af2cb78..b6167106 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_l1_jac_solver_bld.f90 b/amgprec/impl/solver/amg_s_l1_jac_solver_bld.f90 index d7663326..350db335 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 d9dab4bb..7b366840 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(IPK4) && defined(LPK8) diff --git a/amgprec/impl/solver/amg_z_ainv_solver_bld.f90 b/amgprec/impl/solver/amg_z_ainv_solver_bld.f90 index 36123436..0cd41882 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 251b3f42..2c1f4833 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 a953c608..98aaf84a 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 4db78218..1d7b4764 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 748a6122..76a8fa47 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 36c91ad8..a7b8acf0 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 6166c072..1d896740 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 7590bd44..588a147a 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 d9b2233f..685ce1eb 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_l1_jac_solver_bld.f90 b/amgprec/impl/solver/amg_z_l1_jac_solver_bld.f90 index 8e9b0c37..3f506153 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 94c0425f..dffe6a14 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(IPK4) && defined(LPK8)