root / synthbench / euroben-dm / mod2ci / .svn / text-base / pcoefs.f.svn-base @ 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 |