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
Statenamedtuple was changed to theplasmapy.particles.IonicFractionclass. (Note: #1046 subsequently changed that toIonicLevel). (#796)Now, when the
IonizationStateclass is provided with an ion, the ionic fraction for that ion is set to 100% for the corresponding element or isotope. (#796)AtomicErrorwas renamed toParticleErrorandMissingAtomicDataErrorwas renamed toMissingParticleDataError. (#796)In
plasmapy.particles, theIonizationStatesclass was renamed toIonizationStateCollection. ArgumentnofIonizationStateswas changed ton0inIonizationStateCollection. (#796)Moved and refactored error message formatting functionality from
plasmapy.utils.error_messagestoplasmapy.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
methodkeyword for functionsCoulomb_logarithmandimpact_parameter, and then propagated throughout the functionality inplasmapy.formulary.collisions. (#962)Added dependency
pandas >= 1.0.0. Modifiedxarraydependency to bexarray >= 0.14.0. (#963)The
AbstractGridpropertygridis now dimensioned (has units) and cannot be accessed if all dimensions do not share the same units. (#981)Renamed attribute
is_uniform_gridonAbstractGridtois_uniform. (#981)Dropped Python 3.6 support. (#987)
The
__getitem__method ofAbstractGridnow returns aQuantityarray instead of a reference to axarray.DataArray. (#1027)Renamed
IonicFractiontoIonicLevel. This lays groundwork for future changes, where that class is going to become more than a fraction. (#1046)
Deprecations and Removals
The
particleattribute ofParticlehas been deprecated in favor of the newsymbolattribute. Theparticleattribute now issues aFutureWarningto indicate that it will be removed in a future release. (#984)
Features
Created the
AbstractNormalizationsclass to serve as an abstract interface for future classes that represent normalizations. (#859)Create the analysis sub-package
plasmapy.analysis.swept_langmuirfor 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_reprto 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_solutiontoplasmapy.dispersion, which gives an analytical solution to the dispersion relation as derived by Bellan [2012]. (#932)Refactored out the
plasmapy.simulation.particle_integrators.boris_pushtracking integrator algorithm fromplasmapy.simulation.particletracker.ParticleTracker. (#953)For
plasmapy.plasma.gridsfunctionality, 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.gridsfunctionality, improve interpolation performance on non-uniform grids. (#963)Added the
diamagnetic_driftfunction todrifts. (#972)Added properties
grid_resolutionandquantitiestoAbstractGrid. (#981)Made several speed improvements to the functionality in
grids, including the addition of keywordpersistenttoAbstractGrid(and child class) methodsnearest_neighbor_interpolatorandvolume_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_gridandvector_intersectstoAbstractGrid. (#981)The
Particleclass now contains an attribute namedsymbolthat is intended to replaceparticle. Thesymbolattribute has been added as a property toAbstractParticle,CustomParticle, andDimensionlessParticle. (#984)Added new
can_be_zerocheck parameter toCheckValuesand its dependents (check_values,ValidateQuantities,validate_quantities). (#999)Both
plasmapy.particles.particle_class.CustomParticleandplasmapy.particles.particle_class.DimensionlessParticlenow allow users to define a custom symbol via thesymbolkeyword argument, which can then be accessed by thesymbolattribute in each of these classes. (#1015)The greater than (
>) operator can now be used betweenParticleand/orParticleListinstances to get the nuclear reaction energy. (#1017)Created
plasmapy.particles.particle_collections.ParticleListas a list-like collection for instances ofplasmapy.particles.particle_class.Particleandplasmapy.particles.particle_class.CustomParticle. AddingParticleand/orCustomParticleinstances will now create aParticleList. (#1017)Added method
require_quantitiestoAbstractGridthat 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.SyntheticProtonRadiographto 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_uniforma 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
IonizationStateorIonizationStateCollectioninstance. (#1025)Fixed a bug in
grids.pyfor non-uniform grids that arose whenxarrayupgraded tov0.17.0(#1027)In
plasmapy.diagnostics.proton_radiography.SyntheticProtonRadiograph, adaptivedtnow 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_deflectiondoes not raise an exception. (#1035)
Improved Documentation
Added narrative documentation on ionization state functionality. (#796)
Added description to
plasmapy.formulary.parameters.Hall_parametersignature and equation in docstrings. (#934)Updated documentation for the
plasmapy.particlesandplasmapy.utilssubpackages. (#942)Improved documentation of
plasmapy/formulary/quantum.pyby 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.ipynbandgrids_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_driftandExB_drift. (#971)Described what constitutes a valid representation of a particle in the docstring for the
plasmapy.particles.particle_class.ParticleLiketyping construct. (#985)Put the docstring for
plasmapy.particles.particle_class.Particle.is_categoryintonumpydocformat. (#1039)Added missing formulas to the docstrings of
plasmapy.formulary.dimensionless.quantum_thetaandbeta. (#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.SyntheticProtonRadiographclass 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.intersphinxlinks inplasmapy.formularydocstrings. (#1058)Made minor fixes in
plasmapy.particlesdocstrings. (#1064)Organized the layout of the example Jupyter notebooks on the Read the Docs example page. (#1066)
Fixed formatting and broken
sphinx.ext.intersphinxlinks 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
coloramaas a dependency. (#920)Moved remaining CI from CircleCI to GitHub Actions. (#996)
Added notebook CI through
nbqa. (#997)Removed
lambdaexpressions fromplasmapy.particlesandplasmapy.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)