Skip to content

Commit

Permalink
Add tests and fix conversions to match
Browse files Browse the repository at this point in the history
  • Loading branch information
ksunden committed Jul 25, 2018
1 parent 7d46825 commit cdc3436
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 4 deletions.
9 changes: 5 additions & 4 deletions unyt/equivalencies.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ def _convert(self, x, new_dims):
elif x.units.dimensions == rate:
return np.multiply(x, pc.hmks, out=self._get_out(x))
elif x.units.dimensions == spatial_frequency:
return np.divide(x, pc.clight*pc.hmks, out=self._get_out(x))
return np.multiply(x, pc.hmks*pc.clight, out=self._get_out(x))
elif new_dims == length:
if x.units.dimensions == rate:
return np.divide(pc.clight, x, out=self._get_out(x))
Expand All @@ -228,17 +228,18 @@ def _convert(self, x, new_dims):
elif x.units.dimensions == energy:
return np.divide(x, pc.hmks, out=self._get_out(x))
elif x.units.dimensions == spatial_frequency:
return np.divide(x, pc.clight, out=self._get_out(x))
return np.multiply(x, pc.clight, out=self._get_out(x))
elif new_dims == spatial_frequency:
if x.units.dimensions == length:
return np.divide(1, x, out=self._get_out(x))
elif x.units.dimensions == energy:
return np.divide(x, pc.hmks*pc.clight, out=self._get_out(x))
return np.divide(x, pc.clight*pc.hmks, out=self._get_out(x))
elif x.units.dimensions == rate:
return np.divide(x, pc.clight, out=self._get_out(x))

def __str__(self):
return "spectral: length <-> spatial_frequency <-> frequency <-> energy"
return ("spectral: length <-> spatial_frequency <-> frequency "
+ "<-> energy")


class SoundSpeedEquivalence(Equivalence):
Expand Down
60 changes: 60 additions & 0 deletions unyt/tests/test_unyt_array.py
Original file line number Diff line number Diff line change
Expand Up @@ -1365,6 +1365,16 @@ def test_equivalencies():
assert lam.units == u.eV.units
assert hnu.units == u.erg.units

# wavelength to spatial frequency

lam = 4000*u.angstrom
nubar = lam.in_units('1/angstrom', 'spectral')
assert_allclose_units(nubar, 1/lam)
lam.convert_to_units('1/cm', 'spectral')
assert_allclose_units(lam, nubar)
assert lam.units == (1 / u.cm).units
assert nubar.units == (1 / u.angstrom).units

# frequency to wavelength

nu = 1*u.MHz
Expand All @@ -1375,6 +1385,16 @@ def test_equivalencies():
assert lam.units == u.km.units
assert nu.units == u.m.units

# frequency to spatial frequency

nu = 1*u.MHz
nubar = nu.to('1/km', 'spectral')
assert_allclose_units(nubar, nu/u.clight)
nu.convert_to_units('1/m', 'spectral')
assert_allclose_units(nubar, nu)
assert nubar.units == (1 / u.km).units
assert nu.units == (1 / u.m).units

# frequency to photon energy

nu = 1*u.MHz
Expand Down Expand Up @@ -1405,6 +1425,46 @@ def test_equivalencies():
assert E.units == u.angstrom.units
assert lam.units == u.nm.units

# photon energy to spatial frequency

E = 13.6*u.eV
nubar = E.to('1/nm', 'spectral')
assert_allclose_units(nubar, E/(u.hmks*u.clight))
E.convert_to_units('1/angstrom', 'spectral')
assert_allclose_units(E, nubar)
assert E.units == (1 / u.angstrom).units
assert nubar.units == (1 / u.nm).units

# spatial frequency to frequency

nubar = 1500. / u.cm
nu = nubar.to('Hz', 'spectral')
assert_allclose_units(nu, nubar*u.clight)
nubar.convert_to_units('MHz', 'spectral')
assert_allclose_units(nu, nubar)
assert nubar.units == u.MHz.units
assert nu.units == u.Hz.units

# spatial frequency to wavelength

nubar = 1500. / u.cm
lam = nubar.to('nm', 'spectral')
assert_allclose_units(lam, 1/nubar)
nubar.convert_to_units('angstrom', 'spectral')
assert_allclose_units(nubar, lam)
assert nubar.units == u.angstrom.units
assert lam.units == u.nm.units

# spatial frequency to photon energy

nubar = 1500. / u.cm
E = nubar.to('erg', 'spectral')
assert_allclose_units(E, u.hmks*u.clight*nubar)
nubar.convert_to_units('J', 'spectral')
assert_allclose_units(nubar, E)
assert nubar.units == u.J.units
assert E.units == u.erg.units

# Sound-speed

# tempearature <-> velocity
Expand Down

0 comments on commit cdc3436

Please sign in to comment.