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
furotheme layout and reorganized structure.Updated the
docsfolder with detailed installation and user guides (available at Read The Docs).Updated air configuration examples (
001_air_IR_ps.tomland002_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
optionsconfiguration module with a newconfigclass that unifies all user-related options. Input options are now provided through a dictionary at the__main__entry.Added a new
gpuboolean variable as an entry in theconfigdictionary, in preparation for future GPU-acceleration.Removed the
method_ramanstring variable from theconfigdictionary, since only a single trapezoidal integration method is now used.Added a package-oriented CLI/config flow with TOML loading in
__main__, optional--outputoverride, and standardized output-path handling through configuration and path helpers.
๐งฉ Plotting
Simplified and renamed some variables and classes for simplicity.
Plot1Dnow plots beam radius using a newcompute_radius()function and beam fluence loadedfluence_rzdata.Plot2Dnow supports log-scale plotting for radial vs time images using thecontourffunction.Plot2Dnow supports new colormap options via the third party librarycmasher, which provides better color gradients and considers color vision deficiencies.The
monitoringmodule now imports input and output data paths from thepathssubmodule indata.The
monitoringandplottingmodules 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
FCNandSSCNvariants, improved linear-step performance with tridiagonal LAPACK workflows, and added optional radial PML support.Renamed the
basesubmodule tosharedto 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.
sharedmodule 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.FCNsolver now precomputes and stores the matrices in parallel usingThreadPoolExecutor()for faster execution.FCNsolver now usesThreadPoolExecutor()for parallel computation across frequency slides incompute_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
keldyshmodule replacing previousionizationapproaches. 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
mediummodule storing medium properties fromconfigand dispersive properties fromsellmeier.Refactored
laserandgridmodules to use input options from theconfigclass.Added molecular correction and electron momentum dependence for ionization rates of gases based on Mishima et al. in the
keldyshmodule.
๐งฉ Constants
Added a new
constants.pymodule to centralize physical and mathematical constants across the package.
๐งฉ Functions
Removed the
mathematicsfolder; replaced with afunctionsfolder containing all previous modules.Moved
compute_radius()toplottingmodule to increase execution speed by avoiding unnecessary computation inside the propagation loop and storage in diagnostics files.Refactored
fourierimports to use thegpuboolean fromcomputing_backendoption inconfig. CuPyโs backendcufftis now used only whengpu=trueand the library is available; otherwise SciPyfft()andifft()is used.compute_raman()now uses a second-order trapezoidal integration method for the Raman integral. Removed unused SciPysolve_ivp()routines.compute_nonlinear()now uses z-independent frequency tables for faster broadcasting computations.Optimized
compute_density()andcompute_nonlinear()with in-place operations using temporary buffer arrays_nlin_tmp_t,_nlin_tmp_w, anddens_tmp_bufto improve speed.Replaced
RegularGridInterpolatorfor intensity/ionization 2D arrays with SciPyโs linearmake_interp_splineinterpolation along the time axis only.Replaced
interp1dinkeldyshwith SciPyโs cubicPchipInterpolatorfor monotonic, shape-preserving interpolation.Added
keldysh_ratesandkeldysh_sumfunctions for truncated series computation of Keldysh ionization rates.Added
sellmeierfunctions providing complete Sellmeier formulas for air, water, and silica.
๐งฉ Data
validate_stepindiagnosticsnow saves propagation results in case of failure.Output_manageris initialized in__main__and accessible fromsharedto save results when density or envelope values overflow.Removed profiling capabilities from
diagnostics, as they are no longer needed.
๐ท๏ธ Other Featuresยถ
๐ Tests
Added a
testsfolder for development and quality control through GitHub Actions workflows.
๐ Documentation and Examples
Added a
docsfolder 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
examplesfolder with four configuration examples:001_air_IR_ps.toml,002_air_IR_fs.toml,003_water_IR_fs.toml, and004_water_UV_fs.toml.Moved
README.mdto the repository root and updated badges.
๐ Build and Compatibility
Added repository automation under the
.githubfolder for nightly tests, Codecov, and manual badge generation.Added release-notes guidance in
.github/agent/release_notes_agent.md.Renamed
mainentry as__main__to comply with Python CLI standards.Removed
olddirectory 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.mdfile to the repository root.
๐ Bug-fixesยถ
Fixed
compute_envelope()infcnmodule:mats_rightwas incorrectly used insolve_banded()instead ofmats_left.Fixed
fourierimport error when CuPy was unavailable; previously, global backendcufftwas used alongside SciPyworkersoption.Fixed axis node conversion from float to integer in
init_grid_nodeswithin theplottingmodule.Fixed
--radial-limitparser argument value not being converted to float.Fixed duplicated axis data in
init_sliced_arraysandflip_radial_datawhen plotting radially symmetric figures.Fixed overflow in
snapshot_z_index; data type changed fromint16touint16.Fixed elementwise unit conversion, small-
zsnapshot formatting, flat-endedrtlog colorbars, and corrected beam-radius extraction.Fixed plotting CLI argument parsing consistency:
--radial-symmetryTrue/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