pespace.detector.orbit¶
Module for orbit models, used to define a specific detector.
Classes
|
Analytical Keplerian heliocentric orbit model, used for LISA and Taiji. |
|
Analytical Keplerian geocentric orbit model, used for Tianqin. |
Abstract base class for orbit models of detector constellations. |
|
|
Taichi backend for Keplerian heliocentric orbit vector computation. |
|
Taichi backend for Keplerian geocentric orbit vector computation. |
- class pespace.detector.orbit.OrbitModelBase[source]¶
Bases:
ABCAbstract base class for orbit models of detector constellations.
- abstractmethod get_constellation_vectors(time)[source]¶
Compute constellation vectors used in response computation at a given time.
- Parameters:
time (float) – Time in seconds at which to compute the constellation vectors.
- Returns:
Structure containing unit vectors and position vectors of the three nodes.
- Return type:
ConstellationVectorStruct (taichi) | ConstellationVectorTuple (jax)
- abstractmethod arm_length_sec(time)[source]¶
Get the arm length in units of seconds.
- Returns:
Arm length in seconds (light travel time).
- Return type:
float
- Parameters:
time (float)
Notes
Currently only analytic Keplerian orbit models where the armlength is a constant are implemented. Orbital models with higher precision may be implemented in future, where arm lengths could be time-dependent. Therefore, we define arm-length as a time-dependent function in the base class to facilitate future extensions.
- _abc_impl = <_abc._abc_data object>¶
- class pespace.detector.orbit.KeplerianGeocentric(arm_length, rotation_initial=0.0, revolution_initial=0.0, omega_rotation=1.9923849908611068e-05, lambda_ref=2.103121748653167, beta_ref=-0.08203047484373349, backend='taichi')[source]¶
Bases:
objectAnalytical Keplerian geocentric orbit model, used for Tianqin.
References
- Parameters:
arm_length (float)
rotation_initial (float)
revolution_initial (float)
omega_rotation (float)
lambda_ref (float)
beta_ref (float)
backend (str)
- __init__(arm_length, rotation_initial=0.0, revolution_initial=0.0, omega_rotation=1.9923849908611068e-05, lambda_ref=2.103121748653167, beta_ref=-0.08203047484373349, backend='taichi')[source]¶
Initialize the Keplerian geocentric orbit model.
- Parameters:
arm_length (float) – Arm length of the detector in meters.
rotation_initial (float, optional) – Initial phase of detector rotation around its center in radians, range \([0, 2\pi]\). Default is 0.0.
revolution_initial (float, optional) – Initial phase of detector revolution around the Sun in radians, range \([0, 2\pi]\). Default is 0.0.
omega_rotation (float, optional) – Angular velocity of detector rotation in rad/s. Default is \(2\pi/(3.65\text{days})\) for TianQin.
lambda_ref (float, optional) – Ecliptic longitude of the reference source in radians. Default is \(120.5/180*\pi\) for RX J0806.3+1527.
beta_ref (float, optional) – Ecliptic latitude of the reference source in radians. Default is \(-4.7/180*\pi\) for RX J0806.3+1527.
backend (str, optional) – Computation backend, either ‘taichi’ (default) or ‘jax’.
- Return type:
None
- class pespace.detector.orbit.KaplerianHeliocentric(arm_length, rotation_initial=0.0, revolution_initial=0.0, backend='taichi')[source]¶
Bases:
objectAnalytical Keplerian heliocentric orbit model, used for LISA and Taiji.
References
[1] [2] https://lisa-ldc.in2p3.fr/static/data/pdf/LDC-manual-Sangria.pdf
- Parameters:
arm_length (float)
rotation_initial (float)
revolution_initial (float)
backend (str)
- __init__(arm_length, rotation_initial=0.0, revolution_initial=0.0, backend='taichi')[source]¶
Initialize the Keplerian heliocentric orbit model.
- Parameters:
arm_length (float) – Arm length of the detector in meters.
rotation_initial (float, optional) – Initial phase of detector rotation around its center in radians, range \([0, 2\pi]\). Default is 0.0.
revolution_initial (float, optional) – Initial phase of detector revolution around the Sun in radians, range \([0, 2\pi]\). Default is 0.0.
backend (str, optional) – Computation backend, either ‘taichi’ (default) or ‘jax’.
- Return type:
None
- class pespace.detector.orbit._KeplerianGeocentricTaichi(orbit_params)[source]¶
Bases:
OrbitModelBaseTaichi backend for Keplerian geocentric orbit vector computation.
- get_constellation_vectors(time)[source]¶
Compute constellation vectors at a given time (taichi).
Only callable from within
@ti.kernelfunctions.- Parameters:
time (float) – Time in seconds at which to compute the constellation vectors.
- Returns:
Containing: - n1, n2, n3: Unit vectors along the three links; - x1, x2, x3: Position vectors of the three nodes in SSB frame (in seconds);
- Return type:
ConstellationVectorStruct
- arm_length_sec(time)[source]¶
Return the constant arm-length in seconds.
For analytic Keplerian orbits, the arm-length is a constant. The
timeparameter is retained only for interface consistency withOrbitModelBase. The call overhead could be eliminated by the backend of taichi or jax.- Parameters:
time (float) – Time in seconds.
- Returns:
Arm-length in seconds.
- Return type:
float
- _abc_impl = <_abc._abc_data object>¶
- _data_oriented = True¶
- class pespace.detector.orbit._KaplerianHeliocentricTaichi(orbit_params)[source]¶
Bases:
OrbitModelBaseTaichi backend for Keplerian heliocentric orbit vector computation.
- get_constellation_vectors(time)[source]¶
Compute constellation vectors at a given time (taichi).
Only callable from within
@ti.kernelfunctions.- Parameters:
time (float) – Time in seconds at which to compute the constellation vectors.
- Returns:
Containing: - n1, n2, n3: Unit vectors along the three links; - x1, x2, x3: Position vectors of the three nodes in SSB frame (in seconds);
- Return type:
ConstellationVectorStruct
- _abc_impl = <_abc._abc_data object>¶
- _data_oriented = True¶
- arm_length_sec(time)[source]¶
Return the constant arm-length in seconds.
For analytic Keplerian orbits, the arm-length is a constant. The
timeparameter is retained only for interface consistency withOrbitModelBase. The call overhead could be eliminated by the backend of taichi or jax.- Parameters:
time (float) – Time in seconds.
- Returns:
Arm-length in seconds.
- Return type:
float