annotate src/fem_init_mesh.cc @ 10:277b60c6618a

New function: create a mesh * fem_init_mesh: create a mesh for the fem-fenics pkg from a (p, e, t) mesh or from an external dolfin .xml mesh
author gedeone-octave <marco.vassallo@outlook.com>
date Fri, 05 Jul 2013 18:29:03 +0200
parents
children b7c74c0bdabd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
1 /*
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
2 Copyright (C) 2013 Marco Vassallo
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
3
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
4 This program is free software; you can redistribute it and/or modify it under
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
5 the terms of the GNU General Public License as published by the Free Software
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
6 Foundation; either version 2 of the License, or (at your option) any later
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
7 version.
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
8
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
9 This program is distributed in the hope that it will be useful, but WITHOUT
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
10 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
11 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
12 details.
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
13
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
14 You should have received a copy of the GNU General Public License along with
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
15 this program; if not, see <http://www.gnu.org/licenses/>.
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
16 */
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
17
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
18 #include "mesh.h"
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
19
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
20
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
21 DEFUN_DLD (fem_init_mesh, args, , "initialize a mesh from (p, e, t) or file")
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
22 {
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
23 int nargin = args.length ();
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
24 octave_value retval = 0;
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
25
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
26 if (nargin < 1 || nargin > 1)
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
27 print_usage ();
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
28 else
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
29 {
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
30 //octave_scalar_map a = args(1).scalar_map_value ();
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
31 //bool mesh_tl = a.contents ("mesh_tl").bool_value ();
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
32 bool mesh_tl = true;
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
33
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
34 if (!error_state)
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
35 {
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
36 if (mesh_tl == false)
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
37 error("Mesh type not loaded, you should proably use fem_init()");
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
38 else
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
39 {
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
40 if (args(0).is_string () == true)
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
41 {
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
42 std::string filename = args(0).string_value();
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
43 retval = new mesh (filename);
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
44 }
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
45
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
46 else
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
47 {
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
48 octave_scalar_map a = args(0).scalar_map_value ();
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
49 Array<double> p = a.contents ("p").matrix_value ();
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
50 Array<octave_idx_type> t = a.contents ("t").matrix_value ();
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
51 Array<octave_idx_type> e = a.contents ("e").matrix_value ();
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
52
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
53 if (! error_state)
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
54 {
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
55 retval = new mesh (p, e, t);
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
56 }
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
57 }
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
58 }
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
59 }
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
60 }
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
61 return retval;
277b60c6618a New function: create a mesh
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff changeset
62 }