diff --git a/src/pressure_floor/GEAR/pressure_floor.h b/src/pressure_floor/GEAR/pressure_floor.h index 00a026b4f371fe2a0f0a2d429d0854ed3582e76b..642b36725a7d4859109ffb2bb559c865a52fe98e 100644 --- a/src/pressure_floor/GEAR/pressure_floor.h +++ b/src/pressure_floor/GEAR/pressure_floor.h @@ -70,7 +70,7 @@ __attribute__((always_inline)) static INLINE float pressure_floor_get_physical_pressure(const struct part* p, const float pressure_physical, const struct cosmology* cosmo) { - error("Not implemented"); + error("Not used."); return 0; } @@ -96,7 +96,12 @@ pressure_floor_get_comoving_pressure(const struct part* p, /* Compute the pressure floor */ float floor = kernel_gamma * kernel_gamma * p->h * p->h * rho * pressure_floor_props.constants * cosmo->a_inv; - floor -= p->pressure_floor_data.sigma2 * cosmo->a2_inv; + + /* Add the velocity dispersion */ + const float sigma2 = p->pressure_floor_data.sigma2 * cosmo->a2_inv; + if (sigma2 < floor) { + floor -= sigma2; + } floor *= a_coef * rho * hydro_one_over_gamma; return fmaxf(pressure_comoving, floor); diff --git a/src/star_formation/GEAR/star_formation.h b/src/star_formation/GEAR/star_formation.h index c9ab7432bc9147e8f4532346dfde2b0503e5aebf..83be20c50bd41dc6a4e794d5ea3c9711855b7626 100644 --- a/src/star_formation/GEAR/star_formation.h +++ b/src/star_formation/GEAR/star_formation.h @@ -303,9 +303,14 @@ __attribute__((always_inline)) INLINE static void star_formation_end_density( #ifdef SPHENIX_SPH /* Copy the velocity divergence */ xp->sf_data.div_v = p->viscosity.div_v; -#else + /* SPHENIX is already including the Hubble flow */ +#elif GADGET_SPH /* Copy the velocity divergence */ xp->sf_data.div_v = p->density.div_v; + xp->sf_data.div_v += hydro_dimension * cosmo->H; +#else +#error This scheme is not implemented. Different scheme apply the Hubble flow \ + at different place. Be careful about it. #endif }