Verified Commit d937a22c authored by Daniel Williams's avatar Daniel Williams
Browse files

Some tests to fix supernova tail production and to allow ringdown generation from tables.

parent 666c2078
Loading
Loading
Loading
Loading
+36 −13
Original line number Diff line number Diff line
@@ -503,8 +503,17 @@ class Supernova(Waveform):
                tail_hp = self.generate_tail(length = 1, h_max = hp.data.data[-1])
                tail_hx = self.generate_tail(length = 1, h_max = hx.data.data[-1])

                hp.data.data = np.append(hp.data.data(tail_hp))
                hx.data.data = np.append(hp.data.data(tail_hx))
                hp_data = np.append(hp.data.data,tail_hp.data)
                hx_data = np.append(hp.data.data,tail_hx.data)

                tail_hp = lal.CreateREAL8Vector(len(hp_data))
                tail_hp.data = hp_data
                tail_hx = lal.CreateREAL8Vector(len(hx_data))
                tail_hx.data = hx_data

                hp.data = tail_hp
                hx.data = tail_hx

        
        return hp, hx, hp0, hx0 
    
@@ -1151,12 +1160,13 @@ class BBHRingdown(Ringdown):
    """
    #lalsimfunction = SimBlackHoleRingdown

    def __init__(self, time, hrss,  phi0, mass, spin, massloss, distance, inclination, l, m, sky_dist=uniform_sky, deltaT = 1/16384.0):
    def __init__(self, time, hrss, azimuth, mass, spin, massloss, distance, inclination, l, m, sky_dist=uniform_sky, deltaT = 1/16384.0):
        self._clear_params()
        self.time = time
        self.time = self.params['start_time_gmst'] =  time
        self.sky_dist = sky_dist
        self.params['simulation_id'] = self.simulation_id =  self.sim.get_next_id()
        self.params['phi0'] = phi0
        #self.params['phi0'] = phi0
        self.params['azimuth'] = azimuth
        self.params['deltaT'] = deltaT
        self.params['mass'] = mass # in solar masses
        self.params['spin'] = spin
@@ -1167,7 +1177,7 @@ class BBHRingdown(Ringdown):
        self.params['l'] = self.l = l
        self.params['m'] = self.m = m

    def _generate(self, rate=16384.0):
    def _generate(self, rate=16384.0, half=False):
        """
        Generate this BBH Ringdown waveform.

@@ -1181,12 +1191,25 @@ class BBHRingdown(Ringdown):
        #&epoch, q, dt, M, a, e, r, i, l, m
        
        hp, hx = lalsimulation.SimBlackHoleRingdown(self.time,
                                           np.deg2rad(self.azimuth),
                                           np.deg2rad(self.params["azimuth"]),
                                           self.params['deltaT'],
                                           self.params['mass']*lal.MSUN_SI,
                                           self.params['spin'],
                                           self.params['massloss'],
                                           self.params['eff_dist_l'] *  1e6 * lal.PC_SI,
                                           np.deg2rad(self.params['inclination']),
                                           self.l, self.m)
        if not half:
                    hp0, hx0 = lalsimulation.SimBlackHoleRingdown(self.time,
                                           np.deg2rad(self.params["azimuth"]),
                                           dt,
                                           self.mass*lal.MSUN_SI,
                                           self.spin,
                                           self.massloss,
                                           self.eff_dist_l *  1e6 * lal.PC_SI,
                                           np.deg2rad(self.inclination),
                                           self.params['mass']*lal.MSUN_SI,
                                           self.params['spin'],
                                           self.params['massloss'],
                                           self.params['eff_dist_l'] *  1e6 * lal.PC_SI,
                                           np.deg2rad(self.params['inclination']),
                                           self.l, self.m)
        return hp, hx
        else:
            hp0, hx0 = hp, hx
        
        return hp, hx, hp0, hx0
+19 −0
Original line number Diff line number Diff line
@@ -115,6 +115,25 @@ class TestMDC(unittest.TestCase):
        np.testing.assert_array_almost_equal(data[0].data.data[::5000], gadata)


    def test_Ringdown_Waveform_generation_in_MDC(self):
        """Check that waveforms inside an MDC are generated. """
        rng = minke.sources.BBHRingdown(100.23, 1e-22, np.rad2deg(.1), 10., 0.97, 0.01, 1.0,45., 2, 2)
        mdcset = mdctools.MDCSet(["L1"], table_type="ringdown")
        mdcset + rng
        
        data = mdcset._generate_burst(0)

        testdata = np.array([ -4.14099902e-20,   4.05706892e-21,   9.44712664e-22,
        -2.70287547e-22,   1.98245659e-24,   9.41028314e-24,
        -1.31703741e-24,  -1.62366854e-25,   6.86331926e-26,
        -3.27763986e-27,  -2.02216144e-27,   3.85067715e-28,
         2.13773021e-29,  -1.66111808e-29,   1.43458903e-30,
         4.04499843e-31,  -1.04902792e-31,  -5.84838741e-34,
         3.83160548e-33,  -4.86443978e-34,  -7.27079363e-35,
         2.70362403e-35])

        np.testing.assert_array_almost_equal(data[0].data.data[::30], testdata)

class TestMDCEdit(unittest.TestCase):
    def setUp(self):
        ga = sources.Gaussian(1,1,1)