Boundary integral operators¶
IBoundaryIntegralOperator¶
-
class
pcm
::
IBoundaryIntegralOperator
¶ Subclassed by pcm::bi_operators::Collocation, pcm::bi_operators::Numerical, pcm::bi_operators::Purisima
Public Functions
-
Eigen::MatrixXd
computeS
(const ICavity &cav, const IGreensFunction &gf) const¶ Computes the matrix representation of the single layer operator
- Parameters
[in] cav
: the discretized cavity[in] gf
: a Green’s function
-
Eigen::MatrixXd
computeD
(const ICavity &cav, const IGreensFunction &gf) const¶ Computes the matrix representation of the double layer operator
- Parameters
[in] cav
: the discretized cavity[in] gf
: a Green’s function
Private Functions
-
Eigen::MatrixXd
computeS_impl
(const std::vector<cavity::Element> &elems, const IGreensFunction &gf) const = 0¶ Computes the matrix representation of the single layer operator
- Parameters
[in] elems
: list of finite elements of the discretized cavity[in] gf
: a Green’s function
-
Eigen::MatrixXd
computeD_impl
(const std::vector<cavity::Element> &elems, const IGreensFunction &gf) const = 0¶ Computes the matrix representation of the double layer operator
- Parameters
[in] elems
: list of finite elements of the discretized cavity[in] gf
: a Green’s function
-
Eigen::MatrixXd
Collocation¶
-
class
pcm::bi_operators
::
Collocation
: public pcm::IBoundaryIntegralOperator¶ Implementation of the single and double layer operators matrix representation using one-point collocation.
Calculates the diagonal elements of S as:
\[ S_{ii} = factor * \sqrt{\frac{4\pi}{a_i}} \]while the diagonal elements of D are:\[ D_{ii} = -factor * \sqrt{\frac{\pi}{a_i}} \frac{1}{R_I} \]- Author
Roberto Di Remigio
- Date
2015, 2016
Private Functions
-
Eigen::MatrixXd
computeS_impl
(const std::vector<cavity::Element> &elems, const IGreensFunction &gf) const override¶ Computes the matrix representation of the single layer operator
- Parameters
[in] elems
: list of finite elements of the discretized cavity[in] gf
: a Green’s function
-
Eigen::MatrixXd
computeD_impl
(const std::vector<cavity::Element> &elems, const IGreensFunction &gf) const override¶ Computes the matrix representation of the double layer operator
- Parameters
[in] elems
: list of finite elements of the discretized cavity[in] gf
: a Green’s function
Private Members
-
double
factor_
¶ Scaling factor for the diagonal elements of the matrix representation of the S and D operators
Purisima¶
-
class
pcm::bi_operators
::
Purisima
: public pcm::IBoundaryIntegralOperator¶ Implementation of the double layer operator matrix representation using one-point collocation and Purisima’s strategy for the diagonal of D.
Calculates the diagonal elements of D as:
\[ D_{ii} = -\left(2\pi + \sum_{j\neq i}D_{ij}a_j \right)\frac{1}{a_i} \]The original reference is [5]- Author
Roberto Di Remigio
- Date
2015, 2016
Private Functions
-
Eigen::MatrixXd
computeS_impl
(const std::vector<cavity::Element> &elems, const IGreensFunction &gf) const override¶ Computes the matrix representation of the single layer operator
- Parameters
[in] elems
: list of finite elements of the discretized cavity[in] gf
: a Green’s function
-
Eigen::MatrixXd
computeD_impl
(const std::vector<cavity::Element> &elems, const IGreensFunction &gf) const override¶ Computes the matrix representation of the double layer operator by collocation using the Purisima sum rule to compute the diagonal elements.
The sum rule for the diagonal elements is:
\[ D_{ii} = -\left(2\pi + \sum_{j\neq i}D_{ij}a_j \right)\frac{1}{a_i} \]- Parameters
[in] elems
: discretized cavity[in] gf
: a Green’s function
Private Members
-
double
factor_
¶ Scaling factor for the diagonal elements of the matrix representation of the S operator
Numerical¶
-
class
pcm::bi_operators
::
Numerical
: public pcm::IBoundaryIntegralOperator¶ Implementation of the single and double layer operators matrix representation using one-point collocation.
Calculates the diagonal elements of S and D by collocation, using numerical integration.
- Author
Roberto Di Remigio
- Date
2015, 2016
Private Functions
-
Eigen::MatrixXd
computeS_impl
(const std::vector<cavity::Element> &elems, const IGreensFunction &gf) const override¶ Computes the matrix representation of the single layer operator
- Parameters
[in] elems
: list of finite elements of the discretized cavity[in] gf
: a Green’s function
-
Eigen::MatrixXd
computeD_impl
(const std::vector<cavity::Element> &elems, const IGreensFunction &gf) const override¶ Computes the matrix representation of the double layer operator
- Parameters
[in] elems
: list of finite elements of the discretized cavity[in] gf
: a Green’s function