aboutsummaryrefslogtreecommitdiff
path: root/src/Hydro_Analysis.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/Hydro_Analysis.c')
-rw-r--r--src/Hydro_Analysis.c46
1 files changed, 42 insertions, 4 deletions
diff --git a/src/Hydro_Analysis.c b/src/Hydro_Analysis.c
index bcd3430..bb99dac 100644
--- a/src/Hydro_Analysis.c
+++ b/src/Hydro_Analysis.c
@@ -90,7 +90,7 @@ void Hydro_Analysis_LocationSearch(CCTK_ARGUMENTS)
DECLARE_CCTK_ARGUMENTS
DECLARE_CCTK_PARAMETERS
- int set_maximum_location;
+ int set_maximum_location, warned_about_multiple_local_maxima = 0;
/* Initialized MPI-local quantities */
CCTK_REAL local_rho_max_loc[4], level_rho_max_loc[4];
@@ -115,6 +115,25 @@ void Hydro_Analysis_LocationSearch(CCTK_ARGUMENTS)
{
#pragma omp critical
{
+ // have to already warn here when we still have the actual coordinates around
+ if (verbosity_level >= 1 && round(local_rho_max_loc[3]) >= 1.)
+ {
+ CCTK_WARN(1, "Found more than one identical maximum in single patch.");
+ if (verbosity_level >= 2)
+ {
+ if (round(local_rho_max_loc[3]) == 1.) { // once we detect the second maximum, output the first as well
+ CCTK_VWarn(1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "my candidate: (%g,%g,%g) with value %g.",
+ local_rho_max_loc[0],local_rho_max_loc[1],local_rho_max_loc[2],
+ *Hydro_Analysis_rho_max);
+ }
+ CCTK_VWarn(1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "my candidate: (%g,%g,%g) with value %g.",
+ x[i3D], y[i3D], z[i3D],
+ *Hydro_Analysis_rho_max);
+ warned_about_multiple_local_maxima = 1;
+ }
+ }
local_rho_max_loc[0] += x[i3D];
local_rho_max_loc[1] += y[i3D];
local_rho_max_loc[2] += z[i3D];
@@ -149,11 +168,30 @@ void Hydro_Analysis_LocationSearch(CCTK_ARGUMENTS)
level_rho_max_loc[1] /= level_rho_max_loc[3];
level_rho_max_loc[2] /= level_rho_max_loc[3];
+ if (verbosity_level >= 1 && !have_warned_about_multiple_maxima)
+ {
+ CCTK_VWarn(1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Found more than one (%d) identical maximum, using average location (%g,%g,%g).",
+ (int)round(level_rho_max_loc[3]),
+ level_rho_max_loc[0], level_rho_max_loc[1],
+ level_rho_max_loc[2]);
+ have_warned_about_multiple_maxima = 1;
+ }
+
set_maximum_location = 1;
} else {
- CCTK_VWarn(1, __LINE__, __FILE__, CCTK_THORNSTRING,
- "Found more than one (%d) identical maximum, not setting anything.",
- (int)round(level_rho_max_loc[3]));
+ if (verbosity_level >= 1)
+ {
+ CCTK_VWarn(1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "Found more than one (%d) identical maximum, not setting anything.",
+ (int)round(level_rho_max_loc[3]));
+ if (verbosity_level >= 2 && !warned_about_multiple_local_maxima)
+ {
+ CCTK_VWarn(1, __LINE__, __FILE__, CCTK_THORNSTRING,
+ "my candidate: (%g,%g,%g) with value %g.",
+ local_rho_max_loc[0],local_rho_max_loc[1],local_rho_max_loc[2],
+ *Hydro_Analysis_rho_max);
+ }
}
set_maximum_location = 0;
}