Skip to content

Latest commit

 

History

History
372 lines (275 loc) · 12.6 KB

CHANGES.rst

File metadata and controls

372 lines (275 loc) · 12.6 KB

1.6 (unreleased)

New Features

  • Added a .replicate() method to Potential classes to enable copying potential objects but modifying some parameter values.
  • Added a new potential class MN3ExponentialDiskPotential based on Smith et al. (2015): an approximation of the potential generated by a double exponential disk using a sum of three Miyamoto-Nagai disks.
  • The Orbit.estimate_period() method now returns period estimates in all phase-space components instead of just the radial period.

Bug fixes

  • Fixed a bug where the NFWPotential energy was nan when evaluating at the origin, and added tests for all potentials to check for a finite value of the potential at the origin (when expected).
  • Fixed a bug in NFWPotential.from_M200_c() where the incorrect scale radius was computed (Cython does not always use Python 3 division rules for dividing integers!).
  • Fixed a bug in the (C-level/internal) estimation of the 2nd derivative of the potential, used to generate mock streams, that affects non-conservative force fields.

API changes

  • The Orbit.estimate_period() method now returns period estimates in all phase-space components instead of just the radial period.

1.5 (2022-03-03)

New Features

  • Implemented a basic progress bar for integrating orbits and mock streams. Pass progress=True with Integrator_kwargs when calling .integrate_orbit(), or pass progress=True to MockStreamGenerator.run().
  • Added a new symplectic integrator: The Ruth 4th-order integrator, implemented with the class Ruth4Integrator.
  • Added a Orbit.animate() method to make matplotlib animations of orbits.
  • Modified Orbit._max_helper() to use a parabola instead of interpolation
  • Added functionality to transform from action-angle coordinates to Cartesian position velocity coordinates in the Isochrone potential: gala.dynamics.actionangle.isochrone_aa_to_xv().
  • Added a new method on DirectNBody to enable computing the instantaneous, mutual, N-body acceleration vectors DirectNBody.acceleration().

Bug fixes

  • Fixed find_actions() to accept an Orbit instance with multiple orbits.
  • Fixed a bug that appeared when trying to release all mock stream particles at the same timestep (e.g., pericenter).
  • Fixed a bug where time arrays returned from parse_time_specification could come back with a non-float64 dtype.
  • Fixed a bug with DirectNBody with composite potentials where only the first potential component would move as a body / particle.
  • Fixed a bug with the Python implementation of Leapfrog integration LeapfrogIntegrator that led to incorrect orbits for non-conservative systems that were integrated backwards (i.e. with dt<<0).
  • Fixed a bug with the FlattenedNFW potential class in which the energy and gradient functions were not using the inputted flattening (c value) and were instead defaulting to the spherical NFW model.
  • Enabled pickling Frame instances and therefore now Hamiltonian instances.
  • Fixed a bug with autolim=True during Orbit plotting where the axes limits were only dependent on the most recent Orbit rather than all that were present on the axis

API changes

  • Renamed gala.dynamics.actionangle.isochrone_to_aa() to gala.dynamics.actionangle.isochrone_xv_to_aa()
  • Renamed gala.dynamics.actionangle.find_actions() to gala.dynamics.actionangle.find_actions_o2gf()

1.4.1 (2021-07-01)

  • Fixed a RST bug that caused the README to fail to render.

1.4 (2021-07-01)

New Features

  • UnitSystem objects can now be created with custom units passed in as Astropy Quantity objects.
  • Added functionality to convert Gala potential objects to Galpy potential objects, or to create Gala potential objects from a pre-existing Galpy potential.
  • Added a plot_3d() method for Orbit objects to make 3D plots of the orbital trajectories.

Bug fixes

  • Fixed a bug when calling orbit.norbits when the representation is not cartesian.
  • Fixed a bug with GreatCircleICRSFrame.from_endpoints() that caused an error when the input coordinates had associated velocity data.
  • Fixed a bug with the JaffePotential density evaluation, which was too low by a factor of two.
  • Implemented a density function for LogarithmicPotential, which was missing previously.
  • The analytic action-angle and find_actions() utilities now correctly return frequencies with angular frequency units rather than frequency.

API changes

  • Removed the deprecated gala.coordinates.get_galactocentric2019() function.

1.3 (2020-10-27)

New Features

  • Added a new .to_sympy() classmethod for the Potential classes to return a sympy expression and variables.
  • Added a method, .to_galpy_orbit(), to convert Gala Orbit instances to Galpy Orbit objects.
  • The NFWPotential can now be instantiated via a new classmethod: NFWPotential.from_M200_c(), which accepts a virial mass and a concentration.
  • Added a fast way of computing the Staeckel focal length, Delta, using Gala potential classes, gala.dynamics.get_staeckel_fudge_delta

Bug fixes

  • Fixed a bug with Potential classes .replace_units() so that classes with dimensionless unit systems cannot be replaced with physical unit systems, and vice versa.
  • Implemented Hessian functions for most potentials.
  • Fixed .to_latex() to properly return a latex representation of the potential. This uses the new .to_sympy() method under the hood.
  • Potential classes now validate that input positions have dimensionality that matches what is expected for each potential.

API changes

  • Changed the way new Potential classes are defined: they now rely on defining class-level PotentialParameter objects, which reduces a significant amount of boilerplate code in the built-in potentials.

1.2 (2020-07-13)

  • Gala now builds on Windows!

New Features

  • Added a coordinate frame for the Pal 13 stream, Pal13Shipp20.

Bug fixes

  • Fixed a bug with the mock stream machinery in which the stream would not integrate for the specified number of timesteps if an array of n_particles was passed in with 0's near the end of the array.

1.1 (2020-03-08)

New Features

  • Potential objects now support replacing the unit system with the .replace_units() method, or by updating the .units attribute on an existing instance.
  • Added a DirectNBody class that supports direct N-body orbit integration in (optional) external background potentials.
  • Added a coordinate frame for the Jhelum stream, JhelumBonaca19.
  • Added a function for retrieving a more modern Galactocentric reference frame, gala.coordinates.get_galactocentric2019().
  • Added a classmethod to allow initializing a GreatCircleICRSFrame from a rotation matrix that specifies the transformation from ICRS to the great circle frame.

Bug fixes

  • Fixed an issue that led to incorrect GreatCircleICRSFrame transformations when no ra0 was provided.
  • Fixed a bug in the OrphanKoposov19 transformation.

API changes

  • Overhauled the mock stellar stream generation methodology to allow for more general stream generation. See MockStreamGenerator and the stream distribution function classes, e.g., FardalStreamDF.
  • Removed deprecated CartesianPhaseSpacePosition class.
  • Removed long deprecated Quaternion class.

1.0 (2019-04-12)

New Features

  • Added a new coordinate frame for great circle coordinate systems defined by a pole. This frame can be created with a pole and origin, a pole and longitude zero point, by two points along a great circle, or by specifying the cartesian basis vectors of the new frame.
  • Added a function to transform a proper motion covariance matrix to a new coordinate frame.
  • Added support for compiling Gala with or without the GNU Scientific Library (GSL), which is needed for the new potential classes indicated below.
  • Added a new PowerLawCutoffPotential class for a power-law density distribution with an exponential cutoff (requires GSL).
  • Added an implementation of the MWPotential2014 from galpy (called BovyMWPotential2014 in gala) (requires GSL).
  • Added an implementation of the Self-Consistent Field (SCF) basis function expansion method for representing potential-density pairs (requires GSL).
  • Most Potential classes now support rotations and origin shifts through the R and origin arguments.
  • Added a progress argument to the Python integrators to display a progress bar when stepping the integrators.
  • When generating mock stellar streams and storing snapshots (rather than just the final phase-space positions of the particles) now supports specifying the snapshot frequency with the output_every argument.

Bug fixes

  • Stream frames now properly wrap the longitude (phi1) components to the range (-180, 180) deg.

API changes

  • Stream classes have been renamed to reflect the author that defined them.
  • Proper motion and coordinate velocity transformations have now been removed in favor of the implementations in Astropy.
  • Added a .data attribute to PhaseSpacePosition objects that returns a Representation or NDRepresentation instance with velocity data (differentials) attached.

0.3 (2018-04-23)

New Features

  • Added a NullPotential class that has 0 mass and serves as a placeholder.
  • Added a new zmax() method on the Orbit class to compute the maximum z heights and times, or the mean maximum z height. Similar to apocenter() and pericenter().
  • Added a new generator method on the Orbit class for easy iteration over orbits.

Bug fixes

  • Orbit.norbits now works...oops.
  • apocenter() and pericenter() now work when more than one orbit is stored in an Orbit class.

0.2.2 (2017-10-07)

New features

  • Added a new coordinate frame aligned with the Palomar 5 stream.
  • Added a function gala.dynamics.combine to combine PhaseSpacePosition or Orbit objects.

Bug fixes

  • Added a density function for the Kepler potential.
  • Added a density function for the Long & Murali bar potential

Other changes

  • Added JOSS paper.
  • Cleaned up some tests and documentation to use the Hamiltonian object.

0.2.1 (2017-07-19)

Bug fixes

  • Array parameters are now numpy.ravel'd before being passed to the CPotentialWrapper class methods.
  • Added attribution to Bovy 2015 for disk potential in MilkyWayPotential

0.2 (2017-07-15)

New Features

  • Added a new potential class for the Satoh density (Satoh 1980).
  • Added support for Leapfrog integration when generating mock stellar streams.
  • Added new colormaps and defaults for the matplotlib style.
  • Added support for non-inertial reference frames and implemented a constant rotating reference frame.
  • Added a new class - Hamiltonian - for storing potentials with reference frames. This should be used for easy orbit integration instead of the potential classes.
  • Added a new argument to the mock stream generation functions t output orbits of all of the mock stream star particles to an HDF5 file.
  • Cleaned up and simplified the process of subclassing a C-implemented gravitational potential.
  • Gravitational potential class instances can now be composed by just adding the instances.
  • Added a MilkyWayPotential class.

API-breaking changes

  • CartesianPhaseSpacePosition and CartesianOrbit are deprecated. Use PhaseSpacePosition and Orbit with a Cartesian representation instead.
  • Overhauled the storage of position and velocity information on PhaseSpacePosition and Orbit classes. This uses new features in Astropy 2.0 that allow attaching "differential" classes to representation classes for storing velocity information. .pos and .vel no longer point to arrays of Cartesian coordinates, but now instead point to astropy.coordinates representation and differential objects, respectively.

0.1.1 (2016-05-20)

  • Removed debug statement.
  • Added 'Why' page to documentation.

0.1.0 (2016-05-19)

  • Initial release.