Finished moving the BH stuff into their compilation unit
This commit is contained in:
parent
19ce85da88
commit
df5d89a0c8
4 changed files with 127 additions and 236 deletions
104
phigrape.cpp
104
phigrape.cpp
|
|
@ -124,20 +124,6 @@ double DT_ACT_REDUCE;
|
|||
#endif
|
||||
|
||||
|
||||
|
||||
/* external potential... */
|
||||
|
||||
double3 x_bh1, x_bh2, v_bh1, v_bh2;
|
||||
|
||||
double pot_bh1, pot_bh2;
|
||||
double3 a_bh1, adot_bh1, a_bh2, adot_bh2;
|
||||
|
||||
//#include "n_bh.c"
|
||||
|
||||
//double3 a_pn1[7], adot_pn1[7], a_pn2[7], adot_pn2[7];
|
||||
|
||||
//#include "pn_bh_spin.c"
|
||||
|
||||
#ifdef ETICS
|
||||
int grapite_cep_index;
|
||||
#endif
|
||||
|
|
@ -452,76 +438,6 @@ inline double aarseth_step(const double eta, const double dt_tmp, const double3
|
|||
return sqrt(eta*(a1abs*a2dot1abs+adot1abs*adot1abs)/(adot1abs*a3dot1abs+a2dot1abs*a2dot1abs));
|
||||
}
|
||||
|
||||
void binary_smbh_influence_sphere_output(int i_bh1, int i_bh2, int ind_act[], int n_act, double timesteps, double time_cur, double factor, int inf_event[], Source_particle_list *source_particle_list)
|
||||
{
|
||||
//TODO !!IMPORTANT!! only open the file IF THERE IS ANYTHING TO WRITE!!!
|
||||
//TODO inf_event to be static or something?
|
||||
auto out = fopen("bbh_inf.dat", "a");
|
||||
|
||||
double m_bh1 = source_particle_list->m[0];
|
||||
double m_bh2 = source_particle_list->m[1];
|
||||
double3 x_bh1 = source_particle_list->x[0];
|
||||
double3 x_bh2 = source_particle_list->x[1];
|
||||
double3 v_bh1 = source_particle_list->v[0];
|
||||
double3 v_bh2 = source_particle_list->v[1];
|
||||
|
||||
double3 x_bbhc = (m_bh1*x_bh1 + m_bh2*x_bh2)/(m_bh1 + m_bh2);
|
||||
double3 v_bbhc = (m_bh1*v_bh1 + m_bh2*v_bh2)/(m_bh1 + m_bh2);
|
||||
|
||||
double DR2 = (x_bh1 - x_bh2).norm2();
|
||||
double DV2 = (v_bh1 - v_bh2).norm2();
|
||||
double EB = -(m_bh1 + m_bh2) / sqrt(DR2) + 0.5 * DV2;
|
||||
double SEMI_a = -0.5 * (m_bh1 + m_bh2)/EB;
|
||||
double SEMI_a2 = SQR(SEMI_a);
|
||||
|
||||
for (int i=0; i<n_act; i++) {
|
||||
int j_act = ind_act[i];
|
||||
if (j_act<2) continue;
|
||||
|
||||
double& pot_bh1 = source_particle_list->pot[0];
|
||||
double& pot_bh2 = source_particle_list->pot[1];
|
||||
double& m_act = source_particle_list->m[j_act];
|
||||
double3& x_act = source_particle_list->x[j_act];
|
||||
double3& v_act = source_particle_list->v[j_act];
|
||||
double& dt_act = source_particle_list->dt[j_act];
|
||||
double& pot_act = source_particle_list->pot[j_act];
|
||||
double tmp_r2 = (x_act - x_bbhc).norm2();
|
||||
|
||||
if (tmp_r2 < SEMI_a2*SQR(factor)) {
|
||||
|
||||
if (inf_event[j_act] == 0) {
|
||||
|
||||
fprintf(out,"INF1 %.6E %.16E %07d %07d %.6E % .6E % .6E % .6E % .6E % .6E % .6E %.6E % .6E % .6E % .6E % .6E % .6E % .6E % .6E %.6E % .6E % .6E % .6E % .6E % .6E % .6E % .6E %.6E %.6E % .6E % .6E % .6E % .6E % .6E % .6E % .6E %.6E \n",
|
||||
timesteps, time_cur, i, j_act,
|
||||
sqrt(DR2), x_bbhc[0], x_bbhc[1], x_bbhc[2], v_bbhc[0], v_bbhc[1], v_bbhc[2],
|
||||
m_bh1, x_bh1[0], x_bh1[1], x_bh1[2], v_bh1[0], v_bh1[1], v_bh1[2], pot_bh1,
|
||||
m_bh2, x_bh2[0], x_bh2[1], x_bh2[2], v_bh2[0], v_bh2[1], v_bh2[2], pot_bh2,
|
||||
sqrt(tmp_r2),
|
||||
m_act, x_act[0], x_act[1], x_act[2], v_act[0], v_act[1], v_act[2], pot_act,
|
||||
dt_act);
|
||||
|
||||
inf_event[j_act] = 1;
|
||||
}
|
||||
|
||||
} else {
|
||||
if (inf_event[j_act] == 1) {
|
||||
fprintf(out,"INF2 %.6E %.16E %07d %07d %.6E % .6E % .6E % .6E % .6E % .6E % .6E %.6E % .6E % .6E % .6E % .6E % .6E % .6E % .6E %.6E % .6E % .6E % .6E % .6E % .6E % .6E % .6E %.6E %.6E % .6E % .6E % .6E % .6E % .6E % .6E % .6E %.6E \n",
|
||||
timesteps, time_cur, i, ind_act[i],
|
||||
sqrt(DR2), x_bbhc[0], x_bbhc[1], x_bbhc[2], v_bbhc[0], v_bbhc[1], v_bbhc[2],
|
||||
m_bh1, x_bh1[0], x_bh1[1], x_bh1[2], v_bh1[0], v_bh1[1], v_bh1[2], pot_bh1,
|
||||
m_bh2, x_bh2[0], x_bh2[1], x_bh2[2], v_bh2[0], v_bh2[1], v_bh2[2], pot_bh2,
|
||||
sqrt(tmp_r2),
|
||||
m_act, x_act[0], x_act[1], x_act[2], v_act[0], v_act[1], v_act[2], pot_act,
|
||||
dt_act);
|
||||
}
|
||||
|
||||
inf_event[j_act] = 0;
|
||||
|
||||
} /* if (tmp_r2 < DR2*R_INF2) */
|
||||
|
||||
} /* i */
|
||||
fclose(out);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
|
|
@ -617,8 +533,6 @@ int main(int argc, char *argv[])
|
|||
double dt_bh = config->dt_bh;
|
||||
|
||||
if (myRank == rootRank) {
|
||||
if (config->binary_smbh_influence_sphere_output) for (int i=0; i<N; i++) inf_event[i] = 0; // WARNING N wasn't set yet!
|
||||
|
||||
printf("\n");
|
||||
printf("Begin the calculation of phi-GRAPE program on %03d processors\n", n_proc);
|
||||
printf("\n");
|
||||
|
|
@ -644,10 +558,10 @@ int main(int argc, char *argv[])
|
|||
out = fopen("bh_neighbors.dat", "w");
|
||||
fclose(out);
|
||||
}
|
||||
if (config->binary_smbh_influence_sphere_output) {
|
||||
out = fopen("bbh_inf.dat", "w");
|
||||
fclose(out);
|
||||
}
|
||||
// if (config->binary_smbh_influence_sphere_output) {
|
||||
// out = fopen("bbh_inf.dat", "w");
|
||||
// fclose(out);
|
||||
// }
|
||||
}
|
||||
|
||||
get_CPU_time(&CPU_time_real0, &CPU_time_user0, &CPU_time_syst0);
|
||||
|
|
@ -748,6 +662,10 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
black_hole_physics.set_softening(eps, config->live_smbh_custom_eps);
|
||||
|
||||
Binary_smbh_influence_sphere_output binary_smbh_influence_sphere_output(config->binary_smbh_influence_radius_factor, N, m, x, v, pot, dt);
|
||||
|
||||
Write_bh_nb_data write_bh_nb_data(config->live_smbh_neighbor_number, config->live_smbh_count, N, m, x, v);
|
||||
|
||||
#ifdef ETICS
|
||||
grapite_read_particle_tags(N, config->grapite_mask_file_name.c_str(), myRank, n_loc);
|
||||
grapite_set_dt_exp(config->dt_scf);
|
||||
|
|
@ -875,7 +793,7 @@ int main(int argc, char *argv[])
|
|||
if (config->live_smbh_output) black_hole_physics.write_bh_data(time_cur, m, x, v, pot, a, adot, dt);
|
||||
|
||||
/* Write BH NB data... */
|
||||
if (config->live_smbh_neighbor_output) write_bh_nb_data(config->live_smbh_neighbor_number, config->live_smbh_count, time_cur, N, m, x, v);
|
||||
if (config->live_smbh_neighbor_output) write_bh_nb_data(time_cur);
|
||||
|
||||
} /* if (myRank == rootRank) */
|
||||
|
||||
|
|
@ -1122,7 +1040,7 @@ int main(int argc, char *argv[])
|
|||
|
||||
if (config->binary_smbh_influence_sphere_output && (myRank == rootRank)) {
|
||||
//TODO clean up this mass. We don't want to have all these _act arrays; they are only needed for this lame function.
|
||||
binary_smbh_influence_sphere_output(i_bh1, i_bh2, ind_act, n_act, timesteps, time_cur, config->binary_smbh_influence_radius_factor, inf_event, &source_particle_list);
|
||||
binary_smbh_influence_sphere_output(ind_act, n_act, timesteps, time_cur);
|
||||
}
|
||||
|
||||
#ifdef TIMING
|
||||
|
|
@ -1170,7 +1088,7 @@ int main(int argc, char *argv[])
|
|||
if (config->live_smbh_output) black_hole_physics.write_bh_data(time_cur, m, x, v, pot, a, adot, dt);
|
||||
|
||||
/* Write BH NB data... */
|
||||
if (config->live_smbh_neighbor_output) write_bh_nb_data(config->live_smbh_neighbor_number, config->live_smbh_count, time_cur, N, m, x, v);
|
||||
if (config->live_smbh_neighbor_output) write_bh_nb_data(time_cur);
|
||||
|
||||
} /* if (myRank == rootRank) */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue