Releases: QTC-UMD/rydiqule
rydiqule 2.0.0rc3
This release represents a significant upgrade in rydiqule features, and contains backwards incompatible changes.
Improvements
- State specification overhaul
- States can now be defined using arbitrary tuples, allowing for greater control and granularity in defining states
- State groups are now a supported concept, allowing for arbitrary sets of states to be used in coupling definitions. This functionality is particularly designed to make handling large manifolds of magnetic sublevel states more tractible.
- The concept of the
StateSpec
has been added. This defines a group of states based on nested sub-lists (ie(0, [-1, 0, 1])
is equivalent to[(0, -1), (0, 0), (0, 1)]
).
- Expanded ARC integration in
Cell
Cell
states must be defined using theA_QState
named tuple, which contains all relevant quantum numbers for the state/coupling.- ARC integration to calculate system properties has been greatly extended in
Cell
, limiting the number of quantities that need to be calculated. This functionality includes native handling of couplings between magnetic sublevels in fine structure, hyperfine structure, and mixed bases.
- Analytic 1D Doppler Solver
- Leveraging the analytical solution from arXiv:2501.06134, a solver for 1D doppler averages that has significantly higher accuracy and speed has been added. Extensions to higher dimensionality doppler solves is ongoing.
- Multiple quality of life improvements to improve overall code quality and ease of use.
Deprecations
'kvec'
coupling parameter has been redefined to be the field k-vector (rather than the most probable Doppler shift vector).vP
is now provided as a separate argument to theSensor
constructor or set by attribute assignment.Cell
does not usekvec
, but ratherkunit
, the unit propagation axis of the field. All other necessary parameters are automatically calculatedCell
calculations from v1 will need to be modified to be NLJ-basis calculations explicitly (instead of implicitly).- Numba-only timesolver backends
numbakit-ode
andnbrk_ode
have been deprecated. The CyRK timesolver backend has been updated and its performance improved. - Note that if you have code that directly interacts with rydiqule internal functions, there is a high likelihood modifications will need to be made to upgrade.
Please consult the changelog in the documentation for a more complete list of changes for the v2.0 release of rydiqule. If you have existing work using v1 rydiqule code, it is highly recommended that you test/compare results as a part of the upgrade. As always, please reach out if you have issues that are not readily solved by consulting the documentation.
The release candidate is available on both pip and conda, but will not install by default.
To install with conda, use
conda install -c rydiqule/label/test rydiqule
To install with pip, use
pip install --upgrade --pre rydiqule
rydiqule v1.2.3
Minor release to update dependency version pins on numpy and cyrk.
Upcoming v2 release of rydiqule (which will hopefully be very soon) will update usage to allow newer versions of both packages to be used.
Rydiqule v1.2.2
Hotfix for time-dependent coupling handling in steady-state.
Also, Rydiqule can now be installed from our anaconda channel for a smoother install process. This PR updates the docs to reflect this installation method.
Rydiqule v1.2.1
This is a hotfix for a bug introduced with the energy shifts functionality where detuning values are over-written during hamiltonian creation if a self-loop edge exists on the graph.
This bug can affect simulations that don't use the energy shifts functionality, so upgrading is very highly recommended.
Rydiqule v1.2.0
This PR updates rydiqule to v1.2.0.
This release fixes a few small bugs (especially with inaccurate type hints), updates documentation, and adds a number of small features on the path to full hyperfine support. Please read the changelog for details. Note that new features are subject to changes in implementation as well as possibly the interface as we move forward to full hyperfine support.
Important changes:
-
Arbitrary energy level shifts are now supported in
Sensor
! This allows for the manual definition of DC Stark shifts or DC Larmour shifts to states inSensor
. These shifts are also scannable as other parameters. -
States may now be labeled via strings or integers (current default). Specification is done at
Sensor
creation where the basis kwarg can now accept a list of ints and strings. The new methodSensor.states_with_label
allows for regex selection of groups of states by label. -
Level Diagram plots are slightly more intelligent by default. This is done by leveraging the output of
Sensor.get_rotating_frames
to draw levels with appropriate higher/lower relative energy. Here is an arbitrary example showing a closed loop and an unconnected set of states. -
DEPRECATION:
Sensor.basis
andSolution.basis
have been renamed toSensor.dm_basis
andSolution.dm_basis
. All references to basis should now unambiguously refer to the atomic basis (ie number of states), and dm_basis refers to the basis of the density matrix elements (2*number of states -1).
Rydiqule v1.1.0
Note that this release has a large number of bugfixes, numerical error fixes, and some API changes. Please read the changelog carefully for details. Code that works with v1.0 of rydiqule will likely need minor modification to run with v1.1.
Important changes:
- Signs of detunings in and out of the rotating frame have been fixed such that all frequencies are considered positive and a positive detuning represents a blue shifted photon relative to the transition energy
- The observable calculating functions (
get_transmission_coef
,get_OD
,get_susceptibility
,get_phase_shift
) have undergone a significant overhaul, primarily to correct multiple numerical errors. These quantities are now unit-tested against analytic results from Steck's Quantum Optics Notes. Their functionality has also been relocated to be methods of theSolution
object with argument changes. - How steady-state solving handles time-dependent couplings has changed again. It now takes the
t=0
value of the coupling. This primarily affects initial conditions for time-solving with default arguments and should limit large transient behavior at the beginning of solves. - A number of under-the-hood improvements have been made, especially in
Cell
, in preparation for future efforts to incorporate atomic sublevels. Most changes are backwards compatible. Any new functionality should be considered experimental. - Written documentation describing the theory behind rydiqule's calculations have been significantly expanded.
- Level diagram plotting is now handled by an external library
leveldiagram
Rydiqule v1.0.0rc2
Updated release candidate for version 1.0.0
This update fixes an issue in packaging that prevents proper installation in non-editable mode.
Rydiqule v1.0.0rc1
Initial release candidate for rydiqule.