Skip to content
  • degironc's avatar
    MAJOR restructuring of the FFTXlib library · 3e6b4f8e
    degironc authored
    In real space processors are organized in a 2D pattern.
    
    Each processor owns data from a sub-set of Z-planes and a sub-set of Y-planes.
    In reciprocal space each processor owns Z-columns that belong to a sub set of
    X-values. This allows to split the processors in two sets for communication
    in the YZ and XY planes.
    In alternative, if the situation allows for it, a task group paralelization is used
    (with ntg=nyfft) where complete XY planes of ntg wavefunctions are collected and Fourier
    trasnformed in G space by different task-groups. This is preferable to the Z-proc + Y-proc
    paralleization if task group can be used because a smaller number of larger ammounts of 
    data are transferred. Hence three types of fft are implemented: 
     
      !
      !! ... isgn = +-1 : parallel 3d fft for rho and for the potential
      !
      !! ... isgn = +-2 : parallel 3d fft for wavefunctions
      !
      !! ... isgn = +-3 : parallel 3d fft for wavefunctions with task group
      !
      !! ... isgn = +   : G-space...
    3e6b4f8e