~ubuntu-branches/ubuntu/wily/afnix/wily

« back to all changes in this revision

Viewing changes to src/mod/mth/tst/MTH0108.als

  • Committer: Package Import Robot
  • Author(s): Nobuhiro Iwamatsu
  • Date: 2015-07-11 02:00:35 UTC
  • mfrom: (10.1.1 sid)
  • Revision ID: package-import@ubuntu.com-20150711020035-2nhpztq7s15qyc0v
Tags: 2.5.1-1
* New upstream release. (Closes: #789968)
* Update debian/control.
  - Update Standards-Version to 3.9.6.
* Add support mips64(el) and ppc64el. (Closes: #741508, #748146)
* Add patches/support-gcc-5.x.patch. (Closes: #777767)
  - Fix build with gcc-5.x.
* Add patches/Disable-NET0001.als.patch.
  - Disable test of NET0001.als.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# ---------------------------------------------------------------------------
 
2
# - MTH0108.als                                                             -
 
3
# - afnix:mth module algebra test unit                                      -
 
4
# ---------------------------------------------------------------------------
 
5
# - This program is free software;  you can redistribute it  and/or  modify -
 
6
# - it provided that this copyright notice is kept intact.                  -
 
7
# -                                                                         -
 
8
# - This program  is  distributed in  the hope  that it will be useful, but -
 
9
# - without  any  warranty;  without  even   the   implied    warranty   of -
 
10
# - merchantability or fitness for a particular purpose.  In no event shall -
 
11
# - the copyright holder be liable for any  direct, indirect, incidental or -
 
12
# - special damages arising in any way out of the use of this software.     -
 
13
# ---------------------------------------------------------------------------
 
14
# - copyright (c) 1999-2015 amaury darsch                                   -
 
15
# ---------------------------------------------------------------------------
 
16
 
 
17
# @info   qmr krylov solver test unit
 
18
# @author amaury darsch
 
19
 
 
20
# get the module
 
21
interp:library "afnix-mth"
 
22
 
 
23
# this procedure checks the qmr solver with a matrix
 
24
const mth-qmr-ckt-3 nil {
 
25
  # create 3x3 matrix
 
26
  const am (afnix:mth:Rmatrix 3)
 
27
  am:set 0 2     1.0
 
28
  am:set 1 1 -1000.0
 
29
  am:set 1 2     1.0
 
30
  am:set 2 0     1.0
 
31
  am:set 2 1     1.0
 
32
  # create the initial vector
 
33
  const bv (afnix:mth:Rvector 3)
 
34
  bv:set 0 5.0
 
35
  # create the result vector
 
36
  const rv (afnix:mth:Rvector 3)
 
37
  rv:set 0 -0.005
 
38
  rv:set 1  0.005
 
39
  rv:set 2  5.000
 
40
  # create a tqmr solver
 
41
  trans slv (afnix:mth:Tqmr am)
 
42
  slv:set-max-iterations 6
 
43
  # solve the system
 
44
  trans xv (slv:solve bv)
 
45
  # verify result
 
46
  assert true (xv:?= rv)
 
47
  # create a preconditioner vector
 
48
  const mv (afnix:mth:Rvector 3)
 
49
  mv:set 0  1.0
 
50
  mv:set 1  0.001
 
51
  mv:set 2  1.0
 
52
  # create a tqmr solver
 
53
  trans slv (afnix:mth:Tqmr am mv)
 
54
  slv:set-max-iterations 6
 
55
  # solve the system
 
56
  trans xv (slv:solve bv)
 
57
  # verify result
 
58
  assert true (xv:?= rv)
 
59
}
 
60
 
 
61
# this procedure checks the qmr with a matrix
 
62
const mth-qmr-ckt-9 nil {
 
63
  # create 9x9 matrix
 
64
  const am (afnix:mth:Rmatrix 9)
 
65
  am:set 0 0 -1000.0
 
66
  am:set 0 5     1.0
 
67
  am:set 0 6    -1.0
 
68
  am:set 1 1 -1000.0
 
69
  am:set 1 6     1.0
 
70
  am:set 1 7    -1.0
 
71
  am:set 2 2 -1000.0
 
72
  am:set 2 7     1.0
 
73
  am:set 2 8    -1.0
 
74
  am:set 3 3 -1000.0
 
75
  am:set 3 8     1.0
 
76
  am:set 4 5     1.0
 
77
  am:set 5 0     1.0
 
78
  am:set 5 4     1.0
 
79
  am:set 6 0    -1.0
 
80
  am:set 6 1     1.0
 
81
  am:set 7 1    -1.0
 
82
  am:set 7 2     1.0
 
83
  am:set 8 2    -1.0
 
84
  am:set 8 3     1.0
 
85
  # create the initial vector
 
86
  const bv (afnix:mth:Rvector 9)
 
87
  bv:set 4 4.0
 
88
  # create the result vector
 
89
  const rv (afnix:mth:Rvector 9)
 
90
  rv:set 0  0.001
 
91
  rv:set 1  0.001
 
92
  rv:set 2  0.001
 
93
  rv:set 3  0.001
 
94
  rv:set 4 -0.001
 
95
  rv:set 5  4.000
 
96
  rv:set 6  3.000
 
97
  rv:set 7  2.000
 
98
  rv:set 8  1.000
 
99
  # create a tqmr solver
 
100
  trans slv (afnix:mth:Tqmr am)
 
101
  slv:set-max-iterations 18
 
102
  # solve the system
 
103
  trans xv (slv:solve bv)
 
104
  # verify result
 
105
  assert true (xv:?= rv)
 
106
  # create a preconditioner vector
 
107
  const mv (afnix:mth:Rvector 9)
 
108
  mv:set 0 0.001
 
109
  mv:set 1 0.001
 
110
  mv:set 2 0.001
 
111
  mv:set 3 0.001
 
112
  mv:set 4 1.0
 
113
  mv:set 5 1.0
 
114
  mv:set 6 1.0
 
115
  mv:set 7 1.0
 
116
  mv:set 8 1.0
 
117
  # create a tqmr solver
 
118
  trans slv (afnix:mth:Tqmr am mv)
 
119
  slv:set-max-iterations 18
 
120
  # solve the system
 
121
  trans xv (slv:solve bv)
 
122
  # verify result
 
123
  assert true (xv:?= rv)
 
124
}
 
125
 
 
126
# this procedure checks the qmr with a random matrix
 
127
const mth-qmr-rnd (size) {
 
128
  const mni(* size 4)
 
129
  
 
130
  # create a random matrix and vector
 
131
  const am (afnix:mth:get-random-r-matrix size 100.0 true)
 
132
  const rv (afnix:mth:get-random-r-vector size 100.0)
 
133
  
 
134
  # check matrix and vector size
 
135
  assert size (am:get-row-size)
 
136
  assert size (am:get-col-size)
 
137
  assert size (rv:get-size)
 
138
  
 
139
  # create an linear system vector
 
140
  const bv (* am rv)
 
141
  # create a tqmr solver
 
142
  trans slv (afnix:mth:Tqmr am)
 
143
  slv:set-max-iterations mni
 
144
  # check solver
 
145
  assert true  (afnix:mth:tqmr-p slv)
 
146
  assert true  (afnix:mth:solver-p slv)
 
147
  assert true  (afnix:mth:iterative-p slv)
 
148
  assert "Tqmr" (slv:repr)
 
149
  # solve the system
 
150
  trans xv (slv:solve bv)
 
151
  # check the solution
 
152
  assert true (rv:?= xv)
 
153
}
 
154
 
 
155
# check the qmr
 
156
mth-qmr-ckt-3
 
157
mth-qmr-ckt-9