commit/MOAB: danwu: Minor updates for unit test write_nc.
1 new commit in MOAB: https://bitbucket.org/fathomteam/moab/commits/54bc99a5bafa/ Changeset: 54bc99a5bafa Branch: master User: danwu Date: 2014-05-01 00:47:53 Summary: Minor updates for unit test write_nc. Affected #: 1 file diff --git a/test/io/write_nc.cpp b/test/io/write_nc.cpp index 2dc8e9a..3332d4b 100644 --- a/test/io/write_nc.cpp +++ b/test/io/write_nc.cpp @@ -36,7 +36,6 @@ static const char example_mpas[] = "/io/mpasx1.642.t.2.nc"; // CAM-EUL void test_eul_read_write_T(); void test_eul_check_T(); -void test_eul_read_write_append(); // CAM-FV void test_fv_read_write_T(); @@ -50,6 +49,16 @@ void test_homme_check_T(); void test_mpas_read_write_vars(); void test_mpas_check_vars(); +// Test append option +void test_eul_read_write_append(); +void test_eul_check_append(); + +#ifdef USE_MPI +// Test mesh with ghosted entities +void test_eul_read_write_ghosting(); +void test_eul_check_ghosting(); +#endif + void get_eul_read_options(std::string& opts); void get_fv_read_options(std::string& opts); void get_homme_read_options(std::string& opts); @@ -69,14 +78,24 @@ int main(int argc, char* argv[]) result += RUN_TEST(test_eul_read_write_T); result += RUN_TEST(test_eul_check_T); - result += RUN_TEST(test_eul_read_write_append); + result += RUN_TEST(test_fv_read_write_T); result += RUN_TEST(test_fv_check_T); + result += RUN_TEST(test_homme_read_write_T); result += RUN_TEST(test_homme_check_T); + result += RUN_TEST(test_mpas_read_write_vars); result += RUN_TEST(test_mpas_check_vars); + result += RUN_TEST(test_eul_read_write_append); + result += RUN_TEST(test_eul_check_append); + +#ifdef USE_MPI + result += RUN_TEST(test_eul_read_write_ghosting); + result += RUN_TEST(test_eul_check_ghosting); +#endif + #ifdef USE_MPI fail = MPI_Finalize(); if (fail) @@ -111,19 +130,10 @@ void test_eul_read_write_T() ErrorCode rval = mb.create_meshset(MESHSET_SET, set); CHECK_ERR(rval); -#ifdef USE_MPI - read_opts = "PARALLEL=READ_PART;PARTITION;PARALLEL_RESOLVE_SHARED_ENTS;PARALLEL_GHOSTS=2.0.1;PARTITION_METHOD=SQIJ;VARIABLE="; - rval = mb.load_file(example_eul, &set, read_opts.c_str()); - CHECK_ERR(rval); - - read_opts = "PARALLEL=READ_PART;PARTITION;PARTITION_METHOD=SQIJ;VARIABLE=T,gw;NOMESH"; - rval = mb.load_file(example_eul, &set, read_opts.c_str()); - CHECK_ERR(rval); -#else + // Load non-set variable T, set variable gw, and the mesh read_opts += ";DEBUG_IO=0;VARIABLE=T,gw"; rval = mb.load_file(example_eul, &set, read_opts.c_str()); CHECK_ERR(rval); -#endif // Write variables T and gw std::string write_opts; @@ -246,75 +256,6 @@ void test_eul_check_T() } } -// We read and write variables T and U; U after we write T, so we append -// we will also write gw, just to test the file after writing -void test_eul_read_write_append() -{ - int procs = 1; -#ifdef USE_MPI - MPI_Comm_size(MPI_COMM_WORLD, &procs); -#endif - -// We will not test NC writer in parallel without pnetcdf support -#ifndef PNETCDF_FILE - if (procs > 1) - return; -#endif - - Core moab; - Interface& mb = moab; - - std::string read_opts; - get_eul_read_options(read_opts); - - EntityHandle set; - ErrorCode rval = mb.create_meshset(MESHSET_SET, set); - CHECK_ERR(rval); - - // Load non-set variable T, set variable gw, and the mesh - read_opts += ";DEBUG_IO=0;VARIABLE=T,U,V,gw"; - rval = mb.load_file(example_eul, &set, read_opts.c_str()); - CHECK_ERR(rval); - - // Write variables T and gw - std::string write_opts; - write_opts = std::string(";;VARIABLE=T,gw;DEBUG_IO=0"); -#ifdef USE_MPI - // Use parallel options - write_opts += std::string(";PARALLEL=WRITE_PART"); -#endif - if (procs > 1) - rval = mb.write_file("test_par_eul_TU.nc", 0, write_opts.c_str(), &set, 1); - else - rval = mb.write_file("test_eul_TU.nc", 0, write_opts.c_str(), &set, 1); - CHECK_ERR(rval); - // append to the file variable U - std::string write_opts2; - write_opts2 = std::string(";;VARIABLE=U;DEBUG_IO=0;APPEND"); -#ifdef USE_MPI - // Use parallel options - write_opts2 += std::string(";PARALLEL=WRITE_PART"); -#endif - if (procs > 1) - rval = mb.write_file("test_par_eul_TU.nc", 0, write_opts2.c_str(), &set, 1); - else - rval = mb.write_file("test_eul_TU.nc", 0, write_opts2.c_str(), &set, 1); - CHECK_ERR(rval); - - // append to the file variable V, renamed to VNEWNAME - std::string write_opts3; - write_opts3 = std::string(";;VARIABLE=V;RENAME=VNEWNAME;DEBUG_IO=0;APPEND"); -#ifdef USE_MPI - // Use parallel options - write_opts3 += std::string(";PARALLEL=WRITE_PART"); -#endif - if (procs > 1) - rval = mb.write_file("test_par_eul_TU.nc", 0, write_opts3.c_str(), &set, 1); - else - rval = mb.write_file("test_eul_TU.nc", 0, write_opts3.c_str(), &set, 1); - CHECK_ERR(rval); -} - // We also write coordinate variables slat and slon to the output file, so that // it can be recognized by NC reader later in test_fv_check_T() void test_fv_read_write_T() @@ -715,6 +656,125 @@ void test_mpas_check_vars() } } +// We read and write variables T and U; U after we write T, so we append +// we will also write gw, just to test the file after writing +void test_eul_read_write_append() +{ + int procs = 1; +#ifdef USE_MPI + MPI_Comm_size(MPI_COMM_WORLD, &procs); +#endif + +// We will not test NC writer in parallel without pnetcdf support +#ifndef PNETCDF_FILE + if (procs > 1) + return; +#endif + + Core moab; + Interface& mb = moab; + + std::string read_opts; + get_eul_read_options(read_opts); + + EntityHandle set; + ErrorCode rval = mb.create_meshset(MESHSET_SET, set); + CHECK_ERR(rval); + + // Load non-set variables T, U, V, and the mesh + read_opts += ";DEBUG_IO=0;VARIABLE=T,U,V"; + rval = mb.load_file(example_eul, &set, read_opts.c_str()); + CHECK_ERR(rval); + + // Write variable T + std::string write_opts; + write_opts = std::string(";;VARIABLE=T;DEBUG_IO=0"); +#ifdef USE_MPI + // Use parallel options + write_opts += std::string(";PARALLEL=WRITE_PART"); +#endif + if (procs > 1) + rval = mb.write_file("test_par_eul_append.nc", 0, write_opts.c_str(), &set, 1); + else + rval = mb.write_file("test_eul_append.nc", 0, write_opts.c_str(), &set, 1); + CHECK_ERR(rval); + + // Append to the file variable U + std::string write_opts2; + write_opts2 = std::string(";;VARIABLE=U;DEBUG_IO=0;APPEND"); +#ifdef USE_MPI + // Use parallel options + write_opts2 += std::string(";PARALLEL=WRITE_PART"); +#endif + if (procs > 1) + rval = mb.write_file("test_par_eul_append.nc", 0, write_opts2.c_str(), &set, 1); + else + rval = mb.write_file("test_eul_append.nc", 0, write_opts2.c_str(), &set, 1); + CHECK_ERR(rval); + + // Append to the file variable V, renamed to VNEWNAME + std::string write_opts3; + write_opts3 = std::string(";;VARIABLE=V;RENAME=VNEWNAME;DEBUG_IO=0;APPEND"); +#ifdef USE_MPI + // Use parallel options + write_opts3 += std::string(";PARALLEL=WRITE_PART"); +#endif + if (procs > 1) + rval = mb.write_file("test_par_eul_append.nc", 0, write_opts3.c_str(), &set, 1); + else + rval = mb.write_file("test_eul_append.nc", 0, write_opts3.c_str(), &set, 1); + CHECK_ERR(rval); +} + +void test_eul_check_append() +{ + // TBD +} + +#ifdef USE_MPI +// NC writer should filter entities that are not owned, e.g. ghosted elements +void test_eul_read_write_ghosting() +{ + int procs = 1; + MPI_Comm_size(MPI_COMM_WORLD, &procs); + +// We will not test NC writer in parallel without pnetcdf support +#ifndef PNETCDF_FILE + if (procs > 1) + return; +#endif + + Core moab; + Interface& mb = moab; + + EntityHandle set; + ErrorCode rval = mb.create_meshset(MESHSET_SET, set); + CHECK_ERR(rval); + + std::string read_opts = "PARALLEL=READ_PART;PARTITION;PARALLEL_RESOLVE_SHARED_ENTS;PARALLEL_GHOSTS=2.0.1;PARTITION_METHOD=SQIJ;VARIABLE="; + rval = mb.load_file(example_eul, &set, read_opts.c_str()); + CHECK_ERR(rval); + + read_opts = "PARALLEL=READ_PART;PARTITION;PARTITION_METHOD=SQIJ;VARIABLE=T;NOMESH"; + rval = mb.load_file(example_eul, &set, read_opts.c_str()); + CHECK_ERR(rval); + + // Write variable T + std::string write_opts; + write_opts = std::string(";;PARALLEL=WRITE_PART;VARIABLE=T;DEBUG_IO=0"); + if (procs > 1) + rval = mb.write_file("test_par_eul_ghosting.nc", 0, write_opts.c_str(), &set, 1); + else + rval = mb.write_file("test_eul_ghosting.nc", 0, write_opts.c_str(), &set, 1); + CHECK_ERR(rval); +} + +void test_eul_check_ghosting() +{ + // TBD +} +#endif + void get_eul_read_options(std::string& opts) { #ifdef USE_MPI Repository URL: https://bitbucket.org/fathomteam/moab/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email.
participants (1)
-
commits-noreply@bitbucket.org