The people who have contributed to the code for this release are:
- Anthony Vo
- Dhawal Modi *
- Dominik Stańczak
- Drozdov David *
- Erik Everson
- Kevin Montes *
- Nick Murphy
- Peter Heuer
- Ramiz Qudsi
- Tiger Du
Where a * indicates their first contribution to PlasmaPy.
- The
State
namedtuple was changed to theplasmapy.particles.IonicFraction
class. (Note: #1046 subsequently changed that to ~plasmapy.particles.ionization_state.IonicLevel). (#796) - Now, when the ~plasmapy.particles.ionization_state.IonizationState class is provided with an ion, the ionic fraction for that ion is set to 100% for the corresponding element or isotope. (#796)
AtomicError
was renamed to ~plasmapy.particles.exceptions.ParticleError andMissingAtomicDataError
was renamed to ~plasmapy.particles.exceptions.MissingParticleDataError. (#796)- In plasmapy.particles, the
IonizationStates
class was renamed to ~plasmapy.particles.ionization_state_collection.IonizationStateCollection. Argumentn
ofIonizationStates
was changed ton0
in ~plasmapy.particles.ionization_state_collection.IonizationStateCollection. (#796) - Moved and refactored error message formatting functionality from
plasmapy.utils.error_messages
to plasmapy.utils.code_repr. (#920) - Renamed the available "methods" for computing the Coulomb logarithm in an attempt to make the names more explicit. This is implemented using the
method
keyword for functions ~plasmapy.formulary.collisions.Coulomb_logarithm and ~plasmapy.formulary.collisions.impact_parameter, and then propagated throughout the functionality in plasmapy.formulary.collisions. (#962) - Add dependency
pandas >= 1.0.0
. Modifyxarray
dependency to bexarray >= 0.14.0
. (#963) - The ~plasmapy.plasma.grids.AbstractGrid property ~plasmapy.plasma.grids.AbstractGrid.grid is now dimensioned (has units) and cannot be accessed if all dimensions do not share the same units. (#981)
- Renamed attribute
is_uniform_grid
on ~plasmapy.plasma.grids.AbstractGrid tois_uniform
. (#981) - Drop Python 3.6 support. (#987)
- The
__getitem__
method of ~plasmapy.plasma.grids.AbstractGrid now returns a array instead of a reference to axarray.DataArray
. (#1027) - Renamed
IonicFraction
to ~plasmapy.particles.ionization_state.IonicLevel. This lays groundwork for future changes, where that class is going to become more than a fraction. (#1046)
- The
particle
attribute of ~plasmapy.particles.particle_class.Particle has been deprecated in favor of the newsymbol
attribute. Theparticle
attribute now issues a FutureWarning to indicate that it will be removed in a future release. (#984)
- Created the ~plasmapy.simulation.abstractions.AbstractNormalizations class to serve as an abstract interface for future classes that represent normalizations. (#859)
- Create the analysis sub-package plasmapy.analysis.swept_langmuir for analysis code related to analyzing swept Langmuir traces. Sub-package is initiated with functionality for calculating the floating potential, ~plasmapy.analysis.swept_langmuir.floating_potential.find_floating_potential. (#889)
- Added a proton radiography diagnostic module containing a tool for generating synthetic proton radiographs from simulated or calculated fields using a particle tracking algorithm. (#895)
- Created new grid objects for representing plasma quantities as functions of space. (#909)
- Added functions in plasmapy.utils.code_repr to reproduce strings that represent a call to a method or attribute of an object. These functions are used, for example, in error messages. (#920)
- Add the function
plasmapy.dispersion.two_fluid_dispersion.two_fluid_dispersion_solution
to plasmapy.dispersion, which gives an analytical solution to the dispersion relation as derived by :citebellan:2012. (#932) - Refactor out the ~plasmapy.simulation.particle_integrators.boris_push tracking integrator algorithm from ~plasmapy.simulation.particletracker.ParticleTracker. (#953)
- For plasmapy.plasma.grids functionality, add better support for recognizing and handling physical quantities (e.g. spatial position, magnetic field, etc.) added to a grid object. (#963)
- For plasmapy.plasma.grids functionality, improve interpolation performance on non-uniform grids. (#963)
- Added the ~plasmapy.formulary.drifts.diamagnetic_drift function to ~plasmapy.formulary.drifts. (#972)
- Add properties
grid_resolution
and ~plasmapy.plasma.grids.AbstractGrid.quantities to ~plasmapy.plasma.grids.AbstractGrid. (#981) - Make several speed improvements to the functionality in ~plasmapy.plasma.grids, including the addition of keyword
persistent
to ~plasmapy.plasma.grids.AbstractGrid (and child class) methods ~plasmapy.plasma.grids.AbstractGrid.nearest_neighbor_interpolator andvolume_averaged_interpolator
. This keyword allows the interpolators to assume the last grid setup and contents if input arguments have not changed. (#981) - Add methods ~plasmapy.plasma.grids.AbstractGrid.on_grid and ~plasmapy.plasma.grids.AbstractGrid.vector_intersects to ~plasmapy.plasma.grids.AbstractGrid. (#981)
- The ~plasmapy.particles.particle_class.Particle class now contains an attribute named
symbol
that is intended to replaceparticle
. Thesymbol
attribute has been added as a property to ~plasmapy.particles.particle_class.AbstractParticle, ~plasmapy.particles.particle_class.CustomParticle, and ~plasmapy.particles.particle_class.DimensionlessParticle. (#984) - Added new
can_be_zero
check parameter to ~plasmapy.utils.decorators.checks.CheckValues and its dependents ( ~plasmapy.utils.decorators.checks.check_values, ~plasmapy.utils.decorators.validators.ValidateQuantities, ~plasmapy.utils.decorators.validators.validate_quantities). (#999) - Both plasmapy.particles.particle_class.CustomParticle and plasmapy.particles.particle_class.DimensionlessParticle now allow users to define a custom symbol via the
symbol
keyword argument, which can then be accessed by thesymbol
attribute in each of these classes. (#1015) - The greater than (
>
) operator can now be used between ~plasmapy.particles.particle_class.Particle and/or ~plasmapy.particles.particle_collections.ParticleList instances to get the nuclear reaction energy. (#1017) - Create plasmapy.particles.particle_collections.ParticleList as a list-like collection for instances of plasmapy.particles.particle_class.Particle and plasmapy.particles.particle_class.CustomParticle. Adding ~plasmapy.particles.particle_class.Particle and/or ~plasmapy.particles.particle_class.CustomParticle instances will now create a ~plasmapy.particles.particle_collections.ParticleList. (#1017)
- Added method ~plasmapy.plasma.grids.AbstractGrid.require_quantities to ~plasmapy.plasma.grids.AbstractGrid that verifies a list of quantities is present on the grid. Method is also incorporated into
plasmapy.diagnostics.proton_radiography.SyntheticProtonRadiograph
. (#1027) - Added the
add_wire_mesh()
method toplasmapy.diagnostics.proton_radiography.SyntheticProtonRadiograph
to allow the creation of synthetic proton radiographs that include a wire mesh reference grid. (#1049) - Created a function, ~plasmapy.formulary.mathematics.rot_a_to_b, that calculates the rotation matrix that will rotate one 3D vector onto another. (#1054)
- Made ~plasmapy.plasma.grids.AbstractGrid.is_uniform a properly-documented public attribute of ~plasmapy.plasma.grids.AbstractGrid. (#1072)
- Fixed a minus sign bug in the Particle Tracker simulation that caused the E×B drift to go in the incorrect direction. (#953)
- Bugfix
plasmapy.analysis.fit_functions.Linear.root_solve
to handle the case where the slope is zero and no finite roots exist. (#959) - Fixed a bug that prevented nested iterations of a single ~plasmapy.particles.ionization_state.IonizationState or ~plasmapy.particles.ionization_state_collection.IonizationStateCollection instance. (#1025)
- Fixed a bug in
grids.py
for non-uniform grids that arose whenxarray
upgraded tov0.17.0
(#1027) - In
plasmapy.diagnostics.proton_radiography.SyntheticProtonRadiograph
, adaptivedt
now calculates the cyclotron period using the provided particle charge and mass (previously assumed protons). (#1035) - In
plasmapy.diagnostics.proton_radiography.SyntheticProtonRadiograph
, the adaptive timestep algorithm now works when particles are provided usingplasmapy.diagnostics.proton_radiography.SyntheticProtonRadiograph.load_particles
. (#1035) - In
plasmapy.diagnostics.proton_radiography.SyntheticProtonRadiograph
, removed highly deflected particles so the call ofplasmapy.diagnostics.proton_radiography.SyntheticProtonRadiograph.max_deflection
does not raise an exception. (#1035)
- Add narrative documentation on ionization state functionality. (#796)
- Added description to
plasmapy.formulary.parameters.Hall_parameter
signature and equation in docstrings. (#934) - Updated documentation for the plasmapy.particles and plasmapy.utils subpackages. (#942)
- Improves documentation of
plasmapy/formulary/quantum.py
by cleaning up docstrings of contained functionality. (#951) - Update all docstrings associated with computing the Coulomb logarithm and the possible methods of calculation. (#962)
- Add two Jupyter notebooks for functionality contained in `plasmapy.plasma.grids`:
grids_cartesian.ipynb
andgrids_nonuniform.ipynb
. (#963) - Added the ExB drift notebook, which demonstrates the analytical solution for the drift and the implementation of the corresponding formulary drift functions, ~plasmapy.formulary.drifts.force_drift and ~plasmapy.formulary.drifts.ExB_drift. (#971)
- Describe what constitutes a valid representation of a particle in the docstring for the plasmapy.particles.particle_class.ParticleLike typing construct. (#985)
- Put the docstring for plasmapy.particles.particle_class.Particle.is_category into
numpydoc
format. (#1039) - Adds formulas (which were missing) to the docstrings of ~plasmapy.formulary.dimensionless.quantum_theta and ~plasmapy.formulary.dimensionless.beta. (#1041)
- Add live rendering of changelog entries on documentation builds, based on sphinx-changelog. (#1052)
- Created an example notebook demonstrating how the
plasmapy.diagnostics.proton_radiography.SyntheticProtonRadiograph
class can be used to generate synthetic proton radiographs with arbitrary source profiles. Add code documentation links to all proton radiograph notebooks. (#1054) - Update formatting and broken sphinx.ext.intersphinx links in plasmapy.formulary docstrings. (#1058)
- Make minor fixes in plasmapy.particles docstrings. (#1064)
- Organize the layout of the example Jupyter notebooks on the Read the Docs example page. (#1066)
- Fix formatting and broken sphinx.ext.intersphinx links in docstrings in various places in the code base. Improve installation instructions in the docs; the subpackage stability matrix, and funding acknowledgments. (#1076)
- Removed
colorama
as a dependency. (#920) - Moved remaining CI from CircleCI to GitHub Actions. (#996)
- Add notebook CI through
nbqa
. (#997) - Remove
lambda
expressions from plasmapy.particles and plasmapy.utils. (#1013) - Add unicode particle aliases for electrons (
"β-"
,"β⁻"
), muons ("μ-"
,"μ⁻"
), anti-muons ("μ+"
,"μ⁺"
), tau particles ("τ"
,"τ-"
,"τ⁻"
), anti-tau particles ("τ+"
,"τ⁺"
) electron neutrinos ("ν_e"
), muon neutrinos ("ν_μ"
), tau neutrinos ("ν_τ"
), and alpha particles ("α"
). (#1036) - A set containing all valid particle categories may now be accessed via
plasmapy.particles.particle_class.Particle.is_category.valid_categories
. (#1039) - Properly handled warnings in
test_proton_radiography.py
(#1050)