Skip to content

v0.7.0

Choose a tag to compare

@VANvonZHANG VANvonZHANG released this 26 May 08:18
· 48 commits to main since this release

Added

  • LDR (Lattice Dispersion Relation) polarizability (Draine & Goodman 1993) replacing Radiative Reaction model — reduces DDA-Mie discrepancy from 10-30% to ~1% at medium precision
  • _compute_polarizability() function with per-solve LDR correction, supporting separate S parameters for x/y polarizations in depolarized mode
  • Fourth precision level "ultra" (|m|kd ≤ 0.15) for very high accuracy DDA
  • test_extract_dipoles.py rewritten with LDR unit tests: S parameter, single/multi material, LDR→CM convergence check
  • TestLDRPolarizability test class in test_dda_solver.py
  • test_auto_voxel_size_ultra precision test

Changed

  • Precision targets updated based on Yurkin & Hoekstra (2007): low (0.63), medium (0.5), high (0.3), ultra (0.15)
  • _prepare_dda no longer returns positions (5-tuple); positions extracted per-solve in _solve_single_wl
  • Removed _apply_radiative_correction and _extract_dipoles functions (superseded by _compute_polarizability)
  • auto_voxel_size docstring updated to document "ultra" precision
  • NumPy dependency upper bound <2.0 removed

Fixed

  • NumPy 2.x compatibility: _trapz compat shim (hasattr-based) replaces bare np.trapz/np.trapezoid in mie_solver.py and test files
  • test_datastructs.py precision tests updated for new target values
  • Stale test_extract_dipoles.py that referenced deleted functions rewritten

Documentation

  • LDR Polarizability section with Draine & Goodman 1993 formula and 4-tier precision level table added to optical computation guide
  • Mie vs DDA validation tutorial rewritten for multi-precision LDR convergence comparison
  • precision parameter added to quickstart key parameters
  • README updated with LDR polarizability, precision levels in features/API/example table
  • validate_mie_vs_dda.py example rewritten for multi-precision convergence analysis

Tests

  • All Julia-dependent tests marked @pytest.mark.slow — fast suite (-m "not slow") runs in ~1s
  • Orientational averaging tests: n_dirs reduced to 2 for CI speed