From 45bc6bc35bf2e0e1ffff7ca6c6cc6225091ed789 Mon Sep 17 00:00:00 2001 From: Tristan Goodwill <48371600+tristangdwl@users.noreply.github.com> Date: Wed, 29 Oct 2025 13:59:30 -0400 Subject: [PATCH 1/2] Seperate rcip adaptive correction --- chunkie/chunkermat.m | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/chunkie/chunkermat.m b/chunkie/chunkermat.m index 4b3b0b3..fcf66d5 100644 --- a/chunkie/chunkermat.m +++ b/chunkie/chunkermat.m @@ -30,7 +30,6 @@ % is not defined by the kernel object. Supported % types are: % smooth => smooth kernels -% removable => piecewise smooth kernels % log => logarithmically singular kernels or % smooth times log + smooth % pv => principal value singular kernels + log @@ -73,6 +72,9 @@ % opts.adaptive_correction = (false) flag for whether to use % adaptive quadrature for near touching panels on % different chunkers +% opts.rcip_adaptive_correction = (false) flag for whether to use +% adaptive quadrature for near touching panels on +% different chunkers within rcip % opts.eps = (1e-14) tolerance for adaptive quadrature % ilist - cell array of integer arrays ([]), list of panel interactions that % should be ignored when constructing matrix entries or quadrature @@ -142,6 +144,7 @@ nsub = 40; rcip_savedepth = 10; adaptive_correction = false; +rcip_adaptive_correction = false; sing = 'log'; % get opts from struct if available @@ -191,6 +194,9 @@ if (isfield(opts,'adaptive_correction')) adaptive_correction = opts.adaptive_correction; end +if (isfield(opts,'rcip_adaptive_correction')) + rcip_adaptive_correction = opts.rcip_adaptive_correction; +end nchunkers = length(chnkrs); @@ -380,15 +386,6 @@ auxquads = chnk.quadggq.setup(k,type); opts.auxquads.ggqlog = auxquads; end - elseif strcmpi(sing, 'removable') - type = 'removable'; - if (isfield(opts,'auxquads') && isfield(opts.auxquads,'ggqremovable')) - auxquads = opts.auxquads.ggqremovable; - else - k = chnkr.k; - auxquads = chnk.quadggq.setup(k, type); - opts.auxquads.ggqremovable = auxquads; - end elseif strcmpi(singi,'log') type = 'log'; if (isfield(opts,'auxquads') &&isfield(opts.auxquads,'ggqlog')) @@ -533,6 +530,7 @@ optsrcip.nonsmoothonly = false; optsrcip.corrections = false; optsrcip.rcip_savedepth = rcip_savedepth; + optsrcip.adaptive_correction = rcip_adaptive_correction; [R,rcipsav{ivert}] = chnk.rcip.Rcompchunk(chnkrs,iedgechunks,kern,ndim, ... Pbc,PWbc,nsub,starL,circL,starS,circS,ilist,starL1,circL1,... From fc505b0be61fb7136f40d510a1d9fe3fe7250385 Mon Sep 17 00:00:00 2001 From: Tristan Goodwill <48371600+tristangdwl@users.noreply.github.com> Date: Wed, 29 Oct 2025 14:02:12 -0400 Subject: [PATCH 2/2] Re add removable singularities in chunkermat --- chunkie/chunkermat.m | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/chunkie/chunkermat.m b/chunkie/chunkermat.m index fcf66d5..1d02ed0 100644 --- a/chunkie/chunkermat.m +++ b/chunkie/chunkermat.m @@ -30,6 +30,7 @@ % is not defined by the kernel object. Supported % types are: % smooth => smooth kernels +% removable => piecewise smooth kernels % log => logarithmically singular kernels or % smooth times log + smooth % pv => principal value singular kernels + log @@ -386,6 +387,15 @@ auxquads = chnk.quadggq.setup(k,type); opts.auxquads.ggqlog = auxquads; end + elseif strcmpi(sing, 'removable') + type = 'removable'; + if (isfield(opts,'auxquads') && isfield(opts.auxquads,'ggqremovable')) + auxquads = opts.auxquads.ggqremovable; + else + k = chnkr.k; + auxquads = chnk.quadggq.setup(k, type); + opts.auxquads.ggqremovable = auxquads; + end elseif strcmpi(singi,'log') type = 'log'; if (isfield(opts,'auxquads') &&isfield(opts.auxquads,'ggqlog'))