pint.models.stand_alone_psr_binaries.DD_model.DDmodel
- class pint.models.stand_alone_psr_binaries.DD_model.DDmodel(t=None, input_params=None)[source]
Bases:
PSR_BINARY
DD binary model.
This is a class independent from PINT platform for pulsar DD binary model. Reference: T. Damour and N. Deruelle (1986) It is a subclass of PSR_BINARY class defined in file binary_generic.py in the same directory. This class is designed for PINT platform but can be used as an independent module for binary delay calculation. To interact with PINT platform, a pulsar_binary wrapper is needed. See the source file pint/models/pulsar_binary_dd.py
Example
>>> import numpy as np >>> t = np.linspace(54200.0,55000.0,800) >>> binary_model = DDmodel() >>> parameters_dict = {'A0':0.5,'ECC':0.01} >>> binary_model.update_input(t, parameters_dict)
Here the binary has time input and parameters input, the delay can be calculated.
Methods
DDdelay
()Full DD model delay
Doppler
()Dre
()Dre defined in T.
Drep
()Derivative of Dre respect to T.
Drepp
()Derivative of Drep respect to T.
E
()Eccentric Anomaly
M
()Orbit phase.
P
()Pobs_designmatrix
(params)TM2
()a1
()add_binary_params
(parameter, defaultValue[, ...])Add one parameter to the binary class.
add_inter_vars
(interVars)alpha
()Alpha defined in T.
beta
()Beta defined in T.
Returns total pulsar binary delay.
compute_eccentric_anomaly
(eccentricity, ...)Solve the Kepler Equation, E - e * sin(E) = M
d_DDdelay_d_par
(par)Full DD model delay derivative
d_Dre_d_par
(par)Derivative.
d_Drep_d_par
(par)Derivative.
d_Drepp_d_par
(par)Derivative.
d_E_d_ECC
()d_E_d_EDOT
()d_E_d_T0
()Analytic derivative
d_E_d_par
(par)derivative for E respect to binary parameter.
d_M_d_par
(par)derivative for M respect to binary parameter.
d_Pobs_d_A1
()d_Pobs_d_A1DOT
()d_Pobs_d_ECC
()d_Pobs_d_EDOT
()d_Pobs_d_OM
()d_Pobs_d_OMDOT
()d_Pobs_d_P0
()d_Pobs_d_P1
()d_Pobs_d_PB
()d_Pobs_d_PBDOT
()d_Pobs_d_T0
()d_TM2_d_M2
()d_a1_d_A1
()d_a1_d_A1DOT
()d_a1_d_T0
()d_a1_d_par
(par)d_alpha_d_par
(par)Damour and N. Deruelle (1986) equation [46]
Derivative.
Derivative.
Derivative.
Derivative.
Derivative.
Derivative.
d_beta_d_par
(par)Derivative.
d_binarydelay_d_par
(par)Get the binary delay derivatives respect to parameters.
d_delayA_d_par
(par)Derivative.
d_delayI_d_par
(par)Derivative on delay inverse.
d_delayS_d_par
(par)Derivative.
d_eTheta_d_DTH
()d_eTheta_d_par
(par)d_ecc_d_ECC
()d_ecc_d_EDOT
()d_ecc_d_T0
()d_er_d_DR
()d_er_d_par
(par)d_nhat_d_par
(par)Derivative.
d_nu_d_E
()Analytic calculation.
d_nu_d_EDOT
()Analytic calculation.
d_nu_d_ecc
()d_nu_d_par
(par)derivative for nu respect to binary parameter.
dOmega/dOM = 1
Derivative.
dOmega/dPB = dnu/dPB*k+dk/dPB*nu
d_omega_d_par
(par)derivative for omega respect to user input Parameter.
d_pb_d_par
(par)derivative for pbprime respect to binary parameter.
delayA
()Binary Aberration delay
delayE
()Binary Einstein delay
DD model Inverse timing delay.
delayR
()Roemer delay defined in T.
delayS
()Binary shapiro delay
delay_designmatrix
(params)eTheta
()ecc
()Calculate eccentricity with EDOT
er
()get_tt0
(barycentricTOA)tt0 = barycentricTOA - T0
nhat
()nhat defined as T.
nu
()True anomaly (Ae)
omega
()Damour and N. Deruelle (1986) equation [25]
orbits
()pb
()pbdot
()pbprime
()prtl_der
(y, x)Find the partial derivatives in binary model pdy/pdx
search_alias
(parname)set_param_values
([valDict])Set the parameters and assign values,
t0
()update_input
(**updates)Update the toas and parameters.
Attributes
T0
k
t
tt0
- omega()[source]
Damour and N. Deruelle (1986) equation [25]
Calculates:
omega = OM+nu*k k = OMDOT/n
(T. Damour and N. Deruelle (1986) equation between Eq 16 Eq 17)
- d_omega_d_par(par)[source]
derivative for omega respect to user input Parameter.
Calculates:
if par is not 'OM','OMDOT','PB' dOmega/dPar = k*dAe/dPar k = OMDOT/n
- Parameters:
par (string) – parameter name
- Return type:
Derivative of omega respect to par
- d_omega_d_OMDOT()[source]
Derivative.
Calculates:
dOmega/dOMDOT = 1/n*nu n = 2*pi/PB dOmega/dOMDOT = PB/2*pi*nu
- alpha()[source]
Alpha defined in T. Damour and N. Deruelle (1986) equation [46]
Computes:
alpha = A1/c*sin(omega)
- d_alpha_d_par(par)[source]
Damour and N. Deruelle (1986) equation [46]
Computes:
alpha = a1/c*sin(omega) dAlpha/dpar = d_a1_d_par /c * sin(omega) + a1/c*cos(omega)*dOmega/dPar
- beta()[source]
Beta defined in T. Damour and N. Deruelle (1986) equation [47]
Computes:
beta = A1/c*(1-eTheta**2)**0.5*cos(omega)
- d_beta_d_par(par)[source]
Derivative.
Computes:
beta = A1/c*(1-eTheta**2)**0.5*cos(omega) eTheta = ecc+Dth ?? dBeta/dA1 = 1.0/c*(1-eTheta**2)**0.5*cos(omega) dBeta/dECC = A1/c*((-(e+dr)/sqrt(1-(e+dr)**2)*cos(omega)*de/dECC- (1-eTheta**2)**0.5*sin(omega)*domega/dECC dBeta/dEDOT = A1/c*((-(e+dr)/sqrt(1-(e+dr)**2)*cos(omega)*de/dEDOT- (1-eTheta**2)**0.5*sin(omega)*domega/dEDOT dBeta/dDth = A1/c*(-(e+dr)/sqrt(1-(e+dr)**2)*cos(omega) Other parameters dBeta/dPar = -A1/c*(1-eTheta**2)**0.5*sin(omega)*dOmega/dPar
- d_beta_d_A1()[source]
Derivative.
Computes:
dBeta/dA1 = 1.0/c*(1-eTheta**2)**0.5*cos(omega) * d_a1_d_A1
- d_beta_d_A1DOT()[source]
Derivative.
Computes:
dBeta/dA1DOT = * d_a1_d_A1DOT/c*(1-eTheta**2)**0.5*cos(omega)
- d_beta_d_T0()[source]
Derivative.
Computes:
dBeta/dT0 = * d_a1_d_T0/c*(1-eTheta**2)**0.5*cos(omega)
- d_beta_d_ECC()[source]
Derivative.
Computes:
dBeta/dECC = A1/c*((-(e+dtheta)/sqrt(1-(e+dtheta)**2)*cos(omega)*de/dECC- (1-eTheta**2)**0.5*sin(omega)*domega/dECC de/dECC = 1
- d_beta_d_EDOT()[source]
Derivative.
- Computes::
dBeta/dEDOT = A1/c*((-(e+dtheta)/sqrt(1-(e+dtheta)**2)*cos(omega)*de/dEDOT- (1-eTheta**2)**0.5*sin(omega)*domega/dEDOT de/dEDOT = tt0
- d_beta_d_DTH()[source]
Derivative.
Computes:
dBeta/dDth = a1/c*((-(e+dr)/sqrt(1-(e+dr)**2)*cos(omega)
- delayR()[source]
Roemer delay defined in T. Damour and N. Deruelle (1986)
Computes:
delayR = alpha*(cos(E)-er) + beta*sin(E)
- Dre()[source]
Dre defined in T. Damour and N. Deruelle (1986) equation [48]
Computes:
delayR = alpha*(cos(E)-er) + beta*sin(E) delayE = gamma*sin(E) Dre = delayR + delayE
- d_Dre_d_par(par)[source]
Derivative.
Computes:
Dre = alpha*(cos(E)-er)+(beta+gamma)*sin(E) dDre = alpha*(-der-dE*sin(E)) + (cos[E]-er)*dalpha + (dBeta+dGamma)*sin(E) + (beta+gamma)*cos(E)*dE dDre/dpar = alpha*(-der/dpar-dE/dpar*sin(E)) + (cos[E]-er)*dalpha/dpar + (dBeta/dpar+dGamma/dpar)*sin(E) + (beta+gamma)*cos(E)*dE/dpar er = e + Dr
- Drep()[source]
Derivative of Dre respect to T. Damour and N. Deruelle (1986) equation [49]
Computes:
Drep = -alpha*sin(E)+(beta+gamma)*cos(E)
- d_Drep_d_par(par)[source]
Derivative.
Computes:
Drep = -alpha*sin(E)+(beta+gamma)*cos(E) dDrep = -alpha*cos(E)*dE + cos(E)*(dbeta+dgamma) -(beta+gamma)*dE*sin(E)-dalpha*sin(E) dDrep/dPar = -sin(E)*dalpha/dPar -(alpha*cos(E)+(beta+gamma)*sin(E))*dE/dPar + cos(E)(dbeta/dPar+dgamma/dPar)
- Drepp()[source]
Derivative of Drep respect to T. Damour and N. Deruelle (1986) equation [50]
Computes:
Drepp = -alpha*cos(E)-(beta+GAMMA)*sin(E)
- d_Drepp_d_par(par)[source]
Derivative.
Computes:
Drepp = -alpha*cos(E)-(beta+GAMMA)*sin(E) dDrepp = -(beta+gamma)*cos(E)*dE - cos(E)*dalpha +alpha*sin(E)*dE - (dbeta+dgamma)*sin(E) dDrepp/dPar = -cos(E)*dalpha/dPar +(alpha*sin(E)-(beta+gamma)*cos(E))*dE/dPar -(dbeta/dPar+dgamma/dPar)*sin(E)
- nhat()[source]
nhat defined as T. Damour and N. Deruelle (1986) equation [51]
Computes:
nhat = n/(1-ecc*cos(E)) n = 2*pi/PB # should here be M()
- d_nhat_d_par(par)[source]
Derivative.
Computes:
nhat = n/(1-ecc*cos(E)) n = 2*pi/PB # should here be M()? dnhat = -2*pi*dPB/PB^2*(1-ecc*cos(E)) -2*pi*(-cos(E)*decc+ecc*sin(E)*dE)/PB*(1-ecc*cos(E))^2 dnhat/dPar = -2*pi/(PB*(1-ecc*cos(E))*((dPB/dPar)/PB - (-cos(E)*decc/dPar+ecc*sin(E)*dE/dpar)/(1-e*cos(E)))
- delayInverse()[source]
DD model Inverse timing delay.
Damour and N. Deruelle (1986) equation [46-52]
This part is convert the delay argument from proper time to coordinate time. The Roemer delay and Einstein are included in the calculation. It uses there iterations to approximate the Roemer delay and Einstein delay.
T. Damour and N. Deruelle (1986) equation [43]. The equation [52] gives a taylor expansion of equation [43].
Computes:
u - e*sin(u) = n(t-T0) nhat = du/dt nhatp = d^2u/dt^2 Drep = dDre/du Drepp = d^2Dre/du^2 Dre(t-Dre(t-Dre(t))) = Dre(u) - Drep(u)*nhat*Dre(t-Dre(t)) = Dre(u) - Drep(u)*nhat*(Dre(u)-Drep(u)*nhat*Dre(t)) + 1/2 (Drepp(u)*nhat^2 + Drep(u) * nhat * nhatp) * (Dre(t)-...)^2 = Dre(t)*(1 - nhat * Drep(u) + (nhat*Drep)^2 + 1/2*nhat^2* Dre*Drepp - 1/2*e*sin(u)/(1-e*cos(u)*nhat^2*Drep*Drep))
Here u is equivalent to E in the function.
- d_delayS_d_par(par)[source]
Derivative.
Computes:
dsDelay/dPar = dsDelay/dTM2*dTM2/dPar+ dsDelay/decc*decc/dPar+ dsDelay/dE*dE/dPar+ dsDelay/domega*domega/dPar+ dsDelay/dSINI*dSINI/dPar
- d_delayA_d_par(par)[source]
Derivative.
Computes:
aDelay = A0*(sin(omega+E)+e*sin(omega))+B0*(cos(omega+E)+e*cos(omega)) daDelay/dpar = daDelay/dA0*dA0/dPar+ (1) daDelay/dB0*dB0/dPar+ (2) daDelay/domega*domega/dPar+ (3) daDelay/dnu*dnu/dPar+ (4) daDelay/decc*decc/dPar (5)
- E()
Eccentric Anomaly
- M()
Orbit phase.
- add_binary_params(parameter, defaultValue, unit=False)
Add one parameter to the binary class.
- binary_delay()
Returns total pulsar binary delay.
- Returns:
Pulsar binary delay in the units of second
- Return type:
- compute_eccentric_anomaly(eccentricity, mean_anomaly)
Solve the Kepler Equation, E - e * sin(E) = M
- Parameters:
eccentricity (array_like) – Eccentricity of binary system
mean_anomaly (array_like) – Mean anomaly of the binary system
- Returns:
The eccentric anomaly in radians, given a set of mean_anomalies in radians.
- Return type:
array_like
- d_E_d_T0()
Analytic derivative
d(E-e*sinE)/dT0 = dM/dT0 dE/dT0(1-cosE*e)-de/dT0*sinE = dM/dT0 dE/dT0(1-cosE*e)+eDot*sinE = dM/dT0
- d_E_d_par(par)
derivative for E respect to binary parameter.
- Parameters:
par (string) – parameter name
- Return type:
Derivative of E respect to par
- d_M_d_par(par)
derivative for M respect to binary parameter.
- Parameters:
par (string) – parameter name
- Return type:
Derivative of M respect to par
- d_binarydelay_d_par(par)
Get the binary delay derivatives respect to parameters.
- Parameters:
par (str) – Parameter name.
- d_nu_d_ECC()
Analytic calculation.
dnu(e,E)/dECC = dnu/de*de/dECC+dnu/dE*dE/dECC de/dECC = 1 dnu/dPBDOT = dnu/dE*dE/dECC+dnu/de
- d_nu_d_T0()
Analytic calculation.
dnu/dT0 = dnu/de*de/dT0+dnu/dE*dE/dT0 de/dT0 = -EDOT
- d_nu_d_par(par)
derivative for nu respect to binary parameter.
- Parameters:
par (string) – parameter name
- Return type:
Derivative of nu respect to par
- d_omega_d_T0()
dOmega/dPB = dnu/dPB*k+dk/dPB*nu
- d_pb_d_par(par)
derivative for pbprime respect to binary parameter.
- Parameters:
par (string) – parameter name
- Return type:
Derivative of M respect to par
- ecc()
Calculate eccentricity with EDOT
- get_tt0(barycentricTOA)
tt0 = barycentricTOA - T0
- nu()
True anomaly (Ae)
- prtl_der(y, x)
Find the partial derivatives in binary model pdy/pdx
- set_param_values(valDict=None)
Set the parameters and assign values,
If the valDict is not provided, it will set parameter as default value
- update_input(**updates)
Update the toas and parameters.