Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement local version of vdim #82

Draft
wants to merge 53 commits into
base: main
Choose a base branch
from
Draft

Implement local version of vdim #82

wants to merge 53 commits into from

Conversation

tanderson92
Copy link
Member

@tanderson92 tanderson92 commented Aug 18, 2024

Experimental branch/PR to play around and track progress on ideas related to a local version of VDIM, which is given in schematic form below.

LVDIM_schematic

Copy link

codecov bot commented Aug 28, 2024

Codecov Report

Attention: Patch coverage is 2.37530% with 411 lines in your changes missing coverage. Please review.

Project coverage is 57.98%. Comparing base (33f7682) to head (2006455).

Files Patch % Lines
src/bdim.jl 0.00% 107 Missing ⚠️
src/vdim.jl 0.00% 103 Missing ⚠️
src/quadrature.jl 0.00% 69 Missing ⚠️
src/reference_interpolation.jl 0.00% 53 Missing ⚠️
src/mesh.jl 5.45% 52 Missing ⚠️
ext/IntiMakieExt.jl 5.26% 18 Missing ⚠️
src/api.jl 0.00% 6 Missing ⚠️
src/adaptive.jl 60.00% 2 Missing ⚠️
src/utils.jl 75.00% 1 Missing ⚠️

❗ There is a different number of reports uploaded between BASE (33f7682) and HEAD (2006455). Click for more details.

HEAD has 3 uploads less than BASE
Flag BASE (33f7682) HEAD (2006455)
4 1
Additional details and impacted files
@@             Coverage Diff             @@
##             main      #82       +/-   ##
===========================================
- Coverage   79.55%   57.98%   -21.58%     
===========================================
  Files          25       25               
  Lines        2950     3342      +392     
===========================================
- Hits         2347     1938      -409     
- Misses        603     1404      +801     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@tanderson92
Copy link
Member Author

tanderson92 commented Sep 9, 2024

Possible performance improvements left, taken from a quick look through profiling:

  1. Vectorization of special functions calls using IntelVectorMath.jl or LoopVectorization.jl, in nystrom.jl
  2. ( ✔️) Use of Bessels.jl for faster special function evaluation than SpecialFunctions.jl currently used
  3. Avoid re-allocs for construction of Smat, Dmat, Vmat.
  4. Avoid re-allocs for repeat in constructing sparse matrix
  5. For local volume quadratures (currently called Yvol), extract these on the fly from parent quadrature rather than building anew. This is delicate if we wish to modify a QuadratureNode e.g. for re-centering and scaling the integration region.
  6. Better neumann trace computation for $\gamma_1B$ -- a lot of time spent in getindex which seems wrong?
  7. Remove duplication in computation in SingleLayerKernel and DoubleLayerKernel. Also, optimization of kernels themselves (e.g. r = x - y; d = norm(r) is not great). @fastmath too?

@tanderson92
Copy link
Member Author

Feature (not performance) TODO before ready to merge:

  • Fix stability via integration in $\tilde{x}$ coordinates; that is, handle homogeneous-preserving PDEs (those whose poly solutions are homog if RHS is homog, e.g. Laplace, Stokes) and non-homogeneous-preserving PDEs (e.g. Helmholtz) separately, the latter via kernel-split reduction to zero-freq limit PDE VDIM (i.e. for Helmholtz this is Laplace) in the low-freq limit.
  • Vector-valued PDEs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants