Пример #1
0
    def generate_lc(self, footprint="wide"): 
        timer = myutils.timestep() 
        timer.set_start_time(0) 
        timer.set_end_time(self.lc_duration) 
        timer.set_increment(1) 
        timer.make_timeseries(footprint) 
        nsteps = int(floor(timer.nsteps())) 
       
        # set up the parameters for flares 
        numdays = 0 
        while numdays < nsteps: 
            starttime = numdays + np.random.exponential(1/self.flareRate)
            A = np.random.pareto(1)+5*float(self.rms)
            tau1 = random.uniform(0.5,5) 
            tau2 = random.uniform(10,60) 
            self.flares.append([A,tau1,tau2,starttime])  
            numdays = starttime 

        for i in range(nsteps):
            t = timer.get_time() 
            self.time.append(t)
            if t == 0: 
                self.flux.append(0)
            else: 
                self.flux.append(self.makeFlares(t))
Пример #2
0
    def generate_lc(self, footprint="wide"): 
        timer = myutils.timestep() 
        timer.set_start_time(0) 
        timer.set_end_time(self.lc_duration) 
        timer.set_increment(1) 
        timer.make_timeseries(footprint) 
        nsteps = int(floor(timer.nsteps())) 
       
        # set up the parameters for flares 
        numdays = 0 
        while numdays < nsteps: 
            randtime = np.random.exponential(1/self.flareRate)
            starttime = numdays + randtime 
            flareType = random.randint(1,3) 
            # Fast rise exponential decay type flare 
            if flareType == 1: 
               A = np.random.pareto(1)+5*float(self.rms)
               tau1 = random.uniform(0.5,2) 
               tau2 = random.uniform(10,40) 
               self.flares.append([1,A,tau1,tau2,starttime])  

            # Flare forest 
            if flareType == 2: 
               A = np.random.pareto(1)+5*float(self.rms) 
               numflares = random.randint(4,10) 
               smallflares = [] 
               for i in range(numflares): 
                  sflareA = A/random.randint(2,10)
                  sflaret = i*randtime/10 
                  smallflares.append([sflareA,sflaret])  
               self.flares.append([2,A,smallflares,starttime]) 
            
            # one flare in another broad flare 
            if flareType == 3: 
               A1 = np.random.pareto(1)+5*float(self.rms) 
               A2 = A1/random.uniform(2,4)
               t2 = randtime/random.uniform(4,8) 
               t1 = randtime/random.uniform(10,15)
               deltat = randtime/random.uniform(1,10)
               self.flares.append([3,A1,A2,t1,t2,deltat,starttime]) 

            numdays = starttime 

        for i in range(nsteps):
            t = timer.get_time() 
            self.time.append(t)
            if t == 0: 
                self.flux.append(0)
            else: 
                self.flux.append(self.makeFlares(t))
Пример #3
0
def generateNoise(fnum, numpoints, footprint, rms):
    timer = myutils.timestep()
    timer.set_start_time(0)
    timer.set_end_time(numpoints)
    timer.set_increment(1)
    timer.make_timeseries(footprint)
    nsteps = timer.nsteps()

    fname = "Noise_" + str(fnum) + ".data"
    f = open(fname, "w")
    for i in range(nsteps):
        writetime = str(timer.get_time())
        writeflux = str(getnoise(rms))
        f.write(writetime + "\t" + writeflux + "\n")
Пример #4
0
def generateNoise(fnum, numpoints, footprint, rms):
    timer = myutils.timestep()
    timer.set_start_time(0)
    timer.set_end_time(numpoints)
    timer.set_increment(1)
    timer.make_timeseries(footprint)
    nsteps = timer.nsteps()

    fname = 'Noise_' + str(fnum) + '.data'
    f = open(fname, 'w')
    for i in range(nsteps):
        writetime = str(timer.get_time())
        writeflux = str(getnoise(rms))
        f.write(writetime + '\t' + writeflux + '\n')
