annotate src/subdomain.h @ 267:53039ac90368

Mark meshfunction using subdomain * src/SubDomain.cc: return subdomain to use for marking * src/MeshFunction.cc: return a user defined meshfunction * src/mark.cc: with the information from subdomain, mark a meshfunction
author Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
date Tue, 12 Aug 2014 15:42:50 +0200
parents
children 61830a4f9ab9
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_OCTAVE_
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
19 #define _SUBDOMAIN_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 "subdomain_rep.h"
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
22 #include "dolfin_compat.h"
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
23
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
24 class subdomain : public octave_base_value
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
25 {
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
26 public:
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
27
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
28 subdomain ()
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
29 : octave_base_value () {}
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
30
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
31 subdomain (octave_fcn_handle const & fh, bool on_boundary)
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
32 : octave_base_value (), rep (new subdomain_rep (fh, on_boundary)) {}
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
33
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
34 ~subdomain (void) {}
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 void
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
37 print (std::ostream& os, bool pr_as_read_syntax = false) const
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
38 {
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
39 os << "SubDomain" << std::endl;
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
40 }
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
41
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
42 bool
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
43 is_defined (void) const
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
44 { return true; }
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
45
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
46 SHARED_PTR <subdomain_rep const> const &
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
47 get_psd (void) const
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
48 { return rep; }
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
49
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
50 private:
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
51
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
52 SHARED_PTR <subdomain_rep const> rep;
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
53
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
54 DECLARE_OCTAVE_ALLOCATOR;
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
55 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA;
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
56 };
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 static bool subdomain_type_loaded = false;
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
59
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
60 DEFINE_OCTAVE_ALLOCATOR (subdomain);
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
61 DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (subdomain,
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
62 "subdomain",
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
63 "subdomain");
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
64
53039ac90368 Mark meshfunction using subdomain
Eugenio Gianniti <eugenio.gianniti@mail.polimi.it>
parents:
diff changeset
65 #endif