PlasmaPy v0.4.0 (2020-07-20)

This release of PlasmaPy contains 50 commits in 46 merged pull requests closing 25 issues from 9 people, 5 of which are first-time contributors to PlasmaPy.

The people who have contributed to the code for this release are:

  • Ankur Chattopadhyay *

  • Anthony Vo *

  • Diego Diaz

  • Dominik Stańczak

  • Jakub Polak *

  • KhalilBryant *

  • Nick Murphy

  • Peter Heuer *

  • rocco8773

Where a * indicates their first contribution to PlasmaPy.

Backwards Incompatible Changes

  • Rename plasmapy.atomic to particles. In collisions and braginskii, change arguments named particles to species and arguments named ion_particle to ion for multiple functions. (#742)

  • Officially delete plasmapy.examples. (#822)

  • Move plasmapy.data to plasmapy.particle.data. (#823)

  • Renamed the plasmapy.classes subpackage to plasmapy.plasma. (#842)

Features

  • Added units to reprs of formulary.magnetostatics classes. (#743)

  • Create prototype abstract interfaces for plasma simulations (#753)

  • Created classes to represent custom and dimensionless particles in plasmapy.particles. (#755)

  • Create relativistic_energy() function, which uses the established Lorentz_factor() function to aid in the calculation of the relativistic energy of an object. (#805)

  • Create Reynolds_number() function. (#815)

  • Create Mag_Reynolds() function. (#820)

  • Create plasmapy.formulary.parameters.Bohm_diffusion function. (#830)

  • Added a new diagnostics module thomson containing a function spectral_density that calculates Thomson scattering spectra for Maxwellian plasmas in both the collective and non-collective regimes. As a followup to PR #835, set the minimal required Numpy version to 1.18.1 to finally fix unit dropping bugs. (#831)

  • Revised plasmapy.formulary.parameters.thermal_speed to support 1D and 2D distributions as well as 3D, and added an example notebook for this function. (#850)

  • Create plasmapy/formulary/ionization.py Create plasmapy.formulary.ionization.Z_bal function. (#851)

  • Create Saha() function. (#860)

  • Added aliases (with trailing underscores) for parameters in the formulary:

    • plasmapy.formulary.dimensionless.Reynolds_numberRe_

    • plasmapy.formulary.dimensionless.Mag_ReynoldsRm_

    • plasmapy.formulary.drifts.ExB_driftveb_

    • plasmapy.formulary.drifts.force_driftvfd_

    • plasmapy.formulary.parameters.mass_densityplasmapy.formulary.parameters.rho_

    • plasmapy.formulary.parameters.Alfven_speedplasmapy.formulary.parameters.va_

    • plasmapy.formulary.parameters.ion_sound_speedplasmapy.formulary.parameters.cs_

    • plasmapy.formulary.parameters.thermal_speedplasmapy.formulary.parameters.vth_

    • plasmapy.formulary.parameters.thermal_pressureplasmapy.formulary.parameters.pth_

    • plasmapy.formulary.parameters.kappa_thermal_speedplasmapy.formulary.parameters.vth_kappa_

    • plasmapy.formulary.parameters.inertial_lengthplasmapy.formulary.parameters.cwp_

    • plasmapy.formulary.parameters.Hall_parameterplasmapy.formulary.parameters.betaH_

    • plasmapy.formulary.parameters.gyrofrequencyplasmapy.formulary.parameters.oc_, plasmapy.formulary.parameters.wc_

    • plasmapy.formulary.parameters.gyroradiusplasmapy.formulary.parameters.rc_, plasmapy.formulary.parameters.rhoc_

    • plasmapy.formulary.parameters.plasma_frequencyplasmapy.formulary.parameters.wp_

    • plasmapy.formulary.parameters.Debye_lengthplasmapy.formulary.parameters.lambdaD_

    • plasmapy.formulary.parameters.Debye_numberplasmapy.formulary.parameters.nD_

    • plasmapy.formulary.parameters.magnetic_pressureplasmapy.formulary.parameters.pmag_

    • plasmapy.formulary.parameters.magnetic_energy_densityplasmapy.formulary.parameters.ub_

    • plasmapy.formulary.parameters.upper_hybrid_frequencyplasmapy.formulary.parameters.wuh_

    • plasmapy.formulary.parameters.lower_hybrid_frequencyplasmapy.formulary.parameters.wlh_

    • plasmapy.formulary.parameters.Bohm_diffusionplasmapy.formulary.parameters.DB_

    • plasmapy.formulary.quantum.deBroglie_wavelengthlambdaDB_

    • plasmapy.formulary.quantum.thermal_deBroglie_wavelengthlambdaDB_th_

    • plasmapy.formulary.quantum.Fermi_energyEf_ (#865)

  • Add json_dumps method to AbstractParticle to convert a particle object into a JSON string. Add json_dump method to AbstractParticle to serialize a particle object and writes it to a file. Add JSON decoder ParticleJSONDecoder to deserialize JSON objects into particle objects. Add plasmapy.particles.serialization.json_loads_particle function to convert JSON strings to particle objects (using ParticleJSONDecoder). Add plasmapy.particles.json_load_particle function to deserialize a JSON file into a particle object (using ParticleJSONDecoder). (#836)

Bug Fixes

  • Fix incorrect use of pkg.resources when defining plasmapy.__version__. Add setuptools to package dependencies. Add a definition of __version__ for developers using source files. (#774)

  • Repair notebook links that are defined in the nbsphinx_prolog sphinx configuration variable. (#828)

  • Increase the required Astropy version from 3.1 to 4.0, Numpy from 1.14 to 1.16.6, Scipy from 0.19 to 1.2 and lmfit from 0.9.7 to 1.0.1. This fixes long-standing issues with Numpy operations dropping units from AstroPy quantities. (#835)

Improved Documentation

    • Added documentation to file test_converters (#756)

    • Updated installation instructions. (#772)

  • Reorder documentation page (#777)

  • Fix failing documentation build due to duplicate docstrings for ParticleTracker.kinetic_energy_history and incompatibility of sphinx-automodapi with sphinx v3.0.0. (#780)

  • Automate definition of documentation release and version in docs/conf.py with plasmapy.__version__. (#781)

  • Add a docstring to __init__.py in plasmapy.formulary. (#788)

  • Replaced sphinx-gallery with nbsphinx, turning .py example files into .ipynb files and allowing for easier example submission. (#792)

  • Linked various instances of classes and functions in the .ipynb examples in docs/notebooks/ to the respective API docs. (#825)

  • Fixed a few documentation formatting errors. (#827)

  • Add notes on the PlasmaPy benchmarks repository to documentation. (#841)

  • Improve readability of the plasmapy.formulary page by replacing the toctree list with a cleaner reStructuredText table. (#867)

Trivial/Internal Changes

  • Remove mutable arguments from Particle.is_category method. (#751)

  • Remove all occurrences of default mutable arguments (#754)

  • Handle ModuleNotFoundError when trying to import __version__ but setuptools_scm has not generated the version.py file. This commonly happens during development when plasmapy is not installed in the python environment. (#763)

  • Updated pep8speaks/flake8 configuration and added .pre-commit-config.yaml to simplify automated style checks during development. (#770)

  • Removes some lint from setup.py and setup.cfg. Use pkg_resources for version checking in code. Remove version.py file in favor of pkg_resources. (#771)

  • Default settings for isort were set to be consistent with default settings for black. (#773)

  • Update community meeting and funding information in docs. (#784)

  • Improved pull request template to include more information about changelog entries. (#843)

  • Added GitHub actions that apply pre-commit and flake8 (separately) to incoming pull requests. (#845)

  • Apply pre-commit hooks to entire repository, so that GitHub actions do not shout at contributors needlessly. (#846)

  • Update CustomParticle so input parameters mass and charge can accept string representations of astropy Quantities. (#862)