annotate src/subdomain_rep.h @ 268:61830a4f9ab9

Improve formatting
author Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
date Thu, 14 Aug 2014 12:26:55 +0200
parents 53039ac90368
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
267
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
1 /*
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
2 Copyright (C) 2014 Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
3
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
4 This program is free software; you can redistribute it and/or modify it under
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
5 the terms of the GNU General Public License as published by the Free Software
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
6 Foundation; either version 3 of the License, or (at your option) any later
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
7 version.
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
8
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
9 This program is distributed in the hope that it will be useful, but WITHOUT
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
10 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
11 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
12 details.
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
13
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
14 You should have received a copy of the GNU General Public License along with
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
15 this program; if not, see <http://www.gnu.org/licenses/>.
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
16 */
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
17
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
18 #ifndef _SUBDOMAIN_REP_OCTAVE_
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
19 #define _SUBDOMAIN_REP_OCTAVE_
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
20
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
21 #include <dolfin.h>
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
22 #include <octave/oct.h>
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
23 #include <octave/oct-map.h>
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
24 #include <octave/ov-fcn-handle.h>
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
25 #include <octave/ov-fcn.h>
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
26 #include <octave/parse.h>
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
27 #include <octave/octave.h>
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
28
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
29 class subdomain_rep : public dolfin::SubDomain
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
30 {
268
61830a4f9ab9 Improve formatting
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents: 267
diff changeset
31 public:
267
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
32
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
33 subdomain_rep (void)
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
34 : dolfin::SubDomain (), pfh (NULL) {}
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
35
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
36 subdomain_rep (octave_fcn_handle const & fh, bool on_boundary)
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
37 : dolfin::SubDomain (), pfh (new octave_fcn_handle (fh)),
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
38 check_boundary (on_boundary) {}
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
39
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
40 ~subdomain_rep (void) { delete pfh; }
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
41
268
61830a4f9ab9 Improve formatting
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents: 267
diff changeset
42 bool
267
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
43 inside (dolfin::Array<double> const & x, bool on_boundary) const
268
61830a4f9ab9 Improve formatting
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents: 267
diff changeset
44 {
61830a4f9ab9 Improve formatting
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents: 267
diff changeset
45 octave_value_list b;
61830a4f9ab9 Improve formatting
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents: 267
diff changeset
46 b.resize (x.size ());
61830a4f9ab9 Improve formatting
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents: 267
diff changeset
47 for (std::size_t i = 0; i < x.size (); ++i)
61830a4f9ab9 Improve formatting
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents: 267
diff changeset
48 { b(i) = x[i]; }
61830a4f9ab9 Improve formatting
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents: 267
diff changeset
49 octave_value_list tmp = feval (pfh->function_value (), b);
61830a4f9ab9 Improve formatting
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents: 267
diff changeset
50 bool retval = tmp(0).bool_value ();
61830a4f9ab9 Improve formatting
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents: 267
diff changeset
51 if (check_boundary)
61830a4f9ab9 Improve formatting
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents: 267
diff changeset
52 { retval = retval && on_boundary; }
61830a4f9ab9 Improve formatting
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents: 267
diff changeset
53 return retval;
61830a4f9ab9 Improve formatting
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents: 267
diff changeset
54 }
267
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
55
268
61830a4f9ab9 Improve formatting
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents: 267
diff changeset
56 private:
267
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
57
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
58 octave_fcn_handle * pfh;
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
59 bool check_boundary;
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
60 };
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
61 #endif