Skip to content
This repository was archived by the owner on Jan 31, 2025. It is now read-only.

Firedrake #20

Merged
merged 97 commits into from
Apr 19, 2024
Merged

Firedrake #20

merged 97 commits into from
Apr 19, 2024

Conversation

connorjward
Copy link
Owner

No description provided.

My approach really does seem to be about the right thing to do.
Substantial cleanup is required and there are a couple of fixes I need
to do.
Still facing convergence issues in Firedrake.
This means that we are correctly generating sparsity code.
Things still work in Firedrake-land.
Firedrake assign works OK. Can now call assignment operations as well as
loops.
Trying to generate code without needing the data structures to exist.
The generated code looks right for the moment. The final piece for the
single-cell wrapper (I think) is to enable one to pass loop indices in
as arguments. I think all that is required for that to work is to do a
bit extra when we unwrap loop contexts. Loop indices should be arrays of
integers rather than single ints because we can happily pass around
multi-indices.
* Remove the array._shape hack, temporary shapes are now determined
  using an extra pass rather than requiring them to be passed in.
* About 7 tests failing, but they should not affect Firedrake.
* About 8 tests currently failing, but they are non-essential for
  Firedrake.
* Substantially improve PetscMat implementation. Row and column axes
  must now be distinctly labelled. This avoids confusing failures.
* Add `Pack` class because sometimes `__getitem__` isn't enough (for
  example if you want a specific DoF layout).
* Made some changes to get high-order quads working in Firedrake.
  Specifically it is convenient to label maps so that the resulting set
  of axes is addressable.
* I have almost definitely broken a large number of tests, but fixing
  them should be straightforward.
* I have also definitely broken the code that previously allowed for
  interchanging axes. This should be easy enough to fix but now we don't
  simply do the naive thing.
* Always renumber temporaries now.
* That bit of the code is nicer now, but I should reimplement the
  renaming expression transformation as we could reduce the number of
  arguments that get passed about.
This will let us do things with, for example, interior facets. We want
to be able to address this subset of all facets as if it were a full
axis component itself.
* Make the difference between indices and loop_exprs more explicit.
* About to try dropping target_path.
The maps for PETSc are now malformed. Not sure how to approach it.
Previous bits of Firedrake that worked still do, but I am having a lot
of trouble getting the matrix tests to pass. I think I am building my
maps badly in some way.
Need to clean up source and target bits and pieces as a matter of
urgency.
In particular sparsity construction is now definitely right. I just have
to fix the interior facet integral issue.
Also error if appropriate.
@connorjward connorjward merged commit 456cdc5 into main Apr 19, 2024
0 of 4 checks passed
@connorjward connorjward deleted the firedrake branch April 19, 2024 10:33
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant