From e7c1aff4934fc4595e6c5b205fcfb736fda1444a Mon Sep 17 00:00:00 2001 From: knarf Date: Tue, 12 Jan 2010 16:31:45 +0000 Subject: update git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/Hydro_Analysis/trunk@31 b6729ddc-ac74-4bd1-908c-9dc7244c52a1 --- interface.ccl | 6 ++++++ param.ccl | 6 ++++++ schedule.ccl | 13 +++++++++++-- src/Hydro_Analysis.c | 25 ++++++++++++++----------- 4 files changed, 37 insertions(+), 13 deletions(-) diff --git a/interface.ccl b/interface.ccl index a5b27b7..060ec29 100644 --- a/interface.ccl +++ b/interface.ccl @@ -6,4 +6,10 @@ inherits: Grid, HydroBase CCTK_REAL Hydro_Analysis_rho_max type = SCALAR tags='checkpoint="no"' "value of the maximum of rho" +CCTK_REAL Hydro_Analysis_rho_sum type = SCALAR tags='checkpoint="no"' "value of the sum of rho" + CCTK_REAL Hydro_Analysis_rho_max_loc[3] type = SCALAR tags='checkpoint="no"' "coordinate location of the maximum of rho" + +CCTK_REAL Hydro_Analysis_rho_center_volume_weighted_gf[3] type = GF Timelevels = 3 tags='checkpoint="no" tensortypealias="vector"' "temporary GF to obtain the coordinate location of the volume weightes center of mass via a reduction" + +CCTK_REAL Hydro_Analysis_rho_center_volume_weighted[3] type = SCALAR tags='checkpoint="no"' "coordinate location of the volume weightes center of mass" diff --git a/param.ccl b/param.ccl index 0445a5f..3ab7385 100644 --- a/param.ccl +++ b/param.ccl @@ -7,3 +7,9 @@ BOOLEAN Hydro_Analysis_rho_max_search "Look for the value and location of the ma BOOLEAN Hydro_Analysis_rho_max_loc_only_positive_x "Restrict location search for density maximum to positive values of x" { } "false" + + +BOOLEAN Hydro_Analysis_weighted_center_of_mass "Look for the location of the center of mass" +{ +} "false" + diff --git a/schedule.ccl b/schedule.ccl index 764a822..b9fba6e 100644 --- a/schedule.ccl +++ b/schedule.ccl @@ -2,12 +2,21 @@ STORAGE: Hydro_Analysis_rho_max STORAGE: Hydro_Analysis_rho_max_loc +STORAGE: Hydro_Analysis_rho_center_volume_weighted + STORAGE: Hydro_Analysis_rho_center_volume_weighted_gf[3] schedule group Hydro_Analysis AT POSTSTEP { + STORAGE: Hydro_Analysis_rho_sum } "Group for Hydro_Analysis routines" -schedule Hydro_Analysis_GlobalReduction IN Hydro_Analysis +schedule Hydro_Analysis_PrepareReduction IN Hydro_Analysis +{ + LANG: C + OPTIONS: global-early +} "Compute the local reduction results" + +schedule Hydro_Analysis_Reduction IN Hydro_Analysis AFTER Hydro_Analysis_PrepareReduction { LANG: C OPTIONS: global @@ -15,7 +24,7 @@ schedule Hydro_Analysis_GlobalReduction IN Hydro_Analysis if (Hydro_Analysis_rho_max_search) { - schedule Hydro_Analysis_LocationSearch IN Hydro_Analysis AFTER Hydro_Analysis_GlobalReduction + schedule Hydro_Analysis_LocationSearch IN Hydro_Analysis AFTER Hydro_Analysis_Reduction { LANG: C OPTIONS: global loop-local diff --git a/src/Hydro_Analysis.c b/src/Hydro_Analysis.c index b3aae2a..5fef8a1 100644 --- a/src/Hydro_Analysis.c +++ b/src/Hydro_Analysis.c @@ -10,20 +10,23 @@ void Hydro_Analysis_PrepareReduction(CCTK_ARGUMENTS) DECLARE_CCTK_PARAMETERS printf("local\n"); - #pragma omp parallel + if (Hydro_Analysis_weighted_center_of_mass) { - LC_LOOP3(local_reduction, i,j,k, - cctk_nghostzones[0], cctk_nghostzones[1], cctk_nghostzones[2], - cctk_lsh[0] - cctk_nghostzones[0], cctk_lsh[1] - cctk_nghostzones[1], - cctk_lsh[2] - cctk_nghostzones[2], cctk_lsh[0], cctk_lsh[1], cctk_lsh[2]) + #pragma omp parallel { - CCTK_INT i3D = CCTK_GFINDEX3D(cctkGH, i, j, k); - CCTK_INT size= cctk_lsh[0] * cctk_lsh[1] * cctk_lsh[2]; - Hydro_Analysis_rho_center_volume_weighted_gf[i3D+0*size] = rho[i3D] * x[i3D]; - Hydro_Analysis_rho_center_volume_weighted_gf[i3D+1*size] = rho[i3D] * y[i3D]; - Hydro_Analysis_rho_center_volume_weighted_gf[i3D+2*size] = rho[i3D] * z[i3D]; + LC_LOOP3(local_reduction, i,j,k, + cctk_nghostzones[0], cctk_nghostzones[1], cctk_nghostzones[2], + cctk_lsh[0] - cctk_nghostzones[0], cctk_lsh[1] - cctk_nghostzones[1], + cctk_lsh[2] - cctk_nghostzones[2], cctk_lsh[0], cctk_lsh[1], cctk_lsh[2]) + { + CCTK_INT i3D = CCTK_GFINDEX3D(cctkGH, i, j, k); + CCTK_INT size= cctk_lsh[0] * cctk_lsh[1] * cctk_lsh[2]; + Hydro_Analysis_rho_center_volume_weighted_gf[i3D+0*size] = rho[i3D] * x[i3D]; + Hydro_Analysis_rho_center_volume_weighted_gf[i3D+1*size] = rho[i3D] * y[i3D]; + Hydro_Analysis_rho_center_volume_weighted_gf[i3D+2*size] = rho[i3D] * z[i3D]; + } + LC_ENDLOOP3(local_reduction); } - LC_ENDLOOP3(local_reduction); } } -- cgit v1.2.3