OpenBEM
Open-source framework for electromagnetic simulation with the boundary element method.
Loading...
Searching...
No Matches
strategic.hpp
Go to the documentation of this file.
1// OpenBEM - Copyright (C) 2026 Shashwat Sharma
2
3// This file is part of OpenBEM.
4
5// OpenBEM is free software: you can redistribute it and/or modify it under the terms of the
6// GNU General Public License as published by the Free Software Foundation, either version 3
7// of the License, or (at your option) any later version.
8
9// You should have received a copy of the GNU General Public License along with OpenBEM.
10// If not, see <https://www.gnu.org/licenses/>.
11
12
18#ifndef BEM_RWG_OPINT_OBS_STRATEGIC_H
19#define BEM_RWG_OPINT_OBS_STRATEGIC_H
20
21#include <memory>
22
23#include "types.hpp"
24
30
31#include "kernels/hgf.hpp"
38
39
40namespace bem::rwg
41{
42
82
83
94template <
98 >
100{
101
102 using base = ObsIntegratorBase;
103 static_assert(
104 std::is_base_of<TriangleQuadratureBase<3>, ObsTriangleQuadratureType>::value,
105 "ObsStrategic: `ObsTriangleQuadratureType` must derive from `TriangleQuadratureBase<3>`"
106 );
107 static_assert(
108 std::is_base_of<TriangleQuadratureBase<2>, SrcTriangleQuadratureType>::value,
109 "ObsStrategic: `SrcTriangleQuadratureType` must derive from `TriangleQuadratureBase<2>`"
110 );
111 static_assert(
112 std::is_base_of<LineQuadratureBase<1>, LineQuadratureType>::value,
113 "ObsStrategic: `LineQuadratureType` must derive from `LineQuadratureBase<1>`"
114 );
115
116public:
117
130 ):
131 settings_(settings),
136 {
137 line_.quadrature_object().set_order(settings_.obs_quad_order_far);
138 sthgf_.quadrature_object().set_order(settings_.obs_quad_order_near);
139 shgf_.quadrature_object().set_order(settings_.obs_quad_order_near);
140 hgf_.quadrature_object().set_order(settings_.obs_quad_order_far);
141
142 line_.src_integrator().quadrature_object().set_order(settings_.src_line_order);
143 sthgf_.src_integrator().quadrature_object().set_order(settings_.src_quad_order_near);
144 shgf_.src_integrator().quadrature_object().set_order(settings_.src_quad_order_near);
145 hgf_.src_integrator().quadrature_object().set_order(settings_.src_quad_order_far);
146
147 return;
148 };
149
150
159 const Complex k,
160 const Triangle<3>& obs_tri,
161 const Triangle<2>& src_tri
162 ) override;
163
164
165private:
166
167 IntegrationSettings settings_;
168
173
174};
175
180}
181
183
184#endif
Class for computing the scalar Green's function for homogeneous, linear, and isotropic materials.
Definition hgf.hpp:37
Class for computing the scalar Green's function for homogeneous, linear, and isotropic materials,...
Definition hgf.hpp:92
Class for computing the scalar Green's function for homogeneous, linear, and isotropic materials,...
Definition hgf.hpp:149
Base class for integration over the observation triangle for RWG-based BEM operators.
Definition base.hpp:49
Strategic integration over the observation triangle for RWG-based BEM operators. The method of integr...
ObsResult integrate(const Complex k, const Triangle< 3 > &obs_tri, const Triangle< 2 > &src_tri) override
Computes the integral over the source triangle.
Definition strategic.tpp:31
ObsStrategic(const IntegrationSettings settings=IntegrationSettings(), const ObsTriangleQuadratureType obs_tri_quad=GaussTriangleQuadrature< 3 >(), const SrcTriangleQuadratureType src_tri_quad=GaussTriangleQuadrature< 2 >(), const LineQuadratureType src_line_quad=GaussLineQuadrature< 1 >())
Constructs an ObsStrategic integrator with specified line and triangle quadrature objects.
Class for line integration over the source triangle for RWG-based BEM operators. References:
Definition line.hpp:48
Class for quadrature over the source triangle for RWG-based BEM operators. Reference:
Class for 2D quadrature over the source triangle with singularity treatment for RWG-based BEM operato...
double Float
Floating point number.
Definition types.hpp:47
std::complex< Float > Complex
Complex floating point number.
Definition types.hpp:51
Eigen::Matrix< T, N, 1 > EigColVecN
Fixed-size column vector of size N containing type T.
Definition types.hpp:86
Namespace for RWG-based BEM functionality.
Data structure defining settings for strategic integration over the observation and source triangles.
Definition strategic.hpp:52
Data structure to hold the results of integration over the observation triangle.
Definition base.hpp:37