annotate +grid/evalOnScalarTest.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 f688e2bdb74a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
273
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 function tests = evalOnScalarTest()
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 tests = functiontests(localfunctions);
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 end
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 function testInputConstant(testCase)
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 in = {
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7 0,
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8 47,
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9 1,
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 [1; 2],
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 };
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 out = {
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 [0; 0; 0],
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15 [47; 47; 47],
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16 [1; 1; 1],
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17 [1; 2; 1; 2; 1; 2],
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18 };
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 g = getTestGrid('1d');
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 for i = 1:length(in)
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23 gf = grid.evalOnScalar(g,in{i});
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 testCase.verifyEqual(gf, out{i});
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 end
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 end
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28 function testInputScalarFunction1d(testCase)
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 in = {
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30 @(x)1+x*0,
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 @(x)x,
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32 @(x)x.*x,
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33 };
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
34
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35 out = {
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
36 [1; 1; 1],
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
37 [0; 1; 2],
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 [0; 1; 4],
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39 };
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
41 g = getTestGrid('1d');
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
42
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
43 for i = 1:length(in)
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
44 gf = grid.evalOnScalar(g,in{i});
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
45 testCase.verifyEqual(gf, out{i});
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
46 end
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
47 end
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
48
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
49 function testInputScalarFunction2d(testCase)
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
50 in = {
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
51 @(x,y)1+x*0,
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
52 @(x,y)x-y,
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
53 @(x,y)x./(1+y),
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
54 };
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
55
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
56 out = {
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
57 [1; 1; 1; 1; 1; 1; 1; 1; 1],
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
58 [0; -1; -2; 1; 0; -1; 2; 1; 0],
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
59 [0; 0; 0; 1; 1/2; 1/3; 2; 1; 2/3],
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
60 };
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
61
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
62 g = getTestGrid('2d');
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
64 for i = 1:length(in)
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
65 gf = grid.evalOnScalar(g, in{i});
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
66 testCase.verifyEqual(gf, out{i});
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
67 end
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
68 end
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
69
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
70
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
71 function testInputVectorFunction(testCase)
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
72 g = getTestGrid('1d');
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
73 in = @(x)[x; -2*x];
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
74 out = [0; 0; 1; -2; 2; -4];
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
75
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
76 gf = grid.evalOnScalar(g,in);
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
77 testCase.verifyEqual(gf, out);
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
78
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
79 g = getTestGrid('2d');
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
80 in = @(x,y)[x.^2; -2*y];
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
81 out = [
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
82 0; 0;
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
83 0; -2;
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
84 0; -4;
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
85 1; 0;
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
86 1; -2;
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
87 1; -4;
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
88 4; 0;
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
89 4; -2;
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
90 4; -4;
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
91 ];
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
92
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
93 gf = grid.evalOnScalar(g,in);
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
94 testCase.verifyEqual(gf, out);
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
95 end
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
96
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
97
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
98 function testInputErrorVectorValued(testCase)
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
99 in = {
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
100 [1,2,3],
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
101 @(x,y)[x,-y];
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
102 };
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
103
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
104 g = getTestGrid('2d');
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
105
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
106 for i = 1:length(in)
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
107 testCase.verifyError(@()grid.evalOnScalar(g, in{i}),'grid:evalOnScalar:VectorValuedWrongDim',sprintf('in(%d) = %s',i,toString(in{i})));
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
108 end
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
109 end
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
110
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
111 function g = getTestGrid(d)
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
112 switch d
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
113 case '1d'
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
114 g = grid.equidistant(3,{0,2});
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
115 case '2d'
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
116 g = grid.equidistant([3,3],{0,2},{0,2});
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
117 end
f688e2bdb74a grid: Added evalOn for scalar functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
118 end