PetscErrorCode CreateChip() { PetscErrorCode ierr; PetscReal dx = 1; Coor len = {32,16,0}; Coor dh = {dx,dx,0}; iCoor size = {len.x/dx,len.y/dx,0}; printf("MX = %d;\n", size.x); printf("MY = %d;\n", size.y); iCoor pos = {0,0,0}; Grid chip; ierr = GridCreate(dh,pos,size,1,&chip); CHKERRQ(ierr); ierr = VecSet(chip->v,-1); CHKERRQ(ierr); int borderwidth = 3; ierr = GridDrawBorder( chip, borderwidth, 1 ); CHKERRQ(ierr); PetscReal sq = 2; { Coor loc = {8,8,0}; Coor lo = {loc.x-sq,loc.y-sq,0}; Coor hi = {loc.x+sq,loc.y+sq,0}; ierr = GridFillRectangle(chip, lo, hi, -2); CHKERRQ(ierr); } { Coor loc = {24,8,0}; Coor lo = {loc.x-sq,loc.y-sq,0}; Coor hi = {loc.x+sq,loc.y+sq,0}; ierr = GridFillRectangle(chip, lo, hi, -3); CHKERRQ(ierr); } ierr = GridSetName(chip,"chip"); CHKERRQ(ierr); ierr = GridWrite(chip,0); CHKERRQ(ierr); PetscFunctionReturn(0); }
int main(int argc, char **args) { PetscErrorCode ierr; ierr = DCellInit(); CHKERRQ(ierr); PetscReal dx = 1; iCoor size = {1625,1145,0}; // iCoor size = {253,341,0}; int fd; Coor dh = {dx,dx,dx}; iCoor pos = {0,0,0}; Grid chip; ierr = GridCreate(dh,pos,size,1,&chip); CHKERRQ(ierr); ierr = PetscInfo(0,"Reading image file\n"); CHKERRQ(ierr); ierr = PetscBinaryOpen("/scratch/n/BL Big",FILE_MODE_READ,&fd); CHKERRQ(ierr); ierr = PetscBinaryRead(fd,chip->v1,size.x*size.y,PETSC_DOUBLE); CHKERRQ(ierr); ierr = PetscBinaryClose(fd); CHKERRQ(ierr); ierr = PetscInfo(0,"Writing image file\n"); CHKERRQ(ierr); ierr = GridWrite(chip,0); CHKERRQ(ierr); FluidField fluid; ierr = FluidFieldCreate(PETSC_COMM_WORLD, &fluid); CHKERRQ(ierr); ierr = FluidFieldSetDims(fluid,size); CHKERRQ(ierr); ierr = FluidFieldSetDx(fluid,dx); CHKERRQ(ierr); ierr = FluidFieldSetMask(fluid, chip); CHKERRQ(ierr); ierr = FluidFieldSetup(fluid); CHKERRQ(ierr); ierr = SetPressureBC(fluid); CHKERRQ(ierr); ierr = KSPSolve(fluid->ksp,fluid->rhs,fluid->vel); CHKERRQ(ierr); ierr = FluidFieldWrite( fluid,0); CHKERRQ(ierr); ierr = FluidFieldDestroy(fluid); CHKERRQ(ierr); ierr = GridDestroy(chip); CHKERRQ(ierr); ierr = DCellFinalize(); CHKERRQ(ierr); return 0; }
int main(int argc,char *argv[]) { FILE *fp; int fd; int yr,mo,dy,hr,mt; double sc; fp=fopen(argv[1],"r"); if (fp==NULL) { fprintf(stderr,"File not found.\n"); exit(-1); } fd=fileno(fp); while(GridRead(fd,&grd) !=-1) { TimeEpochToYMDHMS(grd.st_time,&yr,&mo,&dy,&hr,&mt,&sc); fprintf(stderr,"%.4d-%.2d-%.2d %.2d:%.2d:%.2d pnts=%d\n", yr,mo,dy,hr,mt,(int) sc,grd.vcnum); GridWrite(fileno(stdout),&grd); } fclose(fp); return 0; }
int GridFwrite(FILE *fp,struct GridData *ptr) { return GridWrite(fileno(fp),ptr); }
int main(int argc, char **args) { PetscErrorCode ierr; PetscFunctionBegin; ierr = DCellInit(); CHKERRQ(ierr); int d1 = 64; Coor dh = {1./(d1-1), 1./(d1-1), 1./(d1-1)}; PetscReal radius = 0.5; LevelSet ls; ierr = LevelSetInitializeToStar2D( dh, (Coor){0,0,0}, radius, 0.1, 7, &ls); CHKERRQ(ierr); ierr = GridWrite(ls->phi,0); CHKERRQ(ierr); ierr = LevelSetWriteIrregularNodeList(ls->irregularNodes,0); CHKERRQ(ierr); /* ierr = LevelSetInitializeToCircle( dh, (Coor){0,0,0}, radius, &ls); CHKERRQ(ierr); ierr = GridWrite(ls->phi,0); CHKERRQ(ierr); ierr = LevelSetWriteIrregularNodeList(ls->irregularNodes,0); CHKERRQ(ierr); */ printf("len: %d\n",ArrayLength(ls->irregularNodes)); printf("sizeof: %ld\n", sizeof(IrregularNode) ); IrregularNode n; unsigned long p = &n.x; a(x); a(y); a(z); printf("\nshift\n"); a(shift.x); a(shift.y); a(shift.z); printf("\nox\n"); a(ox); a(oy); a(oz); printf("\n"); a(nx); a(ny); a(nz); a(sx); a(sy); a(sz); a(rx); a(ry); a(rz); printf("\n"); a(op.x); a(op.y); a(op.z); IrregularNode *N; ierr = ArrayGet(ls->irregularNodes,0,&N); CHKERRQ(ierr); printf("[%f, %f, %f] \n",N->ox,N->oy,N->oz); printf("[%f, %f, %f] \n",N->nx,N->ny,N->nz); printf("[%d, %d, %d] \n",N->x,N->y,N->z); printf("[%f, %f, %f] \n",N->op.x,N->op.y,N->op.z); double *data = ArrayGetData(ls->irregularNodes); for (int i = 0; i < 1e0; ++i) { printf("%f,",data[i]); } ierr = LevelSetDestroy(ls); CHKERRQ(ierr); ierr = DCellFinalize(); CHKERRQ(ierr); PetscFunctionReturn(0); }