def test_sld_slicer(self): q = np.linspace(0.005, 0.2, 100) reflectivity = self.s.reflectivity(q) z, sld = self.s.sld_profile(z=np.linspace(-150, 250, 1000)) round_trip_structure = _profile_slicer(z, sld, slice_size=0.5) round_trip_reflectivity = round_trip_structure.reflectivity(q) assert_allclose(round_trip_reflectivity, reflectivity, rtol=0.004)
def test_contraction(self): q = np.linspace(0.005, 0.2, 100) self.s.contract = 0 reflectivity = self.s.reflectivity(q) self.s.contract = 0.5 assert_allclose(self.s.reflectivity(q), reflectivity) z, sld = self.s.sld_profile(z=np.linspace(-150, 250, 1000)) slice_structure = _profile_slicer(z, sld, slice_size=0.5) slice_structure.contract = 0.02 slice_reflectivity = slice_structure.reflectivity(q) assert_allclose(slice_reflectivity, reflectivity, rtol=5e-3)
def test_contraction(self): q = np.linspace(0.005, 0.2, 100) self.s.contract = 0 reflectivity = self.s.reflectivity(q) self.s.contract = 0.5 assert_allclose(self.s.reflectivity(q), reflectivity) z, sld = self.s.sld_profile(z=np.linspace(-150, 250, 1000)) slice_structure = _profile_slicer(z, sld, slice_size=0.5) slice_structure.contract = 0.02 slice_reflectivity = slice_structure.reflectivity(q) assert_allclose(slice_reflectivity, reflectivity, rtol=5e-3) # test cythonized contract_by_area code try: from refnx.reflect._creflect import _contract_by_area as ca2 from refnx.reflect._reflect import _contract_by_area as ca slabs = slice_structure.slabs() assert_almost_equal(ca2(slabs, 2), ca(slabs, 2)) except ImportError: pass