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_SRC_STRATEGIC_H
19#define BEM_RWG_OPINT_SRC_STRATEGIC_H
20
21#include "types.hpp"
22
28
29#include "kernels/hgf.hpp"
34
35
36namespace bem::rwg
37{
38
70
71
80template <typename TriangleQuadratureType = GaussTriangleQuadrature<2>, typename LineQuadratureType = GaussLineQuadrature<1>>
82{
83
84 using base = SrcIntegratorBase;
85 static_assert(
86 std::is_base_of<TriangleQuadratureBase<2>, TriangleQuadratureType>::value,
87 "SrcStrategic: `TriangleQuadratureType` must derive from `TriangleQuadratureBase<2>`"
88 );
89 static_assert(
90 std::is_base_of<LineQuadratureBase<1>, LineQuadratureType>::value,
91 "SrcStrategic: `LineQuadratureType` must derive from `LineQuadratureBase<1>`"
92 );
93
94public:
95
106 ):
107 settings_(settings),
108 src_hgf_(tri_quad, HGF()),
111 src_line_(line_quad)
112 {
113 src_line_.quadrature_object().set_order(settings_.line_order);
114 src_sthgf_.quadrature_object().set_order(settings_.tri_order_near);
115 src_shgf_.quadrature_object().set_order(settings_.tri_order_near);
116 src_hgf_.quadrature_object().set_order(settings_.tri_order_far);
117 return;
118 };
119
120
129 const Complex k,
130 const Triangle<2>& src_tri,
132 ) override;
133
134
135private:
136
137 SrcIntegrationSettings settings_;
138
143
144};
145
150}
151
153
154#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 source triangle for RWG-based BEM operators.
Definition base.hpp:54
Class integration over the source triangle for RWG-based BEM operators. The method of integration is ...
Definition strategic.hpp:82
SrcStrategic(const SrcIntegrationSettings settings=SrcIntegrationSettings(), const TriangleQuadratureType tri_quad=GaussTriangleQuadrature< 2 >(), const LineQuadratureType line_quad=GaussLineQuadrature< 1 >())
Constructs a SrcStrategic integrator with specified line and triangle quadrature objects.
SrcResult integrate(const Complex k, const Triangle< 2 > &src_tri, ConstEigRef< EigMatNX< Float, 3 > > r_obs) override
Computes the integral over the source triangle.
Definition strategic.tpp:30
const Eigen::Ref< const EigObj > ConstEigRef
Read-only reference to an Eigen object.
Definition types.hpp:98
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 source triangle.
Definition strategic.hpp:48
Data structure to hold the results of integration over the source triangle.
Definition base.hpp:37