#include #include #include #include #include int main(int argc, void **argv); int main(int argc, void **argv) { /* This is a test program illustrating how one can make an allocatable 3D floating point array in C and use sdf_write and sdf_read to write from, and read to, such arrays. Also illustrates the use of sdf_transpose to convert from row-major to column major indexing */ pos size,i,j,k; char temp[300]; float pi=3.141592653; i4 szptrf; i4 szflt; data_id *id, *idcp, *id_in; float ***outdata; float ***indata; float *data; pos nx,ny,nz; pos dims[20]; i4 indorder[20]; i4 reverse[20]; char *outfile = "testout3d.sdf"; szflt=sizeof(float); if(sizeof(pos) != 8) { printf("test_sdf_large: sizeof(pos) = %d != 8, returning\n" ,sizeof(pos)); fflush(stdout); return 1; } sdf_rm(outfile); nx=(pos)64; ny=(pos)128; nz=(pos)256; dims[0]=nx; dims[1]=ny; dims[2]=nz; id=sdf_create_id(0,"sinxyz",'f',szflt,3,dims); /* make copy of id structure; will be necessary for freeing 3d array */ idcp=sdf_cp_id(id); size=data_size(id); output_int64(temp,size); printf("size = %s\n",temp); fflush(stdout); outdata = (float ***)sdf_mk_3d(id); for (i=0;idims[0]; ny=id_in->dims[1]; nz=id_in->dims[2]; printf("test_sdf_3d: gonna print out one column of 3d array:\n\n"); for (j=0;j