Commit cd1ba96e authored by Matthieu Schaller's avatar Matthieu Schaller
Browse files

Correctly count the number of particles for the messages in main().

parent cd9e965c
...@@ -440,6 +440,9 @@ int main(int argc, char *argv[]) { ...@@ -440,6 +440,9 @@ int main(int argc, char *argv[]) {
/* Genesis 1.1: And then, there was time ! */ /* Genesis 1.1: And then, there was time ! */
clocks_set_cpufreq(cpufreq); clocks_set_cpufreq(cpufreq);
/* Are we running with gravity */
const int with_gravity = (with_self_gravity || with_external_gravity);
/* How vocal are we ? */ /* How vocal are we ? */
const int talking = (verbose == 1 && myrank == 0) || (verbose == 2); const int talking = (verbose == 1 && myrank == 0) || (verbose == 2);
...@@ -863,25 +866,24 @@ int main(int argc, char *argv[]) { ...@@ -863,25 +866,24 @@ int main(int argc, char *argv[]) {
#if defined(HAVE_HDF5) #if defined(HAVE_HDF5)
#if defined(WITH_MPI) #if defined(WITH_MPI)
#if defined(HAVE_PARALLEL_HDF5) #if defined(HAVE_PARALLEL_HDF5)
read_ic_parallel( read_ic_parallel(ICfileName, &us, dim, &parts, &gparts, &sparts, &bparts,
ICfileName, &us, dim, &parts, &gparts, &sparts, &bparts, &Ngas, &Ngpart, &Ngas, &Ngpart, &Ngpart_background, &Nspart, &Nbpart,
&Ngpart_background, &Nspart, &Nbpart, &flag_entropy_ICs, with_hydro, &flag_entropy_ICs, with_hydro, with_gravity, with_stars,
(with_external_gravity || with_self_gravity), with_stars, with_black_holes, cleanup_h, cleanup_sqrt_a, cosmo.h,
with_black_holes, cleanup_h, cleanup_sqrt_a, cosmo.h, cosmo.a, myrank, cosmo.a, myrank, nr_nodes, MPI_COMM_WORLD, MPI_INFO_NULL,
nr_nodes, MPI_COMM_WORLD, MPI_INFO_NULL, nr_threads, dry_run); nr_threads, dry_run);
#else #else
read_ic_serial( read_ic_serial(ICfileName, &us, dim, &parts, &gparts, &sparts, &bparts,
ICfileName, &us, dim, &parts, &gparts, &sparts, &bparts, &Ngas, &Ngpart, &Ngas, &Ngpart, &Ngpart_background, &Nspart, &Nbpart,
&Ngpart_background, &Nspart, &Nbpart, &flag_entropy_ICs, with_hydro, &flag_entropy_ICs, with_hydro, with_gravity, with_stars,
(with_external_gravity || with_self_gravity), with_stars, with_black_holes, cleanup_h, cleanup_sqrt_a, cosmo.h,
with_black_holes, cleanup_h, cleanup_sqrt_a, cosmo.h, cosmo.a, myrank, cosmo.a, myrank, nr_nodes, MPI_COMM_WORLD, MPI_INFO_NULL,
nr_nodes, MPI_COMM_WORLD, MPI_INFO_NULL, nr_threads, dry_run); nr_threads, dry_run);
#endif #endif
#else #else
read_ic_single(ICfileName, &us, dim, &parts, &gparts, &sparts, &bparts, read_ic_single(ICfileName, &us, dim, &parts, &gparts, &sparts, &bparts,
&Ngas, &Ngpart, &Ngpart_background, &Nspart, &Nbpart, &Ngas, &Ngpart, &Ngpart_background, &Nspart, &Nbpart,
&flag_entropy_ICs, with_hydro, &flag_entropy_ICs, with_hydro, with_gravity, with_stars,
(with_external_gravity || with_self_gravity), with_stars,
with_black_holes, cleanup_h, cleanup_sqrt_a, cosmo.h, with_black_holes, cleanup_h, cleanup_sqrt_a, cosmo.h,
cosmo.a, nr_threads, dry_run); cosmo.a, nr_threads, dry_run);
#endif #endif
...@@ -922,11 +924,12 @@ int main(int argc, char *argv[]) { ...@@ -922,11 +924,12 @@ int main(int argc, char *argv[]) {
/* Get the total number of particles across all nodes. */ /* Get the total number of particles across all nodes. */
long long N_total[swift_type_count + 1] = {0}; long long N_total[swift_type_count + 1] = {0};
const long long Nbaryons = Ngas + Nspart + Nbpart; long long Nbaryons = Ngas + Nspart + Nbpart;
#if defined(WITH_MPI) #if defined(WITH_MPI)
long long N_long[swift_type_count + 1] = {0}; long long N_long[swift_type_count + 1] = {0};
N_long[swift_type_gas] = Ngas; N_long[swift_type_gas] = Ngas;
N_long[swift_type_dark_matter] = Ngpart - Ngpart_background - Nbaryons; N_long[swift_type_dark_matter] =
with_gravity ? Ngpart - Ngpart_background - Nbaryons : 0;
N_long[swift_type_dark_matter_background] = Ngpart_background; N_long[swift_type_dark_matter_background] = Ngpart_background;
N_long[swift_type_stars] = Nspart; N_long[swift_type_stars] = Nspart;
N_long[swift_type_black_hole] = Nbpart; N_long[swift_type_black_hole] = Nbpart;
...@@ -935,7 +938,8 @@ int main(int argc, char *argv[]) { ...@@ -935,7 +938,8 @@ int main(int argc, char *argv[]) {
MPI_SUM, MPI_COMM_WORLD); MPI_SUM, MPI_COMM_WORLD);
#else #else
N_total[swift_type_gas] = Ngas; N_total[swift_type_gas] = Ngas;
N_total[swift_type_dark_matter] = Ngpart - Ngpart_background - Nbaryons; N_total[swift_type_dark_matter] =
with_gravity ? Ngpart - Ngpart_background - Nbaryons : 0;
N_total[swift_type_dark_matter_background] = Ngpart_background; N_total[swift_type_dark_matter_background] = Ngpart_background;
N_total[swift_type_stars] = Nspart; N_total[swift_type_stars] = Nspart;
N_total[swift_type_black_hole] = Nbpart; N_total[swift_type_black_hole] = Nbpart;
...@@ -1009,19 +1013,24 @@ int main(int argc, char *argv[]) { ...@@ -1009,19 +1013,24 @@ int main(int argc, char *argv[]) {
if (with_cosmology && with_self_gravity && !dry_run) if (with_cosmology && with_self_gravity && !dry_run)
space_check_cosmology(&s, &cosmo, myrank); space_check_cosmology(&s, &cosmo, myrank);
/* Also update the total counts (in case of changes due to replication) */ /* Also update the total counts (in case of changes due to replication) */
Nbaryons = s.nr_parts + s.nr_sparts + s.nr_bparts;
#if defined(WITH_MPI) #if defined(WITH_MPI)
N_long[0] = s.nr_parts; N_long[swift_type_gas] = s.nr_parts;
N_long[1] = s.nr_gparts; N_long[swift_type_dark_matter] =
N_long[2] = s.nr_sparts; with_gravity ? s.nr_gparts - Ngpart_background - Nbaryons : 0;
N_long[3] = s.nr_bparts; N_long[swift_type_count] = s.nr_gparts;
MPI_Allreduce(&N_long, &N_total, 4, MPI_LONG_LONG_INT, MPI_SUM, N_long[swift_type_stars] = s.nr_sparts;
MPI_COMM_WORLD); N_long[swift_type_black_hole] = s.nr_bparts;
MPI_Allreduce(&N_long, &N_total, swift_type_count + 1, MPI_LONG_LONG_INT,
MPI_SUM, MPI_COMM_WORLD);
#else #else
N_total[0] = s.nr_parts; N_total[swift_type_gas] = s.nr_parts;
N_total[1] = s.nr_gparts; N_total[swift_type_dark_matter] =
N_total[2] = s.nr_sparts; with_gravity ? s.nr_gparts - Ngpart_background - Nbaryons : 0;
N_total[3] = s.nr_bparts; N_total[swift_type_count] = s.nr_gparts;
N_total[swift_type_stars] = s.nr_sparts;
N_total[swift_type_black_hole] = s.nr_bparts;
#endif #endif
/* Say a few nice things about the space we just created. */ /* Say a few nice things about the space we just created. */
...@@ -1045,7 +1054,7 @@ int main(int argc, char *argv[]) { ...@@ -1045,7 +1054,7 @@ int main(int argc, char *argv[]) {
"ERROR: Running with hydrodynamics but no gas particles found in the " "ERROR: Running with hydrodynamics but no gas particles found in the "
"ICs!"); "ICs!");
} }
if ((with_self_gravity || with_external_gravity) && N_total[1] == 0) { if (with_gravity && N_total[1] == 0) {
error( error(
"ERROR: Running with gravity but no gravity particles found in " "ERROR: Running with gravity but no gravity particles found in "
"the ICs!"); "the ICs!");
...@@ -1108,12 +1117,13 @@ int main(int argc, char *argv[]) { ...@@ -1108,12 +1117,13 @@ int main(int argc, char *argv[]) {
/* Get some info to the user. */ /* Get some info to the user. */
if (myrank == 0) { if (myrank == 0) {
long long N_DM = N_total[1] - N_total[2] - N_total[3] - N_total[0]; const long long N_DM = N_total[swift_type_dark_matter] +
N_total[swift_type_dark_matter_background];
message( message(
"Running on %lld gas particles, %lld stars particles %lld black " "Running on %lld gas particles, %lld stars particles %lld black "
"hole particles and %lld DM particles (%lld gravity particles)", "hole particles and %lld DM particles (%lld gravity particles)",
N_total[0], N_total[2], N_total[3], N_total[1] > 0 ? N_DM : 0, N_total[swift_type_gas], N_total[swift_type_stars],
N_total[1]); N_total[swift_type_black_hole], N_DM, N_total[swift_type_count]);
message( message(
"from t=%.3e until t=%.3e with %d ranks, %d threads / rank and %d " "from t=%.3e until t=%.3e with %d ranks, %d threads / rank and %d "
"task queues / rank (dt_min=%.3e, dt_max=%.3e)...", "task queues / rank (dt_min=%.3e, dt_max=%.3e)...",
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment