Mercurial > repos > public > sbplib
comparison +multiblock/DiffOp.m @ 902:306f5b3cd7bc
Merged in bcSetupExperiment (pull request #10)
Improved bulk boundary condition handling
Approved-by: Martin Almquist <malmquist@stanford.edu>
author | Jonatan Werpers <jonatan.werpers@it.uu.se> |
---|---|
date | Sat, 24 Nov 2018 14:55:48 +0000 |
parents | 57760d7088ad |
children | 386ef449df51 21394c78c72e |
comparison
equal
deleted
inserted
replaced
898:bd79326ebcd0 | 902:306f5b3cd7bc |
---|---|
199 | 199 |
200 % Get the closure and penaly matrices | 200 % Get the closure and penaly matrices |
201 [blockClosure, blockPenalty] = obj.diffOps{I}.boundary_condition(name, type); | 201 [blockClosure, blockPenalty] = obj.diffOps{I}.boundary_condition(name, type); |
202 | 202 |
203 % Expand to matrix for full domain. | 203 % Expand to matrix for full domain. |
204 div = obj.blockmatrixDiv; | 204 closure = multiblock.local2globalClosure(blockClosure, obj.blockmatrixDiv, I); |
205 if ~iscell(blockClosure) | 205 penalty = multiblock.local2globalPenalty(blockPenalty, obj.blockmatrixDiv, I); |
206 temp = blockmatrix.zero(div); | |
207 temp{I,I} = blockClosure; | |
208 closure = blockmatrix.toMatrix(temp); | |
209 else | |
210 for i = 1:length(blockClosure) | |
211 temp = blockmatrix.zero(div); | |
212 temp{I,I} = blockClosure{i}; | |
213 closure{i} = blockmatrix.toMatrix(temp); | |
214 end | |
215 end | |
216 | |
217 if ~iscell(blockPenalty) | |
218 div{2} = size(blockPenalty, 2); % Penalty is a column vector | |
219 p = blockmatrix.zero(div); | |
220 p{I} = blockPenalty; | |
221 penalty = blockmatrix.toMatrix(p); | |
222 else | |
223 % TODO: used by beam equation, should be eliminated. SHould only set one BC per call | |
224 for i = 1:length(blockPenalty) | |
225 div{2} = size(blockPenalty{i}, 2); % Penalty is a column vector | |
226 p = blockmatrix.zero(div); | |
227 p{I} = blockPenalty{i}; | |
228 penalty{i} = blockmatrix.toMatrix(p); | |
229 end | |
230 end | |
231 end | 206 end |
232 | 207 |
233 function [closure, penalty] = interface(obj,boundary,neighbour_scheme,neighbour_boundary) | 208 function [closure, penalty] = interface(obj,boundary,neighbour_scheme,neighbour_boundary) |
234 error('not implemented') | 209 error('not implemented') |
235 end | 210 end |