Skip to content

Releases: detrin/OpenQuantumSystems.jl

v0.6.0

23 Mar 22:53
d8bdc42

Choose a tag to compare

What's new in v0.6.0

New features

Förster theory (#78)

  • absorption_spectrum and emission_spectrum — vibronic lineshapes from Franck-Condon factors with Gaussian broadening, temperature-weighted
  • spectral_overlap — overlap integral between donor emission and acceptor absorption
  • forster_rate(J, donor, acceptor) — Förster EET rate scaling as J²
  • forster_rate_matrix(aggCore) — pairwise rate matrix for all molecules in an aggregate

Modified Redfield theory (#79)

  • exciton_basis — transform site-basis Hamiltonian to exciton basis
  • modified_redfield_rates — population transfer rates using full non-perturbative lineshape treatment
  • modified_redfield_dynamics — time evolution of populations under modified Redfield

Spectral density (#79)

  • SpectralDensity, spectral_density — bath spectral density from discrete LHO modes
  • reorganization_energy — λ from J(ω)
  • lineshape_function, lineshape_derivative, lineshape_second_derivative — g(t) and derivatives

Transition dipole moments (#80)

  • TransitionDipole — store 3D position (Å) and dipole vector (Debye)
  • dipole_dipole_coupling — point-dipole J from geometry and orientation
  • coupling_from_dipoles — full coupling matrix for an aggregate
  • AggregateCore(molecules, dipoles) constructor convenience overload

Corrected memory kernel (#88, #89, #90)

  • analytic_correlation_nn, analytic_correlation_nn_high_T — closed-form bath correlation functions
  • zeroth_order_memory_kernel_cf, zeroth_order_memory_kernel_high_T — M⁰ from correlation functions
  • first_order_memory_kernel_cf, first_order_memory_kernel_high_T — M¹ with non-equilibrium bath correction
  • corrected_rates_cf, corrected_qme_rdm — iterative RDM solver with corrected kernel
  • site_to_exciton_kernel — transform memory kernel to exciton basis

Bug fixes

  • #86 — Fix missing ρ factor in default iterative QME bath correction (W_abcd_1_bath_core). The ad(rho_t2, W_bath_t2, ...) result was erroneously overwritten with bare W_bath_t2, dropping the ρ_{cd}(t₂) weighting.
  • #87 — Fix docstring labels M_2, M_3, M_4 in memory_kernel.jl (all previously said M_1); remove unused type parameters U, V from QME_sS_exact.

Internal

  • src/ reorganized into subdirectories: base/, aggregate/, evolution/, spectroscopy/, utils/
  • 5 new test files covering all new features (443 new tests)
  • Tutorials: simulation method comparison notebook added

Resolved issues

#78, #79, #80, #86, #87, #88, #89, #90

v0.5.0

23 Mar 14:16

Choose a tag to compare

What's Changed

New Features

  • #68 Add SimulationResult type with populations accessor — consistent return value across all solvers
  • #71 Add unified solve() entry point dispatching to all solvers
  • #75 Add convenience constructors for common systems: setup_dimer, setup_trimer, setup_linear_chain
  • #69 Add molecule-only coupling matrix constructor for AggregateCore — no more +1 ground state offset confusion
  • #72 Add physical validation functions for density matrix states

Refactoring

  • #76 Replace symbol if/elseif dispatch chains with type dispatch for vib_basis
  • #66 Standardize all exported function names to snake_case with backward-compatible deprecated aliases

Documentation

  • #67 Rewrite dimer tutorial to use current API
  • #70 Add naming conventions glossary
  • #74 Add solver selection guide
  • #73 Fix unit conversion: use Julia pi, consolidate tspan_cm_to_fs

Developer Experience

  • Add commit-msg hook to block Co-Authored-By AI attribution (.githooks/)
  • Add setup instructions to CONTRIBUTING.md

Full Changelog: v0.4.0...v0.5.0

v0.4.0

23 Mar 12:12

Choose a tag to compare

What's Changed

Bug Fixes

  • #52 Fix risky divisions in master_iterative.jl — replace exact ==0 checks with tolerance-based guards using _safe_div/_safe_inv helpers
  • #60 Fix unsafe divisions in trace.jl and rate_constant.jl — same safe division pattern applied throughout
  • #65 Remove hardcoded OpenQuantumSystems. module self-references in aggregateTools.jl and trace.jl

Refactoring

  • #61 Extract shared integration setup boilerplate into _setup_integration helper — eliminates ~150 duplicated lines across 4 solver files
  • #62 Refactor deeply nested getAggHamInteraction in aggregateOperators.jl — reduced from 5 levels of nesting
  • #63 Remove Union{T, Nothing} fields from Aggregate struct — fields are now non-nullable
  • #64 Replace hardcoded 2-level system magic numbers with named constants in molecules.jl and aggregateOperators.jl

Other

  • Added ISSUES.md with full code quality audit, UX analysis, and Julia pattern recommendations
  • Added project-level Claude Code settings (disables co-author attribution)

Full Changelog: v0.3.0...v0.4.0

v0.3.0

23 Mar 08:58

Choose a tag to compare

What's changed

Code quality & Julia 1.12 compatibility (#50#58)

  • #50 — Refactored master_ansatz.jl: eliminated 8-way duplication in QME_sI_ansatz_* functions; unified into a single QME_sI_ansatz with ansatz::Symbol dispatch and backward-compatible wrappers
  • #51 — Refactored master_iterative.jl: consolidated duplicated solvers into QME_sI_iterative with method::Symbol dispatch; removed all _old versions
  • #52 — Fixed risky division in master_iterative.jl that could silently produce Inf; replaced with safe element-wise inverse
  • #53 — Replaced typeof(rho) <: Operator type-checking anti-pattern with proper Julia dispatch via _to_matrix helper
  • #54 — Replaced bare positional parameter tuples in ODE callbacks with NamedTuple for clarity and safety
  • #55 — Added input validation for magic symbol strings (vib_basis, picture, mode flags) with descriptive ArgumentError
  • #56 — Fixed potential nothing return in trace.jl when vib_basis doesn't match any branch
  • #57 — Improved type annotations throughout: replaced bare ::Array with ::AbstractMatrix / ::AbstractVector
  • #58 — Cleaned up technical debt: removed dead make.bat, resolved duplicate _to_matrix definition

GitHub Actions modernization

  • Updated all CI workflows to Julia 1.12
  • Updated all action versions (checkout@v4, setup-julia@v2, julia-actions/cache@v2, codecov@v4)
  • Fixed compat-helper.yml which was written in GitLab CI syntax and never ran
  • Fixed docs.yml: added missing setup-julia and cache steps, updated Documenter compat to v1

Full changelog: v0.2.0...v0.3.0

v0.2.0

03 Dec 10:43

Choose a tag to compare

OpenQuantumSystems v0.2.0

Diff since v0.1.7

v0.1.7

03 May 16:03

Choose a tag to compare

OpenQuantumSystems v0.1.7

Diff since v0.1.6

v0.1.6

11 Apr 18:28

Choose a tag to compare

OpenQuantumSystems v0.1.6

Diff since v0.1.5

Merged pull requests:

v0.1.5

18 Mar 09:57

Choose a tag to compare

OpenQuantumSystems v0.1.5

Diff since v0.1.4

Merged pull requests:

v0.1.4

12 Nov 20:33

Choose a tag to compare

OpenQuantumSystems v0.1.4

Diff since v0.1.3

Merged pull requests:

  • CompatHelper: bump compat for "QuantumOpticsBase" to "0.3" (#29) (@github-actions[bot])
  • Devel (#30) (@detrin)

v0.1.3

23 May 16:11

Choose a tag to compare

OpenQuantumSystems v0.1.3

Diff since v0.1.2