xref: /phasta/phSolver/common/asadj.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen        subroutine Asadj (   row_fill_list,
2*59599516SKenneth E. Jansen     &                    iens,        adjcnt   )
3*59599516SKenneth E. Jansenc
4*59599516SKenneth E. Jansenc----------------------------------------------------------------------
5*59599516SKenneth E. Jansenc
6*59599516SKenneth E. Jansenc----------------------------------------------------------------------
7*59599516SKenneth E. Jansenc
8*59599516SKenneth E. Jansen        include "common.h"
9*59599516SKenneth E. Jansenc
10*59599516SKenneth E. Jansen        integer row_fill_list(nshg,15*nnz),
11*59599516SKenneth E. Jansen     &          ien(npro,nshl),
12*59599516SKenneth E. Jansen     &          adjcnt(nshg), ndlist(nshl)
13*59599516SKenneth E. Jansen
14*59599516SKenneth E. Jansen	integer iens(npro,nshl)
15*59599516SKenneth E. Jansenc
16*59599516SKenneth E. Jansenc prefer to show explicit absolute value needed for cubic modes and
17*59599516SKenneth E. Jansenc higher rather than inline abs on pointer as in past versions
18*59599516SKenneth E. Jansenc iens is the signed ien array ien is unsigned
19*59599516SKenneth E. Jansenc
20*59599516SKenneth E. Jansen	ien=abs(iens)
21*59599516SKenneth E. Jansen
22*59599516SKenneth E. Jansen        do i=1,npro
23*59599516SKenneth E. Jansen           do j=1,nshl
24*59599516SKenneth E. Jansen              ndlist(j)=ien(i,j)
25*59599516SKenneth E. Jansen           enddo
26*59599516SKenneth E. Jansen           do j=1,nshl
27*59599516SKenneth E. Jansen              jnd=ndlist(j)
28*59599516SKenneth E. Jansen              jlngth=adjcnt(jnd) ! current length of j's list
29*59599516SKenneth E. Jansen              do k=1,nshl
30*59599516SKenneth E. Jansen                 knd=ndlist(k)
31*59599516SKenneth E. Jansen                 ibroke=zero
32*59599516SKenneth E. Jansen                 do l= 1,jlngth
33*59599516SKenneth E. Jansen                    if(row_fill_list(jnd,l).eq. knd) then
34*59599516SKenneth E. Jansen                       ibroke=1
35*59599516SKenneth E. Jansen                       exit
36*59599516SKenneth E. Jansen                    endif
37*59599516SKenneth E. Jansen                 enddo
38*59599516SKenneth E. Jansen
39*59599516SKenneth E. Jansenc
40*59599516SKenneth E. Jansenc  to get here k was not in  j's list so add it
41*59599516SKenneth E. Jansenc
42*59599516SKenneth E. Jansen                 if(ibroke.eq.0) then
43*59599516SKenneth E. Jansen                    jlngth=jlngth+1 ! lenthen list
44*59599516SKenneth E. Jansen                    if(jlngth.gt.15*nnz) then
45*59599516SKenneth E. Jansen                       write(*,*) 'increase overflow factor in genadj'
46*59599516SKenneth E. Jansen                       stop
47*59599516SKenneth E. Jansen                    endif
48*59599516SKenneth E. Jansen                    row_fill_list(jnd,jlngth)=knd ! add unique entry to list
49*59599516SKenneth E. Jansen                 endif
50*59599516SKenneth E. Jansen              enddo ! finished checking all the k's for this j
51*59599516SKenneth E. Jansen              adjcnt(jnd)=jlngth  ! update the counter
52*59599516SKenneth E. Jansen           enddo                  ! done with j's
53*59599516SKenneth E. Jansen        enddo                   ! done with elements in this block
54*59599516SKenneth E. Jansenc
55*59599516SKenneth E. Jansenc
56*59599516SKenneth E. Jansenc.... end
57*59599516SKenneth E. Jansenc
58*59599516SKenneth E. Jansen        return
59*59599516SKenneth E. Jansen        end
60