Mercurial > fem-fenics-eugenio
annotate src/functionspace.h @ 14:f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
author | gedeone-octave <marco.vassallo@outlook.com> |
---|---|
date | Mon, 08 Jul 2013 21:35:44 +0200 |
parents | |
children | efec39fccff3 |
rev | line source |
---|---|
14
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
1 /* |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
2 Copyright (C) 2013 Marco Vassallo |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
3 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
4 This program is free software; you can redistribute it and/or modify it under |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
5 the terms of the GNU General Public License as published by the Free Software |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
6 Foundation; either version 2 of the License, or (at your option) any later |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
7 version. |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
8 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
9 This program is distributed in the hope that it will be useful, but WITHOUT |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
10 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
11 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
12 details. |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
13 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
14 You should have received a copy of the GNU General Public License along with |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
15 this program; if not, see <http://www.gnu.org/licenses/>. |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
16 */ |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
17 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
18 #ifndef _FUNCTIONSPACE_OCTAVE_ |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
19 #define _FUNCTIONSPACE_OCTAVE_ |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
20 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
21 #include <dolfin.h> |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
22 #include <octave/oct.h> |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
23 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
24 class functionspace : public dolfin::FunctionSpace, public octave_base_value |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
25 { |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
26 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
27 public: |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
28 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
29 // Constructors |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
30 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
31 /* |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
32 Default constructor: it is necessary because it is requested by |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
33 DEFINE_OCTAVE_ALLOCATOR and DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA . |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
34 dolfin::FunctionSpace doesn't provide a default constructor, and thus |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
35 we add as private members __msh, __elm, __dfm, which are needed only for |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
36 creating our own default constructor functionspace() |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
37 for dolfin::FunctionSpace() we use the protected constructor of the class |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
38 which needs only a dolfin::Mesh |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
39 */ |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
40 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
41 functionspace () : |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
42 dolfin::FunctionSpace (__msh), octave_base_value (), fsp (__msh, __elm, __dfm) |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
43 {} |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
44 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
45 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
46 functionspace (const dolfin::FunctionSpace & _fsp) |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
47 : octave_base_value (), fsp (_fsp), dolfin::FunctionSpace (_fsp) {} |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
48 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
49 //a method for printing |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
50 void print (std::ostream& os, bool pr_as_read_syntax = false) const |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
51 { os << "fsp : " << fsp.str(true) << std::endl; } |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
52 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
53 //destructor |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
54 ~functionspace(void) { }; |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
55 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
56 bool is_defined (void) const { return true; } |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
57 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
58 //get the information from the private member |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
59 const dolfin::FunctionSpace & get_fsp (void) const |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
60 { return fsp; } |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
61 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
62 // set the value of the private member |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
63 void set_fsp (dolfin::FunctionSpace & _fsp) |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
64 { fsp = _fsp; } |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
65 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
66 private: |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
67 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
68 dolfin::FunctionSpace fsp; |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
69 boost::shared_ptr<const dolfin::Mesh> __msh; |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
70 boost::shared_ptr<dolfin::FiniteElement> __elm; |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
71 boost::shared_ptr<dolfin::GenericDofMap> __dfm; |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
72 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
73 DECLARE_OCTAVE_ALLOCATOR; |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
74 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA; |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
75 |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
76 }; |
f329fc94b1a2
Wrapper Class for dolfin::FunctionSpace
gedeone-octave <marco.vassallo@outlook.com>
parents:
diff
changeset
|
77 #endif |