if(g_proc_id == 0) {printf("Geo %d %d %d %d %d\n", x0, x1, x2, x3, ix);fflush(stdout);}
void geometry(){    int x0,x1,x2,x3,ix;  int i_even,i_odd;    /* extended for neighbour slices at x0=-1 and x0=T */  for (x0=-1;x0<(T+1);x0++){    for (x1=0;x1<L;x1++){      for (x2=0;x2<L;x2++){	for (x3=0;x3<L;x3++){	  ix=index(x0,x1,x2,x3);	  /* g_proc_id*T is added to allow for odd T when the number of 	     nodes is even */	  if((x0+x1+x2+x3+g_proc_id*T)%2==0){	    xeven[ix]=1;	  } 	  else xeven[ix]=0; 	  g_ipt[x0][x1][x2][x3]=ix;	  g_iup[ix][0]=index(x0+1,x1,x2,x3);	  g_idn[ix][0]=index(x0-1,x1,x2,x3);	  g_iup[ix][1]=index(x0,x1+1,x2,x3);	  g_idn[ix][1]=index(x0,x1-1,x2,x3);	  g_iup[ix][2]=index(x0,x1,x2+1,x3);	  g_idn[ix][2]=index(x0,x1,x2-1,x3);	  g_iup[ix][3]=index(x0,x1,x2,x3+1);	  g_idn[ix][3]=index(x0,x1,x2,x3-1);	}      }    }  }  i_even=0;  i_odd=0;  for (ix=0;ix<(VOLUME+RAND);ix++){    if(xeven[ix]==1){      trans1[ix]=i_even;      trans2[i_even]=ix;      i_even++;    }    else{      trans1[ix]=(VOLUME+RAND)/2+i_odd;      trans2[(VOLUME+RAND)/2+i_odd]=ix;      i_odd++;    }  }  if(g_proc_id == 0) {printf("Geo %d %d %d %d %d\n", x0, x1, x2, x3, ix);fflush(stdout);}}