36#include <dolfin/common/Hierarchical.h>
37#include <dolfin/common/MPI.h>
38#include <dolfin/common/Variable.h>
40#include "MeshDomains.h"
41#include "MeshGeometry.h"
42#include "MeshConnectivity.h"
43#include "MeshTopology.h"
50 class GenericFunction;
55 class BoundingBoxTree;
103 explicit Mesh(std::string filename);
111 Mesh(MPI_Comm comm, std::string filename);
136 {
return _topology.
size(0); }
144 {
return _topology.
size(1); }
152 {
return _topology.
size(2); }
160 {
return _topology.
size(_topology.
dim() - 1); }
168 {
return _topology.
size(_topology.
dim()); }
179 {
return _topology.
size(d); }
187 {
return _geometry.
x(); }
195 {
return _geometry.
x(); }
202 const std::vector<unsigned int>&
cells()
const
203 {
return _topology(_topology.
dim(), 0)(); }
221 {
return _topology; }
228 {
return _topology; }
235 {
return _geometry; }
242 {
return _geometry; }
285 { dolfin_assert(_cell_type);
return *_cell_type; }
289 { dolfin_assert(_cell_type);
return *_cell_type; }
298 std::size_t
init(std::size_t dim)
const;
307 void init(std::size_t d0, std::size_t d1)
const;
345 void scale(
double factor);
360 void rotate(
double angle, std::size_t axis=2);
370 void rotate(
double angle, std::size_t axis,
const Point& point);
377 void smooth(std::size_t num_iterations=1);
389 bool harmonic_smoothing=
true);
400 bool harmonic_smoothing=
true);
414 const std::vector<std::size_t>&
color(std::string coloring_type)
const;
427 const std::vector<std::size_t>&
428 color(std::vector<std::size_t> coloring_type)
const;
468 std::size_t
hash()
const;
478 std::string
str(
bool verbose)
const;
499 {
return _mpi_comm.
comm(); }
537 mutable std::shared_ptr<BoundingBoxTree> _tree;
540 std::unique_ptr<CellType> _cell_type;
543 mutable bool _ordered;
546 std::vector<int> _cell_orientations;
552 std::string _ghost_mode;
Definition: CellType.h:47
Definition: Expression.h:50
Definition: Function.h:66
Definition: Hierarchical.h:44
This class stores mesh data on a local processor corresponding to a portion of a (larger) global mesh...
Definition: LocalMeshData.h:59
MPI_Comm comm() const
Return the underlying MPI_Comm object.
Definition: MPI.cpp:117
Definition: MeshData.h:59
Definition: MeshDomains.h:42
Definition: MeshEditor.h:37
MeshGeometry stores the geometry imposed on a mesh.
Definition: MeshGeometry.h:40
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
Definition: MeshPartitioning.h:63
Definition: MeshTopology.h:53
std::size_t size(std::size_t dim) const
Return number of entities for given dimension.
Definition: MeshTopology.cpp:79
std::size_t dim() const
Return topological dimension.
Definition: MeshTopology.cpp:74
std::size_t size_global(std::size_t dim) const
Return global number of entities for given dimension.
Definition: MeshTopology.cpp:88
double rmax() const
Definition: Mesh.cpp:386
std::size_t num_faces() const
Definition: Mesh.h:151
void scale(double factor)
Definition: Mesh.cpp:281
bool ordered() const
Definition: Mesh.cpp:264
const Mesh & operator=(const Mesh &mesh)
Definition: Mesh.cpp:105
void build_mapping(std::shared_ptr< const Mesh > other) const
Definition: Mesh.cpp:492
Mesh()
Create empty mesh.
Definition: Mesh.cpp:59
const MeshGeometry & geometry() const
Definition: Mesh.h:241
const MeshDomains & domains() const
Definition: Mesh.h:255
void clean()
Definition: Mesh.cpp:239
std::size_t hash() const
Definition: Mesh.cpp:395
MeshTopology & topology()
Definition: Mesh.h:220
MeshData & data()
Definition: Mesh.cpp:129
const std::vector< unsigned int > & cells() const
Definition: Mesh.h:202
void init_cell_orientations(const Expression &global_normal)
Definition: Mesh.cpp:442
~Mesh()
Destructor.
Definition: Mesh.cpp:100
std::size_t num_vertices() const
Definition: Mesh.h:135
const CellType & type() const
Get mesh cell type (const version).
Definition: Mesh.h:288
std::size_t num_edges() const
Definition: Mesh.h:143
double rmin() const
Definition: Mesh.cpp:377
friend Mesh create_mesh(Function &coordinates)
MPI_Comm mpi_comm() const
Definition: Mesh.h:498
void init() const
Compute all entities and connectivity.
Definition: Mesh.cpp:221
void init_global(std::size_t dim) const
Compute global indices for entity dimension dim.
Definition: Mesh.cpp:233
std::string str(bool verbose) const
Definition: Mesh.cpp:409
MeshDomains & domains()
Definition: Mesh.h:248
std::size_t num_cells() const
Definition: Mesh.h:167
std::vector< double > & coordinates()
Definition: Mesh.h:186
void smooth_boundary(std::size_t num_iterations=1, bool harmonic_smoothing=true)
Definition: Mesh.cpp:306
CellType & type()
Definition: Mesh.h:284
void order()
Definition: Mesh.cpp:252
void translate(const Point &point)
Definition: Mesh.cpp:286
std::string ghost_mode() const
Definition: Mesh.cpp:483
void snap_boundary(const SubDomain &sub_domain, bool harmonic_smoothing=true)
Definition: Mesh.cpp:311
const MeshTopology & topology() const
Definition: Mesh.h:227
double hmax() const
Definition: Mesh.cpp:368
std::size_t num_facets() const
Definition: Mesh.h:159
double hmin() const
Definition: Mesh.cpp:359
const std::vector< double > & coordinates() const
Definition: Mesh.h:194
const std::vector< std::size_t > & color(std::string coloring_type) const
Definition: Mesh.cpp:316
MeshGeometry & geometry()
Definition: Mesh.h:234
std::size_t num_entities(std::size_t d) const
Definition: Mesh.h:178
std::size_t num_entities_global(std::size_t dim) const
Definition: Mesh.h:213
Mesh renumber_by_color() const
Definition: Mesh.cpp:274
std::shared_ptr< BoundingBoxTree > bounding_box_tree() const
Definition: Mesh.cpp:347
void smooth(std::size_t num_iterations=1)
Definition: Mesh.cpp:301
void rotate(double angle, std::size_t axis=2)
Definition: Mesh.cpp:291
const std::vector< int > & cell_orientations() const
Definition: Mesh.cpp:437
Definition: SubDomain.h:43
Definition: TopologyComputation.h:37
Common base class for DOLFIN variables.
Definition: Variable.h:36