Difference between revisions of "Complex-valued problems"

From Medusa: Coordinate Free Mehless Method implementation
Jump to: navigation, search
m (Jureslak moved page Complex numbers to Complex-valued problems without leaving a redirect)
 
(5 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 15: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.

Complex poisson 2D real.png Complex poisson 2D imag.png

Go back to Examples.