Statistics
| Branch: | Revision:

root / synthbench / euroben-dm / mod2f / btrans.f @ 0:839f52ef7657

History | View | Annotate | Download (1 kB)

1
      Subroutine btrans ( n1, n2, ar, ai, tr, ti )
2
! -------------------------------------------------------------
3
! --- 'btrans' performs a blockwise local transposition. Input
4
!     array is 'a[r|i]', output array is 't[r|i]'
5
! -------------------------------------------------------------
6
      Use         numerics
7
      Use         mpi_module ! Contains #procs and sizes.
8
      Implicit    None
9

    
10
      Integer  :: n1, n2
11
      Real(l_) :: ar(n1*n2), ai(n1*n2), tr(n1*n2), ti(n1*n2)
12

    
13
      Integer  :: m1, m2, b1, b2, i, j, k, l
14
! -------------------------------------------------------------
15
      m2 = sizes(me,1) ! <-- From mpi_module.
16
      b1 = 0; l = 1
17
      Do k = 0, nodes - 1
18
         m1 = sizes(k,2)
19
         b2 = 0
20
         Do i = 1, m2
21
            Do j = 1, m1
22
               tr(j+b1+b2) = ar(l)
23
               ti(j+b1+b2) = ai(l)
24
               l = l + 1
25
            End Do
26
            b2 = b2 + n2
27
         End Do
28
         b1 = b1 + m1
29
      End Do
30
! -------------------------------------------------------------
31
      End Subroutine btrans