33 #ifndef _OPAL_BOUNDARY_GEOMETRY_H
34 #define _OPAL_BOUNDARY_GEOMETRY_H
45 #include <gsl/gsl_rng.h>
48 #include <unordered_map>
49 #include <unordered_set>
68 const std::string&
name);
75 const std::string& name);
102 static const std::unordered_map<std::string, Topology> stringTopology_s = {
215 const int triangle_id,
251 std::unordered_map<int,
252 std::unordered_set<int>>
ids;
276 PAssert (1 <= vertex_id && vertex_id <=3);
290 const int triangle_id,
bool getInsidePoint(Vector_t &pt)
virtual BoundaryGeometry * clone(const std::string &name)
Return a clone.
Vector_t mapPoint2Voxel(const Vector_t &)
The base class for all OPAL objects.
std::string getString(const Attribute &attr)
Get string value.
int mapVoxelIndices2ID(const int i, const int j, const int k)
int intersectTriangleVoxel(const int triangle_id, const int i, const int j, const int k)
std::ostream & operator<<(std::ostream &os, const Attribute &attr)
void disableDebug(enum DebugFlags flags)
virtual void update()
Update this object.
std::vector< std::array< unsigned int, 4 > > Triangles_m
int intersectLineTriangle(const enum INTERSECTION_TESTS kind, const Vector_t &P0, const Vector_t &P1, const int triangle_id, Vector_t &I)
IpplTimings::TimerRef TRayTrace_m
int partInside(const Vector_t &r, const Vector_t &v, const double dt, Vector_t &intecoords, int &triId)
virtual void execute()
Execute the command.
static BoundaryGeometry * find(const std::string &name)
int intersectLineSegmentBoundary(const Vector_t &P0, const Vector_t &P1, Vector_t &intersection_pt, int &triangle_id)
std::unordered_map< int, std::unordered_set< int > > ids
bool isInside(const Vector_t &P)
Timing::TimerRef TimerRef
void enableDebug(enum DebugFlags flags)
std::string getFilename() const
std::vector< double > TriAreas_m
int fastIsInside(const Vector_t &reference_pt, const Vector_t &P)
std::vector< Vector_t > TriNormals_m
IpplTimings::TimerRef TfastIsInside_m
void operator=(const BoundaryGeometry &)
Inform & printInfo(Inform &os) const
bool findInsidePoint(void)
IpplTimings::TimerRef Tinitialize_m
std::vector< Attribute > itsAttr
The object attributes.
virtual bool canReplaceBy(Object *object)
Test if replacement is allowed.
Topology getTopology() const
int intersectTinyLineSegmentBoundary(const Vector_t &, const Vector_t &, Vector_t &, int &)
double getReal(const Attribute &attr)
Return real value.
void computeMeshVoxelization(void)
The base class for all OPAL definitions.
void updateElement(ElementBase *element)
IpplTimings::TimerRef TisInside_m
struct BoundaryGeometry::@71 voxelMesh_m
IpplTimings::TimerRef TPartInside_m
Vector_t mapIndices2Voxel(const int, const int, const int)
void writeGeomToVtk(std::string fn)
const Vector_t & getPoint(const int triangle_id, const int vertex_id)
int intersectRayBoundary(const Vector_t &P, const Vector_t &v, Vector_t &I)
virtual ~BoundaryGeometry()
std::vector< Vector_t > Points_m