changeset 266:6b37560b7cbb

Add save method for mesh
author Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
date Fri, 08 Aug 2014 09:52:59 +0200
parents 0b9dc516ba36
children 53039ac90368
files src/Makefile.in src/save_mesh.cc
diffstat 2 files changed, 80 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/Makefile.in	Fri Aug 08 09:55:16 2014 +0200
+++ b/src/Makefile.in	Fri Aug 08 09:52:59 2014 +0200
@@ -35,6 +35,7 @@
              Function.oct \
              save_func.oct \
              save_mf.oct \
+             save_mesh.oct \
              assemble.oct \
              assemble_system.oct \
              plot_func.oct \
@@ -117,6 +118,12 @@
 save_mf.o: save_mf.cc meshfunction.h
 	CPPFLAGS=$(CPPFLAGS) $(MKOCTFILE) -c $< -o $@
 
+save_mesh.oct: save_mesh.o mkmesh
+	CPPFLAGS=$(CPPFLAGS) $(MKOCTFILE) $< -o ./@mesh/save.oct $(LIBS)
+
+save_mesh.o: save_mesh.cc mesh.h
+	CPPFLAGS=$(CPPFLAGS) $(MKOCTFILE) -c $< -o $@
+
 mkfunction:
 	 mkdir -p @function
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/save_mesh.cc	Fri Aug 08 09:52:59 2014 +0200
@@ -0,0 +1,73 @@
+/*
+ Copyright (C) 2014 Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
+
+ This program is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 3 of the License, or (at your option) any later
+ version.
+
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ details.
+
+ You should have received a copy of the GNU General Public License along with
+ this program; if not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "mesh.h"
+
+DEFUN_DLD (save, args, nargout, "-*- texinfo -*-\n\
+@deftypefn {Function File} \
+save (@var{Mesh}, @var{Name})\n\
+Save a mesh in XDMF format.\n\
+The input parameters are\n\
+@itemize @bullet \n\
+@item @var{Mesh} is the mesh you want to save\n\
+@item @var{Name} is a string for the output name\n\
+@end itemize\n\
+The output is a .xdmf file.\n\
+@seealso{Mesh, plot}\n\
+@end deftypefn")
+{
+  int nargin = args.length ();
+  octave_value retval;
+
+  if (nargin < 2 || nargin > 2 || nargout > 1)
+    print_usage ();
+  else
+    {
+      if (! mesh_type_loaded)
+        {
+          mesh::register_type ();
+          mesh_type_loaded = true;
+          mlock ();
+        }
+
+      if (args(0).type_id () == mesh::static_type_id () &&
+          args(1).is_string ())
+        {
+          mesh const & msh_arg =
+            static_cast<mesh const &> (args(0).get_rep ());
+          std::string str = args(1).string_value ();
+
+          if (!error_state)
+            {
+              dolfin::Mesh const & msh = msh_arg.get_msh ();
+              str += ".xdmf";
+              try
+                {
+                  dolfin::File file (str);
+                  file << msh;
+                }
+              catch (std::runtime_error &)
+                { error ("error saving mesh"); }
+              retval = 0;
+            }
+        }
+      else
+        error ("invalid input arguments");
+    }
+
+  return retval;
+}