Mercurial > repos > public > sbplib
comparison +multiblock/DiffOp.m @ 1197:433c89bf19e0 feature/rv
Merge with default
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Wed, 07 Aug 2019 15:23:42 +0200 |
parents | 9c8ed00732fd |
children | 60c875c18de3 |
comparison
equal
deleted
inserted
replaced
1196:f6c571d8f22f | 1197:433c89bf19e0 |
---|---|
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 | |
132 switch class(boundary) | 133 switch class(boundary) |
133 case 'cell' | 134 case 'cell' |
134 localOpName = [opName '_' boundary{2}]; | |
135 blockId = boundary{1}; | 135 blockId = boundary{1}; |
136 localOp = obj.diffOps{blockId}.(localOpName); | 136 localOp = obj.diffOps{blockId}.getBoundaryOperator(opName, boundary{2}); |
137 | 137 |
138 div = {obj.blockmatrixDiv{1}, size(localOp,2)}; | 138 div = {obj.blockmatrixDiv{1}, size(localOp,2)}; |
139 blockOp = blockmatrix.zero(div); | 139 blockOp = blockmatrix.zero(div); |
140 blockOp{blockId,1} = localOp; | 140 blockOp{blockId,1} = localOp; |
141 op = blockmatrix.toMatrix(blockOp); | 141 op = blockmatrix.toMatrix(blockOp); |
149 error('Unknown boundary indentifier') | 149 error('Unknown boundary indentifier') |
150 end | 150 end |
151 end | 151 end |
152 | 152 |
153 function op = getBoundaryQuadrature(obj, boundary) | 153 function op = getBoundaryQuadrature(obj, boundary) |
154 opName = 'H'; | |
155 switch class(boundary) | 154 switch class(boundary) |
156 case 'cell' | 155 case 'cell' |
157 localOpName = [opName '_' boundary{2}]; | |
158 blockId = boundary{1}; | 156 blockId = boundary{1}; |
159 op = obj.diffOps{blockId}.(localOpName); | 157 op = obj.diffOps{blockId}.getBoundaryQuadrature(boundary{2}); |
160 | |
161 return | 158 return |
162 case 'multiblock.BoundaryGroup' | 159 case 'multiblock.BoundaryGroup' |
163 N = length(boundary); | 160 N = length(boundary); |
164 H_bm = cell(N,N); | 161 H_bm = cell(N,N); |
165 for i = 1:N | 162 for i = 1:N |