diff --git a/src/dimension.h b/src/dimension.h index f81f953f664c458f426a83e345e91921b28a55b8..9169a0796efc77c4f7842af873dcdfed4af05d0f 100644 --- a/src/dimension.h +++ b/src/dimension.h @@ -39,23 +39,26 @@ #define hydro_dimension 3.f #define hydro_dimension_inv 0.3333333333f -#define hydro_dimention_unit_sphere ((float)(4. * M_PI / 3.)) +#define hydro_dimension_unit_sphere ((float)(4. * M_PI / 3.)) +#define hydro_dimension_unit_sphere_inv ((float)(3. * M_1_PI / 4.)) #elif defined(HYDRO_DIMENSION_2D) #define hydro_dimension 2.f #define hydro_dimension_inv 0.5f -#define hydro_dimention_unit_sphere ((float)M_PI) +#define hydro_dimension_unit_sphere ((float)M_PI) +#define hydro_dimension_unit_sphere_inv ((float)M_1_PI) #elif defined(HYDRO_DIMENSION_1D) #define hydro_dimension 1.f #define hydro_dimension_inv 1.f -#define hydro_dimention_unit_sphere 2.f +#define hydro_dimension_unit_sphere 2.f +#define hydro_dimension_unit_sphere_inv 0.5f #else -#error "A problem dimensionality must be chosen in const.h !" +#error "A problem dimensionality must be chosen in config.h !" #endif @@ -201,6 +204,35 @@ invert_dimension_by_dimension_matrix(float A[3][3]) { #endif } +/** + * @brief Get the radius of a dimension sphere with the given volume + * + * @param volume Volume of the dimension sphere + * @return Radius of the dimension sphere + */ +__attribute__((always_inline)) INLINE static float get_radius_dimension_sphere( + float volume) { + +#if defined(HYDRO_DIMENSION_3D) + + return cbrtf(volume * hydro_dimension_unit_sphere_inv); + +#elif defined(HYDRO_DIMENSION_2D) + + return sqrtf(volume * hydro_dimension_unit_sphere_inv); + +#elif defined(HYDRO_DIMENSION_1D) + + return volume * hydro_dimension_unit_sphere_inv; + +#else + + error("The dimension is not defined !"); + return 0.f; + +#endif +} + /* ------------------------------------------------------------------------- */ #ifdef WITH_VECTORIZATION diff --git a/src/kernel_hydro.h b/src/kernel_hydro.h index 7bf2e01a719a29b731bb437096093b13ca086e37..ceaa3b7b46279e3dfe063bbda34d97233f33acbb 100644 --- a/src/kernel_hydro.h +++ b/src/kernel_hydro.h @@ -230,7 +230,7 @@ static const float kernel_coeffs[(kernel_degree + 1) * (kernel_ivals + 1)] kernel_gamma_inv_dim) /* Kernel normalisation constant (volume term) */ -#define kernel_norm ((float)(hydro_dimention_unit_sphere * kernel_gamma_dim)) +#define kernel_norm ((float)(hydro_dimension_unit_sphere * kernel_gamma_dim)) /* ------------------------------------------------------------------------- */