comparison +multiblock/DiffOp.m @ 233:b8ee5212f651 feature/beams

multiblock: Added a function to return number of points in each block for a mbGrid. Fixed a bug in DiffOp.
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 12 Jul 2016 17:08:15 +0200
parents 5df8d20281fe
children 0fc1de5cd85b
comparison
equal deleted inserted replaced
232:443b14ea705b 233:b8ee5212f651
48 end 48 end
49 obj.H = blockmatrix.toMatrix(H); 49 obj.H = blockmatrix.toMatrix(H);
50 50
51 51
52 % Build the differentiation matrix 52 % Build the differentiation matrix
53 D = cell(nBlocks, nBlocks); 53 obj.blockmatrixDiv = {grid.Ns, grid.Ns};
54 D = blockmatrix.zero(obj.blockmatrixDiv);
54 for i = 1:nBlocks 55 for i = 1:nBlocks
55 D{i,i} = obj.diffOps{i}.D; 56 D{i,i} = obj.diffOps{i}.D;
56 end 57 end
57 58
58 for i = 1:nBlocks 59 for i = 1:nBlocks
62 continue 63 continue
63 end 64 end
64 65
65 [ii, ij] = obj.diffOps{i}.interface(intf{1}, obj.diffOps{j}, intf{2}); 66 [ii, ij] = obj.diffOps{i}.interface(intf{1}, obj.diffOps{j}, intf{2});
66 D{i,i} = D{i,i} + ii; 67 D{i,i} = D{i,i} + ii;
67 D{i,j} = ij; 68 D{i,j} = D{i,j} + ij;
68 69
69 [jj, ji] = obj.diffOps{j}.interface(intf{2}, obj.diffOps{i}, intf{1}); 70 [jj, ji] = obj.diffOps{j}.interface(intf{2}, obj.diffOps{i}, intf{1});
70 D{j,j} = D{j,j} + jj; 71 D{j,j} = D{j,j} + jj;
71 D{j,i} = ji; 72 D{j,i} = D{j,i} + ji;
72 end 73 end
73 end 74 end
74 obj.D = blockmatrix.toMatrix(D); 75 obj.D = blockmatrix.toMatrix(D);
75 76
76 obj.blockmatrixDiv = blockmatrix.getDivision(D);
77 77
78 function [getHand, getParam] = parseInput(doHand, grid, doParam) 78 function [getHand, getParam] = parseInput(doHand, grid, doParam)
79 if ~isa(grid, 'multiblock.Grid') 79 if ~isa(grid, 'multiblock.Grid')
80 error('multiblock:DiffOp:DiffOp:InvalidGrid', 'Requires a multiblock grid.'); 80 error('multiblock:DiffOp:DiffOp:InvalidGrid', 'Requires a multiblock grid.');
81 end 81 end