Skip to content

Commit 2ccebf9

Browse files
authored
I-ALiRT - Updated frame of reference (IMAP-Science-Operations-Center#2318)
1 parent 7d6b7be commit 2ccebf9

3 files changed

Lines changed: 13 additions & 6 deletions

File tree

imap_processing/ialirt/generate_coverage.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,9 @@ def generate_coverage(
7777
dsn_outage_mask |= (time_range >= start_et) & (time_range <= end_et)
7878

7979
for station_name, (lon, lat, alt, min_elevation) in stations.items():
80-
_azimuth, elevation = calculate_azimuth_and_elevation(lon, lat, alt, time_range)
80+
_azimuth, elevation = calculate_azimuth_and_elevation(
81+
lon, lat, alt, time_range, obsref="IAU_EARTH"
82+
)
8183
visible = elevation > min_elevation
8284

8385
outage_mask = np.zeros(time_range.shape, dtype=bool)

imap_processing/ialirt/process_ephemeris.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ def calculate_azimuth_and_elevation(
7272
altitude: float,
7373
observation_time: float | np.ndarray,
7474
target: str = SpiceBody.IMAP.name,
75+
obsref: str = "ITRF93",
7576
) -> tuple:
7677
"""
7778
Calculate azimuth and elevation.
@@ -91,6 +92,9 @@ def calculate_azimuth_and_elevation(
9192
is to be computed. Expressed as ephemeris time, seconds past J2000 TDB.
9293
target : str (Optional)
9394
The target body. Default is "IMAP".
95+
obsref : str (Optional)
96+
Body-fixed, body-centered reference frame wrt
97+
observer's center.
9498
9599
Returns
96100
-------
@@ -120,7 +124,7 @@ def calculate_azimuth_and_elevation(
120124
elplsz=True, # Elevation increases from the XY plane toward +Z
121125
obspos=ground_station_position_ecef, # observer pos. to center of motion
122126
obsctr="EARTH", # Name of the center of motion
123-
obsref="IAU_EARTH", # Body-fixed, body-centered reference frame wrt
127+
obsref=obsref, # Body-fixed, body-centered reference frame wrt
124128
# observer's center
125129
)
126130
azimuth.append(np.rad2deg(azel_results[0][1]))
@@ -223,7 +227,7 @@ def build_output(
223227

224228
# For now, assume that kernel management will be handled by ensure_spice
225229
azimuth, elevation = calculate_azimuth_and_elevation(
226-
longitude, latitude, altitude, time_range
230+
longitude, latitude, altitude, time_range, obsref="ITRF93"
227231
)
228232

229233
output_dict["time"] = et_to_utc(time_range, format_str="ISOC")

imap_processing/tests/ialirt/unit/test_process_ephemeris.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,25 +80,26 @@ def test_calculate_azimuth_and_elevation(furnish_kernels):
8080
"pck00011.tpc",
8181
"de440s.bsp",
8282
"imap_spk_demo.bsp",
83+
"earth_latest_high_prec.bpc",
8384
]
8485
with furnish_kernels(kernels):
8586
azimuth_result, elevation_result = (
8687
process_ephemeris.calculate_azimuth_and_elevation(
87-
longitude, latitude, altitude, observation_time
88+
longitude, latitude, altitude, observation_time, obsref="ITRF93"
8889
)
8990
)
9091
assert azimuth_result, elevation_result is not None
9192

9293
# test array of observation times
93-
time_endpoints = ("2026 SEP 22 00:00:00", "2026 SEP 22 23:59:59")
94+
time_endpoints = ("2025 JUL 14 00:00:00", "2025 JUL 14 23:59:59")
9495
time_interval = int(1e3) # seconds between data points
9596
observation_time = np.arange(
9697
str_to_et(time_endpoints[0]), str_to_et(time_endpoints[1]), time_interval
9798
)
9899
with furnish_kernels(kernels):
99100
azimuth_result, elevation_result = (
100101
process_ephemeris.calculate_azimuth_and_elevation(
101-
longitude, latitude, altitude, observation_time
102+
longitude, latitude, altitude, observation_time, obsref="ITRF93"
102103
)
103104
)
104105
assert len(azimuth_result) == len(observation_time)

0 commit comments

Comments
 (0)