annotate inst/import_meshfunction_type.m @ 260:1e2a9be8083a

Support template dolfin::MeshFunction
author Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
date Wed, 06 Aug 2014 19:52:03 +0200
parents
children f22588ae37af
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
260
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
1 ## Copyright (C) 2014 Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
2 ##
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
3 ## This program is free software; you can redistribute it and/or modify it under
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
4 ## the terms of the GNU General Public License as published by the Free Software
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
5 ## Foundation; either version 3 of the License, or (at your option) any later
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
6 ## version.
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
7 ##
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
8 ## This program is distributed in the hope that it will be useful, but WITHOUT
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
9 ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
10 ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
11 ## details.
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
12 ##
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
13 ## You should have received a copy of the GNU General Public License along with
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
14 ## this program; if not, see <http://www.gnu.org/licenses/>.
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
15
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
16 ## -*- texinfo -*-
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
17 ## @deftypefn {Function File} {} import_meshfunction_type (@var{typename})
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
18 ## Add a wrapper for dolfin::MeshFunction <@var{typename}>
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
19 ## @end deftypefn
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
20
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
21 function import_meshfunction_type (typename)
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
22
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
23 if (is_master_node ())
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
24 if (nargin != 1)
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
25 error ("import_meshfunction_type: wrong number of input parameters.");
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
26 elseif (! ischar (typename))
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
27 error ("import_meshfunction_type: first argument is not a valid string");
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
28 endif
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
29
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
30 # Ensure that the typename does not contain whitespace
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
31 typename = strtrim (typename);
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
32 typename = strjoin (strsplit (typename), "");
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
33
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
34 if (! check_mf_files (typename))
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
35 n = length (mfilename ("fullpath")) - length (mfilename());
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
36 path = strtrunc(mfilename ("fullpath"), n);
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
37
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
38 private = fullfile (path, "include/");
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
39 output = generate_mf_header (typename);
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
40 output += generate_mf_constructor (typename);
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
41 output += generate_mf_save (typename);
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
42 output += generate_mf_makefile (typename, private);
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
43 if (output != 0)
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
44 error ("compilation failed");
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
45 else
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
46 [output, textfile] = system (["make -f Makefile_", typename, " all"]);
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
47 if (output != 0)
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
48 display (text);
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
49 error ("compilation failed");
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
50 endif
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
51 [output, textfile] = system (["make -f Makefile_", typename, " clean"]);
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
52 if (output != 0)
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
53 display (text);
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
54 error ("compilation failed");
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
55 endif
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
56 endif
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
57 endif
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
58 endif
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
59
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
60 barrier ();
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
61
1e2a9be8083a Support template dolfin::MeshFunction
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
62 endfunction