Temporal-nesting support: payload time interpolation, collar evaluation, and an R3X fix on the tiled path#20
Merged
Merged
Conversation
Two-way nesting a la DeMaria et al. (1992) / Ooyama (2001): - lerp_payload! linearly interpolates interface payloads in time for subcycled fine patches (bitwise-exact at the endpoints). - evaluate_grid_ipoints evaluates a grid's spectral representation at arbitrary i-points with the full physical derivative-slice layout (1D R and RiRk), providing the fine-mesh values for the coarse patch's collar-zone Galerkin loads (the fine-to-coarse feedback). - Collar interfaces (coarse patch extended one cell past the interface, trio extracted at the now-interior interface node) are covered by the existing is_stacked path; tests document the construction and add an anti-freeze regression against BC-based feedback.
The allocating SAtransform(spline, b) - the form every 3-arg (tiled) splineTransform! method uses for the b->a solve on patch splines - ignored spline.ahat, so a rank-3-coupled (R3X) patch lost its donated border trio on the distributed tile path: the border was silently pinned to zero while the in-place SAtransform! honored the coupling. Route rank-3 inhomogeneous splines through the ahat path, matching SAtransform! exactly. Regression test asserts allocating == in-place for an R3X spline with nonzero ahat.
…ulus offsets Three pieces toward radially-nested RL (cylindrical) models: - The 2- and 3-arg RL splineTransform! now reload the coupled per-wavenumber border (ahat) from the multi-patch registry before every solve on the reused k0/real/imag splines, mirroring gridTransform; previously an R3X-coupled RL patch carried the last-applied wavenumber's border on every mode along the tiled path. Same fix in _get_ahat_cache_rl. - evaluate_grid_points(::RL_Grid, pts; kmax): values + dr/drr/dl/dll at arbitrary (r, lambda) points (the fine->coarse collar-feedback primitive), with per-point wavenumber truncation matching the target ring's support. Building it exposed a latent sign bug: the unstructured RL/RLZ evaluators synthesized with +aI*sin, but FFTW halfcomplex imag slots hold NEGATIVE sine sums - every asymmetric field evaluated as its mirror image. Fixed in _eval_unstructured_rl/_rlz; a mish-point test now pins the convention against gridTransform! (existing tests passed under either sign). - Nest annulus patches set patchOffsetL explicitly (global ring numbering) while spectralIndexL stays patch-relative; _create_tile_from_patch composes the patch's own offset into its tiles (identity for ordinary patches, so existing behavior is bit-preserved). Full suite: 35,230 pass.
Codecov Report❌ Patch coverage is
🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Support for two-way temporally-nested models per DeMaria et al. (1992, MWR) and Ooyama (2001, JAS), plus a correctness fix the nesting work uncovered on the tiled transform path.
Added
Fixed
Validation