diff +sbp/+implementations/d2_sparsity_pattern_inds.m @ 1344:b4e5e45bd239 feature/D2_boundary_opt

Remove round off zeros from D2Nonequidistant operators
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Sat, 15 Oct 2022 15:48:20 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d2_sparsity_pattern_inds.m	Sat Oct 15 15:48:20 2022 +0200
@@ -0,0 +1,13 @@
+function inds = d2_sparsity_pattern_inds(m, order, BP, interior_offset, closure_offset)
+    sparsity_pattern = sparse(m,m);
+    inner_stencil_inds = -order/2-interior_offset:order/2+interior_offset;
+    inner_stencil_pattern = ones(m,length(inner_stencil_inds));
+    sparsity_pattern = spdiags(inner_stencil_pattern,inner_stencil_inds,sparsity_pattern);
+    sparsity_pattern(1:BP,1:BP+closure_offset) = 1;
+    sparsity_pattern(end-BP+1:end,end-(BP+closure_offset)+1:end) = 1;
+    for k = 1:closure_offset
+        sparsity_pattern(BP+k,1:BP+closure_offset+k) = 1;
+        sparsity_pattern(end-(BP+k)+1,end-(BP+k+closure_offset)+1:end) = 1;
+    end
+    inds  = find(sparsity_pattern);
+end
\ No newline at end of file