1#ifndef included_AMP_TriangleMeshHelpers
2#define included_AMP_TriangleMeshHelpers
4#include "AMP/geometry/Geometry.h"
5#include "AMP/mesh/Mesh.h"
6#include "AMP/utils/AMP_MPI.h"
18size_t count(
const std::vector<std::array<int, NG + 1>> &tri );
22std::vector<std::array<std::array<double, 3>, 3>>
readSTL(
const std::string &filename,
30template<
size_t NG,
size_t NP>
31void createTriangles(
const std::vector<std::array<std::array<double, NP>, NG + 1>> &tri_list,
32 std::vector<std::array<double, NP>> &vertices,
33 std::vector<std::array<int, NG + 1>> &triangles,
38std::vector<std::vector<std::array<int, NG + 1>>>
42std::shared_ptr<AMP::Mesh::Mesh>
43generateSTL( std::shared_ptr<const AMP::Mesh::MeshParameters> params );
46std::shared_ptr<AMP::Mesh::Mesh>
generateGeom( std::shared_ptr<AMP::Geometry::Geometry> geom,
51std::shared_ptr<AMP::Mesh::Mesh>
generate( std::shared_ptr<const MeshParameters> params );
65template<
size_t NG,
size_t NP = 3>
66std::shared_ptr<AMP::Mesh::Mesh>
67generate(
const std::vector<std::array<std::array<double, NP>, NG + 1>> &triangles,
69 const std::string &name,
71 bool splitDomain =
true,
72 int loadBalanceMethod = 1 );
79size_t maxProcs( std::shared_ptr<const MeshParameters> params );
Provides C++ wrapper around MPI routines.
std::shared_ptr< AMP::Mesh::Mesh > generate(std::shared_ptr< const MeshParameters > params)
Generate a triangle mesh (or multi-mesh) from parameters.
size_t count(const std::vector< std::array< int, NG+1 > > &tri)
Count the number of unique triangles.
void createTriangles(const std::vector< std::array< std::array< double, NP >, NG+1 > > &tri_list, std::vector< std::array< double, NP > > &vertices, std::vector< std::array< int, NG+1 > > &triangles, double tol)
Create triangles/vertices from a set of triangles specified by their coordinates.
std::vector< std::vector< std::array< int, NG+1 > > > splitDomains(std::vector< std::array< int, NG+1 > > tri)
Create triangles neighbors from the triangles.
size_t readSTLHeader(const std::string &filename)
Read the header for an STL file.
std::vector< std::array< std::array< double, 3 >, 3 > > readSTL(const std::string &filename, double scale)
Read an STL file.
size_t estimateMeshSize(std::shared_ptr< const MeshParameters > params)
Estimate Mesh size.
std::shared_ptr< AMP::Mesh::Mesh > generateSTL(std::shared_ptr< const AMP::Mesh::MeshParameters > params)
Read an STL file and generate a mesh (triangle mesh or multi-mesh)
size_t maxProcs(std::shared_ptr< const MeshParameters > params)
Maximum processor size.
std::shared_ptr< AMP::Mesh::Mesh > generateGeom(std::shared_ptr< AMP::Geometry::Geometry > geom, const AMP_MPI &comm, double resolution)
Generate a triangle mesh (or multi-mesh) from a geometry.