aboutsummaryrefslogtreecommitdiff
path: root/schedule.ccl
diff options
context:
space:
mode:
authordiener <diener@2a26948c-0e4f-0410-aee8-f1d3e353619c>2003-02-07 23:08:15 +0000
committerdiener <diener@2a26948c-0e4f-0410-aee8-f1d3e353619c>2003-02-07 23:08:15 +0000
commit6f5c1c3a019cf4f116874944ed30a5098d5f50d5 (patch)
treeebb8ac56dc13fe43285cd3e5fec382ec15c5b07b /schedule.ccl
parent4727e99931b092d07fae4e3188b45ae31bea927e (diff)
Added support for finding out how many surfaces are present and then do the
integrals over all surfaces. Still only supports full mode. Only weakly tested. There is a problem with the outputs in multiprocessor mode. The results of the integration are stored in 1D grid arrays. However if I use DISTRIB=DEFAULT (taking care only to store results on the correct processor), the output fails if the number of processors are bigger than the number of elements in the grid array (essentially some processors contains a chunk of length zero). If I on the other hand uses DISTRIB=CONSTANT, it works but on multiple processors i get multiple copies of the data in the output. git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/EHFinder/trunk@90 2a26948c-0e4f-0410-aee8-f1d3e353619c
Diffstat (limited to 'schedule.ccl')
-rw-r--r--schedule.ccl83
1 files changed, 53 insertions, 30 deletions
diff --git a/schedule.ccl b/schedule.ccl
index 572ea93..7652251 100644
--- a/schedule.ccl
+++ b/schedule.ccl
@@ -17,7 +17,8 @@ else
STORAGE: mask_bak
STORAGE: surface_arrays
STORAGE: center_arrays
- STORAGE: eh_area2
+# STORAGE: eh_area, eh_centroid
+ STORAGE: eh_area2, eh_centroid2
# STORAGE: surface_index
}
@@ -88,77 +89,99 @@ schedule EHFinder_InitWeights at CCTK_POSTINITIAL
schedule GROUP EHFinder_Surfaces at CCTK_ANALYSIS
{
STORAGE: more_surfaces, surface_counter, more_points, points_counter
+ STORAGE: integrate_counter
STORAGE: surface_index
- TRIGGER: eh_area2, eh_centroid
-} "Schedule group for counting the number of surfaces and integrating over them"
+# STORAGE: eh_area2, eh_centroid2
+ TRIGGERS: eh_area, eh_centroid
+} "Count the number of surfaces and integrate over them"
schedule EHFinder_CountSurfacesInit in EHFinder_Surfaces
{
LANG: Fortran
- TRIGGER: eh_area2, eh_centroid
-} "Initialising while loop control for the group EHFinder_CountMarkSurfaces"
+ TRIGGERS: eh_area, eh_centroid
+} "Initialise while loop control"
schedule GROUP EHFinder_CountMarkSurfaces in EHFinder_Surfaces after EHFinder_CountSurfacesInit WHILE ehfinder::more_surfaces
{
- TRIGGER: eh_area2, eh_centroid
-} "Scedule group for counting and marking surfaces"
+ TRIGGERS: eh_area, eh_centroid
+} "Counting and mark surfaces"
schedule EHFinder_CountSurfaces in EHFinder_CountMarkSurfaces
{
LANG: Fortran
- TRIGGER: eh_area2, eh_centroid
+ TRIGGERS: eh_area, eh_centroid
SYNC: surface_index
-} "Check if there are more surfaces and initialise while loop control for EHFinder_MarkSurfaces"
+} "Check if there are more surfaces"
schedule EHFinder_MarkSurfaces in EHFinder_CountMarkSurfaces after EHFinder_CountSurfaces WHILE ehfinder::more_points
{
LANG: Fortran
- TRIGGER: eh_area2, eh_centroid
+ TRIGGERS: eh_area, eh_centroid
SYNC: surface_index
-} "Mark points inside the current surface until they are all marked"
+} "Mark points inside the current surface"
schedule EHFinder_InfoSurfaces in EHFinder_Surfaces after EHFinder_CountMarkSurfaces
{
LANG: Fortran
- TRIGGER: eh_area2, eh_centroid
-} "Output input about found surfaces"
+ TRIGGERS: eh_area, eh_centroid
+} "Output info about found surfaces"
-schedule EHFinder_FindSurface at CCTK_ANALYSIS
+schedule group EHFinder_Integration in EHFinder_Surfaces after EHFinder_InfoSurfaces while ehfinder::integrate_counter
{
- LANG: Fortran
- STORAGE: surface_tmp_arrays, surface_int_array
- TRIGGER: eh_area2, eh_centroid
-} "Find Surface"
+ TRIGGERS: eh_area, eh_centroid
+} "Find and integrate over surfaces"
-schedule EHFinder_Integrate at CCTK_ANALYSIS after EHFinder_FindSurface
+schedule EHFinder_FindSurface in EHFinder_Integration
{
LANG: Fortran
- STORAGE: eh_area
- TRIGGER: eh_area
-} "Calculate integrals"
+ STORAGE: surface_tmp_arrays, surface_int_array
+ TRIGGERS: eh_area, eh_centroid
+} "Find Surface"
-schedule EHFinder_FindSurfaceElement at CCTK_ANALYSIS after EHFinder_FindSurface
+schedule EHFinder_FindSurfaceElement in EHFinder_Integration after EHFinder_FindSurface
{
LANG: Fortran
STORAGE: surface_tmp_arrays, interp_metric_arrays
- TRIGGER: eh_area2, eh_centroid
+ TRIGGERS: eh_area, eh_centroid
} "Find Surface Area Element"
-schedule EHFinder_IntegrateArea at CCTK_ANALYSIS after EHFinder_FindSurfaceElement
+schedule EHFinder_IntegrateArea in EHFinder_Integration after EHFinder_FindSurfaceElement
{
LANG: Fortran
- STORAGE: integrate_tmp_array
- TRIGGER: eh_area2, eh_centroid
+ STORAGE: integrate_tmp_array
+ TRIGGERS: eh_area, eh_centroid
} "Calculate area integrals"
-schedule EHFinder_IntegrateCentroid at CCTK_ANALYSIS after EHFinder_IntegrateArea
+schedule EHFinder_IntegrateCentroid in EHFinder_Integration after EHFinder_IntegrateArea
{
LANG: Fortran
- STORAGE: eh_centroid, surface_tmp_arrays, integrate_tmp_array
- TRIGGER: eh_centroid
+ STORAGE: surface_tmp_arrays, integrate_tmp_array
+ TRIGGERS: eh_centroid
} "Calculate centroid integrals"
+schedule EHFinder_CopyArea at CCTK_ANALYSIS after EHFinder_Surfaces
+{
+ LANG: Fortran
+ STORAGE: eh_area
+ TRIGGERS: eh_area
+} "Copy areas to output variable"
+
+schedule EHFinder_CopyCentroid at CCTK_ANALYSIS after EHFinder_Surfaces
+{
+ LANG: Fortran
+ STORAGE: eh_centroid
+ TRIGGERS: eh_centroid
+} "Copy areas to output variable"
+
+#schedule EHFinder_Integrate at CCTK_ANALYSIS
+#schedule EHFinder_Integrate at CCTK_ANALYSIS
+#{
+# LANG: Fortran
+# STORAGE: eh_area
+# TRIGGERS: eh_area
+#} "Calculate integrals"
+
# Read in the data used in reconstructing the 4-metric if necessary
if (CCTK_Equals(eh_metric_type,"numerical"))