← Back to team overview

dolfin team mailing list archive

Re: [Branch ~dolfin-core/dolfin/trunk] Rev 7202: merge phdf5 branch

 

Was the changes to CMakeLists.txt in this merge made on purpose?

Johannes

On Fri, Dec 7, 2012 at 4:59 PM,  <noreply@xxxxxxxxxxxxx> wrote:
> Merge authors:
>   Chris Richardson (chris-bpi)
>   Garth Wells (garth-wells)
> ------------------------------------------------------------
> revno: 7202 [merge]
> committer: Garth N. Wells <gnw20@xxxxxxxxx>
> branch nick: clean_test
> timestamp: Fri 2012-12-07 15:57:55 +0000
> message:
>   merge phdf5 branch
> modified:
>   CMakeLists.txt
>   dolfin/graph/GraphBuilder.cpp
>   dolfin/io/HDF5File.cpp
>   dolfin/io/HDF5File.h
>   dolfin/io/HDF5Interface.cpp
>   dolfin/io/HDF5Interface.h
>   dolfin/io/XDMFFile.cpp
>   test/unit/io/python/HDF5.py
>
>
> --
> lp:dolfin
> https://code.launchpad.net/~dolfin-core/dolfin/trunk
>
> Your team DOLFIN Core Team is subscribed to branch lp:dolfin.
> To unsubscribe from this branch go to https://code.launchpad.net/~dolfin-core/dolfin/trunk/+edit-subscription
>
> === modified file 'CMakeLists.txt'
> --- CMakeLists.txt      2012-12-05 10:44:03 +0000
> +++ CMakeLists.txt      2012-12-07 15:09:46 +0000
> @@ -215,18 +215,16 @@
>  set(Boost_USE_MULTITHREADED $ENV{BOOST_USE_MULTITHREADED})
>  set(Boost_ADDITIONAL_VERSIONS 1.43 1.43.0 1.44 1.44.0 1.45 1.45.0 1.46 1.46.0 1.46.1 1.47 1.47.0 1.48 1.48.0 1.49 1.49.0 1.50 1.50.0)
>
> -find_package(Boost 1.36 QUIET REQUIRED)
> -
> -set(DOLFIN_BOOST_COMPONENTS filesystem program_options system thread iostreams math_tr1)
>  if (DOLFIN_ENABLE_MPI AND MPI_CXX_FOUND)
> -  list(APPEND DOLFIN_BOOST_COMPONENTS mpi serialization)
> +  find_package(Boost 1.36 COMPONENTS filesystem program_options system thread iostreams math_tr1 mpi serialization REQUIRED)
> +else()
> +  find_package(Boost 1.36 COMPONENTS filesystem program_options system thread iostreams math_tr1 REQUIRED)
>  endif()
>
>  # Boost timer was not a separate Boost component until version 1.48
> -if ("${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}" VERSION_GREATER "1.47")
> -  list(APPEND DOLFIN_BOOST_COMPONENTS timer)
> -endif()
> -find_package(Boost COMPONENTS ${DOLFIN_BOOST_COMPONENTS} REQUIRED)
> +# if ("${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}" VERSION_GREATER "1.47")
> +#   find_package(Boost COMPONENTS timer REQUIRED)
> +# endif()
>
>  # Check for required package UFC
>  find_package(UFC 2.0.2 QUIET HINTS ${UFC_DIR})
>
> === modified file 'dolfin/graph/GraphBuilder.cpp'
> --- dolfin/graph/GraphBuilder.cpp       2012-12-06 21:40:39 +0000
> +++ dolfin/graph/GraphBuilder.cpp       2012-12-07 15:09:46 +0000
> @@ -18,7 +18,7 @@
>  // Modified by Chris Richardson, 2012
>  //
>  // First added:  2010-02-19
> -// Last changed: 2012-11-24
> +// Last changed: 2012-12-07
>
>  #include <algorithm>
>  #include <numeric>
> @@ -372,8 +372,6 @@
>    double tt = time();
>
>    // Create mapping from facets (vector) to cells
> -  // FIXME: potential speedup by using a hash directly for the map key
> -  //        instead of a vector
>    typedef boost::unordered_map<std::vector<std::size_t>, std::size_t> vectormap;
>    vectormap facet_cell;
>
> @@ -451,7 +449,8 @@
>      }
>
>      // Go through local facets, looking for a matching facet in othermap
> -    for(vectormap::iterator fcell = facet_cell.begin(); fcell != facet_cell.end(); ++fcell)
> +    vectormap::iterator fcell = facet_cell.begin();
> +    while(fcell != facet_cell.end())
>      {
>        vectormap::iterator join_cell = othermap.find(fcell->first);
>        if (join_cell != othermap.end())
> @@ -460,10 +459,13 @@
>          // from both maps
>          local_graph[fcell->second].insert(join_cell->second);
>          ghost_vertices.insert(join_cell->second);
> -        facet_cell.erase(fcell);
> +        facet_cell.erase(fcell++);
>          othermap.erase(join_cell);
>        }
> +      else
> +        ++fcell;
>      }
> +
>    }
>
>    // remaining facets are exterior boundary - could be useful
>
> === modified file 'dolfin/io/HDF5File.cpp'
> --- dolfin/io/HDF5File.cpp      2012-12-04 11:29:59 +0000
> +++ dolfin/io/HDF5File.cpp      2012-12-04 22:20:41 +0000
> @@ -18,7 +18,7 @@
>  // Modified by Garth N. Wells, 2012
>  //
>  // First added:  2012-06-01
> -// Last changed: 2012-11-27
> +// Last changed: 2012-12-04
>
>  #ifdef HAS_HDF5
>
> @@ -54,7 +54,7 @@
>  using namespace dolfin;
>
>  //-----------------------------------------------------------------------------
> -HDF5File::HDF5File(const std::string filename, bool truncate, bool use_mpiio)
> +HDF5File::HDF5File(const std::string filename, const std::string file_mode, bool use_mpiio)
>    : hdf5_file_open(false), hdf5_file_id(0),
>      mpi_io(MPI::num_processes() > 1 && use_mpiio ? true : false)
>  {
> @@ -62,7 +62,7 @@
>    parameters.add("chunking", false);
>
>    // OPen HDF5 file
> -  hdf5_file_id = HDF5Interface::open_file(filename, truncate, mpi_io);
> +  hdf5_file_id = HDF5Interface::open_file(filename, file_mode, mpi_io);
>    hdf5_file_open = true;
>  }
>  //-----------------------------------------------------------------------------
> @@ -121,7 +121,7 @@
>  //-----------------------------------------------------------------------------
>  void HDF5File::write(const Mesh& mesh, std::size_t cell_dim, const std::string name)
>  {
> -  warning("Writing mesh with global index - not suitable for visualisation");
> +  warning("Writing globally indexed mesh - not suitable for visualisation");
>
>    dolfin_assert(hdf5_file_open);
>
> @@ -357,7 +357,6 @@
>  void HDF5File::read(Mesh& input_mesh, const std::string name)
>  {
>    warning("HDF5 Mesh input is still experimental");
> -  warning("HDF5 Mesh input will always repartition the mesh");
>
>    dolfin_assert(hdf5_file_open);
>
> @@ -391,8 +390,6 @@
>                                       const std::string coordinates_name,
>                                       const std::string topology_name)
>  {
> -  // FIXME: should not call repartition if running serial
> -  warning("HDF5 Mesh read will repartition this mesh");
>    Timer t("HDF5: ReadMesh");
>
>    // Structure to store local mesh
>
> === modified file 'dolfin/io/HDF5File.h'
> --- dolfin/io/HDF5File.h        2012-12-04 11:29:59 +0000
> +++ dolfin/io/HDF5File.h        2012-12-04 22:20:41 +0000
> @@ -18,7 +18,7 @@
>  // Modified by Garth N. Wells, 2012
>  //
>  // First added:  2012-05-22
> -// Last changed: 2012-11-27
> +// Last changed: 2012-12-04
>
>  #ifndef __DOLFIN_HDF5FILE_H
>  #define __DOLFIN_HDF5FILE_H
> @@ -47,7 +47,7 @@
>    public:
>
>      /// Constructor
> -    HDF5File(const std::string filename, bool truncate, bool use_mpiio=true);
> +    HDF5File(const std::string filename, const std::string file_mode, bool use_mpiio=true);
>
>      /// Destructor
>      ~HDF5File();
>
> === modified file 'dolfin/io/HDF5Interface.cpp'
> --- dolfin/io/HDF5Interface.cpp 2012-12-04 11:29:59 +0000
> +++ dolfin/io/HDF5Interface.cpp 2012-12-04 22:20:41 +0000
> @@ -18,7 +18,7 @@
>  // Modified by Johannes Ring, 2012
>  //
>  // First Added: 2012-09-21
> -// Last Changed: 2012-10-12
> +// Last Changed: 2012-12-04
>
>  #include <boost/filesystem.hpp>
>
> @@ -36,7 +36,7 @@
>  using namespace dolfin;
>
>  //-----------------------------------------------------------------------------
> -hid_t HDF5Interface::open_file(const std::string filename, const bool truncate,
> +hid_t HDF5Interface::open_file(const std::string filename, const std::string mode,
>                                 const bool use_mpi_io)
>  {
>    // Set parallel access with communicator
> @@ -55,10 +55,10 @@
>      #endif
>    }
>
> -  hid_t file_id;
> -  if (truncate)
> +  hid_t file_id = HDF5_FAIL;
> +  if (mode=="w")
>    {
> -    // Create file, (overwriting existing file, if present)
> +    // Create file for write, (overwriting existing file, if present)
>      file_id = H5Fcreate(filename.c_str(), H5F_ACC_TRUNC, H5P_DEFAULT,
>                          plist_id);
>    }
> @@ -72,8 +72,22 @@
>                     "File does not exist");
>      }
>
> -    // Open file existing file
> -    file_id = H5Fopen(filename.c_str(), H5F_ACC_RDWR, plist_id);
> +    if(mode=="a")
> +    {
> +      // Open file existing file for append
> +      file_id = H5Fopen(filename.c_str(), H5F_ACC_RDWR, plist_id);
> +    }
> +    else if(mode=="r")
> +    {
> +      file_id = H5Fopen(filename.c_str(), H5F_ACC_RDONLY, plist_id);
> +    }
> +    else
> +    {
> +      dolfin_error("HDF5Interface.cpp",
> +                   "open HDF5 file",
> +                   "Unknown file mode \"%s\"", mode.c_str());
> +    }
> +
>    }
>    dolfin_assert(file_id != HDF5_FAIL);
>
>
> === modified file 'dolfin/io/HDF5Interface.h'
> --- dolfin/io/HDF5Interface.h   2012-12-04 11:29:59 +0000
> +++ dolfin/io/HDF5Interface.h   2012-12-04 22:20:41 +0000
> @@ -44,7 +44,7 @@
>    public:
>
>      /// Open HDF5 and return file descriptor
> -    static hid_t open_file(const std::string filename, const bool truncate,
> +    static hid_t open_file(const std::string filename, const std::string mode,
>                             const bool use_mpi_io);
>
>
>
> === modified file 'dolfin/io/XDMFFile.cpp'
> --- dolfin/io/XDMFFile.cpp      2012-12-04 20:34:24 +0000
> +++ dolfin/io/XDMFFile.cpp      2012-12-04 22:20:41 +0000
> @@ -18,7 +18,7 @@
>  // Modified by Garth N. Wells, 2012
>  //
>  // First added:  2012-05-28
> -// Last changed: 2012-11-26
> +// Last changed: 2012-12-04
>
>  #ifdef HAS_HDF5
>
> @@ -55,7 +55,7 @@
>    hdf5_filename = p.string();
>
>    // Create HDF5 file (truncate)
> -  hdf5_file.reset(new HDF5File(hdf5_filename, true));
> +  hdf5_file.reset(new HDF5File(hdf5_filename, "w"));
>
>    // Re-write mesh (true, false or auto, with auto based on detecting
>    // changes in a hash key)
>
> === modified file 'test/unit/io/python/HDF5.py'
> --- test/unit/io/python/HDF5.py 2012-12-03 21:36:45 +0000
> +++ test/unit/io/python/HDF5.py 2012-12-04 14:28:03 +0000
> @@ -30,20 +30,20 @@
>          def test_save_vector(self):
>              x = Vector(305)
>              x[:] = 1.0
> -            vector_file = HDF5File("x.h5", True)
> +            vector_file = HDF5File("x.h5", "w")
>              vector_file.write(x, "my_vector")
>
>          def test_save_and_read_vector(self):
>              # Write to file
>              x = Vector(305)
>              x[:] = 1.2
> -            vector_file = HDF5File("vector.h5", True)
> +            vector_file = HDF5File("vector.h5", "w")
>              vector_file.write(x, "my_vector")
>              del vector_file
>
>              # Read from file
>              y = Vector()
> -            vector_file = HDF5File("vector.h5", False)
> +            vector_file = HDF5File("vector.h5", "r")
>              vector_file.read(y, "my_vector")
>              self.assertEqual(y.size(), x.size())
>              self.assertEqual((x - y).norm("l1"), 0.0)
>
>


Follow ups