pespace.detector.orbit

Module for orbit models, used to define a specific detector.

Classes

KaplerianHeliocentric(arm_length[, ...])

Analytical Keplerian heliocentric orbit model, used for LISA and Taiji.

KeplerianGeocentric(arm_length[, ...])

Analytical Keplerian geocentric orbit model, used for Tianqin.

OrbitModelBase()

Abstract base class for orbit models of detector constellations.

_KaplerianHeliocentricTaichi(orbit_params)

Taichi backend for Keplerian heliocentric orbit vector computation.

_KeplerianGeocentricTaichi(orbit_params)

Taichi backend for Keplerian geocentric orbit vector computation.

class pespace.detector.orbit.OrbitModelBase[source]

Bases: ABC

Abstract 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: object

Analytical 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: object

Analytical Keplerian heliocentric orbit model, used for LISA and Taiji.

References

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: OrbitModelBase

Taichi 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.kernel functions.

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 time parameter is retained only for interface consistency with OrbitModelBase. 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: OrbitModelBase

Taichi 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.kernel functions.

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 time parameter is retained only for interface consistency with OrbitModelBase. 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