Statistics
| Branch: | Revision:

root / synthbench / euroben-dm / mod2ci / pcoefs.f @ 0:839f52ef7657

History | View | Annotate | Download (4.5 kB)

1
      Subroutine pcoefs( m, gamma )
2
! ----------------------------------------------------------------------
3
! --- Routine 'pcoefs' provides the polynomial coefficients for a
4
!     left polynomial preconditioner to a degree <= 12.
5
!     Integer     m          : degree of polynomial.
6
!     Real(l_)    gamma(m+1) : Array of polynomial coefficients.
7
! ----------------------------------------------------------------------
8
      Use         numerics
9
      Implicit    None
10

    
11
      Integer  :: m
12
      Real(l_) :: gamma(m+1)
13
! ----------------------------------------------------------------------
14
      If ( m ==  1 ) Then
15
          gamma(1) = 6.0_l_/5.0_l_
16
          gamma(2) = 4.0_l_/5.0_l_
17
      Else If ( m == 2 ) Then
18
          gamma(1) =  8.0_l_/7.0_l_
19
          gamma(2) = 12.0_l_/7.0_l_
20
          gamma(3) =  8.0_l_/7.0_l_
21
      Else If ( m == 3 ) Then
22
          gamma(1) =  8.0_l_/9.0_l_
23
          gamma(2) =  4.0_l_/3.0_l_
24
          gamma(3) =  8.0_l_/3.0_l_
25
          gamma(4) = 16.0_l_/9.0_l_
26
      Else If ( m == 4 ) Then
27
          gamma(1) = 10.0_l_/11.0_l_
28
          gamma(2) =  4.0_l_/11.0_l_
29
          gamma(3) = 16.0_l_/11.0_l_
30
          gamma(4) = 48.0_l_/11.0_l_
31
          gamma(5) = 32.0_l_/11.0_l_
32
      Else If ( m == 5 ) Then
33
          gamma(1) =  14.0_l_/13.0_l_
34
          gamma(2) =   8.0_l_/13.0_l_
35
          gamma(3) = -16.0_l_/13.0_l_
36
          gamma(4) =  16.0_l_/13.0_l_
37
          gamma(5) =  96.0_l_/13.0_l_
38
          gamma(6) =  64.0_l_/13.0_l_
39
      Else If ( m == 6 ) Then
40
          gamma(1) =  16.0_l_/15.0_l_
41
          gamma(2) =   8.0_l_/5.0_l_
42
          gamma(3) =   0.0_l_
43
          gamma(4) = -16.0_l_/3.0_l_
44
          gamma(5) =   0.0_l_
45
          gamma(6) =  64.0_l_/5.0_l_
46
          gamma(7) = 128.0_l_/15.0_l_
47
      Else If ( m == 7 ) Then
48
          gamma(1) =   16.0_l_/17.0_l_
49
          gamma(2) =   24.0_l_/17.0_l_
50
          gamma(3) =   64.0_l_/17.0_l_
51
          gamma(4) =  -16.0_l_/17.0_l_
52
          gamma(5) = -256.0_l_/17.0_l_
53
          gamma(6) =  -64.0_l_/17.0_l_
54
          gamma(7) =  384.0_l_/17.0_l_
55
          gamma(8) =  256.0_l_/17.0_l_
56
      Else If ( m == 8 ) Then
57
          gamma(1) =   18.0_l_/19.0_l_
58
          gamma(2) =    8.0_l_/19.0_l_
59
          gamma(3) =   48.0_l_/19.0_l_
60
          gamma(4) =  208.0_l_/19.0_l_
61
          gamma(5) =  -32.0_l_/19.0_l_
62
          gamma(6) = -704.0_l_/19.0_l_
63
          gamma(7) = -256.0_l_/19.0_l_
64
          gamma(8) =  768.0_l_/19.0_l_
65
          gamma(9) =  512.0_l_/19.0_l_
66
      Else If ( m == 9 ) Then
67
          gamma(1)  =    22.0_l_/21.0_l_
68
          gamma(2)  =     4.0_l_/7.0_l_
69
          gamma(3)  =   -16.0_l_/7.0_l_
70
          gamma(4)  =    16.0_l_/3.0_l_
71
          gamma(5)  =    32.0_l_
72
          gamma(6)  =     0.0_l_
73
          gamma(7)  =  -256.0_l_/3.0_l_
74
          gamma(8)  =  -256.0_l_/7.0_l_
75
          gamma(9)  =   512.0_l_/7.0_l_
76
          gamma(10) =  1024.0_l_/21.0_l_
77
      Else If ( m == 10 ) Then
78
          gamma(1)  =    24.0_l_/23.0_l_
79
          gamma(2)  =    36.0_l_/23.0_l_
80
          gamma(3)  =   -24.0_l_/23.0_l_
81
          gamma(4)  =  -304.0_l_/23.0_l_
82
          gamma(5)  =   256.0_l_/23.0_l_
83
          gamma(6)  =  2048.0_l_/23.0_l_
84
          gamma(7)  =   256.0_l_/23.0_l_
85
          gamma(8)  = -4352.0_l_/23.0_l_
86
          gamma(9)  = -2048.0_l_/23.0_l_
87
          gamma(10) =  3072.0_l_/23.0_l_
88
          gamma(11) =  2048.0_l_/23.0_l_
89
      Else If ( m == 11 ) Then
90
          gamma(1)  =    24.0_l_/25.0_l_
91
          gamma(2)  =    36.0_l_/25.0_l_
92
          gamma(3)  =    24.0_l_/5.0_l_
93
          gamma(4)  =   -32.0_l_/5.0_l_
94
          gamma(5)  =  -256.0_l_/5.0_l_
95
          gamma(6)  =   512.0_l_/25.0_l_
96
          gamma(7)  =  5888.0_l_/25.0_l_
97
          gamma(8)  =   256.0_l_/5.0_l_
98
          gamma(9)  = -2048.0_l_/5.0_l_
99
          gamma(10) = -1024.0_l_/5.0_l_
100
          gamma(11) =  6144.0_l_/25.0_l_
101
          gamma(12) =  4096.0_l_/25.0_l_
102
      Else If ( m == 12 ) Then
103
          gamma(1)  =     26.0_l_/27.0_l_
104
          gamma(2)  =      4.0_l_/9.0_l_
105
          gamma(3)  =     32.0_l_/9.0_l_
106
          gamma(4)  =    544.0_l_/27.0_l_
107
          gamma(5)  =    -64.0_l_/3.0_l_
108
          gamma(6)  =   -512.0_l_/3.0_l_
109
          gamma(7)  =    256.0_l_/9.0_l_
110
          gamma(8)  =   1792.0_l_/3.0_l_
111
          gamma(9)  =    512.0_l_/3.0_l_
112
          gamma(10) = -23552.0_l_/27.0_l_
113
          gamma(11) =  -4096.0_l_/9.0_l_
114
          gamma(12) =   4096.0_l_/9.0_l_
115
          gamma(13) =   8192.0_l_/27.0_l_
116
      End If
117
! ----------------------------------------------------------------------
118
      End Subroutine pcoefs