Skip to content

CCE: compute boundary Du<Dy<J>> from buffered R and Dr<J>#7300

Closed
gda98re wants to merge 1 commit into
sxs-collaboration:developfrom
gda98re:pr-cse-3-boundary-dudyj
Closed

CCE: compute boundary Du<Dy<J>> from buffered R and Dr<J>#7300
gda98re wants to merge 1 commit into
sxs-collaboration:developfrom
gda98re:pr-cse-3-boundary-dudyj

Conversation

@gda98re

@gda98re gda98re commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Adds Tags::Du<Tags::Dy<Tags::BondiJ>> to
characteristic_worldtube_boundary_tags (needed by CauchySecondOrder) and computes its boundary value.

The boundary value of Tags::Du<Tags::Dy<Tags::BondiJ>> is computed directly by BondiWorldtubeDataManager from quantities already in the buffer:

  • At every buffered time inside the current interpolation sub-window, extract the modes of R and Dr<BondiJ> from coefficients_buffers_, convert them from Goldberg to libsharp layout, and inverse-SWSH-transform to nodal values at the boundary.
  • Form the nodal product dy_j = 0.5 * R * Dr<BondiJ> at each buffered time.
  • At every angular collocation point, call SpanInterpolator::derivative on the resulting time series to obtain the time derivative at the requested time, which is written into BoundaryValue<Du<Dy<BondiJ>>>.

create_bondi_boundary_data does not populate Du<Dy<BondiJ>>, so the boundary-comparison loops that build their "expected" Variables from it exclude that tag via tmpl::list_difference (with a comment explaining why): Test_WorldtubeData, Test_AnalyticBoundaryDataManager, and the H5 / Gh / Analytic *BoundaryCommunication tests.

Proposed changes

Upgrade instructions

Code review checklist

  • The code is documented and the documentation renders correctly. Run
    make doc to generate the documentation locally into BUILD_DIR/docs/html.
    Then open index.html.
  • The code follows the stylistic and code quality guidelines listed in the
    code review guide.
  • The PR lists upgrade instructions and is labeled bugfix or
    new feature if appropriate.
  • If a coding agent is used, have one of
    "Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com",
    "Co-Authored-by: Codex noreply@openai.com", or
    "Co-Authored-By: GitHub Copilot CLI noreply@microsoft.com"
    as the last line of the commit, depending on the agent.

Further comments

Adds `Tags::Du<Tags::Dy<Tags::BondiJ>>` to
`characteristic_worldtube_boundary_tags` (needed by `CauchySecondOrder`
and other future generators) and computes its boundary value.

The boundary value of `Tags::Du<Tags::Dy<Tags::BondiJ>>` is no longer
read from the worldtube h5 file. Instead `BondiWorldtubeDataManager`
computes it directly from quantities already in the buffer:

  - At every buffered time inside the current interpolation sub-window,
    extract the modes of `R` and `Dr<BondiJ>` from
    `coefficients_buffers_`, convert them from Goldberg to libsharp
    layout, and inverse-SWSH-transform to nodal values at the boundary.
  - Form the nodal product `dy_j = 0.5 * R * Dr<BondiJ>` at each
    buffered time.
  - At every angular collocation point, call the new
    `SpanInterpolator::derivative` on the resulting time series to
    obtain the time derivative at the requested time, which is written
    into `BoundaryValue<Du<Dy<BondiJ>>>`.

`worldtube_boundary_tags_for_writing` and the `BondiWorldtubeH5BufferUpdater`
dataset map no longer carry the now-removed `DuDyJ` channel.

`create_bondi_boundary_data` does not populate `Du<Dy<BondiJ>>`, so the
boundary-comparison loops that build their "expected" Variables from it
exclude that tag via `tmpl::list_difference` (with a comment explaining
why): `Test_WorldtubeData`, `Test_AnalyticBoundaryDataManager`, and the
H5 / Gh / Analytic `*BoundaryCommunication` tests.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@gda98re gda98re closed this Jun 17, 2026
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