Mercurial > repos > public > sbplib
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 |