changeset 210:39b7dcb2c724 feature/grids

multiblock: Implemented boundary conditions.
author Jonatan Werpers <jonatan@werpers.com>
date Thu, 16 Jun 2016 09:21:17 +0200
parents 4fc2631477a3
children 3c4ffbfbfb84 da058ce66876
files +multiblock/DiffOp.m
diffstat 1 files changed, 20 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
diff -r 4fc2631477a3 -r 39b7dcb2c724 +multiblock/DiffOp.m
--- a/+multiblock/DiffOp.m	Thu Jun 16 09:06:57 2016 +0200
+++ b/+multiblock/DiffOp.m	Thu Jun 16 09:21:17 2016 +0200
@@ -5,6 +5,8 @@
         diffOps
         D
         H
+
+        blockmatrixDiv
     end
 
     methods
@@ -44,7 +46,7 @@
             for i = 1:nBlocks
                 H{i,i} = obj.diffOps{i}.H;
             end
-            obj.H = cell2sparse(H);
+            obj.H = blockmatrix.toMatrix(H);
 
 
             % Build the differentiation matrix
@@ -69,9 +71,9 @@
                     D{j,i} = D{j,i} + ji;
                 end
             end
-            obj.D = cell2sparse(D);
+            obj.D = blockmatrix.toMatrix(D);
 
-            % end
+            obj.blockmatrixDiv = blockmatrix.getDivision(D);
 
             function [getHand, getParam] = parseInput(doHand, grid, doParam)
                 if ~isa(grid, 'multiblock.Grid')
@@ -110,7 +112,21 @@
             I = boundary(1)
             name = boundary(2:end);
 
-            [c, p] = obj.diffOps{I}.boundary_condition(name, type, data);
+            % Get the closure and penaly matrices
+            [blockClosure, blockPenalty] = obj.diffOps{I}.boundary_condition(name, type, data);
+
+            % Expand to matrix for full domain.
+            div = obj.blockmatrixDiv;
+            closure = blockmatrix.zero(div);
+            closure{I,I} = blockClosure;
+
+            div{2} = 1; % Penalty is a column vector
+            penalty = blockmatrix.zero(div);
+            penalty{I} = blockPenalty;
+
+            % Convert to matrix
+            closure = blockmatrix.toMatrix(closure);
+            penalty = blockmatrix.toMatrix(closure);
         end
 
         function [closure, penalty] = interface(obj,boundary,neighbour_scheme,neighbour_boundary)