Mercurial > repos > public > sbplib
annotate +multiblock/DiffOp.m @ 216:8b10476b9bb7 feature/beams
multiblock: Fixed some problems in DiffOp and Grid.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 22 Jun 2016 14:44:03 +0200 |
parents | 39b7dcb2c724 |
children | 5df8d20281fe |
rev | line source |
---|---|
186
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 classdef DiffOp < scheme.Scheme |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 properties |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 grid |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 order |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 diffOps |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 D |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 H |
210
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
8 |
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
9 blockmatrixDiv |
186
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 end |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 methods |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 function obj = DiffOp(doHand, grid, order, doParam) |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 % doHand -- may either be a function handle or a cell array of |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 % function handles for each grid. The function handle(s) |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
16 % should be on the form do = doHand(grid, order, ...) |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 % Additional parameters for each doHand may be provided in |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 % the doParam input. |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 % grid -- a multiblock grid |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
20 % order -- integer specifying the order of accuracy |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
21 % doParam -- may either be a cell array or a cell array of cell arrays |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
22 % for each block. If it is a cell array with length equal |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
23 % to the number of blocks then each element is sent to the |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
24 % corresponding function handle as extra parameters: |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
25 % doHand(..., doParam{i}{:}) Otherwise doParam is sent as |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
26 % extra parameters to all doHand: doHand(..., doParam{:}) |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
27 default_arg('doParam', []) |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
28 |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
29 [getHand, getParam] = parseInput(doHand, grid, doParam); |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
30 |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
31 nBlocks = grid.nBlocks(); |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
32 |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
33 obj.order = order; |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
34 |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
35 % Create the diffOps for each block |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
36 obj.diffOps = cell(1, nBlocks); |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
37 for i = 1:nBlocks |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
38 h = getHand(i); |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
39 p = getParam(i); |
201
38f203f00f3a
Exeendend tests of multiblock.DiffOp.
Jonatan Werpers <jonatan@werpers.com>
parents:
186
diff
changeset
|
40 obj.diffOps{i} = h(grid.grids{i}, order, p{:}); |
186
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
41 end |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
42 |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
43 |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
44 % Build the norm matrix |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
45 H = cell(nBlocks, nBlocks); |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
46 for i = 1:nBlocks |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
47 H{i,i} = obj.diffOps{i}.H; |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
48 end |
210
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
49 obj.H = blockmatrix.toMatrix(H); |
186
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
50 |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
51 |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
52 % Build the differentiation matrix |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
53 D = cell(nBlocks, nBlocks); |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
54 for i = 1:nBlocks |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
55 D{i,i} = obj.diffOps{i}.D; |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
56 end |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
57 |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
58 for i = 1:nBlocks |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
59 for j = i:nBlocks |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
60 intf = grid.connections{i,j}; |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
61 if isempty(intf) |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
62 continue |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
63 end |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
64 |
201
38f203f00f3a
Exeendend tests of multiblock.DiffOp.
Jonatan Werpers <jonatan@werpers.com>
parents:
186
diff
changeset
|
65 [ii, ij] = obj.diffOps{i}.interface(intf{1}, obj.diffOps{j}, intf{2}); |
186
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
66 D{i,i} = D{i,i} + ii; |
216
8b10476b9bb7
multiblock: Fixed some problems in DiffOp and Grid.
Jonatan Werpers <jonatan@werpers.com>
parents:
210
diff
changeset
|
67 D{i,j} = ij; |
186
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
68 |
201
38f203f00f3a
Exeendend tests of multiblock.DiffOp.
Jonatan Werpers <jonatan@werpers.com>
parents:
186
diff
changeset
|
69 [jj, ji] = obj.diffOps{j}.interface(intf{2}, obj.diffOps{i}, intf{1}); |
186
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
70 D{j,j} = D{j,j} + jj; |
216
8b10476b9bb7
multiblock: Fixed some problems in DiffOp and Grid.
Jonatan Werpers <jonatan@werpers.com>
parents:
210
diff
changeset
|
71 D{j,i} = ji; |
186
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
72 end |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
73 end |
210
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
74 obj.D = blockmatrix.toMatrix(D); |
186
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
75 |
210
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
76 obj.blockmatrixDiv = blockmatrix.getDivision(D); |
186
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
77 |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
78 function [getHand, getParam] = parseInput(doHand, grid, doParam) |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
79 if ~isa(grid, 'multiblock.Grid') |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
80 error('multiblock:DiffOp:DiffOp:InvalidGrid', 'Requires a multiblock grid.'); |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
81 end |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
82 |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
83 if iscell(doHand) && length(doHand) == grid.nBlocks() |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
84 getHand = @(i)doHand{i}; |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
85 elseif isa(doHand, 'function_handle') |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
86 getHand = @(i)doHand; |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
87 else |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
88 error('multiblock:DiffOp:DiffOp:InvalidGridDoHand', 'doHand must be a function handle or a cell array of length grid.nBlocks'); |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
89 end |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
90 |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
91 if isempty(doParam) |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
92 getParam = @(i){}; |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
93 elseif iscell(doParam) && length(doParam) == grid.nBlocks() |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
94 getParam = @(i)doParam{i}; |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
95 else |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
96 getParam = @(i)doParam; |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
97 end |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
98 end |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
99 end |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
100 |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
101 function ops = splitOp(obj, op) |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
102 % Splits a matrix operator into a cell-matrix of matrix operators for |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
103 % each grid. |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
104 ops = sparse2cell(op, obj.NNN); |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
105 end |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
106 |
202
e2fefb6f0746
multiblock.DiffOp: Fleshed out boundary_condition() a bit more
Jonatan Werpers <jonatan@werpers.com>
parents:
201
diff
changeset
|
107 % Creates the closere and penalty matrix for a given boundary condition, |
e2fefb6f0746
multiblock.DiffOp: Fleshed out boundary_condition() a bit more
Jonatan Werpers <jonatan@werpers.com>
parents:
201
diff
changeset
|
108 % boundary -- the name of the boundary on the form [id][name] where |
e2fefb6f0746
multiblock.DiffOp: Fleshed out boundary_condition() a bit more
Jonatan Werpers <jonatan@werpers.com>
parents:
201
diff
changeset
|
109 % id is the number of a block and name is the name of a |
e2fefb6f0746
multiblock.DiffOp: Fleshed out boundary_condition() a bit more
Jonatan Werpers <jonatan@werpers.com>
parents:
201
diff
changeset
|
110 % boundary of that block example: 1s or 3w |
216
8b10476b9bb7
multiblock: Fixed some problems in DiffOp and Grid.
Jonatan Werpers <jonatan@werpers.com>
parents:
210
diff
changeset
|
111 function [closure, penalty] = boundary_condition(obj,boundary,type) |
8b10476b9bb7
multiblock: Fixed some problems in DiffOp and Grid.
Jonatan Werpers <jonatan@werpers.com>
parents:
210
diff
changeset
|
112 I = boundary{1}; |
8b10476b9bb7
multiblock: Fixed some problems in DiffOp and Grid.
Jonatan Werpers <jonatan@werpers.com>
parents:
210
diff
changeset
|
113 name = boundary{2}; |
186
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
114 |
210
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
115 % Get the closure and penaly matrices |
216
8b10476b9bb7
multiblock: Fixed some problems in DiffOp and Grid.
Jonatan Werpers <jonatan@werpers.com>
parents:
210
diff
changeset
|
116 [blockClosure, blockPenalty] = obj.diffOps{I}.boundary_condition(name, type); |
210
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
117 |
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
118 % Expand to matrix for full domain. |
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
119 div = obj.blockmatrixDiv; |
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
120 closure = blockmatrix.zero(div); |
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
121 closure{I,I} = blockClosure; |
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
122 |
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
123 div{2} = 1; % Penalty is a column vector |
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
124 penalty = blockmatrix.zero(div); |
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
125 penalty{I} = blockPenalty; |
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
126 |
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
127 % Convert to matrix |
39b7dcb2c724
multiblock: Implemented boundary conditions.
Jonatan Werpers <jonatan@werpers.com>
parents:
202
diff
changeset
|
128 closure = blockmatrix.toMatrix(closure); |
216
8b10476b9bb7
multiblock: Fixed some problems in DiffOp and Grid.
Jonatan Werpers <jonatan@werpers.com>
parents:
210
diff
changeset
|
129 penalty = blockmatrix.toMatrix(penalty); |
186
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
130 end |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
131 |
202
e2fefb6f0746
multiblock.DiffOp: Fleshed out boundary_condition() a bit more
Jonatan Werpers <jonatan@werpers.com>
parents:
201
diff
changeset
|
132 function [closure, penalty] = interface(obj,boundary,neighbour_scheme,neighbour_boundary) |
186
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
133 |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
134 end |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
135 |
201
38f203f00f3a
Exeendend tests of multiblock.DiffOp.
Jonatan Werpers <jonatan@werpers.com>
parents:
186
diff
changeset
|
136 % Size returns the number of degrees of freedom |
186
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
137 function N = size(obj) |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
138 N = 0; |
201
38f203f00f3a
Exeendend tests of multiblock.DiffOp.
Jonatan Werpers <jonatan@werpers.com>
parents:
186
diff
changeset
|
139 for i = 1:length(obj.diffOps) |
38f203f00f3a
Exeendend tests of multiblock.DiffOp.
Jonatan Werpers <jonatan@werpers.com>
parents:
186
diff
changeset
|
140 N = N + obj.diffOps{i}.size(); |
186
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
141 end |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
142 end |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
143 end |
1fc2eeb4f4e6
Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
144 end |