Skip to content

Field/Function split: FieldFactory + two-level naming, remove AddLayout#336

Open
jacobmerson wants to merge 4 commits into
jacobmerson/conservative-transferfrom
jacobmerson/field-function-split
Open

Field/Function split: FieldFactory + two-level naming, remove AddLayout#336
jacobmerson wants to merge 4 commits into
jacobmerson/conservative-transferfrom
jacobmerson/field-function-split

Conversation

@jacobmerson

@jacobmerson jacobmerson commented Jul 12, 2026

Copy link
Copy Markdown
Collaborator

Splits field construction from the function-space concept and removes AddLayout, reworking field construction and coupler registration around a two-level naming model.

Highlights:

  • Update Field/Function type hierarchy
  • Introduce FieldFactory; rework construction around two-level naming, removing AddLayout
  • Fix the CreateFunction / CreateField split

Base is jacobmerson/conservative-transfer (#335)

@jacobmerson jacobmerson force-pushed the jacobmerson/field-function-split branch from c74eefe to bcb83df Compare July 12, 2026 18:29
@jacobmerson jacobmerson force-pushed the jacobmerson/conservative-transfer branch from 7dfbf1e to 5bda307 Compare July 12, 2026 18:29
@jacobmerson jacobmerson force-pushed the jacobmerson/field-function-split branch 2 times, most recently from 0716c22 to a16f1ea Compare July 12, 2026 22:50
The idea is as follows: a function space creates a function. A
Function<T> represents an object that can be evaluated. A Function<T> is
a Field<T>. A Field<T> itself does not have evaluation capabilities, but
has everything needed to be sent over the network.
naming model, removing AddLayout.

Our goal was to remove the need for AddLayout and forcing the user to
*know* what layouts they needed to add.

This was the simplest strategy of the ones we tested. It also aligns to
the idea that fields are likely to have names anyways. So, having a
field and layout both have names allows convenient cacheing of the
layout communicator and naming of fields that follows on its
construction.
With Function<T> being the object that handles evaluatable fields and
Field<T> being the non-evaluatable object that can be used for sending
over the network. This commit makes the function naming/usage consisent.
@jacobmerson jacobmerson force-pushed the jacobmerson/field-function-split branch from a16f1ea to fed617a Compare July 13, 2026 07:11
@jacobmerson jacobmerson force-pushed the jacobmerson/conservative-transfer branch from 2730ec6 to c72ccad Compare July 13, 2026 07:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant