Skip to content

Issues with transfer operators #421

Open
@brownbaerchen

Description

@brownbaerchen

I started looking into the transfer operators a little bit and noticed some issues. I will collect what I find here because I don't know if I have time to fix everything.

Side effects of MultiComponentMesh

First of all, there are some side effects of the implementation of imex_mesh via MultiComponentMesh. I have seen, for instance here:

if isinstance(G, mesh):
    ...
elif  isinstance(G, imex_mesh):
    ...

However, because an object is an instance of all classes its own class is derived from, an imex_mesh object is also an instance of mesh and the wrong condition will be entered. I expect we need to be mindful of this distinction throughout the code, not just in the transfer classes. I suggest instead:

if type(G).__name__ == "mesh":
    ...
elif type(G).__name__ == "imex_mesh":
    ...

The type function contains no information about inheritance and by using __name__, we can check against a string and avoid importing the data type. This will be handy for GPU agnostic code. Eventually, I want if type(G).__name__ in ["mesh", "cupy_mesh"]:.

Want non-normalised grids

I tested the order of interpolation and restriction for some classes. Here are some limitations I found:

  • mesh_to_mesh interpolation and restriction work only for grids normalised to 1

Feel free to check the boxes after a respective fix. Let me know when you find more restrictions or add them to this issue yourself.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions