def test_pta_SKA_WN_GWB(): SKA_WN_GWB = detector.PTA('SKA, WN and GWB', T_SKA, N_p_SKA, sigma_SKA, cadence_SKA, A_GWB=4e-16)
def test_pta_NANOGrav_WN_GWB(): NANOGrav_WN_GWB = detector.PTA('NANOGrav, WN and GWB', T_nano, N_p_nano, sigma_nano, cadence_nano, A_GWB=4e-16)
def test_pta_NANOGrav_cw_GWB(): NANOGrav_cw_GWB = detector.PTA( "NANOGrav CW Detection no GWB", load_location=NANOGrav_filelocation_2, I_type="h", ) NANOGrav_cw_GWB.h_n_f
def test_pta_SKA_WN_RN(): SKA_WN_RN = detector.PTA('SKA, WN and RN', T_SKA, N_p_SKA, sigma_SKA, cadence_SKA, A_rn=[1e-16, 1e-12], alpha_rn=[-3 / 4, 1])
def test_pta_NANOGrav_WN_RN(): NANOGrav_WN_RN = detector.PTA('NANOGrav, WN and RN', T_nano, N_p_nano, sigma_nano, cadence_nano, A_rn=[1e-16, 1e-12], alpha_rn=[-3 / 4, 1])
def test_pta_NANOGrav_WN(): NANOGrav_WN = detector.PTA( "NANOGrav, WN Only", N_p_nano, T_obs=T_nano, sigma=sigma_nano, cadence=cadence_nano, ) NANOGrav_WN.fT
def test_pta_NANOGrav_WN_GWB(): NANOGrav_WN_GWB = detector.PTA( "NANOGrav, WN and GWB", N_p_nano, T_obs=T_nano, sigma=sigma_nano, cadence=cadence_nano, sb_amp=4e-16, ) NANOGrav_WN_GWB.h_n_f
def test_NANOGrav_11yr(source_pta): load_name = "NANOGrav_11yr_S_eff.txt" load_location = load_directory + "/NANOGrav/StrainFiles/" + load_name T_obs = 11.42 * u.yr # Observing time in years nanograv = detector.PTA( "NANOGrav 11yr", T_obs=T_obs, load_location=load_location, I_type="E" ) [nanograv_sample_x, nanograv_sample_y, nanograv_SNR] = snr.Get_SNR_Matrix( source_pta, nanograv, var_x, sampleRate_x, var_y, sampleRate_y )
def test_pta_NANOGrav_Sampled_Noise_GWB(): NANOGrav_Sampled_Noise_GWB = detector.PTA( "NANOGrav, Sampled Noise and GWB", N_p_nano, use_11yr=True, use_rn=True, sb_amp=4e-16, nbins=10, ) NANOGrav_Sampled_Noise_GWB.fT
def test_pta_NANOGrav_WN_RN(): NANOGrav_WN_RN = detector.PTA( "NANOGrav, WN and RN", N_p_nano, T_obs=T_nano, sigma=sigma_nano, cadence=cadence_nano, rn_amp=[1e-16, 1e-12], rn_alpha=[-3 / 4, 1], ) NANOGrav_WN_RN.h_n_f
def test_pta_SKA_WN_GWB(): SKA_WN_GWB = detector.PTA( "SKA, WN and GWB", N_p_SKA, T_obs=T_SKA, sigma=sigma_SKA, cadence=cadence_SKA, sb_amp=4e-16, sb_alpha=-2.0 / 3.0, ) SKA_WN_GWB.h_n_f
def test_pta_SKA_WN_RN(): SKA_WN_RN = detector.PTA( "SKA, WN and RN", N_p_SKA, T_obs=T_SKA, sigma=sigma_SKA, cadence=cadence_SKA, rn_amp=[1e-16, 1e-12], rn_alpha=[-3 / 4, 1], ) SKA_WN_RN.h_n_f
def test_pta_NANOGrav_WN(source_pta): NANOGrav_WN = detector.PTA( "NANOGrav, WN Only", N_p_nano, T_obs=T_nano, sigma=sigma_nano, cadence=cadence_nano, ) [NANOGrav_WN_sample_x, NANOGrav_WN_sample_y, NANOGrav_WN_SNR] = snr.Get_SNR_Matrix( source_pta, NANOGrav_WN, var_x, sampleRate_x, var_y, sampleRate_y )
def NANOGrav_WN(): NANOGrav_WN = detector.PTA("NANOGrav", N_p, T_obs=T_obs, sigma=sigma, cadence=cadence) NANOGrav_WN.T_obs = [T_obs, T_obs_min, T_obs_max] NANOGrav_WN.sigma = [sigma, sigma_min, sigma_max] NANOGrav_WN.n_p = [N_p, N_p_min, N_p_max] NANOGrav_WN.cadence = [cadence, cadence_min, cadence_max] return NANOGrav_WN
def test_SKA(source_pta): T_obs = 15 * u.yr # Observing time (years) sigma = 10 * u.ns.to("s") * u.s # rms timing residuals in nanoseconds N_p = 20 # Number of pulsars cadence = 1 / ( u.wk.to("yr") * u.yr ) # Avg observation cadence of 1 every week in num/year SKA = detector.PTA("SKA", N_p, T_obs=T_obs, sigma=sigma, cadence=cadence) [SKA_sample_x, SKA_sample_y, SKA_SNR] = snr.Get_SNR_Matrix( source_pta, SKA, var_x, sampleRate_x, var_y, sampleRate_y )
def SKA_WN(): SKA_WN = detector.PTA( "SKA, WN Only", N_p_SKA, T_obs=T_SKA, sigma=sigma_SKA, cadence=cadence_SKA, f_min=1e-10, f_max=1e-7, nfreqs=int(1e3), ) return SKA_WN
def SKA_Sampled_Noise(): SKA_Sampled_Noise = detector.PTA( "SKA, Sampled Noise", N_p_SKA, cadence=[cadence_SKA, cadence_SKA / 4.0], sigma=[sigma_SKA, 10 * sigma_SKA], T_obs=T_SKA, use_11yr=True, use_rn=True, ) SKA_Sampled_Noise.h_n_f return SKA_Sampled_Noise
def test_pta_SKA_Sampled_Noise_GWB(SKA_Sampled_Noise): SKA_Sampled_Noise_GWB = detector.PTA( "SKA, Sampled Noise and GWB", N_p_SKA, cadence=SKA_Sampled_Noise.cadence, sigma=SKA_Sampled_Noise.sigma, T_obs=SKA_Sampled_Noise.T_obs, rn_amp=SKA_Sampled_Noise.rn_amp, rn_alpha=SKA_Sampled_Noise.rn_alpha, phi=SKA_Sampled_Noise.phi, theta=SKA_Sampled_Noise.theta, sb_amp=4e-16, ) SKA_Sampled_Noise_GWB.h_n_f
def test_pta_NANOGrav_WN_GWB(source_pta): NANOGrav_WN_GWB = detector.PTA( "NANOGrav, WN and GWB", N_p_nano, T_obs=T_nano, sigma=sigma_nano, cadence=cadence_nano, sb_amp=4e-16, ) [ NANOGrav_WN_GWB_sample_x, NANOGrav_WN_GWB_sample_y, NANOGrav_WN_GWB_SNR, ] = snr.Get_SNR_Matrix( source_pta, NANOGrav_WN_GWB, var_x, sampleRate_x, var_y, sampleRate_y )
def test_pta_NANOGrav_cw_ul_file(): NANOGrav_cw_ul_file = NANOGrav_filedirectory + "smoothed_11yr.txt" NANOGrav_cw_ul = detector.PTA("NANOGrav CW Upper Limit", load_location=NANOGrav_cw_ul_file, I_type="h") NANOGrav_cw_ul.S_n_f = NANOGrav_cw_ul.h_n_f**2 / NANOGrav_cw_ul.fT
def test_pta_NANOGrav_11yr_hasasia(): NANOGrav_11yr_hasasia_file = NANOGrav_filedirectory + "NANOGrav_11yr_S_eff.txt" NANOGrav_11yr_hasasia = detector.PTA( "NANOGrav 11yr", load_location=NANOGrav_11yr_hasasia_file, I_type="E") NANOGrav_11yr_hasasia.S_n_f
def test_pta_NANOGrav_WN(): NANOGrav_WN = detector.PTA('NANOGrav, WN Only', T_nano, N_p_nano, sigma_nano, cadence_nano)
def SKA_WN(): SKA_WN = detector.PTA('SKA, WN Only', T_SKA, N_p_SKA, sigma_SKA, cadence_SKA) return SKA_WN
def test_pta_NANOGrav_cw_ul_file(): NANOGrav_cw_ul_file = NANOGrav_filedirectory + 'smoothed_11yr.txt' NANOGrav_cw_ul = detector.PTA('NANOGrav CW Upper Limit', load_location=NANOGrav_cw_ul_file)
def test_pta_NANOGrav_cw_GWB(): NANOGrav_cw_GWB = detector.PTA('NANOGrav CW Detection no GWB', load_location=NANOGrav_filelocation_2)
def test_PTA_init_error_kwargs(): with pytest.raises(ValueError): detector.PTA("name", N_p_nano, T_nano=T_nano)
def Get_Instrument(model): if model == 0: #Einstein Telescope load_name = 'ET_D_data.txt' load_location = load_directory + 'EinsteinTelescope/StrainFiles/' + load_name T_obs = 4 * u.yr #Observing time in years T_obs_min = 1 * u.yr T_obs_max = 10 * u.yr instrument = detector.GroundBased('ET', T_obs, load_location=load_location, I_type='A') instrument.T_obs = [T_obs, T_obs_min, T_obs_max] elif model == 1: #aLIGO load_name = 'aLIGODesign.txt' load_location = load_directory + 'aLIGO/StrainFiles/' + load_name T_obs = 4 * u.yr #Observing time in years T_obs_min = 1 * u.yr T_obs_max = 10 * u.yr instrument = detector.GroundBased('aLIGO', T_obs, load_location=load_location, I_type='A') instrument.T_obs = [T_obs, T_obs_min, T_obs_max] elif model == 2: #NANOGrav 15 yr ############################################### #NANOGrav calculation using 11.5yr parameters https://arxiv.org/abs/1801.01837 T_obs = 15 * u.yr #Observing time in years T_obs_min = 10 * u.yr T_obs_max = 30 * u.yr sigma = 100 * u.ns.to('s') * u.s #rms timing residuals in seconds N_p = 18 #Number of pulsars cadence = 1 / ( 2 * u.wk.to('yr') * u.yr ) #Avg observation cadence of 1 every 2 weeks in num/year instrument = detector.PTA('NANOGrav', T_obs, N_p, sigma, cadence) instrument.T_obs = [T_obs, T_obs_min, T_obs_max] elif model == 3: #SKA (2030s) ############################################### #SKA calculation using parameters and methods from arXiv:0804.4476 section 7.1 T_obs = 15 * u.yr #Observing time (years) T_obs_min = 10 * u.yr T_obs_max = 30 * u.yr sigma = 10 * u.ns.to('s') * u.s #rms timing residuals in nanoseconds N_p = 20 #Number of pulsars cadence = 1 / (u.wk.to('yr') * u.yr ) #Avg observation cadence of 1 every week in num/year instrument = detector.PTA('SKA', T_obs, N_p, sigma, cadence) instrument.T_obs = [T_obs, T_obs_min, T_obs_max] elif model == 4: #Robson,Cornish,and Liu 2018, LISA (https://arxiv.org/pdf/1803.01944.pdf) T_obs = 4 * u.yr #Observing time in years T_obs_min = 1 * u.yr T_obs_max = 10 * u.yr L = 2.5e9 * u.m #armlength in meters L_min = 1.0e7 * u.m L_max = 1.0e11 * u.m A_acc = 3e-15 * u.m / u.s / u.s #M/s**2 A_IMS = 1.5e-11 * u.m f_IMS_break = 2. * u.mHz.to('Hz') * u.Hz f_acc_break_low = .4 * u.mHz.to('Hz') * u.Hz f_acc_break_high = 8. * u.mHz.to('Hz') * u.Hz Background = False instrument = detector.SpaceBased('LISA_Alt', T_obs, L, A_acc, f_acc_break_low, f_acc_break_high, A_IMS, f_IMS_break, Background=Background, T_type='A') instrument.T_obs = [T_obs, T_obs_min, T_obs_max] instrument.L = [L, L_min, L_max] else: #L3 proposal #Default Params! T_obs = 4 * u.yr #Observing time in years T_obs_min = 1 * u.yr T_obs_max = 10 * u.yr L = 2.5e9 * u.m #armlength in meters L_min = 1.0e7 * u.m L_max = 1.0e11 * u.m f_acc_break_low = .4 * u.mHz.to('Hz') * u.Hz f_acc_break_high = 8. * u.mHz.to('Hz') * u.Hz f_IMS_break = 2. * u.mHz.to('Hz') * u.Hz A_acc = 3e-15 * u.m / u.s / u.s A_IMS = 10e-12 * u.m Background = False instrument = detector.SpaceBased('LISA_ESA', T_obs, L, A_acc, f_acc_break_low, f_acc_break_high, A_IMS, f_IMS_break, Background=Background, T_type='N') instrument.T_obs = [T_obs, T_obs_min, T_obs_max] instrument.L = [L, L_min, L_max] return instrument