Statistics
| Branch: | Revision:

root / synthbench / euroben-dm / mod2cr / taylor.f @ 0:839f52ef7657

History | View | Annotate | Download (2 kB)

1 0:839f52ef7657 louridas
      Subroutine taylor( n1, n2, n3 )
2 0:839f52ef7657 louridas
! ----------------------------------------------------------------------
3 0:839f52ef7657 louridas
      Use        mpi_module
4 0:839f52ef7657 louridas
      Implicit   None
5 0:839f52ef7657 louridas
6 0:839f52ef7657 louridas
      Integer :: n1, n2, n3
7 0:839f52ef7657 louridas
8 0:839f52ef7657 louridas
      Integer :: m, n12, ntot, nsize
9 0:839f52ef7657 louridas
! ----------------------------------------------------------------------
10 0:839f52ef7657 louridas
      n12  = n1*n2
11 0:839f52ef7657 louridas
      ntot = n12*n3
12 0:839f52ef7657 louridas
      m    = sizes(me)
13 0:839f52ef7657 louridas
! ----------------------------------------------------------------------
14 0:839f52ef7657 louridas
! --- Determine bounds for upper diagonals.
15 0:839f52ef7657 louridas
16 0:839f52ef7657 louridas
      la1 = 1
17 0:839f52ef7657 louridas
      ua1 = m
18 0:839f52ef7657 louridas
      If ( me == ( nodes - 1 ) ) ua1 = ua1 - 1
19 0:839f52ef7657 louridas
      nsize = ntot - n1
20 0:839f52ef7657 louridas
      If ( glb > nsize ) Then
21 0:839f52ef7657 louridas
         la2 = ntot + 1         !<-- Make lower bound so high that loop
22 0:839f52ef7657 louridas
      Else                      !    never will execute.
23 0:839f52ef7657 louridas
         la2 = 1
24 0:839f52ef7657 louridas
      End If
25 0:839f52ef7657 louridas
      If ( nsize < gub ) Then
26 0:839f52ef7657 louridas
         ua2 = nsize - glb
27 0:839f52ef7657 louridas
      Else
28 0:839f52ef7657 louridas
         ua2 = m
29 0:839f52ef7657 louridas
      End If
30 0:839f52ef7657 louridas
      nsize = ntot - n12
31 0:839f52ef7657 louridas
      If ( glb > nsize ) Then
32 0:839f52ef7657 louridas
         la3 = ntot + 1         !<-- Make lower bound so high that loop
33 0:839f52ef7657 louridas
      Else                      !    never will execute.
34 0:839f52ef7657 louridas
         la3 = 1
35 0:839f52ef7657 louridas
      End If
36 0:839f52ef7657 louridas
      If ( nsize < gub ) Then
37 0:839f52ef7657 louridas
         ua3 = nsize - glb
38 0:839f52ef7657 louridas
      Else
39 0:839f52ef7657 louridas
         ua3 = m
40 0:839f52ef7657 louridas
      End If
41 0:839f52ef7657 louridas
! ----------------------------------------------------------------------
42 0:839f52ef7657 louridas
! --- Determine bounds for lower diagonals.
43 0:839f52ef7657 louridas
44 0:839f52ef7657 louridas
      lb1 = 1
45 0:839f52ef7657 louridas
      ub1 = m
46 0:839f52ef7657 louridas
      If ( me == 0 ) lb1 = 2
47 0:839f52ef7657 louridas
      nsize = n1
48 0:839f52ef7657 louridas
      If ( glb > nsize ) Then
49 0:839f52ef7657 louridas
         lb2 = 1
50 0:839f52ef7657 louridas
      Else
51 0:839f52ef7657 louridas
         lb2 = nsize - glb + 1
52 0:839f52ef7657 louridas
      End If
53 0:839f52ef7657 louridas
      If ( gub > nsize ) Then
54 0:839f52ef7657 louridas
         ub2 = m
55 0:839f52ef7657 louridas
      Else
56 0:839f52ef7657 louridas
         ub2 = 0                !<-- Make upper bound so low that loop
57 0:839f52ef7657 louridas
      End If                    !    will never execute.
58 0:839f52ef7657 louridas
      nsize = n12
59 0:839f52ef7657 louridas
      If ( glb > nsize ) Then
60 0:839f52ef7657 louridas
         lb3 = 1
61 0:839f52ef7657 louridas
      Else
62 0:839f52ef7657 louridas
         lb3 = nsize - glb + 1
63 0:839f52ef7657 louridas
      End If
64 0:839f52ef7657 louridas
      If ( gub > nsize ) Then
65 0:839f52ef7657 louridas
         ub3 = m
66 0:839f52ef7657 louridas
      Else
67 0:839f52ef7657 louridas
         ub3 = 0                !<-- Make upper bound so low that loop
68 0:839f52ef7657 louridas
      End If                    !    will never execute.
69 0:839f52ef7657 louridas
! ----------------------------------------------------------------------
70 0:839f52ef7657 louridas
      End Subroutine taylor