Commit 05d2e45f authored by Matthieu Schaller's avatar Matthieu Schaller
Browse files

Added more conversion functions from comoving to physical for the thermodynamic quantities.

parent 0b4ee25b
......@@ -48,6 +48,7 @@ tests/swift_dopair_standard.dat
tests/brute_force_perturbed.dat
tests/swift_dopair_perturbed.dat
tests/test27cells
tests/test27cells_subset
tests/testPeriodicBC
tests/test125cells
tests/brute_force_27_standard.dat
......
......@@ -137,7 +137,7 @@ void cosmology_update(struct cosmology *c, integertime_t ti_current) {
c->a = a;
c->a_inv = a_inv;
c->a3_inv = a_inv * a_inv * a_inv;
c->a_factor_sig_vel =
c->a_factor_sound_speed =
pow(a, -1.5 * hydro_gamma_minus_one); /* a^{3*(1-gamma)/2} */
c->a_factor_grav_accel = a_inv * a_inv; /* 1 / a^2 */
c->a_factor_hydro_accel =
......@@ -458,7 +458,7 @@ void cosmology_init_no_cosmo(const struct swift_params *params,
c->a = 1.;
c->a_inv = 1.;
c->a3_inv = 1.;
c->a_factor_sig_vel = 1.;
c->a_factor_sound_speed = 1.;
c->a_factor_hydro_accel = 1.;
c->a_factor_grav_accel = 1.;
......
......@@ -41,8 +41,8 @@ struct cosmology {
/*! Inverse cube of the current expansion factor of the Universe */
double a3_inv;
/*! Power of the scale-factor used for signal-velocity conversion */
double a_factor_sig_vel;
/*! Power of the scale-factor used for sound-speed conversion */
double a_factor_sound_speed;
/*! Power of the scale-factor used for gravity accelerations */
double a_factor_grav_accel;
......
......@@ -42,7 +42,7 @@
#include "minmax.h"
/**
* @brief Returns the internal energy of a particle
* @brief Returns the comoving internal energy of a particle
*
* @param p The particle of interest
*/
......@@ -53,7 +53,7 @@ hydro_get_comoving_internal_energy(const struct part *restrict p) {
}
/**
* @brief Returns the internal energy of a particle
* @brief Returns the physical internal energy of a particle
*
* @param p The particle of interest.
* @param cosmo The cosmological model.
......@@ -66,16 +66,27 @@ hydro_get_physical_internal_energy(const struct part *restrict p,
}
/**
* @brief Returns the pressure of a particle
* @brief Returns the comoving pressure of a particle
*
* @param p The particle of interest
*/
__attribute__((always_inline)) INLINE static float hydro_get_pressure(
__attribute__((always_inline)) INLINE static float hydro_get_comoving_pressure(
const struct part *restrict p) {
return gas_pressure_from_entropy(p->rho, p->entropy);
}
/**
* @brief Returns the physical pressure of a particle
*
* @param p The particle of interest
*/
__attribute__((always_inline)) INLINE static float hydro_get_physical_pressure(
const struct part *restrict p, const struct cosmology *cosmo) {
return gas_pressure_from_entropy(p->rho * cosmo->a3_inv, p->entropy);
}
/**
* @brief Returns the comoving entropy of a particle
*
......@@ -100,16 +111,29 @@ __attribute__((always_inline)) INLINE static float hydro_get_physical_entropy(
}
/**
* @brief Returns the sound speed of a particle
* @brief Returns the comoving sound speed of a particle
*
* @param p The particle of interest
*/
__attribute__((always_inline)) INLINE static float hydro_get_soundspeed(
const struct part *restrict p) {
__attribute__((always_inline)) INLINE static float
hydro_get_comoving_soundspeed(const struct part *restrict p) {
return p->force.soundspeed;
}
/**
* @brief Returns the physical sound speed of a particle
*
* @param p The particle of interest
* @param cosmo The cosmological model.
*/
__attribute__((always_inline)) INLINE static float
hydro_get_physical_soundspeed(const struct part *restrict p,
const struct cosmology *cosmo) {
return cosmo->a_factor_sound_speed * p->force.soundspeed;
}
/**
* @brief Returns the comoving density of a particle
*
......@@ -209,7 +233,7 @@ __attribute__((always_inline)) INLINE static float hydro_compute_timestep(
/* CFL condition */
const float dt_cfl = 2.f * kernel_gamma * CFL * cosmo->a * p->h /
(cosmo->a_factor_sig_vel * p->force.v_sig);
(cosmo->a_factor_sound_speed * p->force.v_sig);
return dt_cfl;
}
......
......@@ -31,7 +31,7 @@ __attribute__((always_inline)) INLINE static void hydro_debug_particle(
p->x[0], p->x[1], p->x[2], p->v[0], p->v[1], p->v[2], xp->v_full[0],
xp->v_full[1], xp->v_full[2], p->a_hydro[0], p->a_hydro[1], p->a_hydro[2],
p->h, p->density.wcount, p->density.wcount_dh, p->mass, p->density.rho_dh,
p->rho, hydro_get_pressure(p), p->force.P_over_rho2, p->entropy,
p->rho, hydro_get_comoving_pressure(p), p->force.P_over_rho2, p->entropy,
p->entropy_dt, p->force.soundspeed, p->density.div_v, p->density.rot_v[0],
p->density.rot_v[1], p->density.rot_v[2], p->force.balsara,
p->force.v_sig, p->force.h_dt, p->time_bin);
......
......@@ -62,7 +62,7 @@ void convert_u(const struct engine* e, const struct part* p, float* ret) {
void convert_P(const struct engine* e, const struct part* p, float* ret) {
ret[0] = hydro_get_pressure(p);
ret[0] = hydro_get_comoving_pressure(p);
}
void convert_part_pos(const struct engine* e, const struct part* p,
......
/*******************************************************************************
* This file is part of SWIFT.
* Copyright (C) 2016 Matthieu Schaller (matthieu.schaller@durham.ac.uk).
......@@ -411,8 +410,8 @@ void dump_particle_fields(char *fileName, struct cell *main_cell,
#endif
hydro_get_comoving_entropy(&main_cell->parts[pid]),
hydro_get_comoving_internal_energy(&main_cell->parts[pid]),
hydro_get_pressure(&main_cell->parts[pid]),
hydro_get_soundspeed(&main_cell->parts[pid]),
hydro_get_comoving_pressure(&main_cell->parts[pid]),
hydro_get_comoving_soundspeed(&main_cell->parts[pid]),
main_cell->parts[pid].a_hydro[0], main_cell->parts[pid].a_hydro[1],
main_cell->parts[pid].a_hydro[2], main_cell->parts[pid].force.h_dt,
#if defined(GADGET2_SPH)
......
......@@ -137,8 +137,8 @@ void dump_indv_particle_fields(char *fileName, struct part *p) {
p->density.div_v,
#endif
hydro_get_comoving_entropy(p), hydro_get_comoving_internal_energy(p),
hydro_get_pressure(p), hydro_get_soundspeed(p), p->a_hydro[0],
p->a_hydro[1], p->a_hydro[2], p->force.h_dt,
hydro_get_comoving_pressure(p), hydro_get_comoving_soundspeed(p),
p->a_hydro[0], p->a_hydro[1], p->a_hydro[2], p->force.h_dt,
#if defined(GADGET2_SPH)
p->force.v_sig, p->entropy_dt, 0.f
#elif defined(DEFAULT_SPH)
......
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