]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Also provide GridOut::write_vtu().
authorbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Mon, 14 Jul 2014 22:55:47 +0000 (22:55 +0000)
committerbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Mon, 14 Jul 2014 22:55:47 +0000 (22:55 +0000)
git-svn-id: https://svn.dealii.org/trunk@33174 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/doc/news/changes.h
deal.II/include/deal.II/grid/grid_out.h
deal.II/source/grid/grid_out.cc
deal.II/source/grid/grid_out.inst.in

index ab287d94397184715f1ba1ac98b4ee7d79f7d27b..41acf13069897292bebe5ddad02e8ebb6c4785e4 100644 (file)
@@ -172,8 +172,9 @@ inconvenience this causes.
 <h3>Specific improvements</h3>
 
 <ol>
-  <li> New: There is now a function GridOut::write_vtk() that can
-  write a mesh in VTK format.
+  <li> New: There are now functions GridOut::write_vtk() and
+   GridOut::write_vtu() that can
+  write a mesh in VTK/VTU format.
   <br>
   (Wolfgang Bangerth, 2014/07/14)
   </li>
index 29e7742eebc5417a9e99c70f44c3fda8a62f7d4c..308df13c5e5c8c5b9afd71438fdb1a2c4f069b92 100644 (file)
@@ -753,6 +753,16 @@ namespace GridOutFlags
    */
   struct Vtk : public DataOutBase::VtkFlags
   {};
+
+
+  /**
+   * Flags for grid output in Vtu format. These flags are the same as
+   * those declared in DataOutBase::VtuFlags.
+   *
+   * @ingroup output
+   */
+  struct Vtu : public DataOutBase::VtkFlags
+  {};
 }
 
 
@@ -863,7 +873,9 @@ public:
     /// write() calls write_mathgl()
     mathgl,
     /// write() calls write_vtk()
-    vtk
+    vtk,
+    /// write() calls write_vtu()
+    vtu
   };
 
   /**
@@ -1121,6 +1133,13 @@ public:
   void write_vtk (const Triangulation<dim,spacedim> &tria,
                   std::ostream                      &out) const;
 
+  /**
+   * Write triangulation in VTU format.
+   */
+  template <int dim, int spacedim>
+  void write_vtu (const Triangulation<dim,spacedim> &tria,
+                  std::ostream                      &out) const;
+
   /**
    * Write grid to @p out according to the given data format. This
    * function simply calls the appropriate <tt>write_*</tt> function.
@@ -1196,6 +1215,11 @@ public:
    */
   void set_flags (const GridOutFlags::Vtk &flags);
 
+  /**
+   * Set flags for VTU output
+   */
+  void set_flags (const GridOutFlags::Vtu &flags);
+
   /**
    * Provide a function that can tell us which
    * suffix a given output format
@@ -1338,6 +1362,11 @@ private:
    */
   GridOutFlags::Vtk vtk_flags;
 
+  /**
+   * Flags for VTU output.
+   */
+  GridOutFlags::Vtu vtu_flags;
+
   /**
    * Write the grid information about faces to @p out. Only those
    * faces are printed which are on the boundary and which have a
index abbf96cebe982d9fe07489ad39dc08fbbe7c16ae..afd5647f65ea62750992668cd330392eac5df7fd 100644 (file)
@@ -472,6 +472,11 @@ void GridOut::set_flags (const GridOutFlags::Vtk &flags)
   vtk_flags = flags;
 }
 
+void GridOut::set_flags (const GridOutFlags::Vtu &flags)
+{
+  vtu_flags = flags;
+}
+
 std::string
 GridOut::default_suffix (const OutputFormat output_format)
 {
@@ -497,6 +502,8 @@ GridOut::default_suffix (const OutputFormat output_format)
       return ".mathgl";
     case vtk:
       return ".vtk";
+    case vtu:
+      return ".vtu";
     default:
       Assert (false, ExcNotImplemented());
       return "";
@@ -546,6 +553,9 @@ GridOut::parse_output_format (const std::string &format_name)
   if (format_name == "vtk")
     return vtk;
 
+  if (format_name == "vtu")
+    return vtu;
+
   AssertThrow (false, ExcInvalidState ());
   // return something weird
   return OutputFormat(-1);
@@ -555,7 +565,7 @@ GridOut::parse_output_format (const std::string &format_name)
 
 std::string GridOut::get_output_format_names ()
 {
-  return "none|dx|gnuplot|eps|ucd|xfig|msh|svg|mathgl|vtk";
+  return "none|dx|gnuplot|eps|ucd|xfig|msh|svg|mathgl|vtk|vtu";
 }
 
 
@@ -599,6 +609,10 @@ GridOut::declare_parameters(ParameterHandler &param)
   param.enter_subsection("Vtk");
   GridOutFlags::Vtk::declare_parameters(param);
   param.leave_subsection();
+
+  param.enter_subsection("Vtu");
+  GridOutFlags::Vtu::declare_parameters(param);
+  param.leave_subsection();
 }
 
 
@@ -641,6 +655,10 @@ GridOut::parse_parameters(ParameterHandler &param)
   param.enter_subsection("Vtk");
   vtk_flags.parse_parameters(param);
   param.leave_subsection();
+
+  param.enter_subsection("Vtu");
+  vtu_flags.parse_parameters(param);
+  param.leave_subsection();
 }
 
 
@@ -658,7 +676,8 @@ GridOut::memory_consumption () const
           sizeof(xfig_flags)    +
           sizeof(svg_flags)     +
           sizeof(mathgl_flags)  +
-          sizeof(vtk_flags));
+          sizeof(vtk_flags)     +
+          sizeof(vtu_flags));
 }
 
 
@@ -2444,6 +2463,27 @@ void GridOut::write_vtk (const Triangulation<dim,spacedim> &tria,
 
 
 
+template <int dim, int spacedim>
+void GridOut::write_vtu (const Triangulation<dim,spacedim> &tria,
+                         std::ostream             &out) const
+{
+  AssertThrow (out, ExcIO ());
+
+  // convert the cells of the triangulation into a set of patches
+  // and then have them output. since there is no data attached to
+  // the geometry, we also do not have to provide any names, identifying
+  // information, etc.
+  DataOutBase::write_vtu (triangulation_to_patches(tria),
+                          std::vector<std::string>(),
+                          std::vector<std_cxx1x::tuple<unsigned int, unsigned int, std::string> >(),
+                          vtu_flags,
+                          out);
+
+  AssertThrow (out, ExcIO ());
+}
+
+
+
 unsigned int GridOut::n_boundary_faces (const Triangulation<1> &) const
 {
   return 0;
@@ -3817,6 +3857,10 @@ void GridOut::write (const Triangulation<dim, spacedim> &tria,
     case vtk:
       write_vtk (tria, out);
       return;
+
+    case vtu:
+      write_vtu (tria, out);
+      return;
     }
 
   Assert (false, ExcInternalError());
index 0b84908ff441202e9950903d7b5c78c37b65e9b6..160a8fd98f1d02feca236fd6867b9449507356a2 100644 (file)
@@ -52,6 +52,9 @@ for (deal_II_dimension : DIMENSIONS)
     template void GridOut::write_vtk
       (const Triangulation<deal_II_dimension>&,
        std::ostream&) const;       
+    template void GridOut::write_vtu
+      (const Triangulation<deal_II_dimension>&,
+       std::ostream&) const;       
        
     template void GridOut::write<deal_II_dimension>
       (const Triangulation<deal_II_dimension> &,
@@ -76,6 +79,9 @@ for (deal_II_dimension : DIMENSIONS)
    template void GridOut::write_vtk
       (const Triangulation<deal_II_dimension,deal_II_dimension+1>&,
        std::ostream&) const;
+   template void GridOut::write_vtu
+      (const Triangulation<deal_II_dimension,deal_II_dimension+1>&,
+       std::ostream&) const;
 #endif
 #if deal_II_dimension == 3
    template void GridOut::write_ucd

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.