Gamma * gamma_spline_calc_little_gamma (GammaSpline *gs, double * omega) { // without the one over omega if (!gstimer) { gstimer = g_timer_new(); g_timer_start(gstimer); } else g_timer_continue(gstimer); int q=0; double kc; int Nkc = 16384; Gamma * g = gamma_new (Nkc); double dkc=2*KCMAX/Nkc; double denom=pow(KCMAX,4); for (kc=-KCMAX+dkc;kc<KCMAX;kc=kc+dkc) { complex double a = gsl_interp_eval(gs->wx_spline_re,gs->k, gs->Wxr, kc,gs->w_accel)+I*gsl_interp_eval(gs->wx_spline_im,gs->k,gs->Wxi,kc,gs->w_accel); double b = gsl_interp_eval_deriv(gs->phi_spline,gs->k, gs->phi, kc,gs->phi_accel); omega[q]=b; double damp = exp(-4*pow(fabs(kc),4)/denom); g->x[q]=a*damp; complex double c = gsl_interp_eval(gs->wy_spline_re,gs->k,gs->Wyr,kc,gs->w_accel)+I*gsl_interp_eval(gs->wy_spline_im,gs->k,gs->Wyi,kc,gs->w_accel); g->y[q]=c*damp; complex double d = gsl_interp_eval(gs->wz_spline_re,gs->k,gs->Wzr,kc,gs->w_accel)+I*gsl_interp_eval(gs->wz_spline_im,gs->k,gs->Wzi,kc,gs->w_accel); g->z[q]=d*damp; q++; } g_timer_stop(gstimer); return g; }
double gsl_spline_eval_deriv (const gsl_spline * spline, double x, gsl_interp_accel * a) { return gsl_interp_eval_deriv (spline->interp, spline->x, spline->y, x, a); }
static double eos_dedp_of_p_tabular(double p, LALSimNeutronStarEOS * eos) { double dedp; dedp = gsl_interp_eval_deriv(eos->data.tabular->e_of_p_interp, eos->data.tabular->pdat, eos->data.tabular->edat, p, eos->data.tabular->e_of_p_acc); return dedp; }
double * gamma_spline_energy(GammaSpline *gs, GList * const sd, double kc) { int NB = model->total_bands; size_t m; double * en = double_array_calloc(NB); for (m=0;m<NB;m++) { gamma_spline_reset(gs,sd,m,6,FALSE); en[m]=gsl_interp_eval_deriv(gs->phi_spline,gs->k,en,kc,gs->phi_accel)*1240.7/3e5/2/M_PI; } return en; }