Fmmax

Latest version: v1.1.2

Safety actively analyzes 723217 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 2

1.1.2

- Update calculation of `basis.brillouin_zone_in_plane_wavevector` so that wavevectors at the center of the Brillouin zone are exactly at the center. Previously, the manner in which this was calculated could lead to small nonzero values due to floating point calculations. These small values have no effect in virtually all cases.

1.1.1

- Add missing `packaging` dependency (thanks SamDuffield).

1.1.0

- Enable automatic Brillouin zone integration in functions in the `fields` module.
- Add new `test_fields_bz` module for BZ-related tests.
- Update examples and notebooks to use this, rather than manually carrying out BZ integration.
- Correct docstring for dipole sources in `sources` module; position `(0, 0)` is at the corner of the unit cell, not the center.

1.0.0

- Make some additional functions and modules private, including the `vector` module.
- Update docstrings to improve formatting of sphinx auto-docs.
- Rename args to `time_average_z_poynting_flux` from `*_fields` to `*_field` to be consistent with other functions in the `fields` module.
- Add a notebook that demonstrates calculation of the farfield for a dipole in vacuum.
- Improve detection of 1D permittivity distributions, particularly the case of complex permittivity.
- Add a basic notebook illustrating diffraction calculation.
- API changes
- Export key functions so they can directly be imported from `fmmax`, e.g. `fmmax.eigensolve_isotropic_media(...)`.
- Update examples so they import `fmmax` and use exported functions, rather than importing individual modules.
- Update API docs to include only the exported functions/classes/constants.
- Update docstrings for enums so they render properly.
- Rename `amplitudes_interior` to `layer_amplitudes_interior`, for consistency with other functions in the `fields` module.

0.14.1

- Set `Formulation.JONES_DIRECT_FOURIER` as the default formulation for all eigensolve functions in `fmm` module.
- Remove redundant definitions of Poynting flux calculations and use `fields.time_average_z_poynting_flux` instead.
- Include a missing factor of 0.5 in the flux returned by `amplitude_poynting_flux`, `directional_poynting_flux`, `eigenmode_poynting_flux`, and `time_average_z_poynting_flux` functions. The result is that the time-average Poynting flux is computed from the fields by, `sz = 0.5 * real(ex * hy.conj() - ey * hx.conj())`, as it should be. The factor of 0.5 is also missing from S4, GRCWA, and the [S4 reference paper](https://web.stanford.edu/group/fan/publication/Liu_ComputerPhysicsCommunications_183_2233_2012.pdf#page=3.75) (section 5.1), which is how it came to exist in this code.

0.14.0

- Set `Formulation.JONES_DIRECT_FOURIER` as the default formulation for `fmm.eigensolve_isotropic_media`.
- Set `Truncation.CIRCULAR` as the default truncation for `basis.generate_expansion`.
- Expand documentation for `fmm.Formulation` enum, describing each formulation.

Page 1 of 2

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.