18#ifndef BEM_RWG_OPS_SINGLE_LAYER_H
19#define BEM_RWG_OPS_SINGLE_LAYER_H
53template <
typename ObsIntegratorType = ObsStrategic<>>
58 std::is_base_of<ObsIntegratorBase, ObsIntegratorType>::value,
59 "VectorSingleLayerOp: `ObsIntegratorType` must derive from `ObsIntegratorBase`"
127template <
typename ObsIntegratorType = ObsStrategic<>>
132 std::is_base_of<ObsIntegratorBase, ObsIntegratorType>::value,
133 "RotVectorSingleLayerOp: `ObsIntegratorType` must derive from `ObsIntegratorBase`"
198template <
typename ObsIntegratorType = ObsStrategic<>>
203 std::is_base_of<ObsIntegratorBase, ObsIntegratorType>::value,
204 "ScalarSingleLayerOp: `ObsIntegratorType` must derive from `ObsIntegratorBase`"
272template <
typename ObsIntegratorType = ObsStrategic<>>
277 std::is_base_of<ObsIntegratorBase, ObsIntegratorType>::value,
278 "RotGradScalarSingleLayerOp: `ObsIntegratorType` must derive from `ObsIntegratorBase`"
347template <
typename ObsIntegratorType = ObsStrategic<>>
352 std::is_base_of<ObsIntegratorBase, ObsIntegratorType>::value,
353 "VectorHypersingularOp: `ObsIntegratorType` must derive from `ObsIntegratorBase`"
408template <
typename ObsIntegratorType = ObsStrategic<>>
413 std::is_base_of<ObsIntegratorBase, ObsIntegratorType>::value,
414 "RotVectorHypersingularOp: `ObsIntegratorType` must derive from `ObsIntegratorBase`"
Base class for RWG-based BEM operators.
Class for computing the rotationally-tested gradient of the scalar single-layer potential operator.
EigMatMN< Complex, 3, 1 > compute(const Complex k, const Triangle< 3 > &obs_tri, const Triangle< 3 > &src_tri) override
Computes operator values for the given observation and source triangles.
EigMatMN< Complex, 3, 1 > assemble(const Complex k, const Triangle< 3 > &obs_tri, const Triangle< 3 > &src_tri, const ObsResult &obs_result)
Assembles the computed integrals into the final operator values.
RotGradScalarSingleLayerOp(const ObsIntegratorType obs_integrator=ObsStrategic<>())
Constructs a RotGradScalarSingleLayerOp object with a specified integration object.
Class for computing the rotationally-tested vector hypersingular operator.
EigMatMN< Complex, 3, 3 > compute(const Complex k, const Triangle< 3 > &obs_tri, const Triangle< 3 > &src_tri) override
Computes operator values for the given observation and source triangles.
RotVectorHypersingularOp(const ObsIntegratorType obs_integrator=ObsStrategic<>())
Constructs a RotVectorHypersingularOp object with a specified integration object.
Class for computing the rotationally-tested vector single-layer potential operator.
EigMatMN< Complex, 3, 3 > assemble(const Complex k, const Triangle< 3 > &obs_tri, const Triangle< 3 > &src_tri, const ObsResult &obs_result)
Assembles the computed integrals into the final operator values.
EigMatMN< Complex, 3, 3 > compute(const Complex k, const Triangle< 3 > &obs_tri, const Triangle< 3 > &src_tri) override
Computes operator values for the given observation and source triangles.
RotVectorSingleLayerOp(const ObsIntegratorType obs_integrator=ObsStrategic<>())
Constructs a RotVectorSingleLayerOp object with a specified integration object.
Class for computing the scalar single-layer potential operator.
ScalarSingleLayerOp(const ObsIntegratorType obs_integrator=ObsStrategic<>())
Constructs a ScalarSingleLayerOp object with a specified integration object.
EigMatMN< Complex, 1, 1 > assemble(const Complex k, const Triangle< 3 > &obs_tri, const Triangle< 3 > &src_tri, const ObsResult &obs_result)
Assembles the computed integrals into the final operator values.
EigMatMN< Complex, 1, 1 > compute(const Complex k, const Triangle< 3 > &obs_tri, const Triangle< 3 > &src_tri) override
Computes operator values for the given observation and source triangles.
Class for computing the vector hypersingular operator.
EigMatMN< Complex, 3, 3 > compute(const Complex k, const Triangle< 3 > &obs_tri, const Triangle< 3 > &src_tri) override
Computes operator values for the given observation and source triangles.
VectorHypersingularOp(const ObsIntegratorType obs_integrator=ObsStrategic<>())
Constructs a VectorHypersingularOp object with a specified integration object.
Class for computing the vector single-layer potential operator.
VectorSingleLayerOp(const ObsIntegratorType obs_integrator=ObsStrategic<>())
Constructs a VectorSingleLayerOp object with a specified integration object.
EigMatMN< Complex, 3, 3 > assemble(const Complex k, const Triangle< 3 > &obs_tri, const Triangle< 3 > &src_tri, const ObsResult &obs_result)
Assembles the computed integrals into the final operator values.
EigMatMN< Complex, 3, 3 > compute(const Complex k, const Triangle< 3 > &obs_tri, const Triangle< 3 > &src_tri) override
Computes operator values for the given observation and source triangles.
std::complex< Float > Complex
Complex floating point number.
Eigen::Matrix< T, N, 1 > EigColVecN
Fixed-size column vector of size N containing type T.
Namespace for RWG-based BEM functionality.
Data structure to hold the results of integration over the observation triangle.