Skip to content

Combine these to a single flag: maybe PCMS_ENABLE_TRANSFER #355

Open

Description

@Fuad-HH

if(PCMS_ENABLE_PETSC AND PCMS_ENABLE_MESHFIELDS)

Like this, there are many places in both cmake and c++ codebase where these two are used to determine if pcms::transfer is being enabled or not. Having a specific flag combining these two would be helpful.

Activity

  1. jacobmerson commented on Aug 12, 2026

    @jacobmerson
    Collaborator

    We may want to have a separate flag for enabling transfer overall, but we have already relaxed some of the constraints that required both of these libraries to perform transfer.

    • Petsc is required for the transfer methods that require doing global solves (for now this is just projections).
    • The mesh intersection variants only work with Omega_h meshes.
    • The current version of the conservative transfer probably does require mesh fields for the integration, but eventually we can relax that for order 0/order one where we just use the barycentric coords from Omega_h. This is how we support evaluations without meshfields installed.
  2. jacobmerson commented on Aug 14, 2026

    @jacobmerson
    Collaborator

    @Fuad-HH and I had a productive offline discussion. the point he was trying to get across is that most of our PCMS_ENABLE flags are dependency / PCMS developer focused. However, for the end-user, they are going to be much more interested in capability focused ENABLE flags that help them to turn on the features they want.

    For example, we could have a flag called PCMS_ENABLE_CONSERVATIVE_TRANSFER which when turned on would require that PCMS was configured with PETSC/MeshFields/Omega_h.

    I think this is probably a fairly good idea. However, it will take a fair amount of effort to figure out what the appropriate capabilities should be called and then figure out how to get CMake to handle properly.

    I am leaving this issue open for future discussion and potential coordination on how to accomplish this.

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