changeset 233:b8ee5212f651 feature/beams

multiblock: Added a function to return number of points in each block for a mbGrid. Fixed a bug in DiffOp.
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 12 Jul 2016 17:08:15 +0200
parents 443b14ea705b
children eaf557023fbe
files +multiblock/DiffOp.m +multiblock/Grid.m
diffstat 2 files changed, 14 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/+multiblock/DiffOp.m	Tue Jul 12 16:32:36 2016 +0200
+++ b/+multiblock/DiffOp.m	Tue Jul 12 17:08:15 2016 +0200
@@ -50,7 +50,8 @@
 
 
             % Build the differentiation matrix
-            D = cell(nBlocks, nBlocks);
+            obj.blockmatrixDiv = {grid.Ns, grid.Ns};
+            D = blockmatrix.zero(obj.blockmatrixDiv);
             for i = 1:nBlocks
                 D{i,i} = obj.diffOps{i}.D;
             end
@@ -64,16 +65,15 @@
 
                     [ii, ij] = obj.diffOps{i}.interface(intf{1}, obj.diffOps{j}, intf{2});
                     D{i,i} = D{i,i} + ii;
-                    D{i,j} = ij;
+                    D{i,j} = D{i,j} + ij;
 
                     [jj, ji] = obj.diffOps{j}.interface(intf{2}, obj.diffOps{i}, intf{1});
                     D{j,j} = D{j,j} + jj;
-                    D{j,i} = ji;
+                    D{j,i} = D{j,i} + ji;
                 end
             end
             obj.D = blockmatrix.toMatrix(D);
 
-            obj.blockmatrixDiv = blockmatrix.getDivision(D);
 
             function [getHand, getParam] = parseInput(doHand, grid, doParam)
                 if ~isa(grid, 'multiblock.Grid')
--- a/+multiblock/Grid.m	Tue Jul 12 16:32:36 2016 +0200
+++ b/+multiblock/Grid.m	Tue Jul 12 17:08:15 2016 +0200
@@ -34,11 +34,20 @@
             n = length(obj.grids);
         end
 
-        % n returns the number of points in the grid
+        % N returns the number of points in the grid
         function o = N(obj)
             o = obj.nPoints;
         end
 
+        % Ns returns the number of points in each sub grid as a vector
+        function o = Ns(obj)
+            ns = zeros(1,obj.nBlocks);
+            for i = 1:obj.nBlocks;
+                ns(i) = obj.grids{i}.N();
+            end
+            o = ns;
+        end
+
         function n = nBlocks(obj)
             n = length(obj.grids);
         end