@@ -101,6 +101,15 @@ template <class T>
101
101
std::shared_ptr<ImplicitFunction<T>>
102
102
Elongate (const std::shared_ptr<ImplicitFunction<T>>& a_implicitFunction, const Vec3T<T>& a_elongation) noexcept ;
103
103
104
+ /* !
105
+ @brief Convenience function for reflecting an implicit function
106
+ @param[in] a_implicitFunction Implicit function to be reflected
107
+ @param[in] a_reflectPlane Plane to reflect across (0=yz-plane, 1=xz-plane, 2=xy-plane).
108
+ */
109
+ template <class T >
110
+ std::shared_ptr<ImplicitFunction<T>>
111
+ Reflect (const std::shared_ptr<ImplicitFunction<T>>& a_implicitFunction, const size_t & a_reflectPlane) noexcept ;
112
+
104
113
/* !
105
114
@brief Complemented implicit function
106
115
*/
@@ -517,6 +526,49 @@ class ElongateIF : public ImplicitFunction<T>
517
526
Vec3T<T> m_elongation;
518
527
};
519
528
529
+ /* !
530
+ @brief Implicit function which is a reflection of another implicit function
531
+ */
532
+ template <class T >
533
+ class ReflectIF : public ImplicitFunction <T>
534
+ {
535
+ public:
536
+ /* !
537
+ @brief Disallowed weak construction
538
+ */
539
+ ReflectIF () = delete ;
540
+
541
+ /* !
542
+ @brief Full constructor. Reflects around the input plane (0=yz-plane, 1=xz-plane, 2=xy-plane).
543
+ @param[in] a_implicitFunction Implicit function to be reflected
544
+ @param[in] a_reflectPlane Plane to reflect across
545
+ */
546
+ ReflectIF (const std::shared_ptr<ImplicitFunction<T>>& a_implicitFunction, const size_t & a_reflectPlane) noexcept ;
547
+
548
+ /* !
549
+ @brief Destructor
550
+ */
551
+ virtual ~ReflectIF () noexcept ;
552
+
553
+ /* !
554
+ @brief Value function
555
+ @param[in] a_point input point
556
+ */
557
+ virtual T
558
+ value (const Vec3T<T>& a_point) const noexcept override ;
559
+
560
+ protected:
561
+ /* !
562
+ @brief Underlying implicit function to be reflected
563
+ */
564
+ std::shared_ptr<const ImplicitFunction<T>> m_implicitFunction;
565
+
566
+ /* !
567
+ @brief Reflection parameters
568
+ */
569
+ Vec3T<T> m_reflectParams;
570
+ };
571
+
520
572
#include " EBGeometry_NamespaceFooter.hpp"
521
573
522
574
#include " EBGeometry_TransformImplem.hpp"
0 commit comments