Fixed scaling for sink particle, and added softening factor.

This commit is contained in:
JackHsu
2019-08-01 16:33:58 +08:00
parent 718a275bcf
commit 29d6a9b00a
5 changed files with 15 additions and 8 deletions

View File

@@ -78,6 +78,7 @@
FUNC(AC_sink_pos_y),\
FUNC(AC_sink_pos_z),\
FUNC(AC_M_sink),\
FUNC(AC_soft),\
/* Run params */\
FUNC(AC_cdt), \
FUNC(AC_cdtv), \
@@ -120,7 +121,7 @@
FUNC(AC_ff_hel_imz),\
/* Additional helper params */\
/* (deduced from other params do not set these directly!) */\
FUNC(AC_G_CONST),\
FUNC(AC_G_const),\
FUNC(AC_GM_star),\
FUNC(AC_sq2GM_star),\
FUNC(AC_cs2_sound), \

View File

@@ -21,7 +21,6 @@ uniform int nz_min;
uniform int nx;
uniform int ny;
uniform int nz;
//Added declaration for constants used for sink particle.
Vector
value(in Vector uu)
@@ -69,8 +68,8 @@ sink_gravity(int3 globalVertexIdx){
DCONST_REAL(AC_sink_pos_y),
DCONST_REAL(AC_sink_pos_z)};
const Scalar distance = length(grid_pos - sink_pos);
const Scalar soft = 0.12;
const Scalar gravity_magnitude = (Scalar(0.01) * sink_mass) / pow(((distance * distance) + soft*soft), 1.5);
const Scalar soft = DCONST_REAL(AC_soft);
const Scalar gravity_magnitude = (AC_G_const * sink_mass) / pow(((distance * distance) + soft*soft), 1.5);
const Vector direction = (Vector){(sink_pos.x - grid_pos.x) / distance,
(sink_pos.y - grid_pos.y) / distance,
(sink_pos.z - grid_pos.z) / distance};

View File

@@ -54,6 +54,12 @@ AC_sink_pos_x = 3.14
AC_sink_pos_y = 0.0
AC_sink_pos_z = 0.0
AC_M_sink = 1.0
AC_soft = 0.12
// Physical properties of the domain
AC_unit_velocity = 1.0
AC_unit_density = 1.0
AC_unit_length = 1.0
/*
* =============================================================================

View File

@@ -137,19 +137,17 @@ update_config(AcMeshInfo* config)
6.674e-8); // g/cm3/s GGS definition //TODO define in a separate module
AcReal M_sun = AcReal(1.989e33); // g solar mass
config->real_params[AC_M_star] = config->real_params[AC_M_star] * M_sun /
config->real_params[AC_M_sink] = config->real_params[AC_M_sink] * M_sun /
((config->real_params[AC_unit_length] *
config->real_params[AC_unit_length] *
config->real_params[AC_unit_length]) *
config->real_params[AC_unit_density]);
config->real_params[AC_G_CONST] = G_CONST_CGS / ((config->real_params[AC_unit_velocity] *
config->real_params[AC_G_const] = G_CONST_CGS / ((config->real_params[AC_unit_velocity] *
config->real_params[AC_unit_velocity]) /
(config->real_params[AC_unit_density] *
config->real_params[AC_unit_length]));
config->real_params[AC_GM_star] = config->real_params[AC_M_star] *
config->real_params[AC_G_CONST];
config->real_params[AC_sq2GM_star] = AcReal(sqrt(AcReal(2) * config->real_params[AC_GM_star]));
#if VERBOSE_PRINTING // Defined in astaroth.h

View File

@@ -95,6 +95,9 @@ write_mesh_info(const AcMeshInfo* config)
fprintf(infotxt, "real AC_sink_pos_y %e \n", (double)config->real_params[AC_sink_pos_y]);
fprintf(infotxt, "real AC_sink_pos_z %e \n", (double)config->real_params[AC_sink_pos_z]);
fprintf(infotxt, "real AC_M_sink %e \n", (double)config->real_params[AC_M_sink]);
fprintf(infotxt, "real AC_soft %e \n", (double)config->real_params[AC_soft]);
fprintf(infotxt, "real AC_G_const %e \n", (double)config->real_params[AC_G_const]);
fclose(infotxt);
}