diff options
Diffstat (limited to 'src/tests/tng_parallel_read.c')
-rw-r--r-- | src/tests/tng_parallel_read.c | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/tests/tng_parallel_read.c b/src/tests/tng_parallel_read.c index 58863b0..824fc73 100644 --- a/src/tests/tng_parallel_read.c +++ b/src/tests/tng_parallel_read.c @@ -31,7 +31,7 @@ int main(int argc, char **argv) int64_t n_particles, n_values_per_frame, n_frame_sets, n_frames; int64_t n_frames_per_frame_set, tot_n_frames = 0; char data_type; - int i, j; + int i, j, fail; int64_t particle = 0, local_first_frame, local_last_frame; char atom_name[64], res_name[64]; tng_trajectory_frame_set_t frame_set = 0; @@ -89,10 +89,12 @@ int main(int argc, char **argv) { printf("Particle name not found\n"); } + + fail = 0; #pragma omp parallel \ private (n_frames, n_particles, n_values_per_frame, \ - local_first_frame, local_last_frame, j) \ + local_first_frame, local_last_frame, j, fail) \ firstprivate (local_traj, local_positions, frame_set)\ shared(data_type, traj, n_frame_sets, particle_pos, particle, i, tot_n_frames)\ default(none) @@ -107,7 +109,7 @@ default(none) { printf("FAILED finding frame set %d!\n", i); tot_n_frames = 0; - break; + fail = 1; } if(tng_particle_data_get(local_traj, TNG_TRAJ_POSITIONS, &local_positions, &n_frames, &n_particles, &n_values_per_frame, @@ -115,18 +117,21 @@ default(none) { printf("FAILED getting particle data\n"); tot_n_frames = 0; - break; + fail = 1; } - tng_current_frame_set_get(local_traj, &frame_set); - tng_frame_set_frame_range_get(local_traj, frame_set, &local_first_frame, &local_last_frame); -// printf("Frame %"PRId64"-%"PRId64":\n", local_first_frame, local_last_frame); -// printf("%"PRId64" %"PRId64" %"PRId64"\n", n_frames, n_particles, n_values_per_frame); - tot_n_frames += n_frames; - for(j = 0; j < n_frames; j++) + if(!fail) { - particle_pos[local_first_frame + j][0] = local_positions[j][particle][0]; - particle_pos[local_first_frame + j][1] = local_positions[j][particle][1]; - particle_pos[local_first_frame + j][2] = local_positions[j][particle][2]; + tng_current_frame_set_get(local_traj, &frame_set); + tng_frame_set_frame_range_get(local_traj, frame_set, &local_first_frame, &local_last_frame); + // printf("Frame %"PRId64"-%"PRId64":\n", local_first_frame, local_last_frame); + // printf("%"PRId64" %"PRId64" %"PRId64"\n", n_frames, n_particles, n_values_per_frame); + tot_n_frames += n_frames; + for(j = 0; j < n_frames; j++) + { + particle_pos[local_first_frame + j][0] = local_positions[j][particle][0]; + particle_pos[local_first_frame + j][1] = local_positions[j][particle][1]; + particle_pos[local_first_frame + j][2] = local_positions[j][particle][2]; + } } } |