59 typedef struct tagSplineList {
63 struct tagSplineList*
next;
66 typedef struct tagEOBNRHMROMdata
78 typedef struct tagEOBNRHMROMdata_interp
86 typedef struct tagEOBNRHMROMdata_coeff
94 typedef struct tagListmodesEOBNRHMROMdata
99 struct tagListmodesEOBNRHMROMdata*
next;
102 typedef struct tagListmodesEOBNRHMROMdata_interp
107 struct tagListmodesEOBNRHMROMdata_interp*
next;
133 gsl_interp_accel* accel,
178 size_t size = strlen(dir) + 64;
187 snprintf(file_q, size,
"%s",
"EOBNRv2HMROM_q.dat");
188 snprintf(file_freq, size,
"%s%d%d%s",
"EOBNRv2HMROM_freq_", mode[0], mode[1],
".dat");
189 snprintf(file_Camp, size,
"%s%d%d%s",
"EOBNRv2HMROM_Camp_", mode[0], mode[1],
".dat");
190 snprintf(file_Cphi, size,
"%s%d%d%s",
"EOBNRv2HMROM_Cphi_", mode[0], mode[1],
".dat");
191 snprintf(file_Bamp, size,
"%s%d%d%s",
"EOBNRv2HMROM_Bamp_", mode[0], mode[1],
".dat");
192 snprintf(file_Bphi, size,
"%s%d%d%s",
"EOBNRv2HMROM_Bphi_", mode[0], mode[1],
".dat");
193 snprintf(file_shifttime, size,
"%s%d%d%s",
"EOBNRv2HMROM_shifttime_", mode[0], mode[1],
".dat");
194 snprintf(file_shiftphase, size,
"%s%d%d%s",
"EOBNRv2HMROM_shiftphase_", mode[0], mode[1],
".dat");
224 (*data)->q = gsl_vector_alloc(
nbwf);
225 (*data)->freq = gsl_vector_alloc(
nbfreq);
226 (*data)->Camp = gsl_matrix_alloc(
nk_amp,
nbwf);
227 (*data)->Cphi = gsl_matrix_alloc(
nk_phi,
nbwf);
230 (*data)->shifttime = gsl_vector_alloc(
nbwf);
231 (*data)->shiftphase = gsl_vector_alloc(
nbwf);
234 if(!data_interp) exit(1);
241 (*data_interp)->Camp_interp = NULL;
242 (*data_interp)->Cphi_interp = NULL;
243 (*data_interp)->shifttime_interp = NULL;
244 (*data_interp)->shiftphase_interp = NULL;
247 if(!data_coeff) exit(1);
254 (*data_coeff)->Camp_coeff = gsl_vector_alloc(
nk_amp);
255 (*data_coeff)->Cphi_coeff = gsl_vector_alloc(
nk_phi);
256 (*data_coeff)->shifttime_coeff =
XLALMalloc(
sizeof(
double));
257 (*data_coeff)->shiftphase_coeff =
XLALMalloc(
sizeof(
double));
260 if(
data->q) gsl_vector_free(
data->q);
261 if(
data->freq) gsl_vector_free(
data->freq);
262 if(
data->Camp) gsl_matrix_free(
data->Camp);
263 if(
data->Cphi) gsl_matrix_free(
data->Cphi);
264 if(
data->Bamp) gsl_matrix_free(
data->Bamp);
265 if(
data->Bphi) gsl_matrix_free(
data->Bphi);
266 if(
data->shifttime) gsl_vector_free(
data->shifttime);
267 if(
data->shiftphase) gsl_vector_free(
data->shiftphase);
300 if (
l%2 ) minus1l = -1;
305 COMPLEX16 factorp = 1./2*(Y + minus1l*Ymstar);
306 COMPLEX16 factorc = I/2*(Y - minus1l*Ymstar);
309 for ( j = 0; j < hlmtilde->
data->
length; ++j ) {
310 hlmtildevalue = (hlmtilde->
data->
data[j]);
311 datap[j] += factorp*hlmtildevalue;
312 datac[j] += factorc*hlmtildevalue;
321 for ( j = 0; j < hlmtilde->
data->
length; ++j ) {
322 hlmtildevalue = (hlmtilde->
data->
data[j]);
323 datap[j] += factorp*hlmtildevalue;
324 datac[j] += factorc*hlmtildevalue;
339 gsl_interp_accel* accel,
344 splinelist = appended;
346 if(
i == splinelist->
i ){
349 splinelist = splinelist->
next;
352 XLALPrintError(
"Error: Tried to add an already existing index to a SplineList");
361 splinelist->
spline = spline;
363 splinelist->
spline = NULL;
366 splinelist->
accel = accel;
368 splinelist->
accel = NULL;
371 splinelist->
next = appended;
373 splinelist->
next = NULL;
382 if( !splinelist )
return NULL;
385 while( itr->
i !=
i ){
387 if( !itr )
return NULL;
395 while( (pop = splinelist) ){
397 gsl_spline_free( pop->
spline );
400 gsl_interp_accel_free( pop->
accel );
403 splinelist = pop->
next;
419 if(
l == list->
l &&
m == list->
m ){
425 XLALPrintError(
"Error: Tried to add an already existing mode to a ListmodesEOBNRHMROMdata ");
440 list->
next = appended;
452 if( !list )
return NULL;
455 while( itr->
l !=
l || itr->
m !=
m ){
457 if( !itr )
return NULL;
476 if(
l == list->
l &&
m == list->
m ){
482 XLALPrintError(
"Error: Tried to add an already existing mode to a ListmodesEOBNRHMROMdata_interp ");
497 list->
next = appended;
509 if( !list )
return NULL;
512 while( itr->
l !=
l || itr->
m !=
m ){
514 if( !itr )
return NULL;
static SplineList * SplineList_GetElement(SplineList *const splinelist, const UINT4 i)
static void SplineList_Destroy(SplineList *list)
static void EOBNRHMROMdata_coeff_Init(EOBNRHMROMdata_coeff **data_coeff)
static void EOBNRHMROMdata_interp_Cleanup(EOBNRHMROMdata_interp *data_interp)
static ListmodesEOBNRHMROMdata * ListmodesEOBNRHMROMdata_GetMode(ListmodesEOBNRHMROMdata *const list, UINT4 l, INT4 m)
static void EOBNRHMROMdata_Cleanup(EOBNRHMROMdata *data)
static ListmodesEOBNRHMROMdata_interp * ListmodesEOBNRHMROMdata_interp_AddModeNoCopy(ListmodesEOBNRHMROMdata_interp *appended, EOBNRHMROMdata_interp *data, UINT4 l, INT4 m)
static INT4 FDAddMode(COMPLEX16FrequencySeries *hptilde, COMPLEX16FrequencySeries *hctilde, COMPLEX16FrequencySeries *hlmtilde, REAL8 theta, REAL8 phi, INT4 l, INT4 m, INT4 sym)
static ListmodesEOBNRHMROMdata_interp * ListmodesEOBNRHMROMdata_interp_GetMode(ListmodesEOBNRHMROMdata_interp *const list, UINT4 l, INT4 m)
static INT4 Read_Data_Mode(const char dir[], const INT4 mode[2], EOBNRHMROMdata *data)
static void EOBNRHMROMdata_interp_Init(EOBNRHMROMdata_interp **data_interp)
static void EOBNRHMROMdata_Init(EOBNRHMROMdata **data)
static SplineList * SplineList_AddElementNoCopy(SplineList *appended, gsl_spline *spline, gsl_interp_accel *accel, UINT4 i)
static void EOBNRHMROMdata_coeff_Cleanup(EOBNRHMROMdata_coeff *data_coeff)
static ListmodesEOBNRHMROMdata * ListmodesEOBNRHMROMdata_AddModeNoCopy(ListmodesEOBNRHMROMdata *appended, EOBNRHMROMdata *indata, UINT4 l, INT4 m)
static UNUSED int read_vector(const char dir[], const char fname[], gsl_vector *v)
static UNUSED int read_matrix(const char dir[], const char fname[], gsl_matrix *m)
void * XLALMalloc(size_t n)
COMPLEX16 XLALSpinWeightedSphericalHarmonic(REAL8 theta, REAL8 phi, int s, int l, int m)
int XLALPrintError(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
double * shiftphase_coeff
SplineList * shifttime_interp
SplineList * shiftphase_interp
EOBNRHMROMdata_interp * data_interp
struct tagListmodesEOBNRHMROMdata_interp * next
struct tagListmodesEOBNRHMROMdata * next
struct tagSplineList * next