示例#1
0
int
main(int argc, char **argv)
{
  MPI_Init(&argc, &argv);
  libmrc_params_init(argc, argv);

  struct mrc_domain *domain = mrc_domain_create(MPI_COMM_WORLD);
  mrc_domain_set_type(domain, "simple");
  struct mrc_crds *crds = mrc_domain_get_crds(domain);

  int testcase = 1;
  mrc_params_get_option_int("case", &testcase);

  switch (testcase) {
  case 1:
    mrc_crds_set_type(crds, "uniform");
    mrc_domain_set_from_options(domain);
    mrc_domain_setup(domain);
    test_read_write(domain);
    break;
  case 2: ;
    mrc_crds_set_type(crds, "rectilinear");
    mrc_crds_set_param_int(crds, "sw", 2);
    mrc_domain_set_from_options(domain);
    mrc_domain_setup(domain);
    mrctest_set_crds_rectilinear_1(domain);
    test_read_write(domain);
    break;
  }
  mrc_domain_destroy(domain);

  MPI_Finalize();
}
示例#2
0
static void
test_read_write(struct mrc_domain *domain)
{
  struct mrc_io *io = mrc_io_create(mrc_domain_comm(domain));

  mrc_io_set_from_options(io);
  mrc_io_setup(io);
  mrc_io_open(io, "w", 0, 0.);
  mrc_io_write_path(io, "/domain", "domain", domain);
  mrc_io_close(io);
  mrc_io_destroy(io);

  io = mrc_io_create(mrc_domain_comm(domain));
  mrc_io_set_from_options(io);
  mrc_io_setup(io);
  mrc_io_open(io, "r", 0, 0.);
  struct mrc_domain *domain2 = mrc_io_read_path(io, "/domain", "domain", mrc_domain);
  mrc_io_close(io);
  mrc_io_destroy(io);

  mrctest_crds_compare(mrc_domain_get_crds(domain),
		       mrc_domain_get_crds(domain2));

  mrc_domain_destroy(domain2);
}
示例#3
0
文件: gen_mrc_crds.c 项目: ALaDyn/psc
int
main(int argc, char **argv)
{
  const char *run = "test";
  char grid2_fname[MAX_STRLEN];
  char hgrid2_fname[MAX_STRLEN];
  struct mrc_domain *mrc_domain;
  struct mrc_crds *mrc_crds;
  struct mrc_ndarray *nd;
  FILE *fout1;
  FILE *fout2;

  MPI_Init(&argc, &argv);
  libmrc_params_init(argc, argv);

  mrc_params_get_option_string("run", &run);
  snprintf(grid2_fname, MAX_STRLEN - 1, "%s.grid2", run);
  snprintf(hgrid2_fname, MAX_STRLEN - 1, "%s.hgrid2", run);

  mrc_domain = mrc_domain_create(MPI_COMM_WORLD);
  mrc_crds = mrc_domain_get_crds(mrc_domain);
  mrc_domain_set_from_options(mrc_domain);
  mrc_domain_setup(mrc_domain);

  // mrc_domain_view(mrc_domain);

  ///////////////////////////////////////////
  // write out a 'high precision' grid2 file
  fout1 = fopen(grid2_fname, "w");
  fout2 = fopen(hgrid2_fname, "w");
  for (int d=0; d < 3; d++) {
    nd = mrc_crds->global_crd[d];
    
    fprintf(fout1, "%d\n", nd->dims.vals[0]);
    fprintf(fout2, "%d\n", nd->dims.vals[0]);

    for (int i = nd->nd_acc.beg[0]; i < nd->nd_acc.end[0]; i++) {
      fprintf(fout1, "%16.10g\n", MRC_D2(nd, i, 0));
      fprintf(fout2, "%16.10g\n", MRC_D2(nd, i, 1));
    }
  }
  fclose(fout1);
  fclose(fout2);

  mrc_domain_destroy(mrc_domain);
  MPI_Finalize();
  return 0;
}