Mercurial > fem-fenics-eugenio
diff src/save_mesh.cc @ 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 | |
children | 61830a4f9ab9 |
line wrap: on
line diff
--- /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; +}