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
Branches
Tags
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