From 517a2f4fb21d41d80092ea8e0e3dfdcbc07b81df Mon Sep 17 00:00:00 2001 From: MintoDA1 <51412913+MintoDA1@users.noreply.github.com> Date: Wed, 2 Aug 2023 13:04:50 -0400 Subject: [PATCH] Fixed issues that were causing the horizons initial conditions generator to fail if a valid body could not be identified. --- python/swiftest/swiftest/init_cond.py | 13 ++++++++----- python/swiftest/swiftest/simulation_class.py | 9 +++++++-- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/python/swiftest/swiftest/init_cond.py b/python/swiftest/swiftest/init_cond.py index bf72b8bad..365533950 100644 --- a/python/swiftest/swiftest/init_cond.py +++ b/python/swiftest/swiftest/init_cond.py @@ -225,7 +225,7 @@ def get_altid(errstr,exclude_spacecraft=True): altname =[jpl.table['targetname'][0]] except Exception as e: altid,altname = get_altid(str(e)) - if altid is not None: # Return the first matching id + if altid is not None and len(altid) >0: # Return the first matching id id = altid[0] jpl = Horizons(id=id, location='@sun', epochs={'start': ephemerides_start_date, 'stop': ephemerides_end_date, @@ -340,9 +340,12 @@ def solar_system_horizons(name: str, print(f"Fetching ephemerides data for {ephemeris_id} from JPL/Horizons") jpl,altid,altname = horizons_query(ephemeris_id,ephemerides_start_date) - print(f"Found ephemerides data for {altname[0]} ({altid[0]}) from JPL/Horizons") - if name == None: - name = altname[0] + if jpl is not None: + print(f"Found ephemerides data for {altname[0]} ({altid[0]}) from JPL/Horizons") + if name == None: + name = altname[0] + else: + return None if param['IN_FORM'] == 'XV': rx = jpl.vectors()['x'][0] * DCONV @@ -380,7 +383,7 @@ def solar_system_horizons(name: str, # Generate planet value vectors if (param['RHILL_PRESENT']): - rhill = jpl.elements()['a'][0] * DCONV * (3 * MSun_over_Mpl[name]) ** (-THIRDLONG) + rhill = jpl.elements()['a'][0] * DCONV * (3 * Gmass / GMcb) ** (-THIRDLONG) if (param['ROTATION']): rot *= param['TU2S'] diff --git a/python/swiftest/swiftest/simulation_class.py b/python/swiftest/swiftest/simulation_class.py index 809ca5615..2357d3657 100644 --- a/python/swiftest/swiftest/simulation_class.py +++ b/python/swiftest/swiftest/simulation_class.py @@ -2232,10 +2232,15 @@ def add_solar_system_body(self, body_list = [] for i,n in enumerate(name): - body_list.append(init_cond.solar_system_horizons(n, self.param, date, ephemeris_id=ephemeris_id[i])) + body = init_cond.solar_system_horizons(n, self.param, date, ephemeris_id=ephemeris_id[i]) + if body is not None: + body_list.append(body) #Convert the list receieved from the solar_system_horizons output and turn it into arguments to vec2xr - if len(body_list) == 1: + if len(body_list) == 0: + print("No valid bodies found") + return + elif len(body_list) == 1: values = list(np.hsplit(np.array(body_list[0],dtype=np.dtype(object)),17)) else: values = list(np.squeeze(np.hsplit(np.array(body_list,np.dtype(object)),17)))