diff --git a/src/hydro/Gizmo/hydro.h b/src/hydro/Gizmo/hydro.h index c59af05460157a756c15d8ca84af8a7834fde2d3..8da949feb2fb59ccf34b091bea4ecc65ea98614e 100644 --- a/src/hydro/Gizmo/hydro.h +++ b/src/hydro/Gizmo/hydro.h @@ -178,10 +178,10 @@ __attribute__((always_inline)) INLINE static void hydro_end_density( * @param timeBase Conversion factor between integer time and physical time. */ __attribute__((always_inline)) INLINE static void hydro_prepare_force( - struct part* restrict p, struct xpart* restrict xp) { + struct part* restrict p, struct xpart* restrict xp, double timeBase) { /* Set the physical time step */ - p->force.dt = get_timestep(p->time_bin, 0.); // MATTHIEU 0 + p->force.dt = get_timestep(p->time_bin, timeBase); // MATTHIEU 0 /* Initialize time step criterion variables */ p->timestepvars.vmax = 0.0f; @@ -375,7 +375,7 @@ __attribute__((always_inline)) INLINE static void hydro_end_force( * @param half_dt Half the physical time step. */ __attribute__((always_inline)) INLINE static void hydro_kick_extra( - struct part* p, struct xpart* xp, float dt) { + struct part* p, struct xpart* xp, float dt, integertime_t ti_current) { float oldm, oldp[3], anew[3]; const float half_dt = 0.5f * dt; // MATTHIEU @@ -429,9 +429,9 @@ __attribute__((always_inline)) INLINE static void hydro_kick_extra( /* Store gravitational acceleration and mass flux for next step */ p->gravity.old_a[0] = anew[0]; - p->gravity.old_a[1] = anew[1]; p->gravity.old_a[2] = anew[2]; p->gravity.old_mflux[0] = p->gravity.mflux[0]; + p->gravity.old_a[1] = anew[1]; p->gravity.old_mflux[1] = p->gravity.mflux[1]; p->gravity.old_mflux[2] = p->gravity.mflux[2]; } @@ -444,6 +444,8 @@ __attribute__((always_inline)) INLINE static void hydro_kick_extra( p->conserved.flux.momentum[1] = 0.0f; p->conserved.flux.momentum[2] = 0.0f; p->conserved.flux.energy = 0.0f; + + p->force.ti_end = get_integer_time_end(ti_current, p->time_bin); } /** diff --git a/src/hydro/Gizmo/hydro_iact.h b/src/hydro/Gizmo/hydro_iact.h index aba6bd53c1c9557929426c11a0986e5f02888874..a0d8ee4c0b4c7155efed3842a7d79f93e8f5fabe 100644 --- a/src/hydro/Gizmo/hydro_iact.h +++ b/src/hydro/Gizmo/hydro_iact.h @@ -413,8 +413,10 @@ __attribute__((always_inline)) INLINE static void runner_iact_fluxes_common( */ // MATTHIEU - const integertime_t pj_ti_end = 0; // get_integer_time_end(pj->time_bin); - const integertime_t pi_ti_end = 0; // get_integer_time_end(pi->time_bin); + // const integertime_t pj_ti_end = 0; // get_integer_time_end(pj->time_bin); + // const integertime_t pi_ti_end = 0; // get_integer_time_end(pi->time_bin); + integertime_t pi_ti_end = pi->force.ti_end; + integertime_t pj_ti_end = pj->force.ti_end; if (mode == 1 || pj_ti_end > pi_ti_end) { /* Store mass flux */ diff --git a/src/hydro/Gizmo/hydro_part.h b/src/hydro/Gizmo/hydro_part.h index f6592ca107d8d2c6970f34ebd3929e226b53a355..88b4daef6ffb049b562668c0fc3fd881e958d0f0 100644 --- a/src/hydro/Gizmo/hydro_part.h +++ b/src/hydro/Gizmo/hydro_part.h @@ -178,6 +178,9 @@ struct part { /* Physical time step of the particle. */ float dt; + /* Integer end time of the particle's time step. */ + integertime_t ti_end; + /* Actual velocity of the particle. */ float v_full[3]; diff --git a/src/kick.h b/src/kick.h index 7ccea7d26974297cfebc605808c4443633140ec1..1c6f5fb68eebbf12b2b1e68518e5b0e1b2e21b40 100644 --- a/src/kick.h +++ b/src/kick.h @@ -107,7 +107,7 @@ __attribute__((always_inline)) INLINE static void kick_part( } /* Extra kick work */ - hydro_kick_extra(p, xp, dt); + hydro_kick_extra(p, xp, dt, ti_end); if (p->gpart != NULL) gravity_kick_extra(p->gpart, dt); } diff --git a/src/runner.c b/src/runner.c index e8fe6723bf242ff604d4f5d1413f610e1a313682..ad078f204eaaa00b3c81ac12dda1fbbe3d77cd8d 100644 --- a/src/runner.c +++ b/src/runner.c @@ -599,6 +599,8 @@ void runner_do_ghost(struct runner *r, struct cell *c, int timer) { target_wcount - e->hydro_properties->delta_neighbours; const int max_smoothing_iter = e->hydro_properties->max_smoothing_iterations; int redo = 0, count = 0; + const double timeBase = e->timeBase; + integertime_t ti_current = e->ti_current; TIMER_TIC; @@ -679,7 +681,7 @@ void runner_do_ghost(struct runner *r, struct cell *c, int timer) { /* As of here, particle force variables will be set. */ /* Compute variables required for the force loop */ - hydro_prepare_force(p, xp); + hydro_prepare_force(p, xp, ti_current, timeBase); /* The particle force values are now set. Do _NOT_ try to read any particle density variables! */