35 #include <dolfin/common/Hierarchical.h> 36 #include <dolfin/common/MPI.h> 37 #include <dolfin/common/Variable.h> 39 #include "MeshDomains.h" 40 #include "MeshGeometry.h" 41 #include "MeshConnectivity.h" 42 #include "MeshTopology.h" 49 class GenericFunction;
54 class BoundingBoxTree;
102 explicit Mesh(std::string filename);
110 Mesh(MPI_Comm comm, std::string filename);
135 {
return _topology.
size(0); }
143 {
return _topology.
size(1); }
151 {
return _topology.
size(2); }
159 {
return _topology.
size(_topology.
dim() - 1); }
167 {
return _topology.
size(_topology.
dim()); }
178 {
return _topology.
size(d); }
186 {
return _geometry.
x(); }
194 {
return _geometry.
x(); }
201 const std::vector<unsigned int>&
cells()
const 202 {
return _topology(_topology.
dim(), 0)(); }
220 {
return _topology; }
227 {
return _topology; }
234 {
return _geometry; }
241 {
return _geometry; }
284 { dolfin_assert(_cell_type);
return *_cell_type; }
288 { dolfin_assert(_cell_type);
return *_cell_type; }
297 std::size_t
init(std::size_t dim)
const;
306 void init(std::size_t d0, std::size_t d1)
const;
344 void scale(
double factor);
359 void rotate(
double angle, std::size_t axis=2);
369 void rotate(
double angle, std::size_t axis,
const Point& point);
376 void smooth(std::size_t num_iterations=1);
388 bool harmonic_smoothing=
true);
399 bool harmonic_smoothing=
true);
413 const std::vector<std::size_t>&
color(std::string coloring_type)
const;
426 const std::vector<std::size_t>&
427 color(std::vector<std::size_t> coloring_type)
const;
467 std::size_t
hash()
const;
477 std::string
str(
bool verbose)
const;
498 {
return _mpi_comm.
comm(); }
532 mutable std::shared_ptr<BoundingBoxTree> _tree;
535 std::unique_ptr<CellType> _cell_type;
538 mutable bool _ordered;
541 std::vector<int> _cell_orientations;
547 std::string _ghost_mode;
double hmin() const
Definition: Mesh.cpp:354
const MeshDomains & domains() const
Definition: Mesh.h:254
MeshGeometry stores the geometry imposed on a mesh.
Definition: MeshGeometry.h:39
Definition: MeshTopology.h:46
std::size_t num_facets() const
Definition: Mesh.h:158
void init_global(std::size_t dim) const
Compute global indices for entity dimension dim.
Definition: Mesh.cpp:228
const MeshTopology & topology() const
Definition: Mesh.h:226
Common base class for DOLFIN variables.
Definition: Variable.h:35
std::shared_ptr< BoundingBoxTree > bounding_box_tree() const
Definition: Mesh.cpp:342
Definition: SubDomain.h:42
MeshDomains & domains()
Definition: Mesh.h:247
std::size_t size_global(std::size_t dim) const
Return global number of entities for given dimension.
Definition: MeshTopology.cpp:84
void scale(double factor)
Definition: Mesh.cpp:276
bool ordered() const
Definition: Mesh.cpp:259
std::size_t hash() const
Definition: Mesh.cpp:390
Definition: Hierarchical.h:43
MPI_Comm mpi_comm() const
Definition: Mesh.h:497
std::size_t size(std::size_t dim) const
Return number of entities for given dimension.
Definition: MeshTopology.cpp:75
double hmax() const
Definition: Mesh.cpp:363
const Mesh & operator=(const Mesh &mesh)
Definition: Mesh.cpp:104
void smooth(std::size_t num_iterations=1)
Definition: Mesh.cpp:296
This class stores mesh data on a local processor corresponding to a portion of a (larger) global mesh...
Definition: LocalMeshData.h:58
~Mesh()
Destructor.
Definition: Mesh.cpp:99
double x(std::size_t n, std::size_t i) const
Return value of coordinate with local index n in direction i.
Definition: MeshGeometry.h:99
MeshGeometry & geometry()
Definition: Mesh.h:233
const std::vector< double > & coordinates() const
Definition: Mesh.h:193
Definition: MeshEditor.h:36
std::size_t num_entities_global(std::size_t dim) const
Definition: Mesh.h:212
Definition: MeshPartitioning.h:62
Definition: MeshDomains.h:41
Definition: Expression.h:49
const CellType & type() const
Get mesh cell type (const version).
Definition: Mesh.h:287
const std::vector< std::size_t > & color(std::string coloring_type) const
Definition: Mesh.cpp:311
std::size_t num_faces() const
Definition: Mesh.h:150
Mesh()
Create empty mesh.
Definition: Mesh.cpp:58
CellType & type()
Definition: Mesh.h:283
Definition: MeshData.h:58
std::string ghost_mode() const
Definition: Mesh.cpp:478
Definition: CellType.h:46
std::size_t num_edges() const
Definition: Mesh.h:142
MeshTopology & topology()
Definition: Mesh.h:219
Definition: TopologyComputation.h:36
void snap_boundary(const SubDomain &sub_domain, bool harmonic_smoothing=true)
Definition: Mesh.cpp:306
MPI_Comm comm() const
Return the underlying MPI_Comm object.
Definition: MPI.cpp:117
void smooth_boundary(std::size_t num_iterations=1, bool harmonic_smoothing=true)
Definition: Mesh.cpp:301
void order()
Definition: Mesh.cpp:247
Definition: Function.h:65
double rmin() const
Definition: Mesh.cpp:372
void rotate(double angle, std::size_t axis=2)
Definition: Mesh.cpp:286
std::size_t num_vertices() const
Definition: Mesh.h:134
const MeshGeometry & geometry() const
Definition: Mesh.h:240
std::size_t num_cells() const
Definition: Mesh.h:166
const std::vector< int > & cell_orientations() const
Definition: Mesh.cpp:432
friend Mesh create_mesh(Function &coordinates)
const std::vector< unsigned int > & cells() const
Definition: Mesh.h:201
double rmax() const
Definition: Mesh.cpp:381
std::string str(bool verbose) const
Definition: Mesh.cpp:404
MeshData & data()
Definition: Mesh.cpp:128
void init_cell_orientations(const Expression &global_normal)
Definition: Mesh.cpp:437
void init() const
Compute all entities and connectivity.
Definition: Mesh.cpp:216
void translate(const Point &point)
Definition: Mesh.cpp:281
std::vector< double > & coordinates()
Definition: Mesh.h:185
Mesh renumber_by_color() const
Definition: Mesh.cpp:269
void clean()
Definition: Mesh.cpp:234
std::size_t num_entities(std::size_t d) const
Definition: Mesh.h:177
std::size_t dim() const
Return topological dimension.
Definition: MeshTopology.cpp:70