Skip to content

v0.1.0

Latest

Choose a tag to compare

@jtravs jtravs released this 30 Aug 23:37
· 4 commits to main since this release

Changelog

All notable changes to ModelPNPS are documented in this file.

The format follows Keep a Changelog, and the
project adheres to Semantic Versioning.

Unreleased

[0.1.0] - "2026-08-31"

Added

  • A reference to the paper the package was built for — Travers & Brahms, Extreme
    ultrashort pulse retrieval with differentiable physical forward models
    (in
    preparation; the reference is a placeholder until publication) — in the README and
    throughout the manual, together with two figures generated from that paper's
    simulation data: the 1 fs substrate-thickness trace series (README and manual
    front page) and the single-cycle RDW trace with its injected pulse (input-pulses
    page). The manual pages now point at the paper's quantitative findings where they
    bear on a feature: the Raman trace-versus-pulse bound on the nonlinear-response
    page, and the envelope-exoneration measurement on the field-mode page.

  • Two curated example scripts replacing the previous contents of examples/:
    tgfrog_window_series.jl, a production-scale delay scan for a SLURM cluster with
    a collection-window series and a substrate-thickness ladder, and
    tgfrog_window_series_gpu.jl, the same measurement on a single GPU with a
    chirped input. Both explain the physics they exercise and carry no
    site-specific configuration.

  • Manual pages for the features that had no documentation outside their docstrings:
    data-driven input pulses, the Kerr and Raman responses, field-resolved mode,
    running on a GPU, and accuracy/validation. The self-diffraction geometry is now
    described in the trace-simulation chapter.

  • README badges for CI, documentation, coverage, Aqua, JET and Runic, and the CI
    jobs behind them: coverage upload to Codecov, a standalone Quality group job,
    and a Runic formatting check.

  • CITATION.cff and .zenodo.json, so the archived record and GitHub's "Cite
    this repository" carry real names, ORCIDs and affiliations rather than account
    handles.

  • codecov.yml, reporting coverage informationally rather than as a gate, since a
    suite that deliberately skips the propagation step cannot meet a line-coverage
    target that would mean anything.

  • An explicit slug on the Codecov upload, which an organisation-wide upload token
    requires and a repository token ignores. This does not by itself enable coverage:
    the repository must also be activated on Codecov, without which uploads are
    rejected as "Repository not found".

  • A [sources] entry resolving Luna from the modal-fixed branch. The package is
    written against Luna APIs that are not in a registered release and does not load
    without them, so CI had never been able to pass; it now resolves the branch the
    same way a clone of this repository does.

  • TODO.md, recording deferred work — the examples/ cleanup, the absence of
    executable manual examples and doctests, the boxcar-specific SD diagnostics, and
    the CI services still to be enabled.

  • build_setup and optimal_spatial_grid now reject an unknown geometry, and
    build_setup rejects geometry = :sd for a beam model whose builder only ever
    places three beams. Both cases previously produced a boxcar run with no diagnostic.

Fixed

  • The documentation build, which died at import ModelPNPS on a cold runner.
    Luna loads PyPlot unconditionally, so the build needs matplotlib; PyCall was
    binding to the runner's system python, which has none. Both workflows now set
    PYTHON = "" so PyCall uses its own Conda python and PyPlot installs matplotlib
    itself. CI had been passing only because its depot cache happened to carry a
    working PyCall.
  • Installation instructions. They presented the modal-fixed Luna branch as a GPU
    extra, but it is required for the package to load at all, and Luna has to be added
    before ModelPNPS so the resolver sees the branch first.

Removed

  • The operator and campaign scripts that had accumulated in examples/ — cluster
    submission wrappers, GPU benchmarks, verification drivers and their shell scripts —
    along with GPU-TODO.md. They referenced private hostnames, scratch paths and
    internal working notes, and they documented one research campaign rather than the
    package. The still-open GPU work is distilled into a GPU section of TODO.md,
    and source comments that pointed at internal notes now state their content
    directly.

Changed

  • A prose pass over the README and manual: plainer statements, less selling, and
    the paper carrying the motivation. The README's quick start, installation and
    feature content is unchanged.
  • Set the version to 0.1.0. The package is usable but still moving — TODO.md
    records the self-diffraction diagnostics being boxcar-specific and the examples
    not yet meeting the project's own standards — so 1.0.0 would claim a stability
    that is not there yet.
  • Raised the minimum supported Julia version to 1.12 and replaced the unbounded Luna
    compatibility entry with the tested 0.6.2 series.
  • Applied Runic formatting across the source, tests, and documentation build script.
  • Split the package implementation into domain-focused source files while preserving the
    public API.
  • Reworked the test entry point into isolated Core, Physics, Quality, and Docs
    groups, with package-hygiene, import-hygiene, JET, and doctest coverage.
  • Replaced generic ErrorException failures with specific argument, dimension, and
    invariant exceptions.
  • Tightened setup field types so callable storage remains inferable.
  • Pointed the badges, documentation URLs and Documenter deploy target at
    LupoLab/ModelPNPS.jl, the actual repository, instead of jtravs/ModelPNPS.jl.
  • Documentation links now use the organisation's custom domain,
    lupo-lab.com/ModelPNPS.jl, which is what lupolab.github.io redirects to.
  • CI now tests Julia 1.12 and current stable, matching [compat] julia; it
    previously included 1.10, which cannot resolve the project.
  • Brought the hand-written docstring signature lines back in line with the code, and
    documented the keywords they had drifted away from (geometry, fftsize,
    arraytype, beamlets_on_host, and the run_scan and simulate_delay_point
    solver keywords).