root / synthbench / euroben-dm / mod1h / .svn / text-base / rand_vpe.f.svn-base @ 0:839f52ef7657
History | View | Annotate | Download (1.1 kB)
1 |
Subroutine rand_vpe( npes, info, lst ) |
---|---|
2 |
! ---------------------------------------------------------------------- |
3 |
Use numerics |
4 |
Implicit None |
5 |
Integer :: npes |
6 |
Integer, Intent(Out), Dimension(0:npes-1) :: lst |
7 |
Logical, Intent(Out), dimension(0:npes-1) :: info |
8 |
Integer, Dimension (0:(npes/2) - 1) :: pv |
9 |
Logical :: f |
10 |
Integer :: i, j, k, n, np |
11 |
Real(l_) :: r |
12 |
! ---------------------------------------------------------------------- |
13 |
np = npes/2 |
14 |
Do i = 0, np-1 |
15 |
pv(i) = i + np |
16 |
End Do |
17 |
Do i = 0, np-1 |
18 |
j = pv(i) |
19 |
Call random_number( Harvest = r ) |
20 |
k = Int( r*(np-1) + 0.5_l_ ) |
21 |
pv (i) = pv(k) |
22 |
pv (k) = j |
23 |
End Do |
24 |
Do i = 0, np - 1 |
25 |
lst (i) = pv(i) |
26 |
lst (pv(i)) = i |
27 |
Call random_number( Harvest = r ) |
28 |
n = Int( r + 0.5_l_ ) |
29 |
f = .FALSE. |
30 |
if ( n == 0 ) f = .TRUE. |
31 |
info (i) = f |
32 |
info(pv(i)) = .NOT. f |
33 |
End Do |
34 |
! ---------------------------------------------------------------------- |
35 |
End subroutine rand_vpe |