Mercurial > repos > public > sbplib
comparison +multiblock/DiffOp.m @ 1108:5ec23b9bf360 feature/laplace_curvilinear_test
Merge with default
author | Martin Almquist <malmquist@stanford.edu> |
---|---|
date | Wed, 10 Apr 2019 11:00:27 -0700 |
parents | 9c8ed00732fd |
children | 60c875c18de3 |
comparison
equal
deleted
inserted
replaced
1087:867307f4d80f | 1108:5ec23b9bf360 |
---|---|
127 ops = sparse2cell(op, obj.NNN); | 127 ops = sparse2cell(op, obj.NNN); |
128 end | 128 end |
129 | 129 |
130 % Get a boundary operator specified by opName for the given boundary/BoundaryGroup | 130 % Get a boundary operator specified by opName for the given boundary/BoundaryGroup |
131 function op = getBoundaryOperator(obj, opName, boundary) | 131 function op = getBoundaryOperator(obj, opName, boundary) |
132 blockmatrixDiv = obj.blockmatrixDiv{1}; | |
133 | 132 |
134 switch class(boundary) | 133 switch class(boundary) |
135 case 'cell' | 134 case 'cell' |
136 blockId = boundary{1}; | 135 blockId = boundary{1}; |
137 localOp = obj.diffOps{blockId}.getBoundaryOperator(opName, boundary{2}); | 136 localOp = obj.diffOps{blockId}.getBoundaryOperator(opName, boundary{2}); |
138 | 137 |
139 div = {blockmatrixDiv, size(localOp,2)}; | 138 div = {obj.blockmatrixDiv{1}, size(localOp,2)}; |
140 blockOp = blockmatrix.zero(div); | 139 blockOp = blockmatrix.zero(div); |
141 blockOp{blockId,1} = localOp; | 140 blockOp{blockId,1} = localOp; |
142 op = blockmatrix.toMatrix(blockOp); | 141 op = blockmatrix.toMatrix(blockOp); |
143 return | 142 return |
144 case 'multiblock.BoundaryGroup' | 143 case 'multiblock.BoundaryGroup' |
145 op = sparse(sum(blockmatrixDiv),0); | 144 op = sparse(size(obj.D,1),0); |
146 for i = 1:length(boundary) | 145 for i = 1:length(boundary) |
147 op = [op, obj.getBoundaryOperator(opName, boundary{i})]; | 146 op = [op, obj.getBoundaryOperator(opName, boundary{i})]; |
148 end | 147 end |
149 otherwise | 148 otherwise |
150 error('Unknown boundary indentifier') | 149 error('Unknown boundary indentifier') |