Skip to content

Improve type flexibility in assemblers #4422

Description

@michalhabera

The current model assumes 2 types:

  1. scalar type T for coefficients, constants, and the results of the assembly operation (scalar, vector, and matrix),
  2. geometry type G for mesh coordinates.

One could improve the flexibility in the following:

  1. the assembly type could be independent from the kernel input types. Matrix-matrix accumulate (MMA) do take lower precision inputs and accumulate into higher precision.
  2. geometry type is used to instantiate some basix functions for runtime pullbacks etc. These have more constraints, since they call external libraries for e.g. determinant, inverse, and are not supported for std::float16_t. It should be possible to split that instantiation and allow users requiring only the compiled float16 assembly path to run.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions