Beispiel #1
0
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);
}
Beispiel #2
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;
}
Beispiel #3
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;
}
Beispiel #4
0
int GridFwrite(FILE *fp,struct GridData *ptr) {
  return GridWrite(fileno(fp),ptr);
}
Beispiel #5
0
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);
}