141 mesh.
nx=mesh.
ny=mesh.
nz=0;
142 mesh.
px=mesh.
py=mesh.
pz=0;
211 mesh.
nx=mesh.
ny=mesh.
nz=0;
212 mesh.
px=mesh.
py=mesh.
pz=0;
283 for(
int i=0;i<multilevelMesh.
nLevels;i++)
310 int * elementTagArray);
312 int * elementTagArray);
314 int * elementTagArray);
316 int * elementTagArray);
329 int regularMeshNodes(
const int& nx,
const int& ny,
const int& nz,
const double& Lx,
const double& Ly,
const double& Lz,
Mesh& mesh);
380 const int& nSpace_global);
383 struct triangulateio;
393 int read3DM(
Mesh& mesh,
const char* filebase,
int indexBase);
394 int read2DM(
Mesh& mesh,
const char* filebase,
int indexBase);
395 int readHex(
Mesh& mesh,
const char* filebase,
int indexBase);
396 int readBC(
Mesh& mesh,
const char* filebase,
int indexBase);
400 Mesh& mesh,
int base);
418 for(
int i=0;i<nNodes;i++)
422 for(
int j=0;j<nNodes;j++)
423 if(nodesIn[i] > nodesIn[j])
425 nodes[position]=nodesIn[i];
434 for(
int i=0;i<nNodes;i++)
447 for (
int i=0;i<nNodes;i++)
467 midpoint.x = 0.5*(left[0]+right[0]);
468 midpoint.y = 0.5*(left[1]+right[1]);
469 midpoint.z = 0.5*(left[2]+right[2]);
474 return sqrt( (right.
x - left.
x)*(right.
x - left.
x) +
475 (right.
y - left.
y)*(right.
y - left.
y) +
476 (right.
z - left.
z)*(right.
z - left.
z) );
481 return sqrt( (nodeArray[right*3+0] - nodeArray[left*3+0])*(nodeArray[right*3+0] - nodeArray[left*3+0]) +
482 (nodeArray[right*3+1] - nodeArray[left*3+1])*(nodeArray[right*3+1] - nodeArray[left*3+1]) +
483 (nodeArray[right*3+2] - nodeArray[left*3+2])*(nodeArray[right*3+2] - nodeArray[left*3+2]) );
490 else if (left.
x > right.
x)
492 else if (left.
y < right.
y)
494 else if (left.
y > right.
y)
496 else if (left.
z < right.
z)
498 else if (left.
z > left.
z)
511inline int newEdge(
int eN,
int* nodes,
int n0,
int n1)
547inline int newHexahedron(
int eN,
int* nodes,
int n0,
int n1,
int n2,
int n3,
int n4,
int n5,
int n6,
int n7)
563 int& nElements_global,
565 std::vector<double>& nodeArray,
566 std::vector<int>& elementNodesArray,
567 std::vector<int>& elementNeighborsArray,
568 std::vector<std::list<int> >& childrenList,
569 std::vector<int>& elementParentsArray,
570 std::vector<int>& bases,
571 std::vector<bool>& refined);
576 std::vector<bool>& refined,
577 std::vector<int>& edgeMidNodesArray,
578 const int* elementNodesArray,
579 const int* elementBoundariesArray,
580 const int* elementNeighborsArray,
581 const double * nodeArray);
584 int ebN_neig,
int eN_neig,
586 std::vector<bool>& refined,
587 std::vector<int>& edgeMidNodesArray,
588 const int* elementNodesArray,
589 const int* elementBoundariesArray,
590 const int* elementNeighborsArray,
591 const double * nodeArray);
594 const int* elementNodesArray,
595 const double * nodeArray);
599 int* elementParentsArray,
600 int* elementChildrenOffsets,
601 int* elementChildrenArray,
602 int* elementNodesArray_child,
603 const std::vector<int>& edgeMidNodesArray,
604 const std::vector<bool>& refined,
605 const int* elementNodesArray_parent,
606 const int* elementBoundariesArray_parent,
607 const double* nodeArray_parent);
ElementNeighbors(int leftIn, int left_ebN_elementIn)
int nodes_unsorted[nNodes]
NodeTuple(const int *nodesIn)
NodeTuple(const NodeTuple< nNodes > &nt)
int regularHexahedralToTetrahedralElementBoundaryMaterials(const double &Lx, const double &Ly, const double &Lz, Mesh &mesh)
int newTetrahedron(int eN, int *nodes, int n0, int n1, int n2, int n3)
int writeTriangleMesh(Mesh &mesh, const char *filebase, int triangleIndexBase)
int writeNodes(std::ostream &meshFile, const Mesh &mesh)
int constructElementBoundaryElementsArray_edge(Mesh &mesh)
int allocateGeometricInfo_hexahedron(Mesh &mesh)
int computeGeometricInfo_NURBS(Mesh &mesh)
int constructElementBoundaryElementsArrayWithGivenElementBoundaryAndEdgeNumbers_hexahedron(Mesh &mesh)
int constructElementBoundaryElementsArrayWithGivenElementBoundaryNumbers_quadrilateral(Mesh &mesh)
void deleteMesh(Mesh &mesh)
int constructElementBoundaryElementsArray_quadrilateral(Mesh &mesh)
int setNewestNodeBasesToLongestEdge(MultilevelMesh &multilevelMesh)
int allocateGeometricInfo_triangle(Mesh &mesh)
int readTetgenMesh(Mesh &mesh, const char *filebase, int tetgenIndexBase)
void initializeMultilevelMesh(MultilevelMesh &multilevelMesh)
int read3DM(Mesh &mesh, const char *filebase, int indexBase)
int writeElements(std::ostream &meshFile, const Mesh &mesh)
int constructElementBoundaryElementsArray_NURBS(Mesh &mesh)
int regularEdgeMeshNodes(const int &nx, const double &Lx, Mesh &mesh)
int readTriangleElementBoundaryMaterialTypes(Mesh &mesh, const char *filebase, int triangleIndexBase)
int locallyRefineTriangleMesh(MultilevelMesh &multilevelMesh, int *elementTagArray)
int regularHexahedralMeshElementBoundaryMaterials(const double &Lx, const double &Ly, const double &Lz, Mesh &mesh)
int regularRectangularToTriangularMeshElements(const int &nx, const int &ny, Mesh &mesh, int triangleFlag)
int readDMPlexMesh(PyObject *dmplexMesh, Mesh &mesh)
int write2dmMesh(Mesh &mesh, const char *filebase, int adhIndexBase)
int newEdge(int eN, int *nodes, int n0, int n1)
int regularMeshNodes2D(const int &nx, const int &ny, const double &Lx, const double &Ly, Mesh &mesh)
int constructElementBoundaryElementsArray_hexahedron(Mesh &mesh)
int newQuadrilateral(int eN, int *nodes, int n0, int n1, int n2, int n3)
void initializeMesh(Mesh &mesh)
int regularQuadrilateralMeshElements(const int &nx, const int &ny, Mesh &mesh)
int read2DM(Mesh &mesh, const char *filebase, int indexBase)
int constructElementBoundaryElementsArrayWithGivenElementBoundaryNumbers_tetrahedron(Mesh &mesh)
int findLocalLongestEdge2d(int eN, const int *elementNodesArray, const double *nodeArray)
bool add4TnodesForConformity2d(int eN, int ebN_longest, int ebN_neig, int eN_neig, int &nNodes_global, std::vector< bool > &refined, std::vector< int > &edgeMidNodesArray, const int *elementNodesArray, const int *elementBoundariesArray, const int *elementNeighborsArray, const double *nodeArray)
int regularHexahedralToTetrahedralMeshNodes(const int &nx, const int &ny, const int &nz, const double &Lx, const double &Ly, const double &Lz, Mesh &mesh)
int setFromTriangleNodes(triangulateio *trimesh, Mesh &mesh, int base)
int globallyRefineHexahedralMesh(const int &nLevels, Mesh &mesh, MultilevelMesh &multilevelMesh, bool averageNewNodeFlags)
int constructElementBoundaryElementsArrayWithGivenElementBoundaryAndEdgeNumbers_edge(Mesh &mesh)
int regularMeshNodes(const int &nx, const int &ny, const int &nz, const double &Lx, const double &Ly, const double &Lz, Mesh &mesh)
int readBC(Mesh &mesh, const char *filebase, int indexBase)
int allocateGeometricInfo_quadrilateral(Mesh &mesh)
int constructElementBoundaryElementsArray_tetrahedron(Mesh &mesh)
int regularHexahedralToTetrahedralMeshElements(const int &nx, const int &ny, const int &nz, Mesh &mesh)
int computeGeometricInfo_edge(Mesh &mesh)
int allocateGeometricInfo_edge(Mesh &mesh)
bool add4TnodesForRefinement2d(int eN, int &nNodes_global, std::vector< bool > &refined, std::vector< int > &edgeMidNodesArray, const int *elementNodesArray, const int *elementBoundariesArray, const int *elementNeighborsArray, const double *nodeArray)
int assignElementBoundaryMaterialTypesFromParent(Mesh &parentMesh, Mesh &childMesh, const int *levelElementParentsArray, const int &nSpace_global)
int constructElementBoundaryElementsArrayWithGivenElementBoundaryAndEdgeNumbers_triangle(Mesh &mesh)
int constructElementBoundaryElementsArrayWithGivenElementBoundaryAndEdgeNumbers_NURBS(Mesh &mesh)
int newHexahedron(int eN, int *nodes, int n0, int n1, int n2, int n3, int n4, int n5, int n6, int n7)
int newTriangle(int eN, int *nodes, int n0, int n1, int n2)
int constructElementBoundaryElementsArray_triangle(Mesh &mesh)
int regularRectangularToTriangularMeshNodes(const int &nx, const int &ny, const double &Lx, const double &Ly, Mesh &mesh)
int locallyRefineTriangleMesh_redGreen(MultilevelMesh &multilevelMesh, int *elementTagArray)
int constructElementBoundaryElementsArrayWithGivenElementBoundaryAndEdgeNumbers_quadrilateral(Mesh &mesh)
int constructElementBoundaryElementsArrayWithGivenElementBoundaryNumbers_triangle(Mesh &mesh)
bool newestNodeBisect(int eN, int &nElements_global, int &nNodes_global, std::vector< double > &nodeArray, std::vector< int > &elementNodesArray, std::vector< int > &elementNeighborsArray, std::vector< std::list< int > > &childrenList, std::vector< int > &elementParentsArray, std::vector< int > &bases, std::vector< bool > &refined)
int computeGeometricInfo_quadrilateral(Mesh &mesh)
int computeGeometricInfo_triangle(Mesh &mesh)
int regularQuadrilateralMeshElementBoundaryMaterials(const double &Lx, const double &Ly, Mesh &mesh)
int readTriangleMesh(Mesh &mesh, const char *filebase, int triangleIndexBase)
int writeTetgenMesh(Mesh &mesh, const char *filebase, int tetgenIndexBase)
int globallyRefineTetrahedralMesh(const int &nLevels, Mesh &mesh, MultilevelMesh &multilevelMesh, bool averageNewNodeFlags)
void midpoint(const double *left, const double *right, Node &midpoint)
int edgeMeshElements(const int &nx, Mesh &mesh)
int globallyRefineEdgeMesh(const int &nLevels, Mesh &mesh, MultilevelMesh &multilevelMesh, bool averageNewNodeFlags)
int constructElementBoundaryElementsArrayWithGivenElementBoundaryNumbers_edge(Mesh &mesh)
bool subdivideTriangle4T(int eN_parent, int &eN_new, int *elementParentsArray, int *elementChildrenOffsets, int *elementChildrenArray, int *elementNodesArray_child, const std::vector< int > &edgeMidNodesArray, const std::vector< bool > &refined, const int *elementNodesArray_parent, const int *elementBoundariesArray_parent, const double *nodeArray_parent)
int allocateNodeAndElementNodeDataStructures(Mesh &mesh, int nElements_global, int nNodes_global, int nNodes_element)
int globallyRefineTriangularMesh(const int &nLevels, Mesh &mesh, MultilevelMesh &multilevelMesh, bool averageNewNodeFlags)
int readElements(std::istream &meshFile, Mesh &mesh)
int readHex(Mesh &mesh, const char *filebase, int indexBase)
double edgeLengthFromNodeNumbers(double *nodeArray, const int &left, const int &right)
int allocateGeometricInfo_NURBS(Mesh &mesh)
int globallyRefineQuadrilateralMesh(const int &nLevels, Mesh &mesh, MultilevelMesh &multilevelMesh, bool averageNewNodeFlags)
int write3dmMesh(Mesh &mesh, const char *filebase, int adhIndexBase)
int allocateGeometricInfo_tetrahedron(Mesh &mesh)
int regularHexahedralMeshElements(const int &nx, const int &ny, const int &nz, const int &px, const int &py, const int &pz, Mesh &mesh)
int copyElementBoundaryMaterialTypesFromTriangle(triangulateio *trimesh, Mesh &mesh, int base)
int regularNURBSMeshElements(const int &nx, const int &ny, const int &nz, const int &px, const int &py, const int &pz, Mesh &mesh)
int regularRectangularToTriangularElementBoundaryMaterials(const double &Lx, const double &Ly, Mesh &mesh)
int locallyRefineTriangleMesh_4T(MultilevelMesh &multilevelMesh, int *elementTagArray)
int constructElementBoundaryElementsArrayWithGivenElementBoundaryAndEdgeNumbers_tetrahedron(Mesh &mesh)
bool operator<(const NodeTuple< nNodes > &left, const NodeTuple< nNodes > &right)
int locallyRefineEdgeMesh(MultilevelMesh &multilevelMesh, int *elementTagArray)
void deleteMultilevelMesh(MultilevelMesh &multilevelMesh)
int readTetgenElementBoundaryMaterialTypes(Mesh &mesh, const char *filebase, int tetgenIndexBase)
int reorientTetrahedralMesh(Mesh &mesh)
int setFromTriangleElements(triangulateio *trimesh, Mesh &mesh, int base)
int computeGeometricInfo_hexahedron(Mesh &mesh)
int computeGeometricInfo_tetrahedron(Mesh &mesh)
double edgeLength(int nL, int nR, const double *nodeArray)
int * elementBoundaryNodesArray
int * edgeNumbering_subdomain2global
double * elementBoundaryBarycentersArray
int * elementBoundaryNumbering_subdomain2global
int nNodes_elementBoundary
int * nodeNumbering_subdomain2global
double * elementDiametersArray
int * elementBoundaryElementsArray
int * elementBoundaryOffsets_subdomain_owned
double * nodeSupportArray
int * elementOffsets_subdomain_owned
double * elementBoundaryDiametersArray
int * elementNeighborsArray
int * exteriorElementBoundariesArray
int * elementBoundaryLocalElementBoundariesArray
int nExteriorElementBoundaries_global
int nElementBoundaries_element
int * elementNumbering_subdomain2global
int * nodeOffsets_subdomain_owned
int * elementBoundaryMaterialTypes
int max_nNodeNeighbors_node
int * elementMaterialTypes
int * edgeOffsets_subdomain_owned
double * elementBarycentersArray
double * elementInnerDiametersArray
int nInteriorElementBoundaries_global
int * elementBoundariesArray
int * interiorElementBoundariesArray
double * nodeDiametersArray
int nElementBoundaries_global
int ** elementParentsArray
int ** elementChildrenArray
int ** elementChildrenOffsets