Mercurial > repos > public > sbplib
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)