90 nstart1,rp1,cval1,aval1,nstart2,rp2,cval2,aval2)
98 INTEGER :: ndim, gndim, nnz1, nnz2, nstart1, nstart2, nrows1, nrows2
100 REAL(kind=wp),
DIMENSION(nnz1) :: aval1
101 REAL(kind=wp),
DIMENSION(nnz2) :: aval2
102 INTEGER,
DIMENSION(nnz1) :: cval1
103 INTEGER,
DIMENSION(nnz2) :: cval2
104 INTEGER,
DIMENSION(nrows1+1) :: rp1
105 INTEGER,
DIMENSION(nrows2+1) :: rp2
108 INTEGER ::
i,
j, counter1, counter2, counter3, nnzrow, nnz, foundnz
109 REAL(kind=wp),
DIMENSION(gndim) :: row1, row2, row3
120 IF(
j > rp1(
i-nstart1+1))
THEN
121 IF(
j <= rp1(
i-nstart1+2))
THEN
122 counter1 = counter1 + 1
123 row1(cval1(counter1)+1) = aval1(counter1)
132 IF(
j > rp2(
i-nstart2+1))
THEN
133 IF(
j <= rp2(
i-nstart2+2))
THEN
134 counter2 = counter2 + 1
135 row2(cval2(counter2)+1) = aval2(counter2)
142 row3(
j) = row1(
j) + row2(
j)
146 IF(abs(row3(
j)) > 0.0 )
THEN
147 counter3 = counter3 + 1
156 ALLOCATE(aval_temp(nnz_temp))
157 ALLOCATE(cval_temp(nnz_temp))
158 ALLOCATE(rp_temp(nrows1+1))
171 IF(
j > rp1(
i-nstart1+1))
THEN
172 IF(
j <= rp1(
i-nstart1+2))
THEN
173 counter1 = counter1 + 1
174 row1(cval1(counter1)+1) = aval1(counter1)
185 IF(
j > rp2(
i-nstart2+1))
THEN
186 IF(
j <= rp2(
i-nstart2+2))
THEN
187 counter2 = counter2 + 1
188 row2(cval2(counter2)+1) = aval2(counter2)
196 row3(
j) = row1(
j) + row2(
j)
201 IF(abs(row3(
j)) > 0.0 )
THEN
202 counter3 = counter3 + 1
204 cval_temp(counter3) =
j - 1
205 aval_temp(counter3) = row3(
j)
208 rp_temp(
i+1) = rp_temp(
i) + nnzrow
220 1000
FORMAT(1000(f5.1,
' '))
255 nstart1,rp1,cval1,aval1,vec,ans)
262 INTEGER :: ndim, gndim, nnz1, nstart1, nrows1
264 REAL(kind=wp),
DIMENSION(nnz1) :: aval1
265 INTEGER,
DIMENSION(nnz1) :: cval1
266 INTEGER,
DIMENSION(nrows1+1) :: rp1
267 REAL(kind=wp) :: vec(gndim)
270 REAL(kind=wp) :: ans(nrows1)
273 INTEGER ::
i,
j, counter1
274 REAL(kind=wp),
DIMENSION(gndim) :: row1
275 REAL(kind=wp) :: tempval
281 IF ((
i >= nstart1) .AND. (
i < nstart1+nrows1))
THEN
285 IF(
j > rp1(
i-nstart1+1))
THEN
286 IF(
j <= rp1(
i-nstart1+2))
THEN
287 counter1 = counter1 + 1
288 row1(cval1(counter1)+1) = aval1(counter1)
294 ans(
i-nstart1+1) = ans(
i-nstart1+1) + row1(
j) * vec(
j)
299 1000
FORMAT(1000(f5.1,
' '))
337 INTEGER :: ndim, nstart, nrows
338 REAL(kind=wp),
DIMENSION(1:ndim,1:ndim) ::
a
347 DO i = nstart, nstart+nrows-1
349 IF ( abs(
a(
i,
j)) > 0.0 )
THEN
350 nnz_temp = nnz_temp + 1
354 ALLOCATE(rp_temp(1:nrows+1))
355 ALLOCATE(cval_temp(1:nnz_temp))
356 ALLOCATE(aval_temp(1:nnz_temp))
361 DO i = nstart, nstart+nrows-1
363 IF( abs(
a(
i,
j)) > 0.0 )
THEN
364 aval_temp(avali) =
a(
i,
j)
365 cval_temp(avali) =
j-1
369 rp_temp(
i-nstart+2) = avali-1
418 INTEGER :: ndim, nnz, nstart, nrows, ipos, jpos
419 REAL(kind=wp) :: val, tempval, tempval2
420 REAL(kind=wp),
DIMENSION(nnz) :: aval
421 INTEGER,
DIMENSION(nnz) :: cval
422 INTEGER,
DIMENSION(nrows+1) :: rp
425 INTEGER ::
i,
j, counter, counter1, nnzrow
426 REAL(kind=wp),
DIMENSION(ndim) :: row
430 DO i = rp(ipos-nstart+1)+1, rp(ipos-nstart+2)
431 IF (cval(
i) == jpos-1)
THEN
436 IF (counter == 1)
THEN
443 ALLOCATE(aval_temp(nnz_temp))
444 ALLOCATE(cval_temp(nnz_temp))
445 ALLOCATE(rp_temp(nrows+1))
448 IF (nnz_temp == nnz)
THEN
449 rp_temp(1:nrows+1) = rp(1:nrows+1)
450 cval_temp(1:nnz_temp) = cval(1:nnz)
451 aval_temp(1:nnz_temp) = aval(1:nnz)
452 DO i = rp(ipos-nstart+1)+1, rp(ipos-nstart+2)
453 IF (cval(
i) == jpos-1)
THEN
454 aval_temp(
i) = aval_temp(
i) + val
458 DO i = 1, rp(ipos-nstart+2)
459 cval_temp(
i) = cval(
i)
460 aval_temp(
i) = aval(
i)
462 cval_temp(rp(ipos-nstart+2)+1) = jpos-1
463 aval_temp(rp(ipos-nstart+2)+1) = val
464 DO i = rp(ipos-nstart+2)+1, rp(nrows+1)
465 cval_temp(
i+1) = cval(
i)
466 aval_temp(
i+1) = aval(
i)
468 DO i = 1, ipos-nstart+1
471 DO i = ipos-nstart+2, nrows+1
472 rp_temp(
i) = rp(
i) + 1
518 INTEGER :: ndim, nnz, nstart, nrows, ipos, jpos
520 REAL(kind=wp),
DIMENSION(nnz) :: aval
521 INTEGER,
DIMENSION(nnz) :: cval
522 INTEGER,
DIMENSION(nrows+1) :: rp
525 INTEGER ::
i,
j, counter
526 REAL(kind=wp),
DIMENSION(ndim) :: row
547 DO i = rp(ipos-nstart+1)+1, rp(ipos-nstart+2)
548 IF (cval(
i) == jpos-1)
THEN
601 INTEGER :: ndim, nnz, nstart, nrows, ipos, jpos, newnstart, newnrows
603 REAL(kind=wp),
DIMENSION(nnz) :: aval
604 INTEGER,
DIMENSION(nnz) :: cval
605 INTEGER,
DIMENSION(nrows+1) :: rp
608 INTEGER ::
i,
j, counter, counter1, counter2, nnzrow
609 REAL(kind=wp),
DIMENSION(ndim) :: row
618 IF(
j <= rp(
i+1))
THEN
619 counter = counter + 1
620 IF(
i >= newnstart-nstart+1)
THEN
621 IF(
i < newnstart -nstart + 1 + newnrows)
THEN
622 nnz_temp = nnz_temp + 1
633 ALLOCATE(aval_temp(nnz_temp))
634 ALLOCATE(cval_temp(nnz_temp))
635 ALLOCATE(rp_temp(newnrows+1))
647 IF(
j <= rp(
i+1))
THEN
648 counter = counter + 1
649 IF(
i >= newnstart - nstart + 1)
THEN
650 IF(
i < newnstart + newnrows - nstart + 1)
THEN
651 row(cval(counter)+1) = aval(counter)
660 IF(row(
j) /= 0.0)
THEN
661 IF(
i >= newnstart - nstart + 1)
THEN
662 IF(
i < newnstart + newnrows - nstart + 1)
THEN
663 counter1 = counter1 + 1
665 cval_temp(counter1) =
j - 1
666 aval_temp(counter1) = row(
j)
671 IF(
i >= newnstart - nstart + 1)
THEN
672 IF(
i < newnstart + newnrows - nstart + 1)
THEN
673 counter2 = counter2 + 1
674 rp_temp(counter2+1) = rp_temp(counter2) + nnzrow
subroutine comp_row_mat(ndim, A, nstart, nrows)
subroutine comp_row_add(ndim, gndim, nrows1, nrows2, nnz1, nnz2, nstart1, rp1, cval1, aval1, nstart2, rp2, cval2, aval2)
subroutine comp_row_getval(ndim, nrows, nnz, nstart, rp, cval, aval, ipos, jpos, val)
subroutine comp_row_vecmult(gndim, nrows1, nnz1, nstart1, rp1, cval1, aval1, vec, ans)
subroutine comp_row_resize(ndim, nrows, nnz, nstart, rp, cval, aval, newnstart, newnrows)
subroutine comp_row_addval(ndim, nrows, nnz, nstart, rp, cval, aval, ipos, jpos, val)