20 integer(kind=kint) :: N
21 real(kind=
kreal),
pointer :: alu(:) => null()
23 logical,
save :: INITIALIZED = .false.
31 integer(kind=kint ) :: np
32 real (kind=
kreal) :: sigma_diag
33 real(kind=
kreal),
pointer:: d(:)
35 real (kind=
kreal):: alutmp(1,1), pw(1)
36 integer(kind=kint ):: ii, i, j, k
39 if (hecmat%Iarray(98) == 0 .and. hecmat%Iarray(97) == 0)
return
55 if (hecmat%cmat%n_val.gt.0)
then
56 do k= 1, hecmat%cmat%n_val
57 if (hecmat%cmat%pair(k)%i.ne.hecmat%cmat%pair(k)%j) cycle
58 ii = hecmat%cmat%pair(k)%i
59 alu(ii) = alu(ii) + hecmat%cmat%pair(k)%val(1, 1)
69 alutmp(1,1)= alu(ii) * sigma_diag
70 alutmp(1,1)= 1.d0/alutmp(1,1)
84 real(kind=
kreal),
intent(inout) :: ww(:)
85 integer(kind=kint) :: i
102 if (
associated(alu))
deallocate(alu)
104 initialized = .false.
real(kind=kreal) function, public hecmw_mat_get_sigma_diag(hecmat)
subroutine, public hecmw_precond_diag_11_apply(ww)
subroutine, public hecmw_precond_diag_11_clear()
subroutine, public hecmw_precond_diag_11_setup(hecmat)
integer(kind=4), parameter kreal