Mercurial > repos > public > sbplib
changeset 969:adae8063ea2f feature/poroelastic
Remove silly getBoundaryOperator* methods in multiblock.DiffOp and make the getBoundaryOperator and getBoundaryQuadrature methods use the scheme.getBoundaryOperator/Quadrature methods instead of properties.
author | Martin Almquist <malmquist@stanford.edu> |
---|---|
date | Tue, 25 Dec 2018 07:21:19 +0100 |
parents | a4ad90b37998 |
children | 23d9ca6755be |
files | +multiblock/DiffOp.m |
diffstat | 1 files changed, 5 insertions(+), 75 deletions(-) [+] |
line wrap: on
line diff
--- a/+multiblock/DiffOp.m Sun Dec 23 14:39:31 2018 +0100 +++ b/+multiblock/DiffOp.m Tue Dec 25 07:21:19 2018 +0100 @@ -129,35 +129,12 @@ % Get a boundary operator specified by opName for the given boundary/BoundaryGroup function op = getBoundaryOperator(obj, opName, boundary) - switch class(boundary) - case 'cell' - localOpName = [opName '_' boundary{2}]; - blockId = boundary{1}; - localOp = obj.diffOps{blockId}.(localOpName); - - 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.getBoundaryOperator(opName, boundary{i})]; - end - otherwise - error('Unknown boundary indentifier') - end - end - - % Get a boundary operator specified by opName for the given boundary/BoundaryGroup - function op = getBoundaryOperatorWrapper(obj, opName, boundary, blockmatrixDiv) - default_arg('blockmatrixDiv', obj.blockmatrixDiv{1}); + blockmatrixDiv = obj.blockmatrixDiv{1}; switch class(boundary) case 'cell' blockId = boundary{1}; - localOp = obj.diffOps{blockId}.get_boundary_operator(opName, boundary{2}); + localOp = obj.diffOps{blockId}.getBoundaryOperator(opName, boundary{2}); div = {blockmatrixDiv, size(localOp,2)}; blockOp = blockmatrix.zero(div); @@ -167,65 +144,18 @@ case 'multiblock.BoundaryGroup' op = sparse(sum(blockmatrixDiv),0); for i = 1:length(boundary) - op = [op, obj.getBoundaryOperatorWrapper(opName, boundary{i}, blockmatrixDiv)]; + op = [op, obj.getBoundaryOperator(opName, boundary{i})]; end otherwise error('Unknown boundary indentifier') end end - % Get a boundary cell of operators, specified by opName for the given boundary/BoundaryGroup - function opCell = getBoundaryCellOperator(obj, opName, boundary, blockmatrixDiv) - default_arg('blockmatrixDiv', obj.blockmatrixDiv{1}); - - % Get size of cell + function op = getBoundaryQuadrature(obj, boundary) switch class(boundary) case 'cell' blockId = boundary{1}; - localCell = obj.diffOps{blockId}.get_boundary_operator(opName, boundary{2}); - case 'multiblock.BoundaryGroup' - blockId = boundary{1}{1}; - localCell = obj.diffOps{blockId}.get_boundary_operator(opName, boundary{1}{2}); - otherwise - error('Unknown boundary indentifier') - end - - % Loop over cell elements and build the boundary operator in each cell - opCell = cell(size(localCell)); - for i = 1:numel(opCell) - switch class(boundary) - case 'cell' - blockId = boundary{1}; - localOpCell = obj.diffOps{blockId}.get_boundary_operator(opName, boundary{2}); - localOp = localOpCell{i}; - - div = {blockmatrixDiv, size(localOp,2)}; - blockOp = blockmatrix.zero(div); - blockOp{blockId,1} = localOp; - op = blockmatrix.toMatrix(blockOp); - opCell{i} = op; - - case 'multiblock.BoundaryGroup' - op = sparse(sum(blockmatrixDiv),0); - for j = 1:length(boundary) - localCell = obj.getBoundaryCellOperator(opName, boundary{j}, blockmatrixDiv); - op = [op, localCell{i}]; - end - opCell{i} = op; - otherwise - error('Unknown boundary indentifier') - end - end - end - - function op = getBoundaryQuadrature(obj, boundary) - opName = 'H'; - switch class(boundary) - case 'cell' - localOpName = [opName '_' boundary{2}]; - blockId = boundary{1}; - op = obj.diffOps{blockId}.(localOpName); - + op = obj.diffOps{blockId}.getBoundaryQuadrature(boundary{2}); return case 'multiblock.BoundaryGroup' N = length(boundary);