aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorknarf <knarf@b6729ddc-ac74-4bd1-908c-9dc7244c52a1>2010-06-04 19:27:33 +0000
committerknarf <knarf@b6729ddc-ac74-4bd1-908c-9dc7244c52a1>2010-06-04 19:27:33 +0000
commitac4c1c19aee055a670433955e304b8d11b553942 (patch)
treea073d0a0f64019c21778335363cd37f450af247f
parent66ee5e90ddc34bb0a8493f75be6c166d1d368ff7 (diff)
Fix search for density maximum if finer levels do not contain it
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/Hydro_Analysis/trunk@108 b6729ddc-ac74-4bd1-908c-9dc7244c52a1
-rw-r--r--src/Hydro_Analysis.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/Hydro_Analysis.c b/src/Hydro_Analysis.c
index 2270f8a..d02b64c 100644
--- a/src/Hydro_Analysis.c
+++ b/src/Hydro_Analysis.c
@@ -86,10 +86,11 @@ void Hydro_Analysis_LocationSearch(CCTK_ARGUMENTS)
DECLARE_CCTK_PARAMETERS
/* Initialized MPI-local quantities */
- CCTK_REAL local_rho_max_loc[3];
+ CCTK_REAL local_rho_max_loc[4], level_rho_max_loc[4];
local_rho_max_loc[0] = 0.0;
local_rho_max_loc[1] = 0.0;
local_rho_max_loc[2] = 0.0;
+ local_rho_max_loc[3] = 0.0; // Information if it was found at all on this level
/* Look for the location of the global maximum.
* This algorithm will have problems when that occurs at more than
@@ -110,6 +111,7 @@ void Hydro_Analysis_LocationSearch(CCTK_ARGUMENTS)
local_rho_max_loc[0] = x[i3D];
local_rho_max_loc[1] = y[i3D];
local_rho_max_loc[2] = z[i3D];
+ local_rho_max_loc[3] = 1.;
}
}
}
@@ -123,7 +125,16 @@ void Hydro_Analysis_LocationSearch(CCTK_ARGUMENTS)
if (handle_sum < 0)
CCTK_WARN(0, "Unable to get reduction handle 'sum'.");
if (CCTK_ReduceLocArrayToArray1D(cctkGH, -1, handle_sum, &local_rho_max_loc,
- Hydro_Analysis_rho_max_loc, 3, CCTK_VARIABLE_REAL))
+ level_rho_max_loc, 4, CCTK_VARIABLE_REAL))
CCTK_WARN(0, "Error while reducing local_rho_max_loc");
+ if (level_rho_max_loc[3]) {
+ Hydro_Analysis_rho_max_loc[0] = level_rho_max_loc[0];
+ Hydro_Analysis_rho_max_loc[1] = level_rho_max_loc[1];
+ Hydro_Analysis_rho_max_loc[2] = level_rho_max_loc[2];
+ }
+/* CCTK_VInfo(CCTK_THORNSTRING, "New location: %g,%g,%g",
+ Hydro_Analysis_rho_max_loc[0],
+ Hydro_Analysis_rho_max_loc[1],
+ Hydro_Analysis_rho_max_loc[2]); */
}