changeset 903:703183ed8c8b feature/utux2D

Include interface type in multiblock.DiffOp, passed to all scheme.interface methods.
author Martin Almquist <malmquist@stanford.edu>
date Thu, 22 Nov 2018 22:01:58 -0800
parents 0be9b4d6737b
children 14b093a344eb
files +multiblock/DiffOp.m
diffstat 1 files changed, 9 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
diff -r 0be9b4d6737b -r 703183ed8c8b +multiblock/DiffOp.m
--- a/+multiblock/DiffOp.m	Tue May 22 13:31:09 2018 -0700
+++ b/+multiblock/DiffOp.m	Thu Nov 22 22:01:58 2018 -0800
@@ -10,7 +10,7 @@
     end
 
     methods
-        function obj = DiffOp(doHand, grid, order, doParam)
+        function obj = DiffOp(doHand, grid, order, doParam, interfaceType)
             %  doHand -- may either be a function handle or a cell array of
             %            function handles for each grid. The function handle(s)
             %            should be on the form do = doHand(grid, order, ...)
@@ -24,11 +24,17 @@
             %            corresponding function handle as extra parameters:
             %            doHand(..., doParam{i}{:}) Otherwise doParam is sent as
             %            extra parameters to all doHand: doHand(..., doParam{:})
+            %
+            % interfaceType -- nBlocks x nBlocks cell array of types that specify
+            %                  that particular block-coupling is handled. (Could
+            %                  be non-conforming interface, etc.)
+            %                  Default: empty cell array.
             default_arg('doParam', [])
 
             [getHand, getParam] = parseInput(doHand, grid, doParam);
 
             nBlocks = grid.nBlocks();
+            default_arg('interfaceType', cell(nBlocks, nBlocks));
 
             obj.order = order;
 
@@ -66,12 +72,11 @@
                         continue
                     end
 
-
-                    [ii, ij] = obj.diffOps{i}.interface(intf{1}, obj.diffOps{j}, intf{2});
+                    [ii, ij] = obj.diffOps{i}.interface(intf{1}, obj.diffOps{j}, intf{2}, interfaceType{i,j});
                     D{i,i} = D{i,i} + ii;
                     D{i,j} = D{i,j} + ij;
 
-                    [jj, ji] = obj.diffOps{j}.interface(intf{2}, obj.diffOps{i}, intf{1});
+                    [jj, ji] = obj.diffOps{j}.interface(intf{2}, obj.diffOps{i}, intf{1}, interfaceType{j,i});
                     D{j,j} = D{j,j} + jj;
                     D{j,i} = D{j,i} + ji;
                 end