How to treat complex damping functions for PMLs?

Hi everyone,

I’m building knowledge on perfectly-matched-layers and how to define them on FEniCS, but I’m stuck now.

Consider the weak form of the Helmholtz equation in the bounded domain x = [-a^*, a^*] and y = [-b^*, b^*], where a<x<a^* and b<y<b^* define the PML.

\large{\int_{\Omega} (\frac{\gamma_y}{\gamma_x} \frac{\partial p}{\partial x} \frac{\partial q}{\partial x} + \frac{\gamma_x}{\gamma_y} \frac{\partial p}{\partial y} \frac{\partial q}{\partial y}} - \kappa^2 \gamma_x \gamma_y p q)dxdy = \int_{\Gamma}gq ds

Here, p and q are respectively the trial and test functions, \kappa the wavenumber,

\gamma_x \cases{1, \text{ if } |x|<a \\ 1+\frac{i}{\omega} \sigma_x(x), \text{ if } a<|x|<a^*}

\gamma_y \cases{1, \text{ if } |y|<b \\ 1+\frac{i}{\omega} \sigma_y(y), \text{ if } b<|y|<b^*}

are the damping functions and we have some possibilities for the \sigma's.

I know that p and q need to be split into its real and imaginary parts, for example

\nabla p \cdot \nabla q = \nabla p^R \cdot \nabla q^R + \nabla p^I \cdot \nabla q^I + i(\nabla p^I \cdot \nabla q^R - \nabla p^R \cdot \nabla q^I)

But what about \gamma_x and \gamma_y? I’m confused because they are already complex by definition.

Can someone please give a hint on how to treat them?

To be more specific, if I need to split \gamma_x and \gamma_y into its real and imaginary parts, I’m trying to guess how I should complete the following \gamma_x^? and \gamma_y^?

\large{\int_{\Omega} (\frac{\gamma_y^?}{\gamma_x^?} \frac{\partial p^R}{\partial x} \frac{\partial q^R}{\partial x} + \frac{\gamma_x^?}{\gamma_y^?} \frac{\partial p^R}{\partial y} \frac{\partial q^R}{\partial y}} - \kappa^2 \gamma_x^? \gamma_y^? p^R q^R)dxdy

\large{\int_{\Omega} (\frac{\gamma_y^?}{\gamma_x^?} \frac{\partial p^I}{\partial x} \frac{\partial q^I}{\partial x} + \frac{\gamma_x^?}{\gamma_y^?} \frac{\partial p^I}{\partial y} \frac{\partial q^I}{\partial y}} - \kappa^2 \gamma_x^? \gamma_y^? p^I q^I)dxdy

\large{\int_{\Omega} (\frac{\gamma_y^?}{\gamma_x^?} \frac{\partial p^I}{\partial x} \frac{\partial q^R}{\partial x} + \frac{\gamma_x^?}{\gamma_y^?} \frac{\partial p^I}{\partial y} \frac{\partial q^R}{\partial y}} - \kappa^2 \gamma_x^? \gamma_y^? p^I q^R)dxdy

\large{ - \int_{\Omega} (\frac{\gamma_y^?}{\gamma_x^?} \frac{\partial p^R}{\partial x} \frac{\partial q^I}{\partial x} + \frac{\gamma_x^?}{\gamma_y^?} \frac{\partial p^R}{\partial y} \frac{\partial q^I}{\partial y}} - \kappa^2 \gamma_x^? \gamma_y^? p^R q^I)dxdy

Hi luc,

Did you succed to implement the pml in FEniCS? Did it perform well?

There is an implementation I shared in another thread about implementing PML’s although this hasnot been updated for dolfinx.

1 Like

Thank you, I will take a look to that!!