On Jul 29, 2017, at 5:06 PM, Oleksandr Koshkarov <[email protected]> wrote:
Dear All,
I am a new PETSc user and I am still in the middle of the manual (I have
finally settled to choose PETSc as my main numerical library) so I am sorry
beforehand if my questions would be naive.
I am trying to solve 6+1 dimensional Vlasov equation with spectral methods.
More precisely, I will try to solve half-discretized equations of the form
(approximate form) with pseudospectral Fourier method:
(Equations are in latex format, the nice website to see them is
https://www.codecogs.com/latex/eqneditor.php)
\frac{dC_{m,m,p}}{dt} =\\
\partial_x \left ( a_n C_{n+1,m,p} +b_n C_{n,m,p} +c_n C_{n-1,m,p} \right ) \\
+ \partial_y \left ( a_m C_{n,m+1,p} +b_m C_{n,m,p} +c_m C_{n,m-1,p} \right )
\\
+ \partial_z \left ( a_p C_{n,m,p+1} +b_p C_{n,m,p} +c_p C_{n,m,p-1} \right )
\\
+ d_n E_x C_{n-1,m,p} + d_m E_x C_{n,m-1,p} + d_p E_x C_{n,m,p-1} \\
+ B_x (e_{m,p} C_{n,m-1,p-1} + f_{m,p}C_{n,m-1,p+1} + \dots) + B_y (\dots) +
B_z (\dots)
where a,b,c,d,e,f are some constants which can depend on n,m,p,
n,m,p = 0...N,
C_{n,m,p} = C_{n,m,p}(x,y,z),
E_x = E_x(x,y,z), (same for E_y,B_x,...)
and fields are described with equation of the sort (linear pdes with source
terms dependent on C):
\frac{dE_x}{dt} = \partial_y B_z - \partial_z B_x + (AC_{1,0,0} + BC_{0,0,0}) \\
\frac{dB_x}{dt} = -\partial_y E_z + \partial_z E_x
with A,B being some constants.
I will need fully implicit CrankâNicolson method, so my plan is to use SNES or
TS where
I will use one MPI PETSc vector which describes the state of the system (all,
C, E, B), then I can evolve linear part with just matrix multiplication.
The first question is, should I use something like DMDA? if so, it is only
3dimensional but I need 6 dimensional vectots? Will it be faster then matrix
multiplication?
Then to do nonlinear part I will need 3d mpi-fftw to compute convolutions. The
problem is, how do I extract subvectors from full big vector state? (what is
the best approach?)
If you have some other suggestions, please feel free to share
Thanks and best regards,
Oleksandr Koshkarov.