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 |