OpenBEM
Open-source framework for electromagnetic simulation with the boundary element method.
Loading...
Searching...
No Matches
gram.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_OPS_GRAM_H
19#define BEM_RWG_OPS_GRAM_H
20
21#include "types.hpp"
22#include "constants.hpp"
23
26
28
29
30namespace bem::rwg
31{
32
54template <typename TriangleQuadratureType = GaussTriangleQuadrature<3>>
55class RwgRwgOp: public OperatorBase<3, 3>
56{
57
58 static_assert(
59 std::is_base_of<TriangleQuadratureBase<3>, TriangleQuadratureType>::value,
60 "RwgRwgOp: `TriangleQuadratureType` must derive from `TriangleQuadratureBase<3>`"
61 );
62
63public:
64
71
72
81 const Complex k,
82 const Triangle<3>& obs_tri,
83 const Triangle<3>& src_tri
84 ) override;
85
86
87private:
88
89 TriangleQuadratureType tri_quad_;
90
91};
92
93
111template <typename TriangleQuadratureType = GaussTriangleQuadrature<3>>
112class RotRwgRwgOp: public OperatorBase<3, 3>
113{
114
115 static_assert(
116 std::is_base_of<TriangleQuadratureBase<3>, TriangleQuadratureType>::value,
117 "RotRwgRwgOp: `TriangleQuadratureType` must derive from `TriangleQuadratureBase<3>`"
118 );
119
120public:
121
128
129
138 const Complex k,
139 const Triangle<3>& obs_tri,
140 const Triangle<3>& src_tri
141 ) override;
142
143
144private:
145
146 TriangleQuadratureType tri_quad_;
147
148};
149
154}
155
156#include "rwg/operators/gram.tpp"
157
158#endif
Base class for RWG-based BEM operators.
Definition base.hpp:41
Class for computing the rotationally-tested RWG identity operator.
Definition gram.hpp:113
RotRwgRwgOp(const TriangleQuadratureType tri_quad=GaussTriangleQuadrature< 3 >())
Constructs a RotRwgRwgOp object with a specified quadrature object for integration.
Definition gram.hpp:126
EigMatMN< Complex, 3, 3 > compute(const Complex k, const Triangle< 3 > &obs_tri, const Triangle< 3 > &src_tri) override
Computes the rotationally-tested RWG identity operator.
Definition gram.tpp:74
Class for computing the RWG identity operator.
Definition gram.hpp:56
EigMatMN< Complex, 3, 3 > compute(const Complex k, const Triangle< 3 > &obs_tri, const Triangle< 3 > &src_tri) override
Computes the RWG identity operator.
Definition gram.tpp:31
RwgRwgOp(const TriangleQuadratureType tri_quad=GaussTriangleQuadrature< 3 >())
Constructs an RwgRwgOp object with a specified quadrature object for integration.
Definition gram.hpp:69
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.