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¶ 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¶ 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¶ 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¶ 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¶ 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¶ 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