Toggle menu
71
399
28
3.6K
Medusa: Coordinate Free Meshless Method implementation
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Complex-valued problems: Difference between revisions

From Medusa: Coordinate Free Meshless Method implementation
No edit summary
APirnat (talk | contribs)
No edit summary
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Our library natively supports complex numbers.
Go back to [[Medusa#Examples|Examples]].


TODO: Anja
Our library natively supports complex numbers. To demonstrate this a tutorial for solving Poisson's equation is presented below. For more complicated complex-valued problems see [[Electromagnetic scattering]] and [[Schrödinger equation]].
 
== 2D Complex Poisson's equation ==
We are solving 2D complex Poisson equation, on a unit square with Dirichlet boundary conditions
 
\[
\begin{align*}
    i \Delta u &= f      &&\text{in } \Omega, \\
      u &= 0          &&\text{on } \partial \Omega,
\end{align*}
\]
where $u(x,y)$ is the solution to the problem and $\Omega = [0, 1] \times [0, 1]$ the square domain. We will consider $f(x,y) = 2\pi^2\sin(\pi x)\sin(\pi y)$, as it makes for
a simple solution $u(x,y) = i\sin(\pi x)\sin(\pi y)$.
 
We write the equations for our problem by directly translating the mathematical formulation above into the code.
 
<syntaxhighlight lang="cpp">
for (int i : domain.interior()) {
    double x = domain.pos(i, 0);
    double y = domain.pos(i, 1);
    1.0_i * op.lap(i) = 2*PI*PI*sin(PI * x)*sin(PI * y);
}
for (int i : domain.boundary()) {
    op.value(i) = 0.0;
}
</syntaxhighlight>
 
The solution $u(x,y)$ is plotted below. In our case solution consists only of the imaginary part, the real part is equal to zero.
 
[[File:complex_poisson_2D_real.png|500px]]
[[File:complex_poisson_2D_imag.png|500px]]
 
Go back to [[Medusa#Examples|Examples]].

Latest revision as of 14:29, 19 July 2019

Go back to Examples.

Our library natively supports complex numbers. To demonstrate this a tutorial for solving Poisson's equation is presented below. For more complicated complex-valued problems see Electromagnetic scattering and Schrödinger equation.

2D Complex Poisson's equation

We are solving 2D complex Poisson equation, on a unit square with Dirichlet boundary conditions

\[ \begin{align*}

   	i \Delta u &= f      &&\text{in } \Omega, \\
   	  u &= 0           &&\text{on } \partial \Omega,

\end{align*} \] where $u(x,y)$ is the solution to the problem and $\Omega = [0, 1] \times [0, 1]$ the square domain. We will consider $f(x,y) = 2\pi^2\sin(\pi x)\sin(\pi y)$, as it makes for a simple solution $u(x,y) = i\sin(\pi x)\sin(\pi y)$.

We write the equations for our problem by directly translating the mathematical formulation above into the code.

for (int i : domain.interior()) {
    double x = domain.pos(i, 0);
    double y = domain.pos(i, 1);
    1.0_i * op.lap(i) = 2*PI*PI*sin(PI * x)*sin(PI * y);
}
for (int i : domain.boundary()) {
    op.value(i) = 0.0;
}

The solution $u(x,y)$ is plotted below. In our case solution consists only of the imaginary part, the real part is equal to zero.

Go back to Examples.