18#ifndef BEM_RWG_PROJ_SINGLE_LAYER_H
19#define BEM_RWG_PROJ_SINGLE_LAYER_H
41template <
typename SrcIntegratorType = SrcStrategic<>>
46 std::is_base_of<SrcIntegratorBase, SrcIntegratorType>::value,
47 "VectorSingleLayerProj: `SrcIntegratorType` must derive from `SrcIntegratorBase`"
57 src_integrator_(src_integrator) {};
96template <
typename SrcIntegratorType = SrcStrategic<>>
101 std::is_base_of<SrcIntegratorBase, SrcIntegratorType>::value,
102 "ScalarSingleLayerProj: `SrcIntegratorType` must derive from `SrcIntegratorBase`"
112 src_integrator_(src_integrator) {};
147template <
typename SrcIntegratorType = SrcStrategic<>>
152 std::is_base_of<SrcIntegratorBase, SrcIntegratorType>::value,
153 "GradScalarSingleLayerProj: `SrcIntegratorType` must derive from `SrcIntegratorBase`"
163 src_integrator_(src_integrator) {};
201template <
typename SrcIntegratorType = SrcStrategic<>>
206 std::is_base_of<SrcIntegratorBase, SrcIntegratorType>::value,
207 "VectorHypersingularProj: `SrcIntegratorType` must derive from `SrcIntegratorBase`"
217 proj_g_(src_integrator), proj_gradg_(src_integrator) {};
Class for computing the gradient of the scalar single-layer potential projector.
GradScalarSingleLayerProj(const SrcIntegratorType src_integrator=SrcStrategic<>())
Constructs a GradScalarSingleLayerProj object with a specified integration object.
EigMatXN< Complex, 1 > compute(const Complex k, ConstEigRef< EigMatNX< Float, 3 > > obs_points, const Triangle< 3 > &src_tri) override
Computes the gradient of the scalar single-layer projector.
Base class for RWG-based BEM projectors.
Class for computing the scalar single-layer potential projector.
EigMatXN< Complex, 1 > compute(const Complex k, ConstEigRef< EigMatNX< Float, 3 > > obs_points, const Triangle< 3 > &src_tri) override
Computes the scalar single-layer projector.
ScalarSingleLayerProj(const SrcIntegratorType src_integrator=SrcStrategic<>())
Constructs a ScalarSingleLayerProj object with a specified integration object.
Class for computing the vector hypersingular potential projector.
VectorHypersingularProj(const SrcIntegratorType src_integrator=SrcStrategic<>())
Constructs a VectorHypersingularProj object with a specified integration object.
EigMatXN< Complex, 3 > compute(const Complex k, ConstEigRef< EigMatNX< Float, 3 > > obs_points, const Triangle< 3 > &src_tri) override
Computes the vector hypersingular projector.
Class for computing the vector single-layer potential projector.
VectorSingleLayerProj(const SrcIntegratorType src_integrator=SrcStrategic<>())
Constructs a VectorSingleLayerProj object with a specified integration object.
EigMatXN< Complex, 3 > compute(const Complex k, ConstEigRef< EigMatNX< Float, 3 > > obs_points, const Triangle< 3 > &src_tri) override
Computes the vector single-layer projector.
const Eigen::Ref< const EigObj > ConstEigRef
Read-only reference to an Eigen object.
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.