PlasmaPy v0.6.0 (2021-03-14)
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
An asterisk indicates that this release contains their first contribution to PlasmaPy.
Backwards Incompatible Changes
The
State
namedtuple was changed to theplasmapy.particles.IonicFraction
class. (Note: #1046 subsequently changed that toIonicLevel
). (#796)Now, when the
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 toParticleError
andMissingAtomicDataError
was renamed toMissingParticleDataError
. (#796)In
plasmapy.particles
, theIonizationStates
class was renamed toIonizationStateCollection
. Argumentn
ofIonizationStates
was changed ton0
inIonizationStateCollection
. (#796)Moved and refactored error message formatting functionality from
plasmapy.utils.error_messages
toplasmapy.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 functionsCoulomb_logarithm
andimpact_parameter
, and then propagated throughout the functionality inplasmapy.formulary.collisions
. (#962)Added dependency
pandas >= 1.0.0
. Modifiedxarray
dependency to bexarray >= 0.14.0
. (#963)The
AbstractGrid
propertygrid
is now dimensioned (has units) and cannot be accessed if all dimensions do not share the same units. (#981)Renamed attribute
is_uniform_grid
onAbstractGrid
tois_uniform
. (#981)Dropped Python 3.6 support. (#987)
The
__getitem__
method ofAbstractGrid
now returns aQuantity
array instead of a reference to axarray.DataArray
. (#1027)Renamed
IonicFraction
toIonicLevel
. This lays groundwork for future changes, where that class is going to become more than a fraction. (#1046)
Deprecations and Removals
The
particle
attribute ofParticle
has been deprecated in favor of the newsymbol
attribute. Theparticle
attribute now issues aFutureWarning
to indicate that it will be removed in a future release. (#984)
Features
Created the
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. Subpackage is initiated with functionality for calculating the 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)Added the function
plasmapy.dispersion.two_fluid_dispersion.two_fluid_dispersion_solution
toplasmapy.dispersion
, which gives an analytical solution to the dispersion relation as derived by Bellan [2012]. (#932)Refactored out the
plasmapy.simulation.particle_integrators.boris_push
tracking integrator algorithm fromplasmapy.simulation.particletracker.ParticleTracker
. (#953)For
plasmapy.plasma.grids
functionality, added 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
diamagnetic_drift
function todrifts
. (#972)Added properties
grid_resolution
andquantities
toAbstractGrid
. (#981)Made several speed improvements to the functionality in
grids
, including the addition of keywordpersistent
toAbstractGrid
(and child class) methodsnearest_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)Added methods
on_grid
andvector_intersects
toAbstractGrid
. (#981)The
Particle
class now contains an attribute namedsymbol
that is intended to replaceparticle
. Thesymbol
attribute has been added as a property toAbstractParticle
,CustomParticle
, andDimensionlessParticle
. (#984)Added new
can_be_zero
check parameter toCheckValues
and its dependents (check_values
,ValidateQuantities
,validate_quantities
). (#999)Both
plasmapy.particles.particle_class.CustomParticle
andplasmapy.particles.particle_class.DimensionlessParticle
now allow users to define a custom symbol via thesymbol
keyword argument, which can then be accessed by thesymbol
attribute in each of these classes. (#1015)The greater than (
>
) operator can now be used betweenParticle
and/orParticleList
instances to get the nuclear reaction energy. (#1017)Created
plasmapy.particles.particle_collections.ParticleList
as a list-like collection for instances ofplasmapy.particles.particle_class.Particle
andplasmapy.particles.particle_class.CustomParticle
. AddingParticle
and/orCustomParticle
instances will now create aParticleList
. (#1017)Added method
require_quantities
toAbstractGrid
that verifies a list of quantities is present on the grid. Method is also incorporated intoplasmapy.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,
rot_a_to_b
, that calculates the rotation matrix that will rotate one 3D vector onto another. (#1054)Made
is_uniform
a properly-documented public attribute ofAbstractGrid
. (#1072)
Bug Fixes
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
IonizationState
orIonizationStateCollection
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)
Improved Documentation
Added 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
andplasmapy.utils
subpackages. (#942)Improved documentation of
plasmapy/formulary/quantum.py
by cleaning up docstrings of contained functionality. (#951)Updated all docstrings associated with computing the Coulomb logarithm and the possible methods of calculation. (#962)
Added 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,
force_drift
andExB_drift
. (#971)Described 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
intonumpydoc
format. (#1039)Added missing formulas to the docstrings of
plasmapy.formulary.dimensionless.quantum_theta
andbeta
. (#1041)Added 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)Updated formatting and broken
sphinx.ext.intersphinx
links inplasmapy.formulary
docstrings. (#1058)Made minor fixes in
plasmapy.particles
docstrings. (#1064)Organized the layout of the example Jupyter notebooks on the Read the Docs example page. (#1066)
Fixed formatting and broken
sphinx.ext.intersphinx
links in docstrings in various places in the code base. Improved installation instructions in the docs; the subpackage stability matrix, and funding acknowledgments. (#1076)
Trivial/Internal Changes
Removed
colorama
as a dependency. (#920)Moved remaining CI from CircleCI to GitHub Actions. (#996)
Added notebook CI through
nbqa
. (#997)Removed
lambda
expressions fromplasmapy.particles
andplasmapy.utils
. (#1013)Added 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)