annotate +blockmatrix/fromMatrixTest.m @ 1336:0666629aa183 feature/D2_boundary_opt

Add methods for creating grids with different grid point distributions for each coordinate direction, and also supports constructing periodic grids
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Fri, 13 May 2022 13:26:16 +0200
parents a5f1b0267dba
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
208
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 function tests = fromMatrixTest()
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 tests = functiontests(localfunctions);
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 end
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 function testErrorNonMatchingDim(testCase)
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 in = {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7 {magic(5), {[1 2 3], [4]}},
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8 {magic(5), {[1 1 1 1 1 1], [5]}},
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9 {magic(5), {[5], [1 1 1 1 1 1]}},
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 {ones(4,2),{[2 3],[2]}},
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 {ones(4,2),{[2 2],[3]}},
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12 };
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 for i = 1:length(in)
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15 testCase.verifyError(@()blockmatrix.fromMatrix(in{i}{:}),'blockmatrix:fromMatrix:NonMatchingDim');
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16 end
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17 end
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19 function testFromMatrix(testCase)
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 cases = {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21 {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 {[],{[],[]}},
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23 {}
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 },
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27 magic(3),
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28 {[3],[3]}
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 },
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30 {magic(3)}
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 },
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32 {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33 {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
34 magic(3),
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35 {[1 1 1],[1 1 1]}
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
36 },
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
37 mat2cell(magic(3),[1 1 1],[1 1 1])
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 },
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39 {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40 {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
41 [17 24 1 8 15; 23 5 7 14 16; 4 6 13 20 22; 10 12 19 21 3; 11 18 25 2 9],
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
42 {[1 4],[2 3]}
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
43 },
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
44 {
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
45 [17 24], [1 8 15];
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
46 [23 5; 4 6; 10 12; 11 18], [7 14 16; 13 20 22; 19 21 3; 25 2 9];
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
47 };
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
48 },
579
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
49 {
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
50 {
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
51 magic(3),
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
52 {[1 0 2],[1 2 0]}
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
53 },
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
54 mat2cell(magic(3),[1 0 2],[1 2 0])
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
55 },
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
56 {
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
57 {
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
58 zeros(0,1),
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
59 {0,1},
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
60 },
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
61 {zeros(0,1)}
a5f1b0267dba Be less strict about what is considered a block matrix
Jonatan Werpers <jonatan@werpers.com>
parents: 208
diff changeset
62 },
208
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63 };
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
64 for i = 1:length(cases)
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
65 out = convertToFull(blockmatrix.fromMatrix(cases{i}{1}{:}));
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
66 expected = cases{i}{2};
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
67 testCase.verifyEqual(out,expected);
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
68 end
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
69 end
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
70
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
71 function C = convertToFull(C)
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
72 [N,M] = size(C);
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
73 for i = 1:N
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
74 for j = 1:M
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
75 C{i,j} = full(C{i,j});
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
76 end
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
77 end
40dda96c8c9c blockmatrix: Added function to convert regular matrix to blockmatrix.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
78 end