Mercurial > repos > public > sbplib
comparison +multiblock/DiffOp.m @ 962:262b52c3f268 feature/poroelastic
Bugfix in multiblock.DiffOp/getBoundaryOperatorWrapper
| author | Martin Almquist <malmquist@stanford.edu> |
|---|---|
| date | Wed, 19 Dec 2018 06:54:47 +0100 |
| parents | 72cd29107a9a |
| children | 99c2ef883dc6 |
comparison
equal
deleted
inserted
replaced
| 961:2efeedf8c34f | 962:262b52c3f268 |
|---|---|
| 147 error('Unknown boundary indentifier') | 147 error('Unknown boundary indentifier') |
| 148 end | 148 end |
| 149 end | 149 end |
| 150 | 150 |
| 151 % Get a boundary operator specified by opName for the given boundary/BoundaryGroup | 151 % Get a boundary operator specified by opName for the given boundary/BoundaryGroup |
| 152 function op = getBoundaryOperatorWrapper(obj, opName, boundary) | 152 function op = getBoundaryOperatorWrapper(obj, opName, boundary, blockmatrixDiv) |
| 153 default_arg('blockmatrixDiv', obj.blockmatrixDiv); | |
| 154 | |
| 153 switch class(boundary) | 155 switch class(boundary) |
| 154 case 'cell' | 156 case 'cell' |
| 155 blockId = boundary{1}; | 157 blockId = boundary{1}; |
| 156 localOp = obj.diffOps{blockId}.get_boundary_operator(opName, boundary{2}); | 158 localOp = obj.diffOps{blockId}.get_boundary_operator(opName, boundary{2}); |
| 157 | 159 |
| 158 div = {obj.blockmatrixDiv{1}, size(localOp,2)}; | 160 div = {blockmatrixDiv, size(localOp,2)}; |
| 159 blockOp = blockmatrix.zero(div); | 161 blockOp = blockmatrix.zero(div); |
| 160 blockOp{blockId,1} = localOp; | 162 blockOp{blockId,1} = localOp; |
| 161 op = blockmatrix.toMatrix(blockOp); | 163 op = blockmatrix.toMatrix(blockOp); |
| 162 return | 164 return |
| 163 case 'multiblock.BoundaryGroup' | 165 case 'multiblock.BoundaryGroup' |
| 164 op = sparse(size(obj.D,1),0); | 166 op = []; |
| 165 for i = 1:length(boundary) | 167 for i = 1:length(boundary) |
| 166 op = [op, obj.getBoundaryOperatorWrapper(opName, boundary{i})]; | 168 op = [op, obj.getBoundaryOperatorWrapper(opName, boundary{i}, blockmatrixDiv)]; |
| 167 end | 169 end |
| 168 otherwise | 170 otherwise |
| 169 error('Unknown boundary indentifier') | 171 error('Unknown boundary indentifier') |
| 170 end | 172 end |
| 171 end | 173 end |
| 193 case 'cell' | 195 case 'cell' |
| 194 blockId = boundary{1}; | 196 blockId = boundary{1}; |
| 195 localOpCell = obj.diffOps{blockId}.get_boundary_operator(opName, boundary{2}); | 197 localOpCell = obj.diffOps{blockId}.get_boundary_operator(opName, boundary{2}); |
| 196 localOp = localOpCell{i}; | 198 localOp = localOpCell{i}; |
| 197 | 199 |
| 198 div = {blockmatrixDiv, size(localOp,2)} | 200 div = {blockmatrixDiv, size(localOp,2)}; |
| 199 blockOp = blockmatrix.zero(div); | 201 blockOp = blockmatrix.zero(div); |
| 200 blockOp{blockId,1} = localOp; | 202 blockOp{blockId,1} = localOp; |
| 201 op = blockmatrix.toMatrix(blockOp); | 203 op = blockmatrix.toMatrix(blockOp); |
| 202 opCell{i} = op; | 204 opCell{i} = op; |
| 203 | 205 |
