aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetSlab
diff options
context:
space:
mode:
authorschnetter <>2003-05-21 12:31:00 +0000
committerschnetter <>2003-05-21 12:31:00 +0000
commit4b023a79d1f2ec3b938864fc02e05524c2b0e95c (patch)
treef625172254d58d1e4f3e9e2e2640971bb417d56b /Carpet/CarpetSlab
parent1786e2595727da2e193b2165fd032cebfddc89bd (diff)
Allow hyperslabbing grid arrays with dim<3.
darcs-hash:20030521123129-07bb3-6b61f6f1d8bfba3ae3929c4feec24a13185c7a04.gz
Diffstat (limited to 'Carpet/CarpetSlab')
-rw-r--r--Carpet/CarpetSlab/src/slab.cc38
1 files changed, 21 insertions, 17 deletions
diff --git a/Carpet/CarpetSlab/src/slab.cc b/Carpet/CarpetSlab/src/slab.cc
index 6526e5cb0..3d25430e1 100644
--- a/Carpet/CarpetSlab/src/slab.cc
+++ b/Carpet/CarpetSlab/src/slab.cc
@@ -1,4 +1,4 @@
-// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/slab.cc,v 1.7 2003/05/13 12:19:42 schnetter Exp $
+// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/slab.cc,v 1.8 2003/05/21 14:31:29 schnetter Exp $
#include <assert.h>
#include <stdlib.h>
@@ -21,7 +21,7 @@
#include "slab.hh"
extern "C" {
- static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/slab.cc,v 1.7 2003/05/13 12:19:42 schnetter Exp $";
+ static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/slab.cc,v 1.8 2003/05/21 14:31:29 schnetter Exp $";
CCTK_FILEVERSION(Carpet_CarpetSlab_slab_cc);
}
@@ -259,8 +259,8 @@ namespace CarpetSlab {
void** const hdata,
int hsize [/*hdim*/])
{
- const int gpdim = CCTK_GroupDimFromVarI(vindex);
- assert (gpdim>=1 && gpdim<=dim);
+ const int vdim = CCTK_GroupDimFromVarI(vindex);
+ assert (vdim>=1 && vdim<=dim);
// Check some arguments
assert (hdim>=0 && hdim<=dim);
@@ -270,20 +270,20 @@ namespace CarpetSlab {
assert (hsize);
// Calculate more convenient representation of the direction
- vector<int> dirs(hdim);
+ int dirs[dim]; // should really be dirs[hdim]
// The following if statement is written according to the
// definition of "dir".
if (hdim==1) {
// 1-dimensional hyperslab
int mydir = 0;
- for (int d=0; d<dim; ++d) {
+ for (int d=0; d<vdim; ++d) {
if (directions[d]!=0) {
mydir = d+1;
break;
}
}
assert (mydir>0);
- for (int d=0; d<dim; ++d) {
+ for (int d=0; d<vdim; ++d) {
if (d == mydir-1) {
assert (directions[d]!=0);
} else {
@@ -291,23 +291,23 @@ namespace CarpetSlab {
}
}
dirs[0] = mydir;
- } else if (hdim==dim) {
- // dim-dimensional hyperslab
- for (int dd=0; dd<hdim; ++dd) {
- dirs[dd] = dd+1;
+ } else if (hdim==vdim) {
+ // vdim-dimensional hyperslab
+ for (int d=0; d<vdim; ++d) {
+ dirs[d] = d+1;
}
} else if (hdim==2) {
- // 2-dimensional hyperslab with dim==3
- assert (dim==3);
+ // 2-dimensional hyperslab with vdim==3
+ assert (vdim==3);
int mydir = 0;
- for (int d=0; d<dim; ++d) {
+ for (int d=0; d<vdim; ++d) {
if (directions[d]==0) {
mydir = d+1;
break;
}
}
assert (mydir>0);
- for (int d=0; d<dim; ++d) {
+ for (int d=0; d<vdim; ++d) {
if (d == mydir-1) {
assert (directions[d]==0);
} else {
@@ -315,7 +315,7 @@ namespace CarpetSlab {
}
}
int dd=0;
- for (int d=0; d<dim; ++d) {
+ for (int d=0; d<vdim; ++d) {
if (d != mydir-1) {
dirs[dd] = d+1;
++dd;
@@ -325,6 +325,10 @@ namespace CarpetSlab {
} else {
assert (0);
}
+ // Fill remaining length
+ for (int d=vdim; d<dim; ++d) {
+ dirs[d] = d+1;
+ }
// Calculate lengths
for (int dd=0; dd<hdim; ++dd) {
@@ -352,7 +356,7 @@ namespace CarpetSlab {
vtimelvl,
hdim,
global_startpoint,
- &dirs[0],
+ dirs,
downsample,
hsize);