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

Created stand-alone functions for the initialisation of part and gpart in the 0th step.

parent 3bbf81f6
......@@ -3527,10 +3527,9 @@ void engine_init_particles(struct engine *e, int flag_entropy_ICs,
/* Print the number of active tasks ? */
if (e->verbose) engine_print_task_counts(e);
/* Init the particle hydro data (by hand). */
for (size_t k = 0; k < s->nr_parts; k++)
hydro_init_part(&s->parts[k], &e->s->hs);
for (size_t k = 0; k < s->nr_gparts; k++) gravity_init_gpart(&s->gparts[k]);
/* Init the particle data (by hand). */
space_init_parts(s, e->verbose);
space_init_gparts(s, e->verbose);
/* Now, launch the calculation */
TIMER_TIC;
......@@ -3542,9 +3541,7 @@ void engine_init_particles(struct engine *e, int flag_entropy_ICs,
if (e->nodeID == 0) message("Converting internal energy variable.");
/* Apply the conversion */
for (size_t i = 0; i < s->nr_parts; ++i)
hydro_convert_quantities(&s->parts[i], &s->xparts[i]);
space_convert_quantities(e->s, e->verbose);
/* Correct what we did (e.g. in PE-SPH, need to recompute rho_bar) */
if (hydro_need_extra_init_loop) {
......@@ -3577,10 +3574,9 @@ void engine_init_particles(struct engine *e, int flag_entropy_ICs,
/* No drift this time */
engine_skip_drift(e);
/* Init the particle hydro data (by hand). */
for (size_t k = 0; k < s->nr_parts; k++)
hydro_init_part(&s->parts[k], &e->s->hs);
for (size_t k = 0; k < s->nr_gparts; k++) gravity_init_gpart(&s->gparts[k]);
/* Init the particle data (by hand). */
space_init_parts(e->s, e->verbose);
space_init_gparts(e->s, e->verbose);
/* Print the number of active tasks ? */
if (e->verbose) engine_print_task_counts(e);
......
......@@ -2551,7 +2551,7 @@ void space_synchronize_particle_positions(struct space *s) {
*
* Calls hydro_first_init_part() on all the particles
*/
void space_init_parts(struct space *s) {
void space_first_init_parts(struct space *s) {
const size_t nr_parts = s->nr_parts;
struct part *restrict p = s->parts;
......@@ -2583,7 +2583,7 @@ void space_init_parts(struct space *s) {
*
* Calls cooling_init_xpart() on all the particles
*/
void space_init_xparts(struct space *s) {
void space_first_init_xparts(struct space *s) {
const size_t nr_parts = s->nr_parts;
struct part *restrict p = s->parts;
......@@ -2600,7 +2600,7 @@ void space_init_xparts(struct space *s) {
*
* Calls gravity_first_init_gpart() on all the particles
*/
void space_init_gparts(struct space *s) {
void space_first_init_gparts(struct space *s) {
const size_t nr_gparts = s->nr_gparts;
struct gpart *restrict gp = s->gparts;
......@@ -2631,7 +2631,7 @@ void space_init_gparts(struct space *s) {
*
* Calls star_first_init_spart() on all the particles
*/
void space_init_sparts(struct space *s) {
void space_first_init_sparts(struct space *s) {
const size_t nr_sparts = s->nr_sparts;
struct spart *restrict sp = s->sparts;
......@@ -2657,6 +2657,62 @@ void space_init_sparts(struct space *s) {
}
}
/**
* @brief Calls the #part initialisation function on all particles in the space.
*
* @param s The #space.
* @param verbose Are we talkative?
*/
void space_init_parts(struct space *s, int verbose) {
const ticks tic = getticks();
for (size_t k = 0; k < s->nr_parts; k++)
hydro_init_part(&s->parts[k], &s->hs);
if (verbose)
message("took %.3f %s.", clocks_from_ticks(getticks() - tic),
clocks_getunit());
}
/**
* @brief Calls the #gpart initialisation function on all particles in the
* space.
*
* @param s The #space.
* @param verbose Are we talkative?
*/
void space_init_gparts(struct space *s, int verbose) {
const ticks tic = getticks();
for (size_t k = 0; k < s->nr_gparts; k++) gravity_init_gpart(&s->gparts[k]);
if (verbose)
message("took %.3f %s.", clocks_from_ticks(getticks() - tic),
clocks_getunit());
}
/**
* @brief Calls the #part quantities conversion function on all particles in the
* space.
*
* @param s The #space.
* @param verbose Are we talkative?
*/
void space_convert_quantities(struct space *s, int verbose) {
const ticks tic = getticks();
/* Apply the conversion */
for (size_t i = 0; i < s->nr_parts; ++i)
hydro_convert_quantities(&s->parts[i], &s->xparts[i]);
if (verbose)
message("took %.3f %s.", clocks_from_ticks(getticks() - tic),
clocks_getunit());
}
/**
* @brief Split the space into cells given the array of particles.
*
......@@ -2845,11 +2901,15 @@ void space_init(struct space *s, const struct swift_params *params,
hydro_space_init(&s->hs, s);
ticks tic = getticks();
message("first init...");
/* Set the particles in a state where they are ready for a run */
space_init_parts(s);
space_init_xparts(s);
space_init_gparts(s);
space_init_sparts(s);
space_first_init_parts(s);
space_first_init_xparts(s);
space_first_init_gparts(s);
space_first_init_sparts(s);
message("took %.3f %s.", clocks_from_ticks(getticks() - tic),
clocks_getunit());
/* Init the space lock. */
if (lock_init(&s->lock) != 0) error("Failed to create space spin-lock.");
......
......@@ -221,9 +221,9 @@ void space_synchronize_particle_positions(struct space *s);
void space_do_parts_sort();
void space_do_gparts_sort();
void space_do_sparts_sort();
void space_init_parts(struct space *s);
void space_init_gparts(struct space *s);
void space_init_sparts(struct space *s);
void space_init_parts(struct space *s, int verbose);
void space_init_gparts(struct space *s, int verbose);
void space_convert_quantities(struct space *s, int verbose);
void space_link_cleanup(struct space *s);
void space_check_drift_point(struct space *s, integertime_t ti_drift,
int multipole);
......
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