diff options
Diffstat (limited to 'src/puncture_tracker.c')
-rw-r--r-- | src/puncture_tracker.c | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/src/puncture_tracker.c b/src/puncture_tracker.c index f973d49..ac79fe6 100644 --- a/src/puncture_tracker.c +++ b/src/puncture_tracker.c @@ -30,12 +30,20 @@ PunctureTracker_Init (CCTK_ARGUMENTS) pt_loc_x[n] = initial_x[n]; pt_loc_y[n] = initial_y[n]; pt_loc_z[n] = initial_z[n]; + pt_vel_t[n] = cctk_time; + pt_vel_x[n] = 0.0; + pt_vel_y[n] = 0.0; + pt_vel_z[n] = 0.0; } else { // Initialise to some sensible but unimportant values pt_loc_t[n] = 0.0; pt_loc_x[n] = 0.0; pt_loc_y[n] = 0.0; pt_loc_z[n] = 0.0; + pt_vel_t[n] = 0.0; + pt_vel_x[n] = 0.0; + pt_vel_y[n] = 0.0; + pt_vel_z[n] = 0.0; } pt_loc_t_p[n] = 0.0; pt_loc_x_p[n] = 0.0; @@ -88,6 +96,7 @@ PunctureTracker_Track (CCTK_ARGUMENTS) pt_loc_z_p[n] = pt_loc_z[n]; pt_loc_t[n] = cctk_time; + pt_vel_t[n] = cctk_time; } } @@ -234,6 +243,9 @@ PunctureTracker_Track (CCTK_ARGUMENTS) pt_loc_x[n] = pt_loc_x_p[n] + dt * (- pt_betax[n]); pt_loc_y[n] = pt_loc_y_p[n] + dt * (- pt_betay[n]); pt_loc_z[n] = pt_loc_z_p[n] + dt * (- pt_betaz[n]); + pt_vel_x[n] = - pt_betax[n]; + pt_vel_y[n] = - pt_betay[n]; + pt_vel_z[n] = - pt_betaz[n]; } } @@ -241,22 +253,28 @@ PunctureTracker_Track (CCTK_ARGUMENTS) // Broadcast result - CCTK_REAL loc_local[3*max_num_tracked]; + CCTK_REAL loc_local[6*max_num_tracked]; /* 3 components for location, 3 components for velocity */ if (CCTK_MyProc(cctkGH) == 0) { for (int n = 0; n < max_num_tracked; ++ n) { loc_local[ n] = pt_loc_x[n]; loc_local[ max_num_tracked+n] = pt_loc_y[n]; loc_local[2*max_num_tracked+n] = pt_loc_z[n]; + loc_local[3*max_num_tracked+n] = pt_vel_x[n]; + loc_local[4*max_num_tracked+n] = pt_vel_y[n]; + loc_local[5*max_num_tracked+n] = pt_vel_z[n]; } } else { for (int n = 0; n < max_num_tracked; ++ n) { loc_local[ n] = 0.0; loc_local[ max_num_tracked+n] = 0.0; loc_local[2*max_num_tracked+n] = 0.0; + loc_local[3*max_num_tracked+n] = 0.0; + loc_local[4*max_num_tracked+n] = 0.0; + loc_local[5*max_num_tracked+n] = 0.0; } } - CCTK_REAL loc_global[3*max_num_tracked]; + CCTK_REAL loc_global[6*max_num_tracked]; /* 3 components for location, 3 components for velocity */ int const handle_sum = CCTK_ReductionHandle ("sum"); if (handle_sum < 0) { @@ -266,7 +284,7 @@ PunctureTracker_Track (CCTK_ARGUMENTS) int const ierr2 = CCTK_ReduceLocArrayToArray1D (cctkGH, -1, handle_sum, - loc_local, loc_global, 3*max_num_tracked, CCTK_VARIABLE_REAL); + loc_local, loc_global, 6*max_num_tracked, CCTK_VARIABLE_REAL); if (ierr2 < 0) { CCTK_WARN (CCTK_WARN_ALERT, "Reduction error"); goto label_free_param_table; @@ -276,6 +294,9 @@ PunctureTracker_Track (CCTK_ARGUMENTS) pt_loc_x[n] = loc_global[ n]; pt_loc_y[n] = loc_global[ max_num_tracked+n]; pt_loc_z[n] = loc_global[2*max_num_tracked+n]; + pt_vel_x[n] = loc_global[3*max_num_tracked+n]; + pt_vel_y[n] = loc_global[4*max_num_tracked+n]; + pt_vel_z[n] = loc_global[5*max_num_tracked+n]; } } |