[petsc-users] Converting complex PDE to real for KNL performance ?

Sajid Ali sajidsyed2021 at u.northwestern.edu
Wed Mar 27 20:07:43 CDT 2019


 Hi,

I'm able to solve the following equation using complex numbers (with
ts_type cn and pc_type gamg) :
                              u_t = A*u'' + F_t*u;
(where A = -1j/(2k) amd u'' refers to u_xx+u_yy implemented with the
familiar 5-point stencil)

Now, I want to solve the same problem using real numbers. The equivalent
equations are:
u_t_real   =  1/(2k) * u''_imag + F_real*u_real   - F_imag*u_imag
u_t_imag = -1/(2k) * u''_real   + F_imag*u_real - F_real*u_imag

Thus, if we now take our new u vector to have twice the length of the
problem we're solving, keeping the first half as real and the second half
as imaginary, we'd get a matrix that had matrices computing the laplacian
via the 5-point stencil in the top-right and bottom-left corners and a
diagonal [F_real+F_imag, F_real-F_imag] term.

I tried doing this and the gamg preconditioner complains about an
unsymmetric matrix. If i use the default preconditioner, I get
DIVERGED_NONLINEAR_SOLVE.

Is there a way to better organize the matrix ?

PS: I'm trying to do this using only real numbers because I realized that
the optimized avx-512 kernels for KNL are not implemented for complex
numbers. Would that be implemented soon ?

Thank You,
Sajid Ali
Applied Physics
Northwestern University
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20190327/f51a7209/attachment.html>


More information about the petsc-users mailing list