Mercurial > repos > public > sbplib
annotate +grid/evalOnTest.m @ 1031:2ef20d00b386 feature/advectionRV
For easier comparison, return both the first order and residual viscosity when evaluating the residual. Add the first order and residual viscosity to the state of the RungekuttaRV time steppers
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Thu, 17 Jan 2019 10:25:06 +0100 |
parents | 190941ec12d8 |
children |
rev | line source |
---|---|
157 | 1 function tests = evalOnTest() |
2 tests = functiontests(localfunctions); | |
3 end | |
4 | |
5 function testInputConstant(testCase) | |
6 in = { | |
7 0, | |
8 47, | |
9 1, | |
10 [1; 2], | |
11 }; | |
12 | |
13 out = { | |
14 [0; 0; 0], | |
15 [47; 47; 47], | |
16 [1; 1; 1], | |
17 [1; 2; 1; 2; 1; 2], | |
18 }; | |
19 | |
20 g = getTestGrid('1d'); | |
21 | |
22 for i = 1:length(in) | |
23 gf = grid.evalOn(g,in{i}); | |
24 testCase.verifyEqual(gf, out{i}); | |
25 end | |
26 end | |
27 | |
277
4c3f55a628c8
Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents:
157
diff
changeset
|
28 % evalOn should give and error if the number of inputs to func is not the same as |
4c3f55a628c8
Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents:
157
diff
changeset
|
29 % the number of dimensions of the grid. |
4c3f55a628c8
Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents:
157
diff
changeset
|
30 function testNumberOfInputs(testCase) |
4c3f55a628c8
Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents:
157
diff
changeset
|
31 cases = { |
4c3f55a628c8
Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents:
157
diff
changeset
|
32 {getTestGrid('1d'), @(x,y)x-y}, |
4c3f55a628c8
Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents:
157
diff
changeset
|
33 {getTestGrid('2d'), @(x)x }, |
623
190941ec12d8
Print cleaning of evalOn and evalOnTest
Jonatan Werpers <jonatan@werpers.com>
parents:
277
diff
changeset
|
34 }; |
277
4c3f55a628c8
Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents:
157
diff
changeset
|
35 |
4c3f55a628c8
Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents:
157
diff
changeset
|
36 for i = 1:length(cases) |
4c3f55a628c8
Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents:
157
diff
changeset
|
37 g = cases{i}{1}; |
4c3f55a628c8
Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents:
157
diff
changeset
|
38 f = cases{i}{2}; |
4c3f55a628c8
Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents:
157
diff
changeset
|
39 testCase.verifyError(@()grid.evalOn(g, f),'grid:evalOn:WrongNumberOfInputs',sprintf('in(%d) = %s',i,toString(f))); |
4c3f55a628c8
Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents:
157
diff
changeset
|
40 end |
4c3f55a628c8
Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents:
157
diff
changeset
|
41 end |
4c3f55a628c8
Made evalOn give more error message.
Jonatan Werpers <jonatan@werpers.com>
parents:
157
diff
changeset
|
42 |
157 | 43 function testInputScalarFunction1d(testCase) |
44 in = { | |
45 @(x)1+x*0, | |
46 @(x)x, | |
47 @(x)x.*x, | |
48 }; | |
49 | |
50 out = { | |
51 [1; 1; 1], | |
52 [0; 1; 2], | |
53 [0; 1; 4], | |
54 }; | |
55 | |
56 g = getTestGrid('1d'); | |
57 | |
58 for i = 1:length(in) | |
59 gf = grid.evalOn(g,in{i}); | |
60 testCase.verifyEqual(gf, out{i}); | |
61 end | |
62 end | |
63 | |
64 function testInputScalarFunction2d(testCase) | |
65 in = { | |
66 @(x,y)1+x*0, | |
67 @(x,y)x-y, | |
68 @(x,y)x./(1+y), | |
69 }; | |
70 | |
71 out = { | |
72 [1; 1; 1; 1; 1; 1; 1; 1; 1], | |
73 [0; -1; -2; 1; 0; -1; 2; 1; 0], | |
74 [0; 0; 0; 1; 1/2; 1/3; 2; 1; 2/3], | |
75 }; | |
76 | |
77 g = getTestGrid('2d'); | |
78 | |
79 for i = 1:length(in) | |
80 gf = grid.evalOn(g, in{i}); | |
81 testCase.verifyEqual(gf, out{i}); | |
82 end | |
83 end | |
84 | |
85 | |
86 function testInputVectorFunction(testCase) | |
87 g = getTestGrid('1d'); | |
88 in = @(x)[x; -2*x]; | |
89 out = [0; 0; 1; -2; 2; -4]; | |
90 | |
91 gf = grid.evalOn(g,in); | |
92 testCase.verifyEqual(gf, out); | |
93 | |
94 g = getTestGrid('2d'); | |
95 in = @(x,y)[x.^2; -2*y]; | |
96 out = [ | |
97 0; 0; | |
98 0; -2; | |
99 0; -4; | |
100 1; 0; | |
101 1; -2; | |
102 1; -4; | |
103 4; 0; | |
104 4; -2; | |
105 4; -4; | |
106 ]; | |
107 | |
108 gf = grid.evalOn(g,in); | |
109 testCase.verifyEqual(gf, out); | |
110 end | |
111 | |
112 | |
113 function testInputErrorVectorValued(testCase) | |
623
190941ec12d8
Print cleaning of evalOn and evalOnTest
Jonatan Werpers <jonatan@werpers.com>
parents:
277
diff
changeset
|
114 in = { |
157 | 115 [1,2,3], |
623
190941ec12d8
Print cleaning of evalOn and evalOnTest
Jonatan Werpers <jonatan@werpers.com>
parents:
277
diff
changeset
|
116 @(x,y)[x,-y], |
157 | 117 }; |
118 | |
119 g = getTestGrid('2d'); | |
120 | |
121 for i = 1:length(in) | |
122 testCase.verifyError(@()grid.evalOn(g, in{i}),'grid:evalOn:VectorValuedWrongDim',sprintf('in(%d) = %s',i,toString(in{i}))); | |
123 end | |
124 end | |
125 | |
126 function g = getTestGrid(d) | |
127 switch d | |
128 case '1d' | |
129 g = grid.equidistant(3,{0,2}); | |
130 case '2d' | |
131 g = grid.equidistant([3,3],{0,2},{0,2}); | |
132 end | |
133 end |