DOLFINx
0.12.0.0
DOLFINx C++
Toggle main menu visibility
Loading...
Searching...
No Matches
dolfinx
mesh
Mesh.h
1
// Copyright (C) 2006-2023 Anders Logg, Chris Richardson and Garth N. Wells
2
//
3
// This file is part of DOLFINx (https://www.fenicsproject.org)
4
//
5
// SPDX-License-Identifier: LGPL-3.0-or-later
6
7
#pragma once
8
9
#include "Geometry.h"
10
#include <concepts>
11
#include <dolfinx/common/MPI.h>
12
#include <memory>
13
#include <string>
14
#include <type_traits>
15
16
namespace
dolfinx::mesh
17
{
18
class
Topology
;
19
23
template
<std::
float
ing_po
int
T>
24
class
Mesh
25
{
26
public
:
28
using
geometry_type
=
Geometry<T>
;
29
40
template
<
typename
V>
41
requires
std::is_convertible_v<std::remove_cvref_t<V>,
Geometry<T>
>
42
Mesh
(MPI_Comm
comm
, std::shared_ptr<Topology>
topology
, V&&
geometry
)
43
: _topology(std::move(
topology
)), _geometry(std::forward<V>(
geometry
)),
44
_comm(
comm
)
45
{
46
// Do nothing
47
}
48
52
Mesh
(
const
Mesh
&
mesh
) =
default
;
53
56
Mesh
(
Mesh
&&
mesh
) =
default
;
57
59
~Mesh
() =
default
;
60
61
// Assignment operator
62
Mesh
& operator=(
const
Mesh
&
mesh
) =
delete
;
63
66
Mesh
&
operator=
(
Mesh
&&
mesh
) =
default
;
67
68
// TODO: Is there any use for this? In many situations one has to get
69
// the topology of a const Mesh, which is done by
70
// Mesh::topology_mutable. Note that the python interface (calls
71
// Mesh::topology()) may still rely on it.
74
std::shared_ptr<Topology>
topology
() {
return
_topology; }
75
78
std::shared_ptr<const Topology>
topology
()
const
{
return
_topology; }
79
82
std::shared_ptr<Topology>
topology_mutable
()
const
{
return
_topology; }
83
86
Geometry<T>
&
geometry
() {
return
_geometry; }
87
90
const
Geometry<T>
&
geometry
()
const
{
return
_geometry; }
91
94
MPI_Comm
comm
()
const
{
return
_comm.comm(); }
95
97
std::string
name
=
"mesh"
;
98
99
private
:
100
// Mesh topology
101
// Note: This is non-const because of the current memory management
102
// within mesh::Topology. It allows to obtain a non-const Topology
103
// from a const mesh (via Mesh::topology_mutable()).
104
std::shared_ptr<Topology> _topology;
105
106
// Mesh geometry
107
Geometry<T>
_geometry;
108
109
// MPI communicator
110
dolfinx::MPI::Comm
_comm;
111
};
112
114
template
<
typename
V>
115
Mesh
(MPI_Comm, std::shared_ptr<Topology>, V)
116
->
Mesh<typename std::remove_cvref_t<typename V::value_type>
>;
117
118
}
// namespace dolfinx::mesh
dolfinx::MPI::Comm
A duplicate MPI communicator and manage lifetime of the communicator.
Definition
MPI.h:47
dolfinx::mesh::Geometry
Geometry stores the geometry imposed on a mesh.
Definition
Geometry.h:39
dolfinx::mesh::Mesh
A Mesh consists of a set of connected and numbered mesh topological entities, and geometry data.
Definition
Mesh.h:25
dolfinx::mesh::Mesh::topology_mutable
std::shared_ptr< Topology > topology_mutable() const
Get mesh topology if one really needs the mutable version.
Definition
Mesh.h:82
dolfinx::mesh::Mesh::geometry
const Geometry< T > & geometry() const
Get mesh geometry (const version).
Definition
Mesh.h:90
dolfinx::mesh::Mesh::topology
std::shared_ptr< Topology > topology()
Get mesh topology.
Definition
Mesh.h:74
dolfinx::mesh::Mesh::operator=
Mesh & operator=(Mesh &&mesh)=default
dolfinx::mesh::Mesh::Mesh
Mesh(const Mesh &mesh)=default
dolfinx::mesh::Mesh::geometry
Geometry< T > & geometry()
Get mesh geometry.
Definition
Mesh.h:86
dolfinx::mesh::Mesh::Mesh
Mesh(MPI_Comm comm, std::shared_ptr< Topology > topology, V &&geometry)
Create a Mesh.
Definition
Mesh.h:42
dolfinx::mesh::Mesh::Mesh
Mesh(Mesh &&mesh)=default
dolfinx::mesh::Mesh::name
std::string name
Name.
Definition
Mesh.h:97
dolfinx::mesh::Mesh::geometry_type
Geometry< T > geometry_type
Value type.
Definition
Mesh.h:28
dolfinx::mesh::Mesh::~Mesh
~Mesh()=default
Destructor.
dolfinx::mesh::Mesh::comm
MPI_Comm comm() const
Mesh MPI communicator.
Definition
Mesh.h:94
dolfinx::mesh::Mesh::topology
std::shared_ptr< const Topology > topology() const
Get mesh topology (const version).
Definition
Mesh.h:78
dolfinx::mesh::Topology
Topology stores the topology of a mesh, consisting of mesh entities and connectivity (incidence relat...
Definition
Topology.h:52
dolfinx::mesh
Mesh data structures and algorithms on meshes.
Definition
DofMap.h:32
Generated by
1.18.0