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

Cleaned up material for merge

parent 8637788b
No related branches found
No related tags found
1 merge request!252Implementation Pressure entropy SPH
...@@ -432,40 +432,4 @@ __attribute__((always_inline)) INLINE static float pow_one_over_gamma(float x) { ...@@ -432,40 +432,4 @@ __attribute__((always_inline)) INLINE static float pow_one_over_gamma(float x) {
#endif #endif
} }
/**
* @brief Return the argument to the power one minus two over the adiabatic
* index
*
* Computes \f$x^{1 - \frac{2}{\gamma}}\f$.
*
* @param x Argument
* @return Argument to the power one minus two over the adiabatic index
*/
__attribute__((always_inline)) INLINE static float pow_one_minus_two_over_gamma(
float x) {
#if defined(HYDRO_GAMMA_5_3)
return powf(x, -0.2f);
#elif defined(HYDRO_GAMMA_7_5)
return powf(x, -0.428571429f);
#elif defined(HYDRO_GAMMA_4_3)
return 1.f / sqrtf(x);
#elif defined(HYDRO_GAMMA_2_1)
return 1.f;
#else
error("The adiabatic index is not defined !");
return 0.f;
#endif
}
#endif /* SWIFT_ADIABATIC_INDEX_H */ #endif /* SWIFT_ADIABATIC_INDEX_H */
...@@ -40,9 +40,9 @@ ...@@ -40,9 +40,9 @@
#define const_isothermal_internal_energy 20.2615290634f #define const_isothermal_internal_energy 20.2615290634f
/* Dimensionality of the problem */ /* Dimensionality of the problem */
//#define HYDRO_DIMENSION_3D #define HYDRO_DIMENSION_3D
//#define HYDRO_DIMENSION_2D //#define HYDRO_DIMENSION_2D
#define HYDRO_DIMENSION_1D //#define HYDRO_DIMENSION_1D
/* Hydrodynamical adiabatic index. */ /* Hydrodynamical adiabatic index. */
#define HYDRO_GAMMA_5_3 #define HYDRO_GAMMA_5_3
...@@ -64,8 +64,8 @@ ...@@ -64,8 +64,8 @@
/* SPH variant to use */ /* SPH variant to use */
//#define MINIMAL_SPH //#define MINIMAL_SPH
//#define GADGET2_SPH #define GADGET2_SPH
#define HOPKINS_PE_SPH //#define HOPKINS_PE_SPH
//#define DEFAULT_SPH //#define DEFAULT_SPH
//#define GIZMO_SPH //#define GIZMO_SPH
......
...@@ -56,9 +56,6 @@ void hydro_read_particles(struct part* parts, struct io_props* list, ...@@ -56,9 +56,6 @@ void hydro_read_particles(struct part* parts, struct io_props* list,
parts, mass); parts, mass);
list[3] = io_make_input_field("SmoothingLength", FLOAT, 1, COMPULSORY, list[3] = io_make_input_field("SmoothingLength", FLOAT, 1, COMPULSORY,
UNIT_CONV_LENGTH, parts, h); UNIT_CONV_LENGTH, parts, h);
/* list[4] = io_make_input_field("InternalEnergy", FLOAT, 1, COMPULSORY, */
/* UNIT_CONV_ENERGY_PER_UNIT_MASS, parts,
* entropy); */
list[4] = list[4] =
io_make_input_field("InternalEnergy", FLOAT, 1, COMPULSORY, io_make_input_field("InternalEnergy", FLOAT, 1, COMPULSORY,
UNIT_CONV_ENTROPY_PER_UNIT_MASS, parts, entropy); UNIT_CONV_ENTROPY_PER_UNIT_MASS, parts, entropy);
...@@ -127,8 +124,11 @@ void writeSPHflavour(hid_t h_grpsph) { ...@@ -127,8 +124,11 @@ void writeSPHflavour(hid_t h_grpsph) {
/* Viscosity and thermal conduction */ /* Viscosity and thermal conduction */
/* Nothing in this minimal model... */ /* Nothing in this minimal model... */
writeAttribute_s(h_grpsph, "Thermal Conductivity Model", "No treatment"); writeAttribute_s(h_grpsph, "Thermal Conductivity Model", "No treatment");
writeAttribute_s(h_grpsph, "Viscosity Model", writeAttribute_s(
"Minimal treatment as in Monaghan (1992)"); h_grpsph, "Viscosity Model",
"as in Springel (2005), i.e. Monaghan (1992) with Balsara (1995) switch");
writeAttribute_f(h_grpsph, "Viscosity alpha", const_viscosity_alpha);
writeAttribute_f(h_grpsph, "Viscosity beta", 3.f);
/* Time integration properties */ /* Time integration properties */
writeAttribute_f(h_grpsph, "Maximal Delta u change over dt", writeAttribute_f(h_grpsph, "Maximal Delta u change over dt",
......
...@@ -95,6 +95,8 @@ void set_energy_state(struct part *part, enum pressure_field press, float size, ...@@ -95,6 +95,8 @@ void set_energy_state(struct part *part, enum pressure_field press, float size,
#if defined(GADGET2_SPH) #if defined(GADGET2_SPH)
part->entropy = pressure / pow_gamma(density); part->entropy = pressure / pow_gamma(density);
#elif defined(HOPKINS_PE_SPH)
part->entropy = pressure / pow_gamma(density);
#elif defined(DEFAULT_SPH) #elif defined(DEFAULT_SPH)
part->u = pressure / (hydro_gamma_minus_one * density); part->u = pressure / (hydro_gamma_minus_one * density);
#elif defined(MINIMAL_SPH) #elif defined(MINIMAL_SPH)
......
...@@ -104,11 +104,18 @@ struct cell *make_cell(size_t n, double *offset, double size, double h, ...@@ -104,11 +104,18 @@ struct cell *make_cell(size_t n, double *offset, double size, double h,
} }
part->h = size * h / (float)n; part->h = size * h / (float)n;
part->id = ++(*partId); part->id = ++(*partId);
#ifdef GIZMO_SPH #ifdef GIZMO_SPH
part->conserved.mass = density * volume / count; part->conserved.mass = density * volume / count;
#else #else
part->mass = density * volume / count; part->mass = density * volume / count;
#endif #endif
#if defined(HOPKINS_PE_SPH)
part->entropy = 1.f;
part->entropy_one_over_gamma = 1.f;
#endif
part->ti_begin = 0; part->ti_begin = 0;
part->ti_end = 1; part->ti_end = 1;
++part; ++part;
...@@ -192,17 +199,14 @@ void dump_particle_fields(char *fileName, struct cell *main_cell, ...@@ -192,17 +199,14 @@ void dump_particle_fields(char *fileName, struct cell *main_cell,
hydro_get_density(&main_cell->parts[pid]), hydro_get_density(&main_cell->parts[pid]),
#if defined(GIZMO_SPH) #if defined(GIZMO_SPH)
0.f, 0.f,
#elif defined(HOPKINS_PE_SPH)
main_cell->parts[pid].density.rho_dh,
#else #else
main_cell->parts[pid].rho_dh, main_cell->parts[pid].rho_dh,
#endif #endif
main_cell->parts[pid].density.wcount, main_cell->parts[pid].density.wcount,
main_cell->parts[pid].density.wcount_dh, main_cell->parts[pid].density.wcount_dh,
#if defined(GADGET2_SPH) #if defined(GADGET2_SPH) || defined(DEFAULT_SPH) || defined(HOPKINS_PE_SPH)
main_cell->parts[pid].density.div_v,
main_cell->parts[pid].density.rot_v[0],
main_cell->parts[pid].density.rot_v[1],
main_cell->parts[pid].density.rot_v[2]
#elif defined(DEFAULT_SPH)
main_cell->parts[pid].density.div_v, main_cell->parts[pid].density.div_v,
main_cell->parts[pid].density.rot_v[0], main_cell->parts[pid].density.rot_v[0],
main_cell->parts[pid].density.rot_v[1], main_cell->parts[pid].density.rot_v[1],
...@@ -234,14 +238,13 @@ void dump_particle_fields(char *fileName, struct cell *main_cell, ...@@ -234,14 +238,13 @@ void dump_particle_fields(char *fileName, struct cell *main_cell,
cj->parts[pjd].v[2], hydro_get_density(&cj->parts[pjd]), cj->parts[pjd].v[2], hydro_get_density(&cj->parts[pjd]),
#if defined(GIZMO_SPH) #if defined(GIZMO_SPH)
0.f, 0.f,
#elif defined(HOPKINS_PE_SPH)
main_cell->parts[pjd].density.rho_dh,
#else #else
main_cell->parts[pjd].rho_dh, main_cell->parts[pjd].rho_dh,
#endif #endif
cj->parts[pjd].density.wcount, cj->parts[pjd].density.wcount_dh, cj->parts[pjd].density.wcount, cj->parts[pjd].density.wcount_dh,
#if defined(GADGET2_SPH) #if defined(GADGET2_SPH) || defined(DEFAULT_SPH) || defined(HOPKINS_PE_SPH)
cj->parts[pjd].density.div_v, cj->parts[pjd].density.rot_v[0],
cj->parts[pjd].density.rot_v[1], cj->parts[pjd].density.rot_v[2]
#elif defined(DEFAULT_SPH)
cj->parts[pjd].density.div_v, cj->parts[pjd].density.rot_v[0], cj->parts[pjd].density.div_v, cj->parts[pjd].density.rot_v[0],
cj->parts[pjd].density.rot_v[1], cj->parts[pjd].density.rot_v[2] cj->parts[pjd].density.rot_v[1], cj->parts[pjd].density.rot_v[2]
#else #else
......
...@@ -138,11 +138,13 @@ void dump_particle_fields(char *fileName, struct cell *ci, struct cell *cj) { ...@@ -138,11 +138,13 @@ void dump_particle_fields(char *fileName, struct cell *ci, struct cell *cj) {
ci->parts[pid].v[2], hydro_get_density(&ci->parts[pid]), ci->parts[pid].v[2], hydro_get_density(&ci->parts[pid]),
#if defined(GIZMO_SPH) #if defined(GIZMO_SPH)
0.f, 0.f,
#elif defined(HOPKINS_PE_SPH)
ci->parts[pid].density.rho_dh,
#else #else
cj->parts[pid].rho_dh, ci->parts[pid].rho_dh,
#endif #endif
ci->parts[pid].density.wcount, ci->parts[pid].density.wcount_dh, ci->parts[pid].density.wcount, ci->parts[pid].density.wcount_dh,
#if defined(GADGET2_SPH) || defined(DEFAULT_SPH) #if defined(GADGET2_SPH) || defined(DEFAULT_SPH) || defined(HOPKINS_PE_SPH)
ci->parts[pid].density.div_v, ci->parts[pid].density.rot_v[0], ci->parts[pid].density.div_v, ci->parts[pid].density.rot_v[0],
ci->parts[pid].density.rot_v[1], ci->parts[pid].density.rot_v[2] ci->parts[pid].density.rot_v[1], ci->parts[pid].density.rot_v[2]
#else #else
...@@ -162,11 +164,13 @@ void dump_particle_fields(char *fileName, struct cell *ci, struct cell *cj) { ...@@ -162,11 +164,13 @@ void dump_particle_fields(char *fileName, struct cell *ci, struct cell *cj) {
cj->parts[pjd].v[2], hydro_get_density(&cj->parts[pjd]), cj->parts[pjd].v[2], hydro_get_density(&cj->parts[pjd]),
#if defined(GIZMO_SPH) #if defined(GIZMO_SPH)
0.f, 0.f,
#elif defined(HOPKINS_PE_SPH)
cj->parts[pjd].density.rho_dh,
#else #else
cj->parts[pjd].rho_dh, cj->parts[pjd].rho_dh,
#endif #endif
cj->parts[pjd].density.wcount, cj->parts[pjd].density.wcount_dh, cj->parts[pjd].density.wcount, cj->parts[pjd].density.wcount_dh,
#if defined(GADGET2_SPH) || defined(DEFAULT_SPH) #if defined(GADGET2_SPH) || defined(DEFAULT_SPH) || defined(HOPKINS_PE_SPH)
cj->parts[pjd].density.div_v, cj->parts[pjd].density.rot_v[0], cj->parts[pjd].density.div_v, cj->parts[pjd].density.rot_v[0],
cj->parts[pjd].density.rot_v[1], cj->parts[pjd].density.rot_v[2] cj->parts[pjd].density.rot_v[1], cj->parts[pjd].density.rot_v[2]
#else #else
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment