int main(int argc, char *argv[]) { float timeStep = 0.1f; uint32_t nIntegrations = 1000; uint32_t num_particles_x = 16; uint32_t num_particles_y = 16; uint32_t num_particles = num_particles_x * num_particles_y; uint32_t num_levels = logf(num_particles) / logf(4.f); uint32_t num_coefficients = 4; uint32_t memory_size = 256 * 1024 * 1024; initialize_data(memory_size, num_particles_x, num_particles_y, num_levels, num_coefficients); for(uint32_t loop = 0; loop < nIntegrations; loop++) { calculate_multipoles(); reset_forces(); calculate_forces(); integrate(timeStep); } const char filename[] = "out.txt"; debug_write_positions_to_file(filename); return 0; }
void MultisphereParallel::restart(double *list) { bool dummy = false; int m = 0, nrecv_this; int nbody_all_old = static_cast<int> (list[m++]); nbody_ = nbody_all_ = 0; for(int i = 0; i < nbody_all_old; i++) { nrecv_this = static_cast<int>(list[m]); double *x_bnd = &(list[m+1]); if(domain->is_in_subdomain(x_bnd)) { customValues_.addZeroElement(); customValues_.deleteRestartElement(nbody_,dummy,dummy,dummy); customValues_.popElemFromBuffer(&(list[m+4]),OPERATION_RESTART,dummy,dummy,dummy); nbody_++; } m += nrecv_this; } // do initialization tasks MPI_Sum_Scalar(nbody_,nbody_all_,world); generate_map(); reset_forces(true); }