From 30f957f231bc891dadcd28bb30d660db98372272 Mon Sep 17 00:00:00 2001 From: rhaas Date: Wed, 18 Nov 2009 01:57:47 +0000 Subject: add tests using interger GFs, add test with stride==2 git-svn-id: http://svn.cactuscode.org/arrangements/CactusNumerical/SlabTest/trunk@11 732e31d2-b375-409b-9bd3-699c3b2c9da5 --- interface.ccl | 5 +++ schedule.ccl | 2 +- src/slabtest.c | 100 ++++++++++++++++++++++++++++++++++++++++++--------------- 3 files changed, 81 insertions(+), 26 deletions(-) diff --git a/interface.ccl b/interface.ccl index 4660510..ebd35b1 100644 --- a/interface.ccl +++ b/interface.ccl @@ -14,6 +14,11 @@ CCTK_REAL gfs TYPE=gf gfx gfy gfz } "grid functions" +CCTK_INT igfs TYPE=gf +{ + igfx igfy igfz +} "integer grid functions" + CCTK_REAL a1s TYPE=array DIM=1 SIZE=10 { a1x a1y a1z diff --git a/schedule.ccl b/schedule.ccl index 7b92a2e..bb2d75e 100644 --- a/schedule.ccl +++ b/schedule.ccl @@ -6,5 +6,5 @@ STORAGE: success SCHEDULE SlabTest_Test AT initial { LANG: C - STORAGE: gfs a1s a2s a3s + STORAGE: gfs a1s a2s a3s igfs } "Test Slab transfer routines" diff --git a/src/slabtest.c b/src/slabtest.c index e120fcb..a06cbab 100644 --- a/src/slabtest.c +++ b/src/slabtest.c @@ -25,12 +25,17 @@ runtest (CCTK_ARGUMENTS, int i, j, k; int mismatch; + +# define nvars 2 + const CCTK_INT vartypes[nvars] = {CCTK_VARIABLE_REAL, CCTK_VARIABLE_INT}; + const void *srcdataptrs[nvars] = {gfx, igfx}; + void *dstdataptrs[nvars] = {gfy, igfy}; int ierr; - ierr = Slab_Transfer + ierr = Slab_MultiTransfer (cctkGH, cctk_dim, info, -1, - CCTK_VARIABLE_REAL, gfx, CCTK_VARIABLE_REAL, gfy); + nvars, vartypes, srcdataptrs, vartypes, dstdataptrs); assert (!ierr); mismatch = 0; @@ -40,11 +45,18 @@ runtest (CCTK_ARGUMENTS, const int ind = CCTK_GFINDEX3D(cctkGH, i,j,k); if (gfy[ind] != gfz[ind]) { printf - ("Mismatch at [%d,%d,%d]: should be %g, is %g\n", + ("Real valued mismatch at [%d,%d,%d]: should be %g, is %g\n", cctk_lbnd[0] + i, cctk_lbnd[1] + j, cctk_lbnd[2] + k, (double) gfz[ind], (double) gfy[ind]); mismatch = 1; } + if (igfy[ind] != igfz[ind]) { + printf + ("Integer valued mismatch at [%d,%d,%d]: should be %d, is %d\n", + cctk_lbnd[0] + i, cctk_lbnd[1] + j, cctk_lbnd[2] + k, + (int) igfz[ind], (int) igfy[ind]); + mismatch = 1; + } } } } @@ -88,9 +100,9 @@ void SlabTest_Test (CCTK_ARGUMENTS) for (j=0; j= 2 && cctk_lbnd[0] + i < 5 && cctk_lbnd[1] + j >= 3 && cctk_lbnd[1] + j < 5 && cctk_lbnd[2] + k >= 4 && cctk_lbnd[2] + k < 6) { - gfz[ind] = 10000 * (cctk_lbnd[0] + i + 2) + 100 * (cctk_lbnd[1] + j + 1) + (cctk_lbnd[2] + k - 1); + gfz[ind] = igfz[ind] = 10000 * (cctk_lbnd[0] + i + 2) + 100 * (cctk_lbnd[1] + j + 1) + (cctk_lbnd[2] + k - 1); } else { gfz[ind] = gfy[ind]; + igfz[ind] = igfy[ind]; } } } @@ -218,14 +231,15 @@ void SlabTest_Test (CCTK_ARGUMENTS) for (j=0; j= 2 && cctk_lbnd[0] + i < 4 && cctk_lbnd[1] + j >= 3 && cctk_lbnd[1] + j < 6 && cctk_lbnd[2] + k >= 4 && cctk_lbnd[2] + k < 6) { - gfz[ind] = 10000 * (cctk_lbnd[2] + k + 1) + 100 * (cctk_lbnd[1] + j + 2) + (cctk_lbnd[0] + i - 1); + gfz[ind] = igfz[ind] = 10000 * (cctk_lbnd[2] + k + 1) + 100 * (cctk_lbnd[1] + j + 2) + (cctk_lbnd[0] + i - 1); } else { gfz[ind] = gfy[ind]; + igfz[ind] = igfy[ind]; } } } @@ -263,14 +277,15 @@ void SlabTest_Test (CCTK_ARGUMENTS) for (j=0; j= 2 && cctk_lbnd[0] + i < 5 && cctk_lbnd[1] + j >= 3 && cctk_lbnd[1] + j < 5 && cctk_lbnd[2] + k >= 4 && cctk_lbnd[2] + k < 6) { - gfz[ind] = 10000 * (cctk_lbnd[2] + k + 1) + 100 * (cctk_lbnd[0] + i + 3) + (cctk_lbnd[1] + j - 2); + gfz[ind] = igfz[ind] = 10000 * (cctk_lbnd[2] + k + 1) + 100 * (cctk_lbnd[0] + i + 3) + (cctk_lbnd[1] + j - 2); } else { gfz[ind] = gfy[ind]; + igfz[ind] = igfy[ind]; } } } @@ -308,14 +323,15 @@ void SlabTest_Test (CCTK_ARGUMENTS) for (j=0; j= 2 && cctk_lbnd[0] + i < 4 && cctk_lbnd[1] + j >= 3 && cctk_lbnd[1] + j < 6 && cctk_lbnd[2] + k >= 4 && cctk_lbnd[2] + k < 6) { - gfz[ind] = 10000 * (cctk_lbnd[2] + k + 1) + 100 * (cctk_lbnd[1] + j + 2) + (4 - cctk_lbnd[0] - i); + gfz[ind] = igfz[ind] = 10000 * (cctk_lbnd[2] + k + 1) + 100 * (cctk_lbnd[1] + j + 2) + (4 - cctk_lbnd[0] - i); } else { gfz[ind] = gfy[ind]; + igfz[ind] = igfy[ind]; } } } @@ -347,7 +363,41 @@ void SlabTest_Test (CCTK_ARGUMENTS) - /* TODO: strides, into array, out of array */ + CCTK_INFO (" Skip every second cell along y direction"); + + for (k=0; k