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

Provide unique interface for push-forward operators #396

Open
yguclu opened this issue Mar 22, 2024 · 0 comments
Open

Provide unique interface for push-forward operators #396

yguclu opened this issue Mar 22, 2024 · 0 comments
Labels
FEEC Finite element exterior calculus

Comments

@yguclu
Copy link
Member

yguclu commented Mar 22, 2024

Our push-forward operators take a callable function in the logical domain and an evaluation grid in the logical coordinates, and return the values of the push-forwarded function on the corresponding physical grid. To this end they can take advantage of several optimizations as shown in file psydac/core/field_evaluation_kernels.py.

These kernels are used by the high-level class Pushforward in module psydac.feec.pushforward: the __init__ constructor takes a fairly generic evaluation grid, and the __call__ method evaluates the correct push-forward (H1, H-curl, H-div, or L2) of multiple fields based on the kind parameter of their spaces.

Unfortunately, the functions push_* in module psydac.feec.pull_push provide an alternative interface which is less efficient, but extensively used across Psydac. In particular, these functions are based on the __call__ method of FemField objects, which in turn calls the method eval_field of FemSpace.

In general eval_field is implemented in the subclasses of FemSpace for a single-point evaluation, and it is mostly in pure Python.

@yguclu yguclu added the FEEC Finite element exterior calculus label Mar 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
FEEC Finite element exterior calculus
Projects
None yet
Development

No branches or pull requests

1 participant