CEED / CEED/libCEED

Diagonal Assembly for Uncoupled Components

Open
#1,219 2 comments 0 reactions 0 assignees View on GitHub
enhancement performance
Dominant language
C
Stars
265
Forks
78
Avg merge
2d 8h
Merged PRs (30d)
11

Description

Summary
---

Our diagonal assembly does more work and memory than it needs when we are working with uncoupled fields. We should have a way to indicate uncoupled fields to improve performance (especially memory) for diagonal assembly.

Context
---

Jed:
> I think the memory issue is related to assembling the diagonal for the projection, which I believe forms a dense qfunction "core" at each quadratrue. We could instead assemble the diagonal for a scalar projection and use a Kronecker product on the diagonal so that we never need to deal with that big intermediate data structure.

Jeremy:
> Yeah, I also want to pursue that fix over in libCEED, but I think subsetting the list of values would also be a nice feature to have if we can add it without too much complexity. I'd put [#79](https://github.com/micromorph/ratel/-/issues/79) as higher priority though.

> This might be easier to add as a Ratel only fix in the short term. However, it feels like something that is generally useful. Though, I'm not sure how I'd want to indicate in libCEED that this sort of diagonal assembly should happen

Jed:
> `CeedQFunctionSetDiagonal(CeedQFunction, bool)` or more generally `CeedQFunctionSetCoupling(CeedQFunction, const CeedInt group[])`?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.