Ejemplo n.º 1
0
def test_sqrt_out():
    var = sc.Variable([Dim.X], values=np.array([4.0, 9.0]), unit=sc.units.m**2)
    expected = sc.Variable([Dim.X],
                           values=np.array([2.0, 3.0]),
                           unit=sc.units.m)
    out = sc.sqrt(x=var, out=var)
    assert var == expected
    assert out == expected
Ejemplo n.º 2
0
def _to_spherical(pos, output):
    output["r"] = sc.sqrt(sc.dot(pos, pos))
    output["t"] = sc.acos(pos.fields.z / output["r"].data)
    signed_phi = sc.atan2(y=pos.fields.y, x=pos.fields.x)
    abs_phi = sc.abs(signed_phi)
    output["p-delta"] = (
        np.pi * sc.units.rad) - abs_phi  # angular delta (magnitude) from pole
    output['p-sign'] = signed_phi  # weighted sign of phi
    return output
Ejemplo n.º 3
0
def test_convert_tof_to_energy_transfer_indirect_unphysical():
    tof = make_test_data(coords=('tof', 'L1', 'L2'), dataset=True)
    ef = 25.0 * sc.units.meV
    tof.coords['final_energy'] = ef
    t0 = sc.to_unit(tof.coords['L2'] * sc.sqrt(m_n / ef), sc.units.s)
    coord, is_unphysical = make_unphysical_tof(t0, tof)
    tof.coords['tof'] = coord

    result = scn.convert(tof,
                         origin='tof',
                         target='energy_transfer',
                         scatter=True)
    assert sc.identical(sc.isnan(result.coords['energy_transfer']),
                        is_unphysical)
Ejemplo n.º 4
0
def test_convert_tof_to_energy_transfer_indirect():
    tof = make_test_data(coords=('tof', 'L1', 'L2'), dataset=True)
    with pytest.raises(RuntimeError):
        scn.convert(tof, origin='tof', target='energy_transfer', scatter=True)
    ef = 25.0 * sc.units.meV
    tof.coords['final_energy'] = ef
    indirect = scn.convert(tof,
                           origin='tof',
                           target='energy_transfer',
                           scatter=True)
    check_tof_conversion_metadata(indirect, 'energy_transfer', sc.units.meV)

    t = tof.coords['tof']
    t0 = sc.to_unit(tof.coords['L2'] * sc.sqrt(m_n / 2 / ef), t.unit)
    assert sc.all(t0 < t).value  # only test physical region here
    ref = sc.to_unit(m_n / 2 * (tof.coords['L1'] / (t - t0))**2,
                     ef.unit).rename_dims({'tof': 'energy_transfer'}) - ef
    assert sc.allclose(indirect.coords['energy_transfer'],
                       ref,
                       rtol=sc.scalar(1e-13))
Ejemplo n.º 5
0
def test_correct_temporaries():
    v = sc.Variable(dims=['x'], values=np.arange(100.0))
    b = sc.sqrt(v)['x', 0:10]
    assert len(b.values) == 10
    b = b['x', 2:5]
    assert len(b.values) == 3
Ejemplo n.º 6
0
def test_correct_temporaries():
    v = sc.Variable([Dim.X], values=np.arange(100.0))
    b = sc.sqrt(v)[Dim.X, 0:10]
    assert len(b.values) == 10
    b = b[Dim.X, 2:5]
    assert len(b.values) == 3
Ejemplo n.º 7
0
def test_sqrt():
    var = sc.Variable([Dim.X], values=np.array([4.0, 9.0]), unit=sc.units.m**2)
    expected = sc.Variable([Dim.X],
                           values=np.array([2.0, 3.0]),
                           unit=sc.units.m)
    assert sc.sqrt(var) == expected