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(3,3), pw(3)
36 integer(kind=kint ):: ii, i, j, k
39 if (hecmat%Iarray(98) == 0 .and. hecmat%Iarray(97) == 0)
return
52 alu(9*ii-8) = d(9*ii-8)
53 alu(9*ii-7) = d(9*ii-7)
54 alu(9*ii-6) = d(9*ii-6)
55 alu(9*ii-5) = d(9*ii-5)
56 alu(9*ii-4) = d(9*ii-4)
57 alu(9*ii-3) = d(9*ii-3)
58 alu(9*ii-2) = d(9*ii-2)
59 alu(9*ii-1) = d(9*ii-1)
66 alutmp(1,1)= alu(9*ii-8) * sigma_diag
67 alutmp(1,2)= alu(9*ii-7)
68 alutmp(1,3)= alu(9*ii-6)
69 alutmp(2,1)= alu(9*ii-5)
70 alutmp(2,2)= alu(9*ii-4) * sigma_diag
71 alutmp(2,3)= alu(9*ii-3)
72 alutmp(3,1)= alu(9*ii-2)
73 alutmp(3,2)= alu(9*ii-1)
74 alutmp(3,3)= alu(9*ii ) * sigma_diag
76 alutmp(k,k)= 1.d0/alutmp(k,k)
78 alutmp(i,k)= alutmp(i,k) * alutmp(k,k)
80 pw(j)= alutmp(i,j) - alutmp(i,k)*alutmp(k,j)
87 alu(9*ii-8)= alutmp(1,1)
88 alu(9*ii-7)= alutmp(1,2)
89 alu(9*ii-6)= alutmp(1,3)
90 alu(9*ii-5)= alutmp(2,1)
91 alu(9*ii-4)= alutmp(2,2)
92 alu(9*ii-3)= alutmp(2,3)
93 alu(9*ii-2)= alutmp(3,1)
94 alu(9*ii-1)= alutmp(3,2)
95 alu(9*ii )= alutmp(3,3)
101 hecmat%Iarray(98) = 0
102 hecmat%Iarray(97) = 0
108 real(kind=
kreal),
intent(inout) :: ww(:)
109 integer(kind=kint) :: i
110 real(kind=
kreal) :: x1, x2, x3
121 x2= x2 - alu(9*i-5)*x1
122 x3= x3 - alu(9*i-2)*x1 - alu(9*i-1)*x2
124 x2= alu(9*i-4)*( x2 - alu(9*i-3)*x3 )
125 x1= alu(9*i-8)*( x1 - alu(9*i-6)*x3 - alu(9*i-7)*x2)
137 if (
associated(alu))
deallocate(alu)
139 initialized = .false.