aboutsummaryrefslogtreecommitdiff
path: root/src/NuSurfacer.c
diff options
context:
space:
mode:
authorjshalf <jshalf@bfcf8e34-485d-4d46-a995-1fd6fa6fb178>2000-10-07 05:09:03 +0000
committerjshalf <jshalf@bfcf8e34-485d-4d46-a995-1fd6fa6fb178>2000-10-07 05:09:03 +0000
commite626a0effb3f657a36f2c9be6f80149814d620f3 (patch)
tree9941e00d1fe5c47c4aeb472e14256df4028ad5f2 /src/NuSurfacer.c
parenta56d13efe4ca5ae5ec16daf48a1842e61de89109 (diff)
OK,
it builds... Isn't carefully tested, but at least it builds. I got rid of an awful lot of extraneous crap and in particular *all* of the static global variables. We can add crap back when its clear that it is a necessity. For some reason CCTK_INT8 was an unrecognized type in the build. You might want to add that back to the Socket.c if its clear why this type was not recognized. This only affects the subroutine IsoWriteDataToClients() git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGHIO/IsoSurfacer/trunk@7 bfcf8e34-485d-4d46-a995-1fd6fa6fb178
Diffstat (limited to 'src/NuSurfacer.c')
-rw-r--r--src/NuSurfacer.c61
1 files changed, 31 insertions, 30 deletions
diff --git a/src/NuSurfacer.c b/src/NuSurfacer.c
index d12aba8..8e12186 100644
--- a/src/NuSurfacer.c
+++ b/src/NuSurfacer.c
@@ -3,8 +3,7 @@
#endif
#include <stdlib.h>
#include <stdio.h>
-#include "common.h"
-#include "cctk.h"
+#include "IsoSurfacerGH.h"
#include "CactusPUGH/PUGH/src/include/pugh.h"
#include "NuSurfacer.h"
@@ -289,14 +288,24 @@ static TRIANGLE_CASES triCases[] = {
for(nvals+=lst->nelem;lst->nelem<nvals;lst->nelem++) \
lst->array[lst->nelem] = vals[lst->nelem]; }
-#define ComputePoints(pughGH, pindex,p1,p2) { int pointindex=pindex[0]; \
-p1[0]=(isofl)(i+xMapOffset[pointindex])*pughGH->dx0+pughGH->lx0;\
-p1[1]=(isofl)(j+yMapOffset[pointindex])*pughGH->dy0+pughGH->ly0;\
-p1[2]=(isofl)(k+zMapOffset[pointindex])*pughGH->dz0+pughGH->lz0;\
+#define ComputePoints(xcoords,ycoords,zcoords,pindex,p1,p2,xl,yl) { \
+int pointindex=pindex[0]; \
+int _ii,_jj,_kk,_idx;\
+_ii=i+xMapOffset[pointindex];\
+_jj=j+yMapOffset[pointindex];\
+_kk=k+zMapOffset[pointindex];\
+_idx=_ii+_jj*xl+_kk*yl;\
+p1[0]=(CCTK_REAL)xcoords[_idx];\
+p1[1]=(CCTK_REAL)ycoords[_idx];\
+p1[2]=(CCTK_REAL)zcoords[_idx];\
pointindex=pindex[1];\
-p2[0]=(isofl)(i+xMapOffset[pointindex])*pughGH->dx0+pughGH->lx0;\
-p2[1]=(isofl)(j+yMapOffset[pointindex])*pughGH->dy0+pughGH->ly0;\
-p2[2]=(isofl)(k+zMapOffset[pointindex])*pughGH->dz0+pughGH->lz0;}
+_ii=i+xMapOffset[pointindex];\
+_jj=j+yMapOffset[pointindex];\
+_kk=k+zMapOffset[pointindex];\
+_idx=_ii+_jj*xl+_kk*yl;\
+p2[0]=(CCTK_REAL)xcoords[_idx];\
+p2[1]=(CCTK_REAL)ycoords[_idx];\
+p2[2]=(CCTK_REAL)zcoords[_idx];}
#define SetEdgeMaskP(idx_,data_,value_,mask_) { \
register int _cmask=1; \
@@ -312,13 +321,13 @@ p2[2]=(isofl)(k+zMapOffset[pointindex])*pughGH->dz0+pughGH->lz0;}
}
#define AddInterpolatedVertex(isoval,idx,pindex,p1,p2,vertlist) { \
- isofl _v,_d,_p1val,_p2val; int _i; \
+ CCTK_REAL4 _v,_d,_p1val,_p2val; int _i; \
_p1val = data[idx+cellOffset[pindex[0]]]; \
_p2val = data[idx+cellOffset[pindex[1]]]; \
_d=(isoval-_p1val)/(_p2val-_p1val); \
for( _i=0;_i<3;_i++){ \
_v=(p2[_i]-p1[_i])*_d + p1[_i]; \
- ArrayAddElem(isofl,vertlist,_v); \
+ ArrayAddElem(CCTK_REAL4,vertlist,_v); \
} \
}
@@ -332,7 +341,7 @@ typedef struct IsoCell {
} IsoCell;
IsoCell *cellslice;
-DeclareArray(isofl,FloatArray); /* declare a list of floats for vertices */
+DeclareArray(CCTK_REAL4,FloatArray); /* declare a list of floats for vertices */
DeclareArray(CCTK_INT4,IntArray); /* declare a list of intes for triangle connectivity */
FloatArray *vertexlist;
IntArray *trianglelist;
@@ -361,14 +370,13 @@ static int isoCellVindex[12]={1,0,1,0,
1,0,1,0,
2,2,2,2};
-void InitCellArrays(cGH *GH){
+void InitCellArrays(nx,ny){
int i,j;
- int nx=GH->cctk_lsh [0],ny=GH->cctk_lsh [1];
int ix=1,iy=nx,iz=nx*ny;
cellslice = New(IsoCell,2*nx*ny); /* 2 slices */
for(i=0;i<nx*ny*2;i++)
for(j=0;j<3;j++) cellslice[i].v[j]=-1; /* init all verts */
- vertexlist = New(FloatArray,1); InitArray(isofl,vertexlist);
+ vertexlist = New(FloatArray,1); InitArray(CCTK_REAL4,vertexlist);
trianglelist = New(IntArray,1); InitArray(CCTK_INT4,trianglelist);
/* celloffset */
cellOffset[0] = 0;
@@ -388,31 +396,24 @@ void InitCellArrays(cGH *GH){
isoCellOffset[10]=-(ix); isoCellOffset[11]=0;/* -yx,-y,-x,0*/
}
-void NuFindSurface(cGH *GH, int index,CCTK_REAL isovalue,polypatch *results){
+void NuFindSurface(CCTK_REAL *data,
+ int nx,int ny,int nz,
+ CCTK_REAL *xcoords, CCTK_REAL *ycoords, CCTK_REAL *zcoords,
+ CCTK_REAL isovalue, polypatch *results){
static int initialized_nusurf=0;
TRIANGLE_CASES *triCase;
EDGE_LIST *edge;
int i,j,k,imax,jmax,kmax;
int timelevel;
int idx,nverts=0; /* vertex and triangle counters for offsets */
- CCTK_REAL *data;
- int nx=GH->cctk_lsh [0],ny=GH->cctk_lsh [1],nz=GH->cctk_lsh [2],slicesize,slicemodulo;
- pGH *pughGH;
-
- pughGH = PUGH_pGH (GH);
+ int slicesize,slicemodulo;
if(!initialized_nusurf){
initialized_nusurf=1;
- InitCellArrays(GH);
+ InitCellArrays(nx,ny);
}
ResetArray(vertexlist); /* zero the vertex count (but keep storage) */
ResetArray(trianglelist); /* zero the triangle count (but keep storage) */
-
- timelevel = CCTK_NumTimeLevelsFromVarI (index);
- if (timelevel > 0)
- timelevel--;
- data = (CCTK_REAL *) GH->data [index][timelevel];
-
/*****Sliceinit */
slicesize=nx*ny; slicemodulo=slicesize*2;
if(!cellslice) cellslice = New(IsoCell,slicemodulo);
@@ -426,7 +427,7 @@ void NuFindSurface(cGH *GH, int index,CCTK_REAL isovalue,polypatch *results){
int isocellidx;
int mask;
int edgenumber;
- isofl p1[3],p2[3];
+ CCTK_REAL4 p1[3],p2[3];
int isocellnum;
int isocellvindex; /* 12 maps to 3 */
int elem,*elemp;
@@ -455,7 +456,7 @@ void NuFindSurface(cGH *GH, int index,CCTK_REAL isovalue,polypatch *results){
elem=*elemp;
if(elem<0){ /* add that vertex */
elem=*elemp=nverts;
- ComputePoints(pughGH, edges[edgenumber],p1,p2);
+ ComputePoints(xcoords,ycoords,zcoords, edges[edgenumber],p1,p2,nx,slicesize);
AddInterpolatedVertex(isovalue,idx,edges[edgenumber],p1,p2,vertexlist);
nverts++;
}