DOLFIN
DOLFIN C++ interface
Toggle main menu visibility
Loading...
Searching...
No Matches
dolfin
function
MultiMeshFunctionSpace.h
1
// Copyright (C) 2013-2016 Anders Logg
2
//
3
// This file is part of DOLFIN.
4
//
5
// DOLFIN is free software: you can redistribute it and/or modify
6
// it under the terms of the GNU Lesser General Public License as published by
7
// the Free Software Foundation, either version 3 of the License, or
8
// (at your option) any later version.
9
//
10
// DOLFIN is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
// GNU Lesser General Public License for more details.
14
//
15
// You should have received a copy of the GNU Lesser General Public License
16
// along with DOLFIN. If not, see <http://www.gnu.org/licenses/>.
17
//
18
// First added: 2013-08-05
19
// Last changed: 2017-09-22
20
21
#ifndef __MULTI_MESH_FUNCTION_SPACE_H
22
#define __MULTI_MESH_FUNCTION_SPACE_H
23
24
#include <vector>
25
#include <map>
26
#include <memory>
27
28
#include <dolfin/common/types.h>
29
#include <dolfin/common/Variable.h>
30
#include <dolfin/mesh/MultiMesh.h>
31
32
namespace
dolfin
33
{
34
35
// Forward declarations
36
class
GenericMatrix
;
37
class
GenericVector
;
38
class
FunctionSpace
;
39
class
MultiMeshDofMap
;
40
46
47
class
MultiMeshFunctionSpace
:
public
Variable
48
{
49
public
:
50
52
MultiMeshFunctionSpace
(std::shared_ptr<const MultiMesh>
multimesh
);
53
55
~MultiMeshFunctionSpace
();
56
62
std::size_t
dim
()
const
;
63
69
std::shared_ptr<const MultiMesh>
multimesh
()
const
;
70
76
std::shared_ptr<const MultiMeshDofMap>
dofmap
()
const
;
77
83
std::size_t
num_parts
()
const
;
84
94
std::shared_ptr<const FunctionSpace>
part
(std::size_t i)
const
;
95
109
std::shared_ptr<const FunctionSpace>
view
(std::size_t i)
const
;
110
116
void
add
(std::shared_ptr<const FunctionSpace> function_space);
117
119
void
build
();
120
123
void
build
(
const
std::vector<dolfin::la_index>& offsets);
124
126
void
lock_inactive_dofs
(
GenericMatrix
&A,
GenericVector
&b)
const
;
127
128
private
:
129
130
// Friends
131
friend
class
MultiMeshSubSpace;
132
133
// List of function spaces
134
std::vector<std::shared_ptr<const FunctionSpace> > _function_spaces;
135
136
// List of function space views
137
std::vector<std::shared_ptr<const FunctionSpace> > _function_space_views;
138
139
// Multimesh
140
std::shared_ptr<const MultiMesh> _multimesh;
141
142
// Multimesh dofmap
143
std::shared_ptr<MultiMeshDofMap> _dofmap;
144
145
// Quadrature order
146
std::size_t _quadrature_order;
147
148
// Build multimesh
149
void
_build_multimesh();
150
151
// Build dofmap
152
void
_build_dofmap(
const
std::vector<dolfin::la_index>& offsets);
153
154
// Build views
155
void
_build_views();
156
157
};
158
159
}
160
161
#endif
dolfin::FunctionSpace
Definition
FunctionSpace.h:54
dolfin::GenericMatrix
This class defines a common interface for matrices.
Definition
GenericMatrix.h:47
dolfin::GenericVector
This class defines a common interface for vectors.
Definition
GenericVector.h:48
dolfin::MultiMeshDofMap
Definition
MultiMeshDofMap.h:38
dolfin::MultiMeshFunctionSpace::dim
std::size_t dim() const
Definition
MultiMeshFunctionSpace.cpp:56
dolfin::MultiMeshFunctionSpace::num_parts
std::size_t num_parts() const
Definition
MultiMeshFunctionSpace.cpp:74
dolfin::MultiMeshFunctionSpace::dofmap
std::shared_ptr< const MultiMeshDofMap > dofmap() const
Definition
MultiMeshFunctionSpace.cpp:68
dolfin::MultiMeshFunctionSpace::build
void build()
Build multimesh function space.
Definition
MultiMeshFunctionSpace.cpp:101
dolfin::MultiMeshFunctionSpace::part
std::shared_ptr< const FunctionSpace > part(std::size_t i) const
Definition
MultiMeshFunctionSpace.cpp:80
dolfin::MultiMeshFunctionSpace::view
std::shared_ptr< const FunctionSpace > view(std::size_t i) const
Definition
MultiMeshFunctionSpace.cpp:87
dolfin::MultiMeshFunctionSpace::lock_inactive_dofs
void lock_inactive_dofs(GenericMatrix &A, GenericVector &b) const
Lock inactive dofs of a system.
Definition
MultiMeshFunctionSpace.cpp:169
dolfin::MultiMeshFunctionSpace::MultiMeshFunctionSpace
MultiMeshFunctionSpace(std::shared_ptr< const MultiMesh > multimesh)
Create multimesh function space on multimesh (shared pointer version).
Definition
MultiMeshFunctionSpace.cpp:38
dolfin::MultiMeshFunctionSpace::add
void add(std::shared_ptr< const FunctionSpace > function_space)
Definition
MultiMeshFunctionSpace.cpp:94
dolfin::MultiMeshFunctionSpace::multimesh
std::shared_ptr< const MultiMesh > multimesh() const
Definition
MultiMeshFunctionSpace.cpp:62
dolfin::Variable::Variable
Variable()
Create unnamed variable.
Definition
Variable.cpp:31
dolfin
Definition
adapt.h:30
Generated by
1.18.0