Skip to content
Snippets Groups Projects
Commit 2c32b1e7 authored by Matthieu Schaller's avatar Matthieu Schaller
Browse files

Extended the modifications to the other schemes.

parent 23f1178d
No related branches found
No related tags found
1 merge request!307Fix cooling bug
...@@ -9,8 +9,8 @@ InternalUnitSystem: ...@@ -9,8 +9,8 @@ InternalUnitSystem:
# Parameters governing the time integration # Parameters governing the time integration
TimeIntegration: TimeIntegration:
time_begin: 0. # The starting time of the simulation (in internal units). time_begin: 0. # The starting time of the simulation (in internal units).
time_end: 10. # The end time of the simulation (in internal units). time_end: 10. # The end time of the simulation (in internal units).
dt_min: 1e-8 # The minimal time-step size of the simulation (in internal units). dt_min: 1e-5 # The minimal time-step size of the simulation (in internal units).
dt_max: 1e-1 # The maximal time-step size of the simulation (in internal units). dt_max: 1e-1 # The maximal time-step size of the simulation (in internal units).
# Parameters governing the conserved quantities statistics # Parameters governing the conserved quantities statistics
...@@ -40,7 +40,7 @@ IsothermalPotential: ...@@ -40,7 +40,7 @@ IsothermalPotential:
position_z: 0. position_z: 0.
vrot: 200. # Rotation speed of isothermal potential in internal units vrot: 200. # Rotation speed of isothermal potential in internal units
timestep_mult: 0.03 # Controls time step timestep_mult: 0.03 # Controls time step
epsilon: 0.1 # Softening for the isothermal potential epsilon: 1.0 # Softening for the isothermal potential
# Cooling parameters # Cooling parameters
LambdaCooling: LambdaCooling:
......
...@@ -360,8 +360,10 @@ __attribute__((always_inline)) INLINE static void hydro_kick_extra( ...@@ -360,8 +360,10 @@ __attribute__((always_inline)) INLINE static void hydro_kick_extra(
struct part *restrict p, struct xpart *restrict xp, float dt) { struct part *restrict p, struct xpart *restrict xp, float dt) {
/* Do not decrease the energy by more than a factor of 2*/ /* Do not decrease the energy by more than a factor of 2*/
const float u_change = p->u_dt * dt; if (p->u_dt < -0.5f * xp->u_full / dt) {
xp->u_full = max(xp->u_full + u_change, 0.5f * xp->u_full); p->u_dt = -0.5f * xp->u_full / dt;
}
xp->u_full += p->u_dt * dt;
/* Compute the pressure */ /* Compute the pressure */
const float pressure = gas_pressure_from_internal_energy(p->rho, xp->u_full); const float pressure = gas_pressure_from_internal_energy(p->rho, xp->u_full);
......
...@@ -394,11 +394,10 @@ __attribute__((always_inline)) INLINE static void hydro_kick_extra( ...@@ -394,11 +394,10 @@ __attribute__((always_inline)) INLINE static void hydro_kick_extra(
struct part *restrict p, struct xpart *restrict xp, float dt) { struct part *restrict p, struct xpart *restrict xp, float dt) {
/* Do not decrease the entropy (temperature) by more than a factor of 2*/ /* Do not decrease the entropy (temperature) by more than a factor of 2*/
const float entropy_change = p->entropy_dt * dt; if (p->entropy_dt < -0.5f * xp->entropy_full / dt) {
if (entropy_change > -0.5f * xp->entropy_full) p->entropy_dt = -0.5f * xp->entropy_full / dt;
xp->entropy_full += entropy_change; }
else xp->entropy_full += p->entropy_dt * dt;
xp->entropy_full *= 0.5f;
/* Compute the pressure */ /* Compute the pressure */
const float pressure = const float pressure =
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment