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
cav
: the discretized cavitygf
: a Green’s function
-
Eigen::MatrixXd
computeD
(const ICavity &cav, const IGreensFunction &gf) const¶ Computes the matrix representation of the double layer operator
- Parameters
cav
: the discretized cavitygf
: a Green’s function
Private Functions
-
virtual 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
elems
: list of finite elements of the discretized cavitygf
: a Green’s function
-
virtual 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
elems
: list of finite elements of the discretized cavitygf
: a Green’s function
-
Eigen::MatrixXd
Collocation¶
-
class
pcm::bi_operators::
Collocation
¶ 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
Inherits from pcm::IBoundaryIntegralOperator
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
elems
: list of finite elements of the discretized cavitygf
: 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
elems
: list of finite elements of the discretized cavitygf
: 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
¶ 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
Inherits from pcm::IBoundaryIntegralOperator
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
elems
: list of finite elements of the discretized cavitygf
: 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
elems
: discretized cavitygf
: 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
¶ 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
Inherits from pcm::IBoundaryIntegralOperator
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
elems
: list of finite elements of the discretized cavitygf
: 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
elems
: list of finite elements of the discretized cavitygf
: a Green’s function