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"
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)(); }
213 {
return _topology.size_global(dim); }
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(); }
513 friend class MeshEditor;
514 friend class TopologyComputation;
515 friend class MeshPartitioning;
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;
Definition BoundaryMesh.h:40
Definition BoundingBoxTree.h:41
Definition Expression.h:50
Definition GenericFunction.h:54
Hierarchical(Mesh &self)
Definition Hierarchical.h:48
This class stores mesh data on a local processor corresponding to a portion of a (larger) global mesh...
Definition LocalMeshData.h:59
Definition MeshDomains.h:42
Definition MeshEntity.h:43
MeshGeometry stores the geometry imposed on a mesh.
Definition MeshGeometry.h:40
Definition MeshTopology.h:47
double rmax() const
Definition Mesh.cpp:381
std::size_t num_faces() const
Definition Mesh.h:150
void scale(double factor)
Definition Mesh.cpp:276
bool ordered() const
Definition Mesh.cpp:259
const Mesh & operator=(const Mesh &mesh)
Definition Mesh.cpp:104
Mesh()
Create empty mesh.
Definition Mesh.cpp:58
const MeshGeometry & geometry() const
Definition Mesh.h:240
const MeshDomains & domains() const
Definition Mesh.h:254
void clean()
Definition Mesh.cpp:234
std::size_t hash() const
Definition Mesh.cpp:390
MeshTopology & topology()
Definition Mesh.h:219
MeshData & data()
Definition Mesh.cpp:128
const std::vector< unsigned int > & cells() const
Definition Mesh.h:201
void init_cell_orientations(const Expression &global_normal)
Definition Mesh.cpp:437
~Mesh()
Destructor.
Definition Mesh.cpp:99
std::size_t num_vertices() const
Definition Mesh.h:134
const CellType & type() const
Get mesh cell type (const version).
Definition Mesh.h:287
std::size_t num_edges() const
Definition Mesh.h:142
double rmin() const
Definition Mesh.cpp:372
friend Mesh create_mesh(Function &coordinates)
MPI_Comm mpi_comm() const
Definition Mesh.h:497
void init() const
Compute all entities and connectivity.
Definition Mesh.cpp:216
void init_global(std::size_t dim) const
Compute global indices for entity dimension dim.
Definition Mesh.cpp:228
std::string str(bool verbose) const
Definition Mesh.cpp:404
MeshDomains & domains()
Definition Mesh.h:247
std::size_t num_cells() const
Definition Mesh.h:166
std::vector< double > & coordinates()
Definition Mesh.h:185
void smooth_boundary(std::size_t num_iterations=1, bool harmonic_smoothing=true)
Definition Mesh.cpp:301
CellType & type()
Definition Mesh.h:283
void order()
Definition Mesh.cpp:247
void translate(const Point &point)
Definition Mesh.cpp:281
std::string ghost_mode() const
Definition Mesh.cpp:478
void snap_boundary(const SubDomain &sub_domain, bool harmonic_smoothing=true)
Definition Mesh.cpp:306
const MeshTopology & topology() const
Definition Mesh.h:226
double hmax() const
Definition Mesh.cpp:363
std::size_t num_facets() const
Definition Mesh.h:158
double hmin() const
Definition Mesh.cpp:354
const std::vector< double > & coordinates() const
Definition Mesh.h:193
const std::vector< std::size_t > & color(std::string coloring_type) const
Definition Mesh.cpp:311
MeshGeometry & geometry()
Definition Mesh.h:233
std::size_t num_entities(std::size_t d) const
Definition Mesh.h:177
std::size_t num_entities_global(std::size_t dim) const
Definition Mesh.h:212
Mesh renumber_by_color() const
Definition Mesh.cpp:269
std::shared_ptr< BoundingBoxTree > bounding_box_tree() const
Definition Mesh.cpp:342
void smooth(std::size_t num_iterations=1)
Definition Mesh.cpp:296
void rotate(double angle, std::size_t axis=2)
Definition Mesh.cpp:286
const std::vector< int > & cell_orientations() const
Definition Mesh.cpp:432
Definition SubDomain.h:43
Variable()
Create unnamed variable.
Definition Variable.cpp:31