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

Revisit multigrid operator construction and full-assembly #167

Merged
merged 5 commits into from
Jan 29, 2024

Conversation

sebastiangrimberg
Copy link
Collaborator

@sebastiangrimberg sebastiangrimberg commented Jan 8, 2024

NOTE: Based on #166

Summary of changes:

  • Coarse operators for p-multigrid reuse the quadrature data from the fine level to reduce the need for JIT compiling a new QFunction and assembling new quadrature data. This is the approach from https://arxiv.org/pdf/2204.01722.pdf.
  • Refactor coarse operator parallel full assembly to be in one place. This should enable Complex-valued coarse solver #142 by some relatively simple changes inside of MfemWrapperSolver.

@sebastiangrimberg sebastiangrimberg added enhancement New feature or request performance Related to performance labels Jan 8, 2024
@sebastiangrimberg sebastiangrimberg marked this pull request as ready for review January 9, 2024 17:41
Base automatically changed from sjg/mat-coeff-revisions to main January 18, 2024 17:08
Copy link
Contributor

@hughcars hughcars left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. I tried to think of a simpler control flow for the PtAPr/i and hr/i section but most just end up in more of a mess so I think the mild complexity there is totally valid.

palace/fem/fespace.hpp Show resolved Hide resolved
palace/fem/libceed/operator.cpp Show resolved Hide resolved
palace/linalg/solver.cpp Outdated Show resolved Hide resolved
palace/linalg/solver.cpp Outdated Show resolved Hide resolved
constexpr bool skip_zeros = false;
BilinearForm m(h1_fespaces.GetFinestFESpace());
m.AddDomainIntegrator<DiffusionIntegrator>(epsilon_func);
// m.AssembleQuadratureData();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

debris?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd like to leave these in (as with #167 (comment)) in case eventually we do want to activate this (though for now it does appear to not be worth the extra memory overhead).

palace/linalg/hcurl.cpp Show resolved Hide resolved
palace/linalg/operator.cpp Outdated Show resolved Hide resolved
@sebastiangrimberg sebastiangrimberg merged commit 1a6235d into main Jan 29, 2024
17 checks passed
@sebastiangrimberg sebastiangrimberg deleted the sjg/libceed-solvers-dev branch January 29, 2024 17:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request performance Related to performance
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants