aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrhaas <rhaas@b6729ddc-ac74-4bd1-908c-9dc7244c52a1>2012-11-27 23:47:44 +0000
committerrhaas <rhaas@b6729ddc-ac74-4bd1-908c-9dc7244c52a1>2012-11-27 23:47:44 +0000
commit33f90e296f921951c16687a559ab420e4702fe9e (patch)
treeaffd67730a19295b1986c976634c4b7c6d8f21e2
parent482151443f43ec18add0ddd695cdf8b22e543da5 (diff)
Hydro_Analysis: add verbosity_level option to control
how much data to output to stdout git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/Hydro_Analysis/trunk@123 b6729ddc-ac74-4bd1-908c-9dc7244c52a1
-rw-r--r--param.ccl7
-rw-r--r--src/Hydro_Analysis.c46
2 files changed, 49 insertions, 4 deletions
diff --git a/param.ccl b/param.ccl
index 42c9573..00723b8 100644
--- a/param.ccl
+++ b/param.ccl
@@ -11,6 +11,13 @@ BOOLEAN Hydro_Analysis_average_multiple_maxima_locations "when finding more than
{
} "false"
+INT verbosity_level "how much information to ouptut to the logs" STEERABLE = always
+{
+ 0 :: "Output nothing"
+ 1 :: "warn when finding multiple maxima"
+ 2 :: "also output location of maxima"
+} 1
+
BOOLEAN Hydro_Analysis_rho_max_loc_only_positive_x "Restrict location search for density maximum to positive values of x"
{
} "false"
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;
}