17 #ifndef __FINLEY_MESH_H__
18 #define __FINLEY_MESH_H__
63 #include "paso/SystemMatrixPattern.h"
74 typedef std::map<std::string, int>
TagMap;
84 static Mesh*
load(
const std::string fname);
85 static Mesh*
read(
const std::string fname,
int order,
int reducedOrder,
87 static Mesh*
readGmsh(
const std::string fname,
int numDim,
int order,
88 int reducedOrder,
bool optimize,
89 bool useMacroElements);
91 void write(
const std::string fname)
const;
96 void addPoints(
int numPoints,
const double *points_ptr,
const int *tags_ptr);
97 void addTagMap(
const char* name,
int tag_key);
98 int getTag(
const char* name)
const;
113 const std::vector<int>& nodeDistribution);
115 int firstDOF,
int lastDOF,
bool useLinear);
119 void glueFaces(
double safetyFactor,
double tolerance,
bool);
120 void joinFaces(
double safetyFactor,
double tolerance,
bool);
128 void markNodes(std::vector<short>& mask,
int offset,
bool useLinear);
167 std::vector<double>
x;
176 #endif // __FINLEY_MESH_H__
int getStatus() const
Definition: finley/src/Mesh.h:94
void createColoring(const std::vector< int > &dofMap)
tries to reduce the number of colours for all element files
Definition: finley/src/Mesh.cpp:453
Esys_MPIInfo * MPIInfo
Definition: finley/src/Mesh.h:160
std::map< std::string, int > TagMap
Definition: finley/src/Mesh.h:74
void glueFaces(double safetyFactor, double tolerance, bool)
Definition: Mesh_glueFaces.cpp:30
paso::SystemMatrixPattern_ptr makePattern(bool reduce_row_order, bool reduce_col_order)
Definition: finley/src/Mesh_getPattern.cpp:70
static Mesh * readGmsh(const std::string fname, int numDim, int order, int reducedOrder, bool optimize, bool useMacroElements)
Definition: finley/src/Mesh_readGmsh.cpp:33
paso::SystemMatrixPattern_ptr FullFullPattern
Definition: finley/src/Mesh.h:156
void joinFaces(double safetyFactor, double tolerance, bool)
Definition: Mesh_joinFaces.cpp:30
int numDim
number of spatial dimensions
Definition: finley/src/NodeFile.h:112
int status
Definition: finley/src/NodeFile.h:149
void setFaceElements(ElementFile *elements)
Definition: finley/src/Mesh.cpp:65
int getDim() const
Definition: finley/src/Mesh.h:93
int integrationOrder
Definition: finley/src/Mesh.h:140
Definition: finley/src/Mesh.h:164
int getTag(const char *name) const
Definition: finley/src/Mesh.cpp:601
Struct that holds MPI communicator, rank, size and a tag counter.
Definition: Esys_MPI.h:48
void markNodes(std::vector< short > &mask, int offset, bool useLinear)
Definition: finley/src/Mesh.cpp:286
void setContactElements(ElementFile *elements)
Definition: finley/src/Mesh.cpp:71
void print()
prints the mesh details to standard output
Definition: finley/src/Mesh.cpp:197
void printInfo(bool)
Definition: finley/src/Mesh_write.cpp:130
void addTagMap(const char *name, int tag_key)
Definition: finley/src/Mesh.cpp:596
TagMap tagMap
Definition: finley/src/Mesh.h:153
int refId
Definition: finley/src/Mesh.h:166
void findMatchingFaces(double, double, int *, int *, int *, int *)
Definition: finley/src/Mesh_findMatchingFaces.cpp:58
void distributeByRankOfDOF(const std::vector< int > &distribution)
Definition: finley/src/Mesh.cpp:137
ElementFile * Elements
Definition: finley/src/Mesh.h:145
void write(const std::string fname) const
writes the mesh to the external file fname using the Finley file format
Definition: finley/src/Mesh_write.cpp:29
static Mesh * read(const std::string fname, int order, int reducedOrder, bool optimize)
Definition: finley/src/Mesh_read.cpp:38
boost::shared_ptr< SystemMatrixPattern > SystemMatrixPattern_ptr
Definition: SystemMatrixPattern.h:38
paso::SystemMatrixPattern_ptr ReducedFullPattern
Definition: finley/src/Mesh.h:158
ElementFile * Points
Definition: finley/src/Mesh.h:151
ElementFile * FaceElements
Definition: finley/src/Mesh.h:147
void createMappings(const std::vector< int > &dofDistribution, const std::vector< int > &nodeDistribution)
creates node mappings without (re-)distributing anything
Definition: finley/src/Mesh.cpp:123
paso::SystemMatrixPattern_ptr getPattern(bool reduce_row_order, bool reduce_col_order)
returns a reference to the matrix pattern
Definition: finley/src/Mesh_getPattern.cpp:30
std::vector< double > x
Definition: finley/src/Mesh.h:167
Data represents a collection of datapoints.
Definition: Data.h:71
Definition: finley/src/NodeFile.h:31
~Mesh()
destructor
Definition: finley/src/Mesh.cpp:48
void prepare(bool optimize)
prepares the mesh for further use
Definition: finley/src/Mesh.cpp:393
static Mesh * load(const std::string fname)
int approximationOrder
Definition: finley/src/Mesh.h:138
bool isValidTagName(const char *name) const
Definition: finley/src/Mesh.cpp:614
void setOrders()
Definition: finley/src/Mesh.cpp:83
void markDOFsConnectedToRange(int *mask, int offset, int marker, int firstDOF, int lastDOF, bool useLinear)
Definition: finley/src/Mesh.cpp:294
void resolveNodeIds()
Definition: finley/src/Mesh.cpp:497
void relabelElementNodes(const std::vector< int > &, int offset)
assigns new node reference numbers to all element files
Definition: finley/src/Mesh.cpp:489
paso::SystemMatrixPattern_ptr FullReducedPattern
Definition: finley/src/Mesh.h:157
paso::SystemMatrixPattern_ptr ReducedReducedPattern
Definition: finley/src/Mesh.h:159
void updateTagList()
regenerates list of tags in use for node file and element files
Definition: finley/src/Mesh.cpp:479
Mesh * Mesh_merge(const std::vector< Mesh * > &meshes)
Definition: Mesh_merge.cpp:32
void addPoints(int numPoints, const double *points_ptr, const int *tags_ptr)
Definition: Mesh_addPoints.cpp:44
void optimizeDOFDistribution(std::vector< int > &distribution)
Definition: finley/src/Mesh_optimizeDOFDistribution.cpp:65
void setCoordinates(const escript::Data &newX)
sets new coordinates for the nodes
Definition: finley/src/Mesh.cpp:591
void optimizeDOFLabeling(const std::vector< int > &distribution)
optimizes the labeling of the DOFs on each processor
Definition: finley/src/Mesh.cpp:310
int reducedIntegrationOrder
Definition: finley/src/Mesh.h:141
void setElements(ElementFile *elements)
Definition: finley/src/Mesh.cpp:59
NodeFile * Nodes
Definition: finley/src/Mesh.h:143
Mesh(const std::string name, int numDim, Esys_MPIInfo *mpi_info)
Definition: finley/src/Mesh.cpp:30
int reducedApproximationOrder
Definition: finley/src/Mesh.h:139
void optimizeElementOrdering()
redistributes elements to minimize communication during assemblage
Definition: finley/src/Mesh.cpp:466
void setPoints(ElementFile *elements)
Definition: finley/src/Mesh.cpp:77
ElementFile * ContactElements
Definition: finley/src/Mesh.h:149
Definition: finley/src/Mesh.h:78
std::string m_name
Definition: finley/src/Mesh.h:137
Definition: finley/src/ElementFile.h:60