Пример #5
0
    def generate_lc(self, footprint): 
        timer = myutils.timestep() 
        timer.set_start_time(0) 
        timer.set_end_time(self.lc_duration) 
        timer.set_increment(1) 
        timer.make_timeseries(footprint) 
        nsteps = int(floor(timer.nsteps()))  

        for i in range(nsteps):
            t = timer.get_time() 
            self.time.append(t)
            if t == 0: 
                self.flux.append(0)
            else: 
                self.flux.append(self.fy(t))
Пример #6
0
    def generate_lc(self, footprint): 
        # Constants 
        h = 6.62e-34 # Planck's constant 
        k = 1.38e-23 # Boltzman's constant
        v = 14000000 # Freq in Hz 
        Te = 10000 # Temperature in K 
        M = random.randrange(10,50)*1e-5*2e30
        c = 3e8 # Speed of light 
        d = random.randrange(50,1500)*3e16 # in metres
        v2 = random.uniform(1,10)*10**random.randrange(7,9)# metres per sec 
        v1 = v2*random.uniform(0.1,0.5) # metres per sec

        # define the functions we will use 
        F = (1/2.33e-24)**2*exp(-h*v/(k*Te))*(M/(4*pi))**2*(5.4e-39*Te**-0.5*1.38*Te**0.16*(v/1e9)**-0.11)
        G = lambda r,a: (1/a**2)*(sqrt(r**2-a**2)/r**2 + (1/a)*acos(a/r))
        Bv = (2*h*v**3/c**2)/(exp(h*v/(k*Te))-1)
        tau1 = lambda r1, r2, a: (F/Bv)*(G(r2,a)-G(r1,a))/(r2-r1)**2
        tau2 = lambda r1, r2, a: (F/Bv)*G(r2,a)/(r2-r1)**2

        timer = myutils.timestep() 
        timer.set_start_time(0) 
        timer.set_end_time(self.lc_duration) 
        timer.set_increment(1) 
        timer.make_timeseries(footprint) 
        nsteps = int(floor(timer.nsteps()))  

        for i in range(nsteps):
            t = timer.get_time() 
            self.time.append(t)
            if t == 0: 
                self.flux.append(0)
            else: 
                tsecs = 60*60*24*t 
                r1 = v1*tsecs
                r2 = v2*tsecs
                Sv1 = lambda a: (2*pi*Bv/d**2)*a*(1-exp(-1*tau1(r1,r2,a)))
                Sv2 = lambda a: (2*pi*Bv/d**2)*a*(1-exp(-1*tau2(r1,r2,a)))
                S1, S1err = integrate.quad(Sv1, 0, r1)
                S2, S2err = integrate.quad(Sv2, r1, r2)
                #print "Time: " + str(t) + " Flux" + str((S1+S2)/10e-29) 
                self.flux.append((S1+S2)/10e-29) # change to mJy 
Пример #7
0
    def generate_lc(self, theta_b=1.4, theta_l=5, footprint="wide"):
        #nsteps = 518400   # 2 * 30 * 24 * 60 * 60 / 10 (10 seconds)
        timer = myutils.timestep() 
        timer.set_start_time(0) 
        timer.set_end_time(self.event_duration) 
        timer.set_increment(1) 
        timer.make_timeseries(footprint) 
        nsteps = int(floor(timer.nsteps())) 
        xmin = -10 
        xmax = 10 

        dx = (xmax - xmin)/float(nsteps)
        d = xmin

        tmin = 0
        tmax = self.event_duration  
        #dt = (tmax - tmin)/float(nsteps)

        for i in range(nsteps):
            t = timer.get_time() 
            amp = self.caustic(d, theta_b, theta_l)
            self.angle.append(d)
            self.time.append(t)
            self.flux.append(amp)
            d += dx

        # Fill the rest of the lightcurve with noise 
        timer.set_end_time(self.lc_duration) 
        timer.make_timeseries(footprint)  

        # Go to the last recorded time array position 
        timer.set_curtime(nsteps)       
        t = timer.get_time() 

        while(t > 0): 
            self.time.append(t) 
            self.flux.append(1) 
            t = timer.get_time()