7 allocated_space, cols, values, row_lengths, ierr)
11 integer(kind=kint),
intent(in) :: id
12 integer(kind=kint),
intent(in) :: n_requested_rows
13 integer(kind=kint),
intent(in) :: requested_rows(n_requested_rows)
14 integer(kind=kint),
intent(in) :: allocated_space
15 integer(kind=kint),
intent(out) :: cols(allocated_space)
16 real(kind=
kreal),
intent(out) :: values(allocated_space)
17 integer(kind=kint),
intent(out) :: row_lengths(n_requested_rows)
18 integer(kind=kint),
intent(out) :: ierr
21 integer(kind=kint) :: m, i, row, inod, idof, nl, nd, nu, js, je, j, jj, jdof, start, ndof
26 do i = 1, n_requested_rows
27 row = requested_rows(i) + 1
28 inod = (row-1)/ndof + 1
29 idof = row - (inod-1)*ndof
30 nl = (hecmat%indexL(inod) - hecmat%indexL(inod-1)) * ndof
32 nu = (hecmat%indexU(inod) - hecmat%indexU(inod-1)) * ndof
33 if (allocated_space < m + nl + nd + nu)
return
35 js = hecmat%indexL(inod-1)+1
36 je = hecmat%indexL(inod)
40 cols(m) = (jj-1)*ndof + jdof - 1
41 values(m) = hecmat%AL((j-1)*ndof*ndof + (idof-1)*ndof + jdof)
46 cols(m) = (inod-1)*ndof + jdof - 1
47 values(m) = hecmat%D((inod-1)*ndof*ndof + (idof-1)*ndof + jdof)
50 js = hecmat%indexU(inod-1)+1
51 je = hecmat%indexU(inod)
55 cols(m) = (jj-1)*ndof + jdof - 1
56 values(m) = hecmat%AU((j-1)*ndof*ndof + (idof-1)*ndof + jdof)
60 row_lengths(i) = m - start
70 integer(kind=kint),
intent(in) :: id
71 integer(kind=kint),
intent(in) :: in_length
72 real(kind=
kreal),
intent(in) :: p(in_length)
73 integer(kind=kint),
intent(in) :: out_length
74 real(kind=
kreal),
intent(out) :: ap(out_length)
75 integer(kind=kint),
intent(out) :: ierr
78 real(kind=
kreal),
allocatable :: w(:)
79 integer(kind=kint) :: i
81 allocate(w(hecmat%NP*hecmat%NDOF))
82 do i = 1, hecmat%N*hecmat%NDOF
95 integer(kind=kint),
intent(in) :: id
96 real(kind=
kreal),
intent(inout) :: x(*)
97 integer(kind=kint),
intent(out) :: ierr
110 integer(kind=kint),
intent(in) :: id
111 integer(kind=kint),
intent(out) :: ierr
126 integer(kind=kint),
intent(in) :: id
127 integer(kind=kint),
intent(in) :: x_length
128 real(kind=
kreal),
intent(inout) :: x(x_length)
129 integer(kind=kint),
intent(in) :: rhs_length
130 real(kind=
kreal),
intent(in) :: rhs(rhs_length)
131 integer(kind=kint),
intent(out) :: ierr
135 real(kind=
kreal),
allocatable :: resid(:)
136 integer(kind=kint) :: i
137 real(kind=
kreal) :: commtime
138 integer(kind=kint) :: num_sweeps, i_sweep
139 integer(kind=kint) :: opt(10)
144 allocate(resid(hecmat%NP * hecmat%NDOF))
145 do i_sweep = 1, num_sweeps
152 x(i) = x(i) + resid(i)
164 integer(kind=kint),
intent(in) :: id
165 integer(kind=kint),
intent(out) :: ierr
178 integer(kind=kint),
intent(in) :: id
179 integer(kind=kint),
intent(out) :: ierr
194 integer(kind=kint),
intent(in) :: id
195 integer(kind=kint),
intent(in) :: x_length
196 real(kind=
kreal),
intent(inout) :: x(x_length)
197 integer(kind=kint),
intent(in) :: rhs_length
198 real(kind=
kreal),
intent(in) :: rhs(rhs_length)
199 integer(kind=kint),
intent(out) :: ierr
203 real(kind=
kreal),
allocatable :: resid(:)
204 integer(kind=kint) :: i
205 real(kind=
kreal) :: commtime
206 integer(kind=kint) :: num_sweeps, i_sweep
207 integer(kind=kint) :: opt(10)
212 allocate(resid(hecmat%NP * hecmat%NDOF))
213 do i_sweep = 1, num_sweeps
220 x(i) = x(i) + resid(i)
232 integer(kind=kint),
intent(in) :: id
233 integer(kind=kint),
intent(out) :: ierr