From 06e8dd7913371f36db07346ada94764054d01014 Mon Sep 17 00:00:00 2001
From: Vijay Varma <vvarma@caltech.edu>
Date: Tue, 9 Jun 2020 15:31:47 -0700
Subject: [PATCH] Exit gracefully when surrogate data is missing

This resolves Issue #291 for NRSur7dq4, NRSur7dq4Remnant and
NRSur3dq8Remnant.
---
 lalsimulation/lib/LALSimIMRPrecessingNRSur.c | 6 ++++++
 lalsimulation/lib/LALSimNRSur3dq8Remnant.c   | 3 +++
 lalsimulation/lib/LALSimNRSur7dq4Remnant.c   | 3 +++
 3 files changed, 12 insertions(+)

diff --git a/lalsimulation/lib/LALSimIMRPrecessingNRSur.c b/lalsimulation/lib/LALSimIMRPrecessingNRSur.c
index 0ac16692e0..7b5a7775b1 100644
--- a/lalsimulation/lib/LALSimIMRPrecessingNRSur.c
+++ b/lalsimulation/lib/LALSimIMRPrecessingNRSur.c
@@ -1832,6 +1832,9 @@ static PrecessingNRSurData* PrecessingNRSur_core(
 
     // Load surrogate data if needed. If not, just access the loaded data.
     PrecessingNRSurData *__sur_data = PrecessingNRSur_LoadData(approximant);
+    if (!__sur_data->setup) {
+        XLAL_ERROR_NULL(XLAL_EFAILED, "Error loading surrogate data.\n");
+    }
 
     // Make sure we didn't request any unavailable modes
     int ell, m;
@@ -2679,6 +2682,9 @@ int XLALPrecessingNRSurDynamics(
 
     // Load surrogate data if needed. If not, just access the loaded data.
     PrecessingNRSurData *__sur_data = PrecessingNRSur_LoadData(approximant);
+    if (!__sur_data->setup) {
+        XLAL_ERROR(XLAL_EFAILED, "Error loading surrogate data.\n");
+    }
 
     // Input spins at reference epoch
     // The input values are in the coorbital frame at omegaRef_dimless, but
diff --git a/lalsimulation/lib/LALSimNRSur3dq8Remnant.c b/lalsimulation/lib/LALSimNRSur3dq8Remnant.c
index a3e9abda67..bb6a07e3f2 100644
--- a/lalsimulation/lib/LALSimNRSur3dq8Remnant.c
+++ b/lalsimulation/lib/LALSimNRSur3dq8Remnant.c
@@ -276,6 +276,9 @@ int XLALNRSur3dq8Remnant(
 
     // Loaded surrogate data
     const AlignedSpinRemnantFitData *sur_data = &__lalsim_NRSur3dq8Remnant_data;
+    if (!sur_data->setup) {
+        XLAL_ERROR(XLAL_EFAILED, "Error loading surrogate data.\n");
+    }
 
     // assign size to dummy_worker
     gsl_vector *dummy_worker = gsl_vector_alloc(sur_data->params_dim);
diff --git a/lalsimulation/lib/LALSimNRSur7dq4Remnant.c b/lalsimulation/lib/LALSimNRSur7dq4Remnant.c
index b43ea7c5d7..ce65b7e2a2 100644
--- a/lalsimulation/lib/LALSimNRSur7dq4Remnant.c
+++ b/lalsimulation/lib/LALSimNRSur7dq4Remnant.c
@@ -274,6 +274,9 @@ int XLALNRSur7dq4Remnant(
 
     // Loaded surrogate data
     const PrecessingRemnantFitData *sur_data = &__lalsim_NRSur7dq4Remnant_data;
+    if (!sur_data->setup) {
+        XLAL_ERROR(XLAL_EFAILED, "Error loading surrogate data.\n");
+    }
 
     // assign size to dummy_worker
     gsl_vector *dummy_worker = gsl_vector_alloc(sur_data->params_dim);
-- 
GitLab