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);