comparison +multiblock/DiffOp.m @ 532:b29f04ab5d99 feature/boundaryGroup

Implement getBoundaryOperator for boundaryGroups in multiblock.DiffOp
author Jonatan Werpers <jonatan@werpers.com>
date Thu, 03 Aug 2017 17:38:05 +0200
parents 2ec8080027ab
children 06d1606d6977
comparison
equal deleted inserted replaced
531:d5bc51537a8c 532:b29f04ab5d99
118 % Splits a matrix operator into a cell-matrix of matrix operators for 118 % Splits a matrix operator into a cell-matrix of matrix operators for
119 % each grid. 119 % each grid.
120 ops = sparse2cell(op, obj.NNN); 120 ops = sparse2cell(op, obj.NNN);
121 end 121 end
122 122
123 % Get a boundary operator specified by op for the given boundary/BoundaryGroup 123 % Get a boundary operator specified by opName for the given boundary/BoundaryGroup
124 function op = getBoundaryOperator(obj, op, boundary) 124 function op = getBoundaryOperator(obj, opName, boundary)
125 switch class(boundary) 125 switch class(boundary)
126 case 'cell' 126 case 'cell'
127 localOpName = [op '_' boundary{2}]; 127 localOpName = [opName '_' boundary{2}];
128 blockId = boundary{1}; 128 blockId = boundary{1};
129 localOp = obj.diffOps{blockId}.(localOpName); 129 localOp = obj.diffOps{blockId}.(localOpName);
130 130
131 div = {obj.blockmatrixDiv{1}, size(localOp,2)}; 131 div = {obj.blockmatrixDiv{1}, size(localOp,2)};
132 blockOp = blockmatrix.zero(div); 132 blockOp = blockmatrix.zero(div);
133 blockOp{blockId,1} = localOp; 133 blockOp{blockId,1} = localOp;
134 op = blockmatrix.toMatrix(blockOp); 134 op = blockmatrix.toMatrix(blockOp);
135 return 135 return
136 case 'multiblock.BoundaryGroup' 136 case 'multiblock.BoundaryGroup'
137 error('not implemented') 137 op = [];
138 for i = 1:length(boundary)
139 op = [op, obj.getBoundaryOperator(opName, boundary{i})];
140 end
138 otherwise 141 otherwise
139 error('Unknown boundary indentifier') 142 error('Unknown boundary indentifier')
140 end 143 end
141 end 144 end
142 145