Skip to content

Joss submission - #5

Merged
lmoresi merged 20 commits into
developmentfrom
joss-submission
Jul 24, 2025
Merged

Joss submission#5
lmoresi merged 20 commits into
developmentfrom
joss-submission

Conversation

@lmoresi

Copy link
Copy Markdown
Member

Bring the joss-submission information across to dev.

We will need to update the joss-submission branch to reflect the current state of the code (request from editor to re-submit)

L

CopilotAI review requested due to automatic review settings July 21, 2025 07:24

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This pull request prepares the repository for JOSS (Journal of Open Source Software) submission by bringing changes from the joss-submission branch to dev. The main purpose is to update the submission materials and make the repository ready for re-submission as requested by the JOSS editor.

  • Updates JOSS paper content with expanded mathematical framework and field comparison sections
  • Enables previously disabled advection/diffusion tests with improved analytical solutions
  • Prepares repository structure and metadata for JOSS requirements

Reviewed Changes

Copilot reviewed 16 out of 17 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
tests/test_1100_AdvDiffCartesian.pyMajor refactor replacing 1D numerical comparison with analytical solution verification
test.shRe-enables previously commented out advection/diffusion test suites
src/underworld3/_version.pyVersion bump from 0.98.1b to 0.99.0b with release preparation comment
paper.mdCreates symbolic link to actual JOSS paper location
paper.bibCreates symbolic link to JOSS bibliography file
docs/user/NextSteps.qmdUpdates API documentation URL and fixes syntax
docs/joss-paper/paper.mdExtensive content updates including expanded mathematical framework
docs/joss-paper/paper.crossrefUpdates timestamps and adds author affiliations
docs/joss-paper/paper.bibMajor bibliography expansion with corrected citation keys
docs/joss-paper/JOSS_Checklist.mdUpdates checklist items to completed status
docs/developer/CodingStyle.mdReformats text and adds clarification about pytest independence
README.mdAdds build status badge and formatting improvements
LICENCE.mdCorrects reference to license file name
CONTRIBUTING.mdAdds comprehensive contribution guidelines
.zenodo.jsonReorders authors and fixes JSON syntax
.github/workflows/draft-pdf.ymlUpdates action version from v3 to v4

Comment threaddocs/user/NextSteps.qmd Outdated
Comment thread.zenodo.json Outdated
lmoresiand others added 3 commits July 21, 2025 00:29
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
do not return from within a context manager
@lmoresi
lmoresi merged commit cf66bdb into developmentJul 24, 2025
1 check passed
lmoresi added a commit that referenced this pull request Apr 29, 2026
Updated headline status from "Phase D delivers BDF-class fault
mechanics" to honest scope: Phase B ships for VE / mild VEP; Phase D
and Phase E investigations land on the branch as documented
experiments but are NOT shipping features for deep-yield VEP.
TL;DR rewritten to call out the three regime distinctions and the
structural physics mismatch that ETD-as-designed cannot close
without rebuilding from the ground up.
API section split into "production" (Phase B integrator='etd' on
existing classes) and "experimental — DO NOT USE for production"
(Phase D split class, Phase E hybrid mode).
Added Phase E section under Implementation phasing (DONE), with
killer-test numbers and the slip-drift diagnosis. Renamed
"generic TimeIntegrator refactor" to Phase F (deferred).
New lessons:
8. The diagnostic that mattered: |σ_∥|, not |σ_xy|
9. The structural BDF-vs-ETD slip-rate difference is physics
10. Phase D recommendations checklist (rec #1, #4, #5 implemented;
#2, #3 not; raw-E rejected; back-derived η rejected; Min cap
rejected)
11. Phase E hybrid drifts because of shared σ* history
12. Investigation closed — ETD for VE / mild VEP, BDF for deep yield
Underworld development team with AI support from Claude Code (https://claude.com/claude-code)
lmoresi added a commit that referenced this pull request May 4, 2026
Updated headline status from "Phase D delivers BDF-class fault
mechanics" to honest scope: Phase B ships for VE / mild VEP; Phase D
and Phase E investigations land on the branch as documented
experiments but are NOT shipping features for deep-yield VEP.
TL;DR rewritten to call out the three regime distinctions and the
structural physics mismatch that ETD-as-designed cannot close
without rebuilding from the ground up.
API section split into "production" (Phase B integrator='etd' on
existing classes) and "experimental — DO NOT USE for production"
(Phase D split class, Phase E hybrid mode).
Added Phase E section under Implementation phasing (DONE), with
killer-test numbers and the slip-drift diagnosis. Renamed
"generic TimeIntegrator refactor" to Phase F (deferred).
New lessons:
8. The diagnostic that mattered: |σ_∥|, not |σ_xy|
9. The structural BDF-vs-ETD slip-rate difference is physics
10. Phase D recommendations checklist (rec #1, #4, #5 implemented;
#2, #3 not; raw-E rejected; back-derived η rejected; Min cap
rejected)
11. Phase E hybrid drifts because of shared σ* history
12. Investigation closed — ETD for VE / mild VEP, BDF for deep yield
Underworld development team with AI support from Claude Code (https://claude.com/claude-code)
lmoresi added a commit that referenced this pull request May 10, 2026
- _rss_mb(): switch from resource.ru_maxrss (peak/high-water RSS) to
psutil.Process().memory_info().rss (current RSS), with /proc/self/statm
Linux fallback and ru_maxrss kept only as a last resort. Current RSS
is preferred so freed memory shows as a negative delta. (Copilot #1, #6)
- diff(): apply 0.01 MiB threshold before including rss_mb in the delta.
Smaller noise prints as "+0.00 MiB" and defeats the "no change" fast
path. (Copilot #2)
- dump_petsc_leaks_at_finalize(): drop leading "-" from PETSc option
keys (codebase convention is no dash; "-malloc_dump" was a no-op),
and align docstring with what the function actually sets. (Copilot #3)
- Remove unused `os` import from test module. (Copilot #4)
- Soften ckdtree.pyx comment claiming Cython "guarantees deterministic
destruction" — that's CPython refcounting, which can lag for objects
trapped in reference cycles until cyclic GC runs. (Copilot #5)
- Test: assert KDTree count deltas relative to immediate before/after,
never to absolute baselines. Earlier tests in the same pytest session
can leave KDTree refs alive that the cyclic GC may collect at any
time, shifting the absolute count. CI surfaced this with
"assert 332 == 338" — six trees from earlier tests collected during
our gc.collect().
Underworld development team with AI support from Claude Code
lmoresi added a commit that referenced this pull request May 10, 2026
- _rss_mb(): switch from resource.ru_maxrss (peak/high-water RSS) to
psutil.Process().memory_info().rss (current RSS), with /proc/self/statm
Linux fallback and ru_maxrss kept only as a last resort. Current RSS
is preferred so freed memory shows as a negative delta. (Copilot #1, #6)
- diff(): apply 0.01 MiB threshold before including rss_mb in the delta.
Smaller noise prints as "+0.00 MiB" and defeats the "no change" fast
path. (Copilot #2)
- dump_petsc_leaks_at_finalize(): drop leading "-" from PETSc option
keys (codebase convention is no dash; "-malloc_dump" was a no-op),
and align docstring with what the function actually sets. (Copilot #3)
- Remove unused `os` import from test module. (Copilot #4)
- Soften ckdtree.pyx comment claiming Cython "guarantees deterministic
destruction" — that's CPython refcounting, which can lag for objects
trapped in reference cycles until cyclic GC runs. (Copilot #5)
- Test: assert KDTree count deltas relative to immediate before/after,
never to absolute baselines. Earlier tests in the same pytest session
can leave KDTree refs alive that the cyclic GC may collect at any
time, shifting the absolute count. CI surfaced this with
"assert 332 == 338" — six trees from earlier tests collected during
our gc.collect().
Underworld development team with AI support from Claude Code
Sign up for freeto 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.

4 participants

@lmoresi@bknight1@julesghub