chombo-discharge
Loading...
Searching...
No Matches
CD_SignedDistanceBVH.H
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021-2026 SINTEF Energy Research
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
13#ifndef CD_SIGNEDDISTANCEBVH_H
14#define CD_SIGNEDDISTANCEBVH_H
15
16// Std includes
17#include <memory>
18#include <chrono>
19
20// EBGeometry includes
21#include <EBGeometry.hpp>
22
23// Chombo includes
24#include <BaseIF.H>
25
26// Our includes
27#include <CD_NamespaceHeader.H>
28
35template <class T, class BV, int K>
36class SignedDistanceBVH : public BaseIF
37{
38public:
42 using Vec3 = EBGeometry::Vec3T<T>;
43
47 using Face = EBGeometry::DCEL::FaceT<T>;
48
52 using Node = EBGeometry::BVH::LinearBVH<T, Face, BV, K>;
53
58
66 SignedDistanceBVH(const std::shared_ptr<Node>& a_root, const bool a_flipInside, const Real a_zCoord = 0.0);
67
72 SignedDistanceBVH(const SignedDistanceBVH& a_object);
73
77 virtual ~SignedDistanceBVH();
78
84 Real
85 value(const RealVect& a_point) const override;
86
91 BaseIF*
92 newImplicitFunction() const override;
93
94protected:
99
103 std::shared_ptr<Node> m_root;
104
109
113 mutable long m_numCalled;
114
118 mutable std::chrono::duration<double> m_timespan;
119};
120
121#include <CD_NamespaceFooter.H>
122
124
125#endif
Implementation of CD_SignedDistanceBVH.H.
Signed distance function for a DCEL mesh.
Definition CD_SignedDistanceBVH.H:37
bool m_flipInside
Hook for turning inside to outside.
Definition CD_SignedDistanceBVH.H:108
Real m_zCoord
For 2D only. This is the z-coordinate through which we slice the object.
Definition CD_SignedDistanceBVH.H:98
BaseIF * newImplicitFunction() const override
Factory method. Sends pointers around.
Definition CD_SignedDistanceBVHImplem.H:89
SignedDistanceBVH()=delete
Disallowed weak construction.
std::shared_ptr< Node > m_root
Pointer to root node in bounding volume hierarchy.
Definition CD_SignedDistanceBVH.H:103
EBGeometry::BVH::LinearBVH< T, Face, BV, K > Node
Alias for BVH node with precision T, enclosing DCEL face with a bounding volume type V.
Definition CD_SignedDistanceBVH.H:52
std::chrono::duration< double > m_timespan
Total time spent computing the signed distance. Use for performance tracking.
Definition CD_SignedDistanceBVH.H:118
EBGeometry::Vec3T< T > Vec3
Alias for always-3D vector with template.
Definition CD_SignedDistanceBVH.H:42
EBGeometry::DCEL::FaceT< T > Face
DCEL polygon face, which is the primitive type enclosed in the bounding volume hierarchy.
Definition CD_SignedDistanceBVH.H:47
virtual ~SignedDistanceBVH()
Destructor (does nothing)
Definition CD_SignedDistanceBVHImplem.H:50
long m_numCalled
Number of times the implicit function was called. Use for performance tracking.
Definition CD_SignedDistanceBVH.H:113
Real value(const RealVect &a_point) const override
Value function.
Definition CD_SignedDistanceBVHImplem.H:61