def test_call(): """ Check generated Sech function """ from numpy import arange sech = Sech("sech", 0.4, 5.0, 1.5, 0.3, 0, 1.5) t = arange(0.0, 100.0) A = sech.generate(t) P = abs(A) ** 2 assert_almost_equal(max(P), 1.5)
def setUp(self): from pyofss.domain import Domain from pyofss.modules.sech import Sech domain = Domain(bit_width=200.0, samples_per_bit=2048) sech = Sech(peak_power=4.0, width=1.0) function = self.Function(domain) self.parameters = {"method": None, "f": function, "length": 0.5 * np.pi, "total_steps": 1000} self.A_analytical = 2.0 self.P_analytical = np.abs(self.A_analytical) ** 2 self.A_in = sech.generate(domain.t)
def test_output(self): """ Check Sech outputs its values correctly """ sech = Sech("sech", 0.2, 5.0, 1.4, 0.3, 0, 0.4, 0.0, 1) expected_string = [ 'position = 0.200000', 'width = 5.000000 ps', 'fwhm = 8.813736 ps', 'peak_power = 1.400000 W', 'offset_nu = 0.300000 THz', 'C = 0.400000', 'initial_phase = 0.000000 rad', 'channel = 1'] self.assertEqual(str(sech), '\n'.join(expected_string))
def test_none(self): """ Should use default value if no parameter given """ sech = Sech() self.assertEqual(sech.name, "sech") self.assertEqual(sech.position, 0.5) self.assertEqual(sech.width, 10.0) self.assertEqual(sech.peak_power, 1e-3) self.assertEqual(sech.offset_nu, 0.0) self.assertEqual(sech.C, 0.0) self.assertEqual(sech.initial_phase, 0.0) self.assertEqual(sech.channel, 0) self.assertIsNone(sech.fwhm)
def test_bad_t(self): """ Should raise exception when temporal array has too few values """ from numpy import arange t = arange(0.0, 4.0) self.assertRaises(OutOfRangeError, Sech().generate, t)
def test_conversion(self): """ Should calculate a FWHM pulse width from the HWIeM value. """ sech = Sech(width=100.0) fwhm = sech.calculate_fwhm() self.assertEqual(fwhm, 176.2747174039086)