Mercurial > repos > public > sbplib
comparison +multiblock/DiffOp.m @ 346:33b2ef863519 feature/beams
Allowed muliple closure BCs in multiblock.DiffOp.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 16 Nov 2016 16:15:53 -0800 |
parents | 61b75d6d4899 |
children | 30ff8879162e |
comparison
equal
deleted
inserted
replaced
345:7b5ef8b89268 | 346:33b2ef863519 |
---|---|
123 % Boundary är en sträng med en boundary group i. | 123 % Boundary är en sträng med en boundary group i. |
124 end | 124 end |
125 end | 125 end |
126 | 126 |
127 % Creates the closure and penalty matrix for a given boundary condition, | 127 % Creates the closure and penalty matrix for a given boundary condition, |
128 % boundary -- the name of the boundary on the form [id][name] where | 128 % boundary -- the name of the boundary on the form {id,name} where |
129 % id is the number of a block and name is the name of a | 129 % id is the number of a block and name is the name of a |
130 % boundary of that block example: 1s or 3w | 130 % boundary of that block example: {1,'s'} or {3,'w'} |
131 function [closure, penalty] = boundary_condition(obj, boundary, type) | 131 function [closure, penalty] = boundary_condition(obj, boundary, type) |
132 I = boundary{1}; | 132 I = boundary{1}; |
133 name = boundary{2}; | 133 name = boundary{2}; |
134 | 134 |
135 % Get the closure and penaly matrices | 135 % Get the closure and penaly matrices |
136 [blockClosure, blockPenalty] = obj.diffOps{I}.boundary_condition(name, type); | 136 [blockClosure, blockPenalty] = obj.diffOps{I}.boundary_condition(name, type); |
137 | 137 |
138 % Expand to matrix for full domain. | 138 % Expand to matrix for full domain. |
139 div = obj.blockmatrixDiv; | 139 div = obj.blockmatrixDiv; |
140 closure = blockmatrix.zero(div); | 140 if ~iscell(blockClosure) |
141 closure{I,I} = blockClosure; | 141 temp = blockmatrix.zero(div); |
142 closure = blockmatrix.toMatrix(closure); | 142 temp{I,I} = blockClosure; |
143 closure = blockmatrix.toMatrix(temp); | |
144 else | |
145 for i = 1:length(blockClosure) | |
146 temp = blockmatrix.zero(div); | |
147 temp{I,I} = blockClosure{i}; | |
148 closure{i} = blockmatrix.toMatrix(temp); | |
149 end | |
150 end | |
143 | 151 |
144 div{2} = size(blockPenalty, 2); % Penalty is a column vector | 152 div{2} = size(blockPenalty, 2); % Penalty is a column vector |
145 if ~iscell(blockPenalty) | 153 if ~iscell(blockPenalty) |
146 p = blockmatrix.zero(div); | 154 p = blockmatrix.zero(div); |
147 p{I} = blockPenalty; | 155 p{I} = blockPenalty; |