Better mesh_info.list

This commit is contained in:
Miikka Vaisala
2019-09-23 17:53:19 +08:00
parent c85e0597c5
commit cccc11798a
2 changed files with 22 additions and 61 deletions

View File

@@ -51,10 +51,19 @@ def read_meshtxt(fdir, fname):
line = line.split()
if line[0] == 'int':
contents[line[1]] = np.int(line[2])
print(line[1], contents[line[1]])
elif line[0] == 'int3':
contents[line[1]] = [np.int(line[2]), np.int(line[3]), np.int(line[4])]
print(line[1], contents[line[1]])
elif line[0] == 'real':
contents[line[1]] = np.float(line[2])
print(line[1], contents[line[1]])
elif line[0] == 'real3':
contents[line[1]] = [np.float(line[2]), np.float(line[3]), np.float(line[4])]
print(line[1], contents[line[1]])
else:
print('ERROR: ' + line[0] +' no recognized!')
print(line)
print('ERROR: ' + line[0] +' not recognized!')
return contents

View File

@@ -60,76 +60,28 @@ write_mesh_info(const AcMeshInfo* config)
infotxt = fopen("mesh_info.list", "w");
/*
fprintf(infotxt, "size_t %s %lu \n", "AcRealSize", sizeof(AcReal));
// JP: this could be done shorter and with smaller chance for errors with the following
// (modified from acPrintMeshInfo() in astaroth.cu)
// MV: Now adapted into working condition. E.g. removed useless / harmful formatting.
for (int i = 0; i < NUM_INT_PARAMS; ++i)
fprintf(infotxt, "int %s: %d\n", intparam_names[i], config.int_params[i]);
fprintf(infotxt, "int %s %d\n", intparam_names[i], config->int_params[i]);
for (int i = 0; i < NUM_INT3_PARAMS; ++i)
fprintf(infotxt, "int3 %s: (%d, %d, %d)\n", int3param_names[i], config.int3_params[i].x,
config.int3_params[i].y,
config.int3_params[i].z);
fprintf(infotxt, "int3 %s %d %d %d\n", int3param_names[i], config->int3_params[i].x,
config->int3_params[i].y,
config->int3_params[i].z);
for (int i = 0; i < NUM_REAL_PARAMS; ++i)
fprintf(infotxt, "real %s: %g\n", realparam_names[i], double(config.real_params[i]));
fprintf(infotxt, "real %s %g\n", realparam_names[i], double(config->real_params[i]));
for (int i = 0; i < NUM_REAL3_PARAMS; ++i)
fprintf(infotxt, "real %s: (%g, %g, %g)\n", real3param_names[i],
double(config.real3_params[i].x),
double(config.real3_params[i].y),
double(config.real3_params[i].z));
*/
// Total grid dimensions
fprintf(infotxt, "int AC_mx %i \n", config->int_params[AC_mx]);
fprintf(infotxt, "int AC_my %i \n", config->int_params[AC_my]);
fprintf(infotxt, "int AC_mz %i \n", config->int_params[AC_mz]);
// Bounds for the computational domain, i.e. nx_min <= i < nx_max
fprintf(infotxt, "int AC_nx_min %i \n", config->int_params[AC_nx_min]);
fprintf(infotxt, "int AC_nx_max %i \n", config->int_params[AC_nx_max]);
fprintf(infotxt, "int AC_ny_min %i \n", config->int_params[AC_ny_min]);
fprintf(infotxt, "int AC_ny_max %i \n", config->int_params[AC_ny_max]);
fprintf(infotxt, "int AC_nz_min %i \n", config->int_params[AC_nz_min]);
fprintf(infotxt, "int AC_nz_max %i \n", config->int_params[AC_nz_max]);
// Spacing
fprintf(infotxt, "real AC_dsx %e \n", (double)config->real_params[AC_dsx]);
fprintf(infotxt, "real AC_dsy %e \n", (double)config->real_params[AC_dsy]);
fprintf(infotxt, "real AC_dsz %e \n", (double)config->real_params[AC_dsz]);
fprintf(infotxt, "real AC_inv_dsx %e \n", (double)config->real_params[AC_inv_dsx]);
fprintf(infotxt, "real AC_inv_dsy %e \n", (double)config->real_params[AC_inv_dsy]);
fprintf(infotxt, "real AC_inv_dsz %e \n", (double)config->real_params[AC_inv_dsz]);
fprintf(infotxt, "real AC_dsmin %e \n", (double)config->real_params[AC_dsmin]);
/* Additional helper params */
// Int helpers
fprintf(infotxt, "int AC_mxy %i \n", config->int_params[AC_mxy]);
fprintf(infotxt, "int AC_nxy %i \n", config->int_params[AC_nxy]);
fprintf(infotxt, "int AC_nxyz %i \n", config->int_params[AC_nxyz]);
// Real helpers
fprintf(infotxt, "real AC_cs2_sound %e \n", (double)config->real_params[AC_cs2_sound]);
fprintf(infotxt, "real AC_cv_sound %e \n", (double)config->real_params[AC_cv_sound]);
// Physical units
fprintf(infotxt, "real AC_unit_density %e \n", (double)config->real_params[AC_unit_density]);
fprintf(infotxt, "real AC_unit_velocity %e \n", (double)config->real_params[AC_unit_velocity]);
fprintf(infotxt, "real AC_unit_mass %e \n", (double)config->real_params[AC_unit_mass]);
fprintf(infotxt, "real AC_unit_length %e \n", (double)config->real_params[AC_unit_length]);
// Here I'm still trying to copy the structure of the code above, and see if this will work for
// sink particle. I haven't fully undertand what these lines do but I'll read up on them soon.
// This is still yet experimental.
// Sink particle
fprintf(infotxt, "real AC_sink_pos_x %e \n", (double)config->real_params[AC_sink_pos_x]);
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]);
fprintf(infotxt, "real3 %s %g %g %g\n", real3param_names[i],
double(config->real3_params[i].x),
double(config->real3_params[i].y),
double(config->real3_params[i].z));
fclose(infotxt);
}