Mercurial > repos > public > sbplib
changeset 884:7d4f57725192 feature/poroelastic
Add a getBoundaryOperator method in multiblock.DiffOp that uses the the diffop get_boundary_operator method rather than its properties. Werpers might not like this.
author | Martin Almquist <malmquist@stanford.edu> |
---|---|
date | Fri, 02 Nov 2018 10:47:03 -0700 |
parents | 76efb6a7b466 |
children | c70131daaa6e e30aaa4a3e09 |
files | +multiblock/DiffOp.m |
diffstat | 1 files changed, 22 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/+multiblock/DiffOp.m Fri Nov 02 10:44:59 2018 -0700 +++ b/+multiblock/DiffOp.m Fri Nov 02 10:47:03 2018 -0700 @@ -148,6 +148,28 @@ end end + % Get a boundary operator specified by opName for the given boundary/BoundaryGroup + function op = getBoundaryOperatorWrapper(obj, opName, boundary) + switch class(boundary) + case 'cell' + blockId = boundary{1}; + localOp = obj.diffOps{blockId}.get_boundary_operator(opName, boundary{2}); + + div = {obj.blockmatrixDiv{1}, size(localOp,2)}; + blockOp = blockmatrix.zero(div); + blockOp{blockId,1} = localOp; + op = blockmatrix.toMatrix(blockOp); + return + case 'multiblock.BoundaryGroup' + op = sparse(size(obj.D,1),0); + for i = 1:length(boundary) + op = [op, obj.getBoundaryOperatorWrapper(opName, boundary{i})]; + end + otherwise + error('Unknown boundary indentifier') + end + end + function op = getBoundaryQuadrature(obj, boundary) opName = 'H'; switch class(boundary)