aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryye00 <yye00@89daf98e-ef62-4674-b946-b8ff9de2216c>2006-01-03 18:34:31 +0000
committeryye00 <yye00@89daf98e-ef62-4674-b946-b8ff9de2216c>2006-01-03 18:34:31 +0000
commit19fb6e136222204ab678d6ee35d20866a800f8d2 (patch)
treeb547803f7538a9d9b9311011041b2e3edfc5c4c9
parent0b34a3d107e3347c33971a9d505a840d6b53bb36 (diff)
With this commit all cactus thorns now use the new reduction API. There ARE memory leaks that appear as assert failures when destroying the parameter table in ReduceArraysGlobally when using AHFinder on lemieux (ALPHA), I am yet to identify the reason why this is so.
git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/AHFinder/trunk@389 89daf98e-ef62-4674-b946-b8ff9de2216c
-rw-r--r--src/AHFinder_int.F182
1 files changed, 141 insertions, 41 deletions
diff --git a/src/AHFinder_int.F b/src/AHFinder_int.F
index 71a9deb..70196d3 100644
--- a/src/AHFinder_int.F
+++ b/src/AHFinder_int.F
@@ -70,6 +70,11 @@
CCTK_REAL, allocatable, dimension(:,:) :: txx,tyy,tzz,txy,txz,tyz
CCTK_REAL, allocatable, dimension(:,:) :: intmask
+! Reduction variables
+ CCTK_POINTER_TO_CONST, dimension(1) :: input_array
+ CCTK_POINTER, dimension(1) :: reduction_value
+ CCTK_INT, dimension(1) ::input_array_type
+
! Variables to be saved for next call.
save dtheta,dphi,dtp,idtheta,idphi,phistart
@@ -171,7 +176,7 @@
! *** GET REDUCTION HANDLE FOR SUM ***
! ****************************************
- call CCTK_ReductionArrayHandle(reduction_handle,"sum")
+ call CCTK_LocalArrayReductionHandle(reduction_handle,"sum")
if (reduction_handle.lt.0) then
call CCTK_WARN(1,"Cannot get handle for sum reduction ! Forgot to activate an implementation providing reduction operators ??")
@@ -576,15 +581,26 @@
! *** REDUCE ERRORS ACROSS PROCESSORS ***
! *******************************************
- call CCTK_ReduceLocalScalar(ierror,cctkGH,-1,reduction_handle,
- . interror1,red_tmp,CCTK_VARIABLE_INT)
+ input_array_type(1) = CCTK_VARIABLE_INT
+ reduction_value(1)= CCTK_PointerTo(red_tmp)
+ input_array(1) = CCTK_PointerTo(interror1)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,0, 0, input_array_type, 1,
+ . input_array_type, reduction_value)
+
if (ierror.ne.0) then
call CCTK_WARN(1,"Reduction of norm failed!")
end if
interror1 = red_tmp
-
- call CCTK_ReduceLocalScalar(ierror,cctkGH,-1,reduction_handle,
- . interror2,red_tmp,CCTK_VARIABLE_INT)
+
+
+ input_array_type(1) = CCTK_VARIABLE_INT
+ reduction_value(1)= CCTK_PointerTo(red_tmp)
+ input_array(1) = CCTK_PointerTo(interror2)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,0, 0, input_array_type, 1,
+ . input_array_type, reduction_value)
+
if (ierror.ne.0) then
call CCTK_WARN(1,"Reduction of norm failed!")
end if
@@ -748,8 +764,13 @@
end do
end if
- call CCTK_ReduceLocalScalar(ierror,cctkGH,-1,reduction_handle,
- . interror3,red_tmp,CCTK_VARIABLE_INT)
+ input_array_type(1) = CCTK_VARIABLE_INT
+ reduction_value(1)= CCTK_PointerTo(red_tmp)
+ input_array(1) = CCTK_PointerTo(interror3)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,0, 0, input_array_type, 1,
+ . input_array_type, reduction_value)
+
interror3 = red_tmp
if (interror3.ne.0) then
@@ -953,28 +974,60 @@
! Reduce integrals.
- call CCTK_ReduceLocalScalar(ierror,cctkGH,-1,reduction_handle,
- . intarea,aux,CCTK_VARIABLE_REAL)
- intarea=aux
-
- call CCTK_ReduceLocalScalar(ierror,cctkGH,-1,reduction_handle,
- . intexp,aux,CCTK_VARIABLE_REAL)
+ input_array_type(1) = CCTK_VARIABLE_REAL
+ reduction_value(1)= CCTK_PointerTo(aux)
+ input_array(1) = CCTK_PointerTo(intarea)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,0, 0, input_array_type, 1,
+ . input_array_type, reduction_value)
+
+ intarea=aux
+
+ input_array_type(1) = CCTK_VARIABLE_REAL
+ reduction_value(1)= CCTK_PointerTo(aux)
+ input_array(1) = CCTK_PointerTo(intexp)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,0, 0, input_array_type, 1,
+ . input_array_type, reduction_value)
+
intexp=aux
- call CCTK_ReduceLocalScalar(ierror,cctkGH,-1,reduction_handle,
- . intexp2,aux,CCTK_VARIABLE_REAL)
+ input_array_type(1) = CCTK_VARIABLE_REAL
+ reduction_value(1)= CCTK_PointerTo(aux)
+ input_array(1) = CCTK_PointerTo(intexp2)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,0, 0, input_array_type, 1,
+ . input_array_type, reduction_value)
+
intexp2=aux
+
+ input_array_type(1) = CCTK_VARIABLE_REAL
+ reduction_value(1)= CCTK_PointerTo(aux)
+ input_array(1) = CCTK_PointerTo(intexpdel2)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,0, 0, input_array_type, 1,
+ . input_array_type, reduction_value)
- call CCTK_ReduceLocalScalar(ierror,cctkGH,-1,reduction_handle,
- . intexpdel2,aux,CCTK_VARIABLE_REAL)
intexpdel2=aux
- call CCTK_ReduceLocalScalar(ierror,cctkGH,-1,reduction_handle,
- . inside_min_neg_count,red_tmp,CCTK_VARIABLE_INT)
- inside_min_neg_count=red_tmp
+
- call CCTK_ReduceLocalScalar(ierror,cctkGH,-1,reduction_handle,
- . inside_min_count,red_tmp,CCTK_VARIABLE_INT)
+ input_array_type(1) = CCTK_VARIABLE_INT
+ reduction_value(1)= CCTK_PointerTo(red_tmp)
+ input_array(1) = CCTK_PointerTo(inside_min_neg_count)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,0, 0, input_array_type, 1,
+ . input_array_type, reduction_value)
+
+ inside_min_neg_count=red_tmp
+
+ input_array_type(1) = CCTK_VARIABLE_INT
+ reduction_value(1)= CCTK_PointerTo(red_tmp)
+ input_array(1) = CCTK_PointerTo(inside_min_count)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,0, 0, input_array_type, 1,
+ . input_array_type, reduction_value)
+
inside_min_count=red_tmp
end if
@@ -1140,21 +1193,38 @@
auxi = lmax+1
if (hw.ne.zero) then
- call CCTK_ReduceLocalArray1D(ierror,cctkGH,-1,reduction_handle,
- . hflow0,tempv,auxi,CCTK_VARIABLE_REAL)
+ input_array_type(1) = CCTK_VARIABLE_REAL
+ reduction_value(1)= CCTK_PointerTo(tempv)
+ input_array(1) = CCTK_PointerTo(hflow0)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,1, auxi, input_array_type, 1,
+ . input_array_type, reduction_value)
+
hflow0 = tempv
+
end if
if (cw.ne.zero) then
- call CCTK_ReduceLocalArray1D(ierror,cctkGH,-1,reduction_handle,
- . cflow0,tempv,auxi,CCTK_VARIABLE_REAL)
+ input_array_type(1) = CCTK_VARIABLE_REAL
+ reduction_value(1)= CCTK_PointerTo(tempv)
+ input_array(1) = CCTK_PointerTo(cflow0)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,1, auxi, input_array_type, 1,
+ . input_array_type, reduction_value)
+
cflow0 = tempv
+
end if
if (nw.ne.zero) then
- call CCTK_ReduceLocalArray1D(ierror,cctkGH,-1,reduction_handle,
- . nflow0,tempv,auxi,CCTK_VARIABLE_REAL)
+ input_array_type(1) = CCTK_VARIABLE_REAL
+ reduction_value(1)= CCTK_PointerTo(tempv)
+ input_array(1) = CCTK_PointerTo(nflow0)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,1, auxi, input_array_type, 1,
+ . input_array_type, reduction_value)
nflow0 = tempv
+
end if
! Non-axisymmetric components.
@@ -1164,40 +1234,70 @@
auxi = lmax*lmax
if (hw.ne.zero) then
- call CCTK_ReduceLocalArray1D(ierror,cctkGH,-1,
- . reduction_handle,hflowc,tempm,auxi,CCTK_VARIABLE_REAL)
+ input_array_type(1) = CCTK_VARIABLE_REAL
+ reduction_value(1)= CCTK_PointerTo(tempm)
+ input_array(1) = CCTK_PointerTo(hflowc)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,1, auxi, input_array_type, 1,
+ . input_array_type, reduction_value)
+
hflowc = tempm
end if
if (cw.ne.zero) then
- call CCTK_ReduceLocalArray1D(ierror,cctkGH,-1,
- . reduction_handle,cflowc,tempm,auxi,CCTK_VARIABLE_REAL)
+ input_array_type(1) = CCTK_VARIABLE_REAL
+ reduction_value(1)= CCTK_PointerTo(tempm)
+ input_array(1) = CCTK_PointerTo(cflowc)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,1, auxi, input_array_type, 1,
+ . input_array_type, reduction_value)
+
cflowc = tempm
end if
if (nw.ne.zero) then
- call CCTK_ReduceLocalArray1D(ierror,cctkGH,-1,
- . reduction_handle,nflowc,tempm,auxi,CCTK_VARIABLE_REAL)
+ input_array_type(1) = CCTK_VARIABLE_REAL
+ reduction_value(1)= CCTK_PointerTo(tempm)
+ input_array(1) = CCTK_PointerTo(nflowc)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,1, auxi, input_array_type, 1,
+ . input_array_type, reduction_value)
+
nflowc = tempm
end if
if (.not.refy) then
if (hw.ne.zero) then
- call CCTK_ReduceLocalArray1D(ierror,cctkGH,-1,
- . reduction_handle,hflows,tempm,auxi,CCTK_VARIABLE_REAL)
+ input_array_type(1) = CCTK_VARIABLE_REAL
+ reduction_value(1)= CCTK_PointerTo(tempm)
+ input_array(1) = CCTK_PointerTo(hflows)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,1, auxi, input_array_type, 1,
+ . input_array_type, reduction_value)
+
hflows = tempm
end if
if (cw.ne.zero) then
- call CCTK_ReduceLocalArray1D(ierror,cctkGH,-1,
- . reduction_handle,cflows,tempm,auxi,CCTK_VARIABLE_REAL)
+ input_array_type(1) = CCTK_VARIABLE_REAL
+ reduction_value(1)= CCTK_PointerTo(tempm)
+ input_array(1) = CCTK_PointerTo(cflows)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,1, auxi, input_array_type, 1,
+ . input_array_type, reduction_value)
+
cflows = tempm
end if
if (nw.ne.zero) then
- call CCTK_ReduceLocalArray1D(ierror,cctkGH,-1,
- . reduction_handle,nflows,tempm,auxi,CCTK_VARIABLE_REAL)
+ input_array_type(1) = CCTK_VARIABLE_REAL
+ reduction_value(1)= CCTK_PointerTo(tempm)
+ input_array(1) = CCTK_PointerTo(nflows)
+ call CCTK_ReduceArraysGlobally(ierror, cctkGH, -1,reduction_handle, -1,
+ . 1, input_array,1, auxi, input_array_type, 1,
+ . input_array_type, reduction_value)
+
nflows = tempm
end if