xref: /phasta/phSolver/compressible/localt.f (revision 712d3df0b59ebebaaeaea358162c8d2c043c6e08)
159599516SKenneth E. Jansen        subroutine localt (global, rlocal, ien, n, code)
259599516SKenneth E. Jansenc
359599516SKenneth E. Jansenc----------------------------------------------------------------------
459599516SKenneth E. Jansenc
559599516SKenneth E. Jansenc This subroutine performs a vector gather/scatter operation. This
659599516SKenneth E. Jansenc is the transpose of local.f, i.e., recieves a global and returns
759599516SKenneth E. Jansenc a transposed local, or the oposite.
859599516SKenneth E. Jansenc
959599516SKenneth E. Jansenc input:
1059599516SKenneth E. Jansenc  global (nshg,n)             : global array
1159599516SKenneth E. Jansenc  rlocal (npro,n,nenl)         : local array
12*513954efSKenneth E. Jansenc  ien    (npro,nshl)      : nodal connectivity
1359599516SKenneth E. Jansenc  n                            : number of d.o.f.'s to be copied
1459599516SKenneth E. Jansenc  code                         : the transfer code
1559599516SKenneth E. Jansenc                                  .eq. 'gather  ', from global to local
1659599516SKenneth E. Jansenc                                  .eq. 'scatter ', add  local to global
1759599516SKenneth E. Jansenc                                  .eq. 'globaliz', from local to global
1859599516SKenneth E. Jansenc
1959599516SKenneth E. Jansenc
2059599516SKenneth E. Jansenc Zdenek Johan, Winter 1992.
2159599516SKenneth E. Jansenc----------------------------------------------------------------------
2259599516SKenneth E. Jansenc
2359599516SKenneth E. Jansen        include "common.h"
2459599516SKenneth E. Jansen
25*513954efSKenneth E. Jansen        dimension global(nshg,n),           rlocal(npro,n,nshl),
26*513954efSKenneth E. Jansen     &            ien(npro,nshl)
2759599516SKenneth E. Jansenc
2859599516SKenneth E. Jansen        character*8 code
2959599516SKenneth E. Jansenc
3059599516SKenneth E. Jansenc.... ------------------------>  'localization  '  <--------------------
3159599516SKenneth E. Jansenc
3259599516SKenneth E. Jansen        if (code .eq. 'gather  ') then
3359599516SKenneth E. Jansenc
3459599516SKenneth E. Jansenc.... set timer
3559599516SKenneth E. Jansenc
3659599516SKenneth E. Jansen          call timer ('Gather  ')
3759599516SKenneth E. Jansenc
3859599516SKenneth E. Jansenc.... gather the data
3959599516SKenneth E. Jansenc
4059599516SKenneth E. Jansen          ttim(3) = ttim(3) - secs(0.0)
4159599516SKenneth E. Jansen
42*513954efSKenneth E. Jansen          do j = 1, nshl
4359599516SKenneth E. Jansen            do i = 1, n
4459599516SKenneth E. Jansen              rlocal(:,i,j) = global(ien(:,j),i)
4559599516SKenneth E. Jansen            enddo
4659599516SKenneth E. Jansen          enddo
4759599516SKenneth E. Jansen
4859599516SKenneth E. Jansen	  ttim(3) = ttim(3) + secs(0.0)
4959599516SKenneth E. Jansen
5059599516SKenneth E. Jansenc
5159599516SKenneth E. Jansenc.... transfer count
5259599516SKenneth E. Jansenc
5359599516SKenneth E. Jansenc          gbytes = gbytes + n*nenl*npro
5459599516SKenneth E. Jansenc
5559599516SKenneth E. Jansenc.... return
5659599516SKenneth E. Jansenc
5759599516SKenneth E. Jansen          call timer ('Back    ')
5859599516SKenneth E. Jansen          return
5959599516SKenneth E. Jansen        endif
6059599516SKenneth E. Jansenc
6159599516SKenneth E. Jansenc.... ------------------------->  'assembling '  <----------------------
6259599516SKenneth E. Jansenc
6359599516SKenneth E. Jansen        if (code .eq. 'scatter ') then
6459599516SKenneth E. Jansenc
6559599516SKenneth E. Jansenc.... set timer
6659599516SKenneth E. Jansenc
6759599516SKenneth E. Jansen          call timer ('Scatter ')
6859599516SKenneth E. Jansenc
6959599516SKenneth E. Jansenc.... scatter the data (possible collisions)
7059599516SKenneth E. Jansenc
7159599516SKenneth E. Jansen          ttim(4) = ttim(4) - secs(0.0)
7259599516SKenneth E. Jansen
73*513954efSKenneth E. Jansen          do j = 1, nshl
7459599516SKenneth E. Jansen            do i = 1, n
7559599516SKenneth E. Jansen              do nel = 1,npro
7659599516SKenneth E. Jansen                global(ien(nel,j),i) = global(ien(nel,j),i)
7759599516SKenneth E. Jansen     &                               + rlocal(nel,i,j)
7859599516SKenneth E. Jansen              enddo
7959599516SKenneth E. Jansen            enddo
8059599516SKenneth E. Jansen          enddo
8159599516SKenneth E. Jansen
8259599516SKenneth E. Jansen	  ttim(4) = ttim(4) + secs(0.0)
8359599516SKenneth E. Jansen
8459599516SKenneth E. Jansenc
8559599516SKenneth E. Jansenc.... transfer and flop counts
8659599516SKenneth E. Jansenc
8759599516SKenneth E. Jansenc          sbytes = sbytes + n*nenl*npro
8859599516SKenneth E. Jansenc          flops  = flops  + n*nenl*npro
8959599516SKenneth E. Jansenc
9059599516SKenneth E. Jansenc.... return
9159599516SKenneth E. Jansenc
9259599516SKenneth E. Jansen          call timer ('Back    ')
9359599516SKenneth E. Jansen          return
9459599516SKenneth E. Jansen        endif
9559599516SKenneth E. Jansenc
9659599516SKenneth E. Jansenc.... ------------------------->  'globalizing '  <----------------------
9759599516SKenneth E. Jansenc
9859599516SKenneth E. Jansen        if (code .eq. 'globaliz') then
9959599516SKenneth E. Jansenc
10059599516SKenneth E. Jansenc.... scatter the data (possible collisions)
10159599516SKenneth E. Jansenc
102*513954efSKenneth E. Jansen          do j = 1, nshl
10359599516SKenneth E. Jansen            do i = 1, n
10459599516SKenneth E. Jansen              do nel = 1,npro
10559599516SKenneth E. Jansen                global(ien(nel,j),i) = rlocal(nel,i,j)
10659599516SKenneth E. Jansen              enddo
10759599516SKenneth E. Jansen            enddo
10859599516SKenneth E. Jansen          enddo
10959599516SKenneth E. Jansenc
11059599516SKenneth E. Jansenc.... return
11159599516SKenneth E. Jansenc
11259599516SKenneth E. Jansen          call timer ('Back    ')
11359599516SKenneth E. Jansen          return
11459599516SKenneth E. Jansen        endif
11559599516SKenneth E. Jansenc
11659599516SKenneth E. Jansenc.... --------------------------->  error  <---------------------------
11759599516SKenneth E. Jansenc
11859599516SKenneth E. Jansen        call error ('local   ', code, 0)
11959599516SKenneth E. Jansenc
12059599516SKenneth E. Jansenc.... end
12159599516SKenneth E. Jansenc
12259599516SKenneth E. Jansen        end
12359599516SKenneth E. Jansenc
12459599516SKenneth E. Jansenc
12559599516SKenneth E. Jansenc
12659599516SKenneth E. Jansen        subroutine localtSclr (global, rlocal, ien, code)
12759599516SKenneth E. Jansenc
12859599516SKenneth E. Jansenc----------------------------------------------------------------------
12959599516SKenneth E. Jansenc
13059599516SKenneth E. Jansenc This subroutine performs a vector gather/scatter operation. This
13159599516SKenneth E. Jansenc is the transpose of local.f, i.e., recieves a global and returns
13259599516SKenneth E. Jansenc a transposed local, or the oposite.
13359599516SKenneth E. Jansenc
13459599516SKenneth E. Jansenc input:
13559599516SKenneth E. Jansenc  global (nshg)              : global array
136*513954efSKenneth E. Jansenc  rlocal (npro,nshl)         : local array
137*513954efSKenneth E. Jansenc  ien    (npro,nshl)         : nodal connectivity
13859599516SKenneth E. Jansenc  n                            : number of d.o.f.'s to be copied
13959599516SKenneth E. Jansenc  code                         : the transfer code
14059599516SKenneth E. Jansenc                                  .eq. 'gather  ', from global to local
14159599516SKenneth E. Jansenc                                  .eq. 'scatter ', add  local to global
14259599516SKenneth E. Jansenc                                  .eq. 'globaliz', from local to global
14359599516SKenneth E. Jansenc
14459599516SKenneth E. Jansenc
14559599516SKenneth E. Jansenc Zdenek Johan, Winter 1992.
14659599516SKenneth E. Jansenc----------------------------------------------------------------------
14759599516SKenneth E. Jansenc
14859599516SKenneth E. Jansen        include "common.h"
14959599516SKenneth E. Jansen
150*513954efSKenneth E. Jansen        dimension global(nshg),           rlocal(npro,nshl),
151*513954efSKenneth E. Jansen     &            ien(npro,nshl)
15259599516SKenneth E. Jansenc
15359599516SKenneth E. Jansen        character*8 code
15459599516SKenneth E. Jansenc
15559599516SKenneth E. Jansenc.... ------------------------>  'localization  '  <--------------------
15659599516SKenneth E. Jansenc
15759599516SKenneth E. Jansen        if (code .eq. 'gather  ') then
15859599516SKenneth E. Jansenc
15959599516SKenneth E. Jansenc.... set timer
16059599516SKenneth E. Jansenc
16159599516SKenneth E. Jansen          call timer ('Gather  ')
16259599516SKenneth E. Jansenc
16359599516SKenneth E. Jansenc.... gather the data
16459599516SKenneth E. Jansenc
16559599516SKenneth E. Jansen          ttim(3) = ttim(3) - tmr()
16659599516SKenneth E. Jansen
167*513954efSKenneth E. Jansen          do j = 1, nshl
16859599516SKenneth E. Jansen              rlocal(:,j) = global(ien(:,j))
16959599516SKenneth E. Jansen          enddo
17059599516SKenneth E. Jansen
17159599516SKenneth E. Jansen	  ttim(3) = ttim(3) + tmr()
17259599516SKenneth E. Jansen
17359599516SKenneth E. Jansenc
17459599516SKenneth E. Jansenc.... transfer count
17559599516SKenneth E. Jansenc
176*513954efSKenneth E. Jansenc          gbytes = gbytes + n*nshl*npro
17759599516SKenneth E. Jansenc
17859599516SKenneth E. Jansenc.... return
17959599516SKenneth E. Jansenc
18059599516SKenneth E. Jansen          call timer ('Back    ')
18159599516SKenneth E. Jansen          return
18259599516SKenneth E. Jansen        endif
18359599516SKenneth E. Jansenc
18459599516SKenneth E. Jansenc.... ------------------------->  'assembling '  <----------------------
18559599516SKenneth E. Jansenc
18659599516SKenneth E. Jansen        if (code .eq. 'scatter ') then
18759599516SKenneth E. Jansenc
18859599516SKenneth E. Jansenc.... set timer
18959599516SKenneth E. Jansenc
19059599516SKenneth E. Jansen          call timer ('Scatter ')
19159599516SKenneth E. Jansenc
19259599516SKenneth E. Jansenc.... scatter the data (possible collisions)
19359599516SKenneth E. Jansenc
19459599516SKenneth E. Jansen          ttim(4) = ttim(4) - tmr()
19559599516SKenneth E. Jansen
196*513954efSKenneth E. Jansen          do j = 1, nshl
19759599516SKenneth E. Jansen             do nel = 1,npro
19859599516SKenneth E. Jansen                global(ien(nel,j)) = global(ien(nel,j))
19959599516SKenneth E. Jansen     &               + rlocal(nel,j)
20059599516SKenneth E. Jansen             enddo
20159599516SKenneth E. Jansen          enddo
20259599516SKenneth E. Jansen
20359599516SKenneth E. Jansen	  ttim(4) = ttim(4) + tmr()
20459599516SKenneth E. Jansen
20559599516SKenneth E. Jansenc
20659599516SKenneth E. Jansenc.... transfer and flop counts
20759599516SKenneth E. Jansenc
208*513954efSKenneth E. Jansenc          sbytes = sbytes + n*nshl*npro
209*513954efSKenneth E. Jansenc          flops  = flops  + n*nshl*npro
21059599516SKenneth E. Jansenc
21159599516SKenneth E. Jansenc.... return
21259599516SKenneth E. Jansenc
21359599516SKenneth E. Jansen          call timer ('Back    ')
21459599516SKenneth E. Jansen          return
21559599516SKenneth E. Jansen        endif
21659599516SKenneth E. Jansenc
21759599516SKenneth E. Jansenc.... ------------------------->  'globalizing '  <----------------------
21859599516SKenneth E. Jansenc
21959599516SKenneth E. Jansen        if (code .eq. 'globaliz') then
22059599516SKenneth E. Jansenc
22159599516SKenneth E. Jansenc.... scatter the data (possible collisions)
22259599516SKenneth E. Jansenc
223*513954efSKenneth E. Jansen          do j = 1, nshl
22459599516SKenneth E. Jansen              do nel = 1,npro
22559599516SKenneth E. Jansen                global(ien(nel,j)) = rlocal(nel,j)
22659599516SKenneth E. Jansen              enddo
22759599516SKenneth E. Jansen          enddo
22859599516SKenneth E. Jansenc
22959599516SKenneth E. Jansenc.... return
23059599516SKenneth E. Jansenc
23159599516SKenneth E. Jansen          call timer ('Back    ')
23259599516SKenneth E. Jansen          return
23359599516SKenneth E. Jansen        endif
23459599516SKenneth E. Jansenc
23559599516SKenneth E. Jansenc.... --------------------------->  error  <---------------------------
23659599516SKenneth E. Jansenc
23759599516SKenneth E. Jansen        call error ('local   ', code, 0)
23859599516SKenneth E. Jansenc
23959599516SKenneth E. Jansenc.... end
24059599516SKenneth E. Jansenc
24159599516SKenneth E. Jansen        end
24259599516SKenneth E. Jansenc
24359599516SKenneth E. Jansen
24459599516SKenneth E. Jansen
24559599516SKenneth E. Jansen
246