Releasesยถ

Release notes for the latest packaged versions of acherus are available on PyPI. Other versions are also available on Zenodo and GitHub Releases.

Acherus v0.8.1ยถ

๐Ÿท๏ธ Other Featuresยถ

  • ๐Ÿ“š Documentation and Examples

    • Updated README and version links.

    • Updated Read The Docs with the new furo theme layout and reorganized structure.

    • Updated the docs folder with detailed installation and user guides (available at Read The Docs).

      • Updated air configuration examples (001_air_IR_ps.toml and 002_air_IR_fs.toml) focal length to match the value reported by Houard et al..

๐Ÿ“ Full changelogยถ

N commits

๐Ÿ“š Docs

๐Ÿ” Tests

๐Ÿ› Fixes

๐ŸŽจ Style

๐Ÿš€ Features

Other

% of Commits

100%

0%

0%

0%

0%

0%

Full changelog: https://github.com/ismatorresgarcia/acherus/compare/v0.8.0โ€ฆv0.8.1

Acherus v0.8.0ยถ

๐Ÿš€ New Featuresยถ

  • ๐Ÿงฉ Configuration

    • Replaced the options configuration module with a new config class that unifies all user-related options. Input options are now provided through a dictionary at the __main__ entry.

    • Added a new gpu boolean variable as an entry in the config dictionary, in preparation for future GPU-acceleration.

    • Removed the method_raman string variable from the config dictionary, since only a single trapezoidal integration method is now used.

    • Added a package-oriented CLI/config flow with TOML loading in __main__, optional --output override, and standardized output-path handling through configuration and path helpers.

  • ๐Ÿงฉ Plotting

    • Simplified and renamed some variables and classes for simplicity.

    • Plot1D now plots beam radius using a new compute_radius() function and beam fluence loaded fluence_rz data.

    • Plot2D now supports log-scale plotting for radial vs time images using the contourf function.

    • Plot2D now supports new colormap options via the third party library cmasher, which provides better color gradients and considers color vision deficiencies.

    • The monitoring module now imports input and output data paths from the paths submodule in data.

    • The monitoring and plotting modules now have clearer defaults/options, stricter validation, and cleaner plotting controls.

  • ๐Ÿงฉ Mesh

    • Modified the radial grid index to go from 0 to N (instead of from 0 to N + 1) to matching boundary conditions.

  • ๐Ÿงฉ Solvers

    • Refactored core propagation internals: unified FCN and SSCN variants, improved linear-step performance with tridiagonal LAPACK workflows, and added optional radial PML support.

    • Renamed the base submodule to shared to match the solver structure.

    • Added a new Adams-Bashforth two-step (AB2) integrator for nonlinear terms. All solvers now use AB2 to preserve Crank-Nicolson accuracy; the first propagation step is computed using the Forward Euler method.

    • shared module now initializes all arrays to zero to prevent use of uninitialized memory or empty values.

    • Refactored Crank-Nicolson matrix creation into a single compute_matrices() routine.

    • FCN solver now precomputes and stores the matrices in parallel using ThreadPoolExecutor() for faster execution.

    • FCN solver now uses ThreadPoolExecutor() for parallel computation across frequency slides in compute_envelope().

    • Every single z-independent coefficient which depends on frequency, such as constants optical shock operators, is now precomputed and stored as a 1D array and passed to compute_nonlinear() functions for faster computation and reduced floating-point errors.

  • ๐Ÿงฉ Physics

    • Added a new keldysh module replacing previous ionization approaches. It computes ionization rates over a desired intensity interval and provides an interpolating object to convert intensity arrays into ionization rates. Supports gaseous and condensed media, including the multiphoton limit and the full generalized Keldysh theory.

    • Added a new medium module storing medium properties from config and dispersive properties from sellmeier.

    • Refactored laser and grid modules to use input options from the config class.

    • Added molecular correction and electron momentum dependence for ionization rates of gases based on Mishima et al. in the keldysh module.

  • ๐Ÿงฉ Constants

    • Added a new constants.py module to centralize physical and mathematical constants across the package.

  • ๐Ÿงฉ Functions

    • Removed the mathematics folder; replaced with a functions folder containing all previous modules.

    • Moved compute_radius() to plotting module to increase execution speed by avoiding unnecessary computation inside the propagation loop and storage in diagnostics files.

    • Refactored fourier imports to use the gpu boolean from computing_backend option in config. CuPyโ€™s backend cufft is now used only when gpu=true and the library is available; otherwise SciPy fft() and ifft() is used.

    • compute_raman() now uses a second-order trapezoidal integration method for the Raman integral. Removed unused SciPy solve_ivp() routines.

    • compute_nonlinear() now uses z-independent frequency tables for faster broadcasting computations.

    • Optimized compute_density() and compute_nonlinear() with in-place operations using temporary buffer arrays _nlin_tmp_t, _nlin_tmp_w, and dens_tmp_buf to improve speed.

    • Replaced RegularGridInterpolator for intensity/ionization 2D arrays with SciPyโ€™s linear make_interp_spline interpolation along the time axis only.

    • Replaced interp1d in keldysh with SciPyโ€™s cubic PchipInterpolator for monotonic, shape-preserving interpolation.

    • Added keldysh_rates and keldysh_sum functions for truncated series computation of Keldysh ionization rates.

    • Added sellmeier functions providing complete Sellmeier formulas for air, water, and silica.

  • ๐Ÿงฉ Data

    • validate_step in diagnostics now saves propagation results in case of failure. Output_manager is initialized in __main__ and accessible from shared to save results when density or envelope values overflow.

    • Removed profiling capabilities from diagnostics, as they are no longer needed.

๐Ÿท๏ธ Other Featuresยถ

  • ๐Ÿ” Tests

    • Added a tests folder for development and quality control through GitHub Actions workflows.

  • ๐Ÿ“š Documentation and Examples

    • Added a docs folder for Read The Docs powered by Sphinx, hosting the official up-to-date documentation.

    • Acherus is now an official PyPI package. Install it from PyPI.

    • Added an examples folder with four configuration examples: 001_air_IR_ps.toml, 002_air_IR_fs.toml, 003_water_IR_fs.toml, and 004_water_UV_fs.toml.

    • Moved README.md to the repository root and updated badges.

  • ๐Ÿ Build and Compatibility

    • Added repository automation under the .github folder for nightly tests, Codecov, and manual badge generation.

    • Added release-notes guidance in .github/agent/release_notes_agent.md.

    • Renamed main entry as __main__ to comply with Python CLI standards.

    • Removed old directory in favor of Git version control.

    • Updated release-readiness metadata (PyPI URL normalization and README badge/link cleanup, including Codecov, LoC, and LoD).

  • ๐ŸŽจ Code Style

    • Improved various helper module descriptions.

    • Configuration options now accept uppercase and lowercase strings.

    • Applied consistency/readability cleanups across touched plotting/function modules.

  • ๐Ÿ›ก๏ธSecurity

    • Added SECURITY.md file to the repository root.

๐Ÿ› Bug-fixesยถ

  • Fixed compute_envelope() in fcn module: mats_right was incorrectly used in solve_banded() instead of mats_left.

  • Fixed fourier import error when CuPy was unavailable; previously, global backend cufft was used alongside SciPy workers option.

  • Fixed axis node conversion from float to integer in init_grid_nodes within the plotting module.

  • Fixed --radial-limit parser argument value not being converted to float.

  • Fixed duplicated axis data in init_sliced_arrays and flip_radial_data when plotting radially symmetric figures.

  • Fixed overflow in snapshot_z_index; data type changed from int16 to uint16.

  • Fixed elementwise unit conversion, small-z snapshot formatting, flat-ended rt log colorbars, and corrected beam-radius extraction.

  • Fixed plotting CLI argument parsing consistency: --radial-symmetry True/False boolean conversion, and numeric range parsing/validation.

  • Fixed SSCN propagation duplicate ion-rate handling and boundary alignment issues.

๐Ÿ“ Full changelogยถ

N commits

๐Ÿ“š Docs

๐Ÿ” Tests

๐Ÿ› Fixes

๐ŸŽจ Style

๐Ÿš€ Features

Other

% of Commits

11%

4%

25%

10%

44%

6%

Full changelog: https://github.com/ismatorresgarcia/acherus/compare/v0.7.0โ€ฆv0.8.0