10 inline double min(
double x,
double y)
14 int main(
int argc,
char** argv)
17 printf(
"Usage: %s <rmin> <eccentricity> [<mass ratio>] [PLOT] [<TMAX>]\n",
22 double rmin0 = atof(argv[1]);
24 printf(
"Error! rmin must be >=0\n");
27 double e0 = atof(argv[2]);
29 printf(
"Error! Orbit must be initially parabolic or bound.\n");
34 double t_end = 10000000.0;
39 printf(
"Error! mass ratio must be between 0 and 1\n");
44 if(argc>5)t_end = atof(argv[5]);
52 printf(
"Mbh = %.1lf\nMns = %.1lf\n", Mbh, Mns);
58 double t_post_merger = 400;
60 double Jspin = abh*Mbh*Mbh;
62 double a0 = Jspin+mu*L0;
65 if (e0<1 && r0 > rmin0*(1+e0)/(1-e0)) r0 = rmin0*(1+
e0)/(1-e0);
68 int N_plot = t_end/
dt;
70 geodesic geo(r0, phi0, E0, L0, dir, Jspin, mu);
72 bool success = geo.
integrate(t_end, N_plot, 0,
true);
75 FILE*
f = fopen(
"path_cc.dat",
"w");
76 for(
int i=0;
i<N_plot; ++
i)
77 fprintf(f,
"%1.6e %1.6e %1.6e %1.6e %1.6e %1.6e %1.6e %1.6e %1.6e\n",
88 double* r_LR =
new double[N_plot];
89 for(
int i=0;
i<N_plot; ++
i)
90 r_LR[
i] = 2*(1+cos(2*(acos(-
min(mu*geo.
Lt[
i] + Jspin, 1.))/3))) - geo.
r[
i];
91 tmerge =
interp(0, r_LR, geo.
t, N_plot, 1., 1.);
95 int Ntsig = (geo.
t[N_plot-1]+t_post_merger)/dt;
96 double* tsig =
new double[Ntsig];
97 for(
int i=0;
i<Ntsig; ++
i) tsig[
i] = dt*
i;
99 double* hr =
interp(tsig, Ntsig, geo.
t, geo.
hplus, N_plot, 0, 0);
100 double* hi =
interp(tsig, Ntsig, geo.
t, geo.
hcross, N_plot, 0, 0);
103 for(
int i=0;
i<Ntsig; ++
i)hsig[
i] =
Complex(hr[
i], hi[i]);
105 a_final = mu*geo.
Lt[N_plot-1] + abh*Mbh*Mbh;
107 double tstart_merger = tmerge;
108 if (tmerge>0)
irs_merger(dt, tmerge, tsig, hsig, Ntsig, a_final, tstart_merger);
110 f=fopen(
"wave_cc.dat",
"w");
111 for(
int i=0; i<Ntsig; ++
i)
112 fprintf(f,
"%1.8e %1.8e %1.8e\n", tsig[i], hsig[i].Re(), hsig[i].Im());
printf("total live time: non-zero lags = %10.1f \n", liveTot)
fprintf(stdout,"start=%f duration=%f rate=%f\n", x.start(), x.size()/x.rate(), x.rate())
int main(int argc, char **argv)
cout<< endl;cout<< "ts size = "<< ts.size()<< " ts rate = "<< ts.rate()<< endl;tf.Forward(ts, wdm);int levels=tf.getLevel();cout<< "tf size = "<< tf.size()<< endl;double dF=tf.resolution();double dT=1./(2 *dF);cout<< "rate(hz) : "<< RATE<< "\t layers : "<< nLAYERS<< "\t dF(hz) : "<< dF<< "\t dT(ms) : "<< dT *1000.<< endl;int itime=TIME_PIXEL_INDEX;int ifreq=FREQ_PIXEL_INDEX;int index=(levels+1)*itime+ifreq;double time=itime *dT;double freq=(ifreq >0)?ifreq *dF:dF/4;cout<< endl;cout<< "PIXEL TIME = "<< time<< " sec "<< endl;cout<< "PIXEL FREQ = "<< freq<< " Hz "<< endl;cout<< endl;wavearray< double > x
bool integrate(double D_t, int &N, double rmin=0, bool stop_alr=false)
double interp(double v, double *x, double *y, int n)
double energy_geo(double rp, double e, double a)
double min(double x, double y)
double ang_mom_eff_geo(double rp, double e, double Jspin, double mu)
void irs_merger(double dt, double tmerge, double *tsig, Complex *hsig, int lentsig, double a, double tstart=-1)