Skip to content

Commit

Permalink
only raise errors when converting MKS E&M units to CGS E&M units
Browse files Browse the repository at this point in the history
  • Loading branch information
Nathan Goldbaum committed Jun 19, 2018
1 parent b3f46d9 commit f5284d9
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 11 deletions.
15 changes: 7 additions & 8 deletions unyt/tests/test_unyt_array.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import copy
from six.moves import cPickle as pickle
import itertools
import math
import numpy as np
import operator
import os
Expand Down Expand Up @@ -1611,14 +1612,8 @@ def test_electromagnetic():
assert_equal(u_mks.units.dimensions, dimensions.pressure)
u_cgs = B_cgs*B_cgs/(8*np.pi)
assert_equal(u_cgs.units.dimensions, dimensions.pressure)
with pytest.raises(UnitConversionError):
u_cgs.to(u_mks.units)
with pytest.raises(UnitConversionError):
u_mks.to(u_cgs.units)
with pytest.raises(UnitsNotReducible):
u_mks.in_cgs()
with pytest.raises(UnitsNotReducible):
u_cgs.in_mks()
assert_equal(u_cgs.to(u_mks.units), u_mks)
assert_equal(u_mks.to(u_cgs.units), u_cgs)

current = 1.0*u.A
I_cgs = current.in_units("statA")
Expand Down Expand Up @@ -1667,6 +1662,10 @@ def test_electromagnetic():
with pytest.raises(UnitsNotReducible):
data.in_mks()

mu_0 = 4.0e-7*math.pi*u.N/u.A**2
eps_0 = 8.85418781782e-12*u.m**-3/u.kg*u.s**4*u.A**2
assert_almost_equal((1.0/(u.clight**2*mu_0)).in_units(eps_0.units), eps_0)


def test_ytarray_coercion():
a = unyt_array([1, 2, 3], 'cm')
Expand Down
13 changes: 10 additions & 3 deletions unyt/unit_object.py
Original file line number Diff line number Diff line change
Expand Up @@ -799,9 +799,16 @@ def _check_em_conversion(unit_expr, to_unit_expr=None):
for unit in unit_expr.atoms():
if unit.is_Number:
pass
base_unit = _get_em_base_unit(str(unit))
if base_unit in em_conversions:
raise MKSCGSConversionError(unit_expr)
bu = _get_em_base_unit(str(unit))
if bu in em_conversions:
conv_unit = em_conversions[bu]
if to_unit_expr is not None:
for ounit in to_unit_expr.atoms():
bou = _get_em_base_unit(str(ounit))
if bou == conv_unit:
raise MKSCGSConversionError(unit_expr)
else:
raise MKSCGSConversionError(unit_expr)
return em_map


Expand Down

0 comments on commit f5284d9

Please sign in to comment.