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
Where a * indicates 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)Add dependency
pandas >= 1.0.0
. Modifyxarray
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)Drop 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. Sub-package 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)Add 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)Refactor out the
plasmapy.simulation.particle_integrators.boris_push
tracking integrator algorithm fromplasmapy.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
diamagnetic_drift
function todrifts
. (#972)Add properties
grid_resolution
andquantities
toAbstractGrid
. (#981)Make 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)Add 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)Create
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
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
andplasmapy.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,
force_drift
andExB_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
intonumpydoc
format. (#1039)Adds formulas (which were missing) to the docstrings of
plasmapy.formulary.dimensionless.quantum_theta
andbeta
. (#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 inplasmapy.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)
Trivial/Internal Changes
Removed
colorama
as a dependency. (#920)Moved remaining CI from CircleCI to GitHub Actions. (#996)
Add notebook CI through
nbqa
. (#997)Remove
lambda
expressions fromplasmapy.particles
andplasmapy.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)