Skip to content

Latest commit

 

History

History
218 lines (197 loc) · 15.7 KB

0.6.0.rst

File metadata and controls

218 lines (197 loc) · 15.7 KB

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 the plasmapy.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 and MissingAtomicDataError was renamed to ~plasmapy.particles.exceptions.MissingParticleDataError. (#796)
  • In plasmapy.particles, the IonizationStates class was renamed to ~plasmapy.particles.ionization_state_collection.IonizationStateCollection. Argument n of IonizationStates was changed to n0 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. Modify xarray dependency to be xarray >= 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 to is_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 a xarray.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)

Deprecations and Removals

  • The particle attribute of ~plasmapy.particles.particle_class.Particle has been deprecated in favor of the new symbol attribute. The particle attribute now issues a FutureWarning to indicate that it will be removed in a future release. (#984)

Features

  • 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 and volume_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 replace particle. The symbol 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 the symbol 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 to plasmapy.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)

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 ~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 when xarray upgraded to v0.17.0 (#1027)
  • In plasmapy.diagnostics.proton_radiography.SyntheticProtonRadiograph, adaptive dt 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 using plasmapy.diagnostics.proton_radiography.SyntheticProtonRadiograph.load_particles. (#1035)
  • In plasmapy.diagnostics.proton_radiography.SyntheticProtonRadiograph, removed highly deflected particles so the call of plasmapy.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 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 and grids_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)

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 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)