From e503997e2b0a41e0325807f5958356de88e4add0 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Mon, 22 May 2023 14:36:51 +0200
Subject: [PATCH] Philippe 22/05/2023: FFT: FFT991: pass argument PWORK as a 3D
 array (no need to use an intermediary 1D pointer at this level)

---
 src/MNH/fft.f90       | 26 +++++++++++++++-----------
 src/MNH/fft55.f90     | 10 ++++------
 src/MNH/flat_inv.f90  | 13 ++++---------
 src/MNH/flat_invz.f90 | 25 ++++++++-----------------
 4 files changed, 31 insertions(+), 43 deletions(-)

diff --git a/src/MNH/fft.f90 b/src/MNH/fft.f90
index 298211f32..7bfd0ef4b 100644
--- a/src/MNH/fft.f90
+++ b/src/MNH/fft.f90
@@ -93,7 +93,7 @@ SUBROUTINE FFT991( PA, PWORK, PTRIGS, PFAX, KJUMP, KN, KLOT, KSIGN )
   IMPLICIT NONE
 
   REAL,    DIMENSION(:),  INTENT(INOUT) :: PA
-  REAL,    DIMENSION(:),  INTENT(OUT)   :: PWORK
+  REAL,    DIMENSION(:,:,:), CONTIGUOUS, TARGET, INTENT(OUT) :: PWORK
   REAL,    DIMENSION(:),  INTENT(IN)    :: PTRIGS
   INTEGER, DIMENSION(19), INTENT(IN)    :: PFAX
   INTEGER,                INTENT(IN)    :: KJUMP, KN, KLOT, KSIGN
@@ -141,6 +141,7 @@ SUBROUTINE FFT991( PA, PWORK, PTRIGS, PFAX, KJUMP, KN, KLOT, KSIGN )
   INTEGER :: IIBASE, IJBASE
   INTEGER :: II, JJ, IX, IZ
   INTEGER :: I0
+  REAL, DIMENSION(:), POINTER :: ZWORK
 
   IF (MPPDB_INITIALIZED) THEN
     !Check all IN arrays
@@ -150,10 +151,13 @@ SUBROUTINE FFT991( PA, PWORK, PTRIGS, PFAX, KJUMP, KN, KLOT, KSIGN )
     CALL MPPDB_CHECK( PA, "FFT991 beg:PA" )
   END IF
 
-!$acc data present( PA, PWORK )
+ZWORK(1 : SIZE(PWORK)) => PWORK(:,:,:)
 
-  ! Initialisation of PWORK useful to compare results with MPPDB_CHECK (otherwise all values are not set by FFT991
-  PWORK(:) = 0.
+!$acc data present( PA, ZWORK )
+
+  ! Initialisation of ZWORK useful to compare results with MPPDB_CHECK (otherwise all values are not set by FFT991
+  ZWORK(:) = 0.
+!$acc update device( ZWORK )
 
 #if 0
   !PW: Original version: but in that case, intent of PTRIGS and KFAX are not correct
@@ -203,10 +207,10 @@ SUBROUTINE FFT991( PA, PWORK, PTRIGS, PFAX, KJUMP, KN, KLOT, KSIGN )
         IFAC=PFAX(IK+1)
         IERR=-1
         IF ( IGO == 1 ) THEN
-          CALL RPASSM( PA(IA:), PA(IA+ILA:), PWORK(:), PWORK(IFAC*ILA+1:), PTRIGS(:), &
+          CALL RPASSM( PA(IA:), PA(IA+ILA:), ZWORK(:), ZWORK(IFAC*ILA+1:), PTRIGS(:), &
                        KJUMP, INX, INVEX, KN, IFAC, ILA, IERR )
         ELSE
-          CALL RPASSM( PWORK(:), PWORK(ILA+1:), PA(IA:), PA(IA+IFAC*ILA:), PTRIGS(:), &
+          CALL RPASSM( ZWORK(:), ZWORK(ILA+1:), PA(IA:), PA(IA+IFAC*ILA:), PTRIGS(:), &
                        INX, KJUMP, INVEX, KN, IFAC, ILA, IERR )
         END IF
         IF (IERR.NE.0) GO TO 500
@@ -225,7 +229,7 @@ SUBROUTINE FFT991( PA, PWORK, PTRIGS, PFAX, KJUMP, KN, KLOT, KSIGN )
         DO JJ = 1, INVEX
           IIBASE = 1  + (JJ-1) * INX
           IJBASE = IA + (JJ-1) * KJUMP
-          PA(IJBASE:IJBASE+KN-1) = PWORK(IIBASE:IIBASE+KN-1)
+          PA(IJBASE:IJBASE+KN-1) = ZWORK(IIBASE:IIBASE+KN-1)
         END DO
 !$acc end kernels
       END IF
@@ -256,10 +260,10 @@ SUBROUTINE FFT991( PA, PWORK, PTRIGS, PFAX, KJUMP, KN, KLOT, KSIGN )
         ILA=ILA/IFAC
         IERR=-1
         IF ( IGO == 1 ) THEN
-          CALL QPASSM( PA(IA:), PA(IA+IFAC*ILA:), PWORK(:), PWORK(ILA+1:), PTRIGS(:), &
+          CALL QPASSM( PA(IA:), PA(IA+IFAC*ILA:), ZWORK(:), ZWORK(ILA+1:), PTRIGS(:), &
                        KJUMP, INX, INVEX, KN, IFAC, ILA, IERR )
         ELSE
-          CALL QPASSM( PWORK(:), PWORK(IFAC*ILA+1:), PA(IA:), PA(IA+ILA:), PTRIGS(:), &
+          CALL QPASSM( ZWORK(:), ZWORK(IFAC*ILA+1:), PA(IA:), PA(IA+ILA:), PTRIGS(:), &
                        INX, KJUMP, INVEX, KN, IFAC, ILA, IERR )
         END IF
         IF (IERR.NE.0) GO TO 500
@@ -277,7 +281,7 @@ SUBROUTINE FFT991( PA, PWORK, PTRIGS, PFAX, KJUMP, KN, KLOT, KSIGN )
         DO JJ = 1, INVEX
           IIBASE = 1  + (JJ-1) * INX
           IJBASE = IA + (JJ-1) * KJUMP
-          PA(IJBASE:IJBASE+KN-1) = PWORK(IIBASE:IIBASE+KN-1)
+          PA(IJBASE:IJBASE+KN-1) = ZWORK(IIBASE:IIBASE+KN-1)
         END DO
 !$acc end kernels
       END IF
@@ -326,7 +330,7 @@ SUBROUTINE FFT991( PA, PWORK, PTRIGS, PFAX, KJUMP, KN, KLOT, KSIGN )
     !Check all INOUT arrays
     CALL MPPDB_CHECK( PA, "FFT991 end:PA" )
     !Check all OUT arrays
-    CALL MPPDB_CHECK( PWORK, "FFT991 end:PWORK" )
+    CALL MPPDB_CHECK( ZWORK, "FFT991 end:PWORK" )
   END IF
 END SUBROUTINE FFT991
 
diff --git a/src/MNH/fft55.f90 b/src/MNH/fft55.f90
index b6908c37f..02baa21a1 100644
--- a/src/MNH/fft55.f90
+++ b/src/MNH/fft55.f90
@@ -103,7 +103,7 @@ INTEGER, DIMENSION(19), INTENT(IN) :: KIFAX       ! previously prepared list of
 INTEGER, INTENT(IN) :: KISIGN  ! +1 for transform from spectral to gridpoint
                                ! -1 for transform from gridpoint to spectral
 !
-REAL, DIMENSION(:,:,:), CONTIGUOUS, TARGET, INTENT(OUT) :: PWORK ! area of size (2*N)*MIN(LOT,NVECLEN)
+REAL, DIMENSION(:,:,:), CONTIGUOUS, INTENT(OUT) :: PWORK ! area of size (2*N)*MIN(LOT,NVECLEN)
 !
 REAL, DIMENSION(:,:,:), CONTIGUOUS, TARGET, INTENT(INOUT) :: PA ! input and output data
 !
@@ -123,7 +123,6 @@ REAL :: ZSCALE, ZSCALE1, ZSCALE2
 !
 REAL :: ZT1, ZT2, ZCO, ZRI
 REAL, DIMENSION(:), POINTER :: ZA
-REAL, DIMENSION(:), POINTER :: ZWORK
 !
 !-------------------------------------------------------------------------------
 
@@ -144,9 +143,8 @@ END IF
 IN = SIZE( PA, 1 ) - 2 * JPHEXT
 
 ZA(1:IJUMP*ILOT) => PA(:,:,:)
-ZWORK(1:IJUMP*ILOT) => PWORK(:,:,:)
 
-!$acc data present( ZA, ZWORK, PTRIGS )
+!$acc data present( ZA, PWORK, PTRIGS )
 !
 !*       1.    COMPUTE LOOP BOUNDS
 !              -------------------
@@ -221,7 +219,7 @@ IF (KISIGN.EQ.1) THEN
 !
     IIS=-1
     IIA=ISTART
-    CALL FFT991( ZA(IIA:), ZWORK(:), PTRIGS, KIFAX, IJUMP, IN, INVEX, IIS )
+    CALL FFT991( ZA(IIA:), PWORK(:,:,:), PTRIGS, KIFAX, IJUMP, IN, INVEX, IIS )
 !
 !      2.3     postprocessing
 !              --------------
@@ -300,7 +298,7 @@ ELSE
 !
     IIA=ISTART
     IIS=1
-    CALL FFT991( ZA(IIA:), ZWORK(:), PTRIGS, KIFAX, IJUMP, IN, INVEX, IIS )
+    CALL FFT991( ZA(IIA:), PWORK(:,:,:), PTRIGS, KIFAX, IJUMP, IN, INVEX, IIS )
 !
 !      3.3     postprocessing
 !              --------------
diff --git a/src/MNH/flat_inv.f90 b/src/MNH/flat_inv.f90
index 89637dd96..e9cb8d81a 100644
--- a/src/MNH/flat_inv.f90
+++ b/src/MNH/flat_inv.f90
@@ -245,7 +245,6 @@ REAL, DIMENSION(:,:,:), POINTER, CONTIGUOUS :: ZBAND_YT  ! array in Y slices dis
 REAL, DIMENSION(:,:,:), POINTER, CONTIGUOUS :: ZBAND_YRT ! array in Y slices distribution transpose
 #endif
 REAL, DIMENSION(:), POINTER, CONTIGUOUS :: ZBAND1D
-REAL, DIMENSION(:), POINTER, CONTIGUOUS :: ZWORK1D
 !-------------------------------------------------------------------------------
 IF (MPPDB_INITIALIZED) THEN
   !Check all IN arrays
@@ -417,8 +416,7 @@ CALL REMAP_2WAY_X_ll(ZY,ZBAND_X,IINFO_ll)
 !
 IF (HLBCX(1) == 'CYCL') THEN
     ZBAND1D( 1 : SIZE(ZBAND_X,1)*SIZE(ZBAND_X,2)*SIZE(ZBAND_X(:,:,IKB-1:),3) ) => ZBAND_X(:,:,IKB-1:)
-    ZWORK1D( 1 : SIZE(ZWORKX) ) => ZWORKX(:,:,:)
-    CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, -1 )
+    CALL FFT991( ZBAND1D, ZWORKX, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, -1 )
 ELSE
     CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, -1 )
 END IF
@@ -437,8 +435,7 @@ IF (.NOT. L2D) THEN
 !
   IF (HLBCY(1) == 'CYCL') THEN
        ZBAND1D( 1 : SIZE(ZBAND_YT,1)*SIZE(ZBAND_YT,2)*SIZE(ZBAND_YT(:,:,IKB-1:),3) ) => ZBAND_YT(:,:,IKB-1:)
-       ZWORK1D( 1 : SIZE(ZWORKY) ) => ZWORKY(:,:,:)
-       CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, -1 )
+       CALL FFT991( ZBAND1D, ZWORKY, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, -1 )
   ELSE
        CALL FFT55( ZBAND_YT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, -1 )
   END IF
@@ -493,8 +490,7 @@ END IF
 IF (.NOT. L2D) THEN
   IF (HLBCY(1) == 'CYCL') THEN
     ZBAND1D( 1 : SIZE(ZBAND_YRT,1)*SIZE(ZBAND_YRT,2)*SIZE(ZBAND_YRT(:,:,IKB-1:),3) ) => ZBAND_YRT(:,:,IKB-1:)
-    ZWORK1D( 1 : SIZE(ZWORKY) ) => ZWORKY(:,:,:)
-    CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, +1 )
+    CALL FFT991( ZBAND1D, ZWORKY, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, +1 )
   ELSE
     CALL FFT55( ZBAND_YRT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, +1 )
   END IF
@@ -512,8 +508,7 @@ CALL REMAP_Y_X_ll(ZBAND_YR,ZBAND_X,IINFO_ll)
 !
 IF (HLBCX(1) == 'CYCL') THEN
   ZBAND1D( 1 : SIZE(ZBAND_X,1)*SIZE(ZBAND_X,2)*SIZE(ZBAND_X(:,:,IKB-1:),3) ) => ZBAND_X(:,:,IKB-1:)
-  ZWORK1D( 1 : SIZE(ZWORKX) ) => ZWORKX(:,:,:)
-  CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, +1 )
+  CALL FFT991( ZBAND1D, ZWORKX, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, +1 )
 ELSE
   CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, +1 )
 END IF
diff --git a/src/MNH/flat_invz.f90 b/src/MNH/flat_invz.f90
index 334d61894..ea7b6b3cd 100644
--- a/src/MNH/flat_invz.f90
+++ b/src/MNH/flat_invz.f90
@@ -341,7 +341,6 @@ SUBROUTINE FLAT_INVZ(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF,   &
 !   INTEGER                            :: IERROR
   !JUAN
   REAL, DIMENSION(:), POINTER, CONTIGUOUS :: ZBAND1D
-  REAL, DIMENSION(:), POINTER, CONTIGUOUS :: ZWORK1D
   !-------------------------------------------------------------------------------
   !
   !*       1.    COMPUTE LOOP BOUNDS
@@ -671,8 +670,7 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'OpenACC: IAND(NZ_SPLITTING,1
   IF (  IAND(NZ_SPLITTING,1) > 0 ) THEN 
      IF (HLBCX(1) == 'CYCL') THEN
       ZBAND1D( 1 : SIZE(ZBAND_X,1)*SIZE(ZBAND_X,2)*SIZE(ZBAND_X(:,:,IKB-1:),3) ) => ZBAND_X(:,:,IKB-1:)
-      ZWORK1D( 1 : SIZE(ZWORKX) ) => ZWORKX(:,:,:)
-      CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, -1 )
+      CALL FFT991( ZBAND1D, ZWORKX(:,:,:), PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, -1 )
      ELSE
         CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, -1 )
      END IF
@@ -691,8 +689,7 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'OpenACC: IAND(NZ_SPLITTING,1
 CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'FLAT_INVZ', 'OpenACC: HLBCX(1)==CYCL not ported' )
 #endif
         ZBAND1D( 1 : SIZE(ZBAND_SX_YP2_ZP1) ) => ZBAND_SX_YP2_ZP1(:,:,:)
-        ZWORK1D( 1 : SIZE(ZWORK_SX_YP2_ZP1) ) => ZWORK_SX_YP2_ZP1(:,:,:)
-        CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSX, KIFAXX, INC2_SX_YP2_ZP1, IIMAX, ILOT_SX_YP2_ZP1, -1 )
+        CALL FFT991( ZBAND1D, ZWORK_SX_YP2_ZP1(:,:,:), PTRIGSX, KIFAXX, INC2_SX_YP2_ZP1, IIMAX, ILOT_SX_YP2_ZP1, -1 )
         ! move (N+1) values in (2) values to avoid to lost them
         ZBAND_SX_YP2_ZP1(2,:,:)                 =  ZBAND_SX_YP2_ZP1(INC2_SX_YP2_ZP1-1,:,:)
         !ZBAND_SX_YP2_ZP1(INC2_SX_YP2_ZP1-1,:,:) = 0.0
@@ -723,8 +720,7 @@ CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'FLAT_INVZ', 'OpenACC: HLBCX(1)==CYCL not po
         !
         IF (HLBCY(1) == 'CYCL') THEN
           ZBAND1D( 1 : SIZE(ZBAND_YT,1)*SIZE(ZBAND_YT,2)*SIZE(ZBAND_YT(:,:,IKB-1:),3) ) => ZBAND_YT(:,:,IKB-1:)
-          ZWORK1D( 1 : SIZE(ZWORKY) ) => ZWORKY(:,:,:)
-          CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, -1 )
+          CALL FFT991( ZBAND1D, ZWORKY(:,:,:), PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, -1 )
         ELSE
            CALL FFT55( ZBAND_YT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, -1 )
         END IF
@@ -744,8 +740,7 @@ CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'FLAT_INVZ', 'OpenACC: HLBCX(1)==CYCL not po
 CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'FLAT_INVZ', 'OpenACC: HLBCY(1)==CYCL not ported' )
 #endif
           ZBAND1D( 1 : SIZE(ZBAND_SXP2_Y_ZP1T) ) => ZBAND_SXP2_Y_ZP1T(:,:,:)
-          ZWORK1D( 1 : SIZE(ZWORK_SXP2_Y_ZP1) )  => ZWORK_SXP2_Y_ZP1(:,:,:)
-          CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSY, KIFAXY, INC2_SXP2_Y_ZP1, IJMAX, ILOT_SXP2_Y_ZP1, -1 )
+          CALL FFT991( ZBAND1D, ZWORK_SXP2_Y_ZP1(:,:,:), PTRIGSY, KIFAXY, INC2_SXP2_Y_ZP1, IJMAX, ILOT_SXP2_Y_ZP1, -1 )
            ! move (N+1) values in (2) values to avoid to lost them
            ZBAND_SXP2_Y_ZP1T(2,:,:)                 = ZBAND_SXP2_Y_ZP1T(INC2_SXP2_Y_ZP1-1,:,:)
            !ZBAND_SXP2_Y_ZP1T(INC2_SXP2_Y_ZP1-1,:,:) = 0.0
@@ -881,8 +876,7 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'L2D=T not tested' )
      IF (.NOT. L2D) THEN
         IF (HLBCY(1) == 'CYCL') THEN
           ZBAND1D( 1 : SIZE(ZBAND_YRT,1)*SIZE(ZBAND_YRT,2)*SIZE(ZBAND_YRT(:,:,IKB-1:),3) ) => ZBAND_YRT(:,:,IKB-1:)
-          ZWORK1D( 1 : SIZE(ZWORKY) ) => ZWORKY(:,:,:)
-          CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, +1 )
+          CALL FFT991( ZBAND1D, ZWORKY(:,:,:), PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, +1 )
         ELSE
            CALL FFT55( ZBAND_YRT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, +1 )
         END IF
@@ -900,8 +894,7 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'L2D=T not tested' )
      !
      IF (HLBCX(1) == 'CYCL') THEN
         ZBAND1D( 1 : SIZE(ZBAND_X,1)*SIZE(ZBAND_X,2)*SIZE(ZBAND_X(:,:,IKB-1:),3) ) => ZBAND_X(:,:,IKB-1:)
-        ZWORK1D( 1 : SIZE(ZWORKX) ) => ZWORKX(:,:,:)
-        CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, +1 )
+        CALL FFT991( ZBAND1D, ZWORKX(:,:,:), PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, +1 )
      ELSE
         CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, +1 )
      END IF
@@ -936,8 +929,7 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'L2D=T not tested' )
            ZBAND_SXP2_Y_ZP1RT(2,:,:)                 = 0.0
 !$acc end kernels
           ZBAND1D( 1 : SIZE(ZBAND_SXP2_Y_ZP1RT) ) => ZBAND_SXP2_Y_ZP1RT(:,:,:)
-          ZWORK1D( 1 : SIZE(ZWORK_SXP2_Y_ZP1) )   => ZWORK_SXP2_Y_ZP1(:,:,:)
-          CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSY, KIFAXY, INC2_SXP2_Y_ZP1, IJMAX, ILOT_SXP2_Y_ZP1, +1 )
+          CALL FFT991( ZBAND1D, ZWORK_SXP2_Y_ZP1(:,:,:), PTRIGSY, KIFAXY, INC2_SXP2_Y_ZP1, IJMAX, ILOT_SXP2_Y_ZP1, +1 )
         ELSE
            CALL FFT55( ZBAND_SXP2_Y_ZP1RT, ZWORK_SXP2_Y_ZP1, PTRIGSY, KIFAXY, +1 )
         END IF
@@ -963,8 +955,7 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'L2D=T not tested' )
         ZBAND_SX_YP2_ZP1(2,:,:)                 = 0.0
 !$acc end kernels
         ZBAND1D( 1 : SIZE(ZBAND_SX_YP2_ZP1) ) => ZBAND_SX_YP2_ZP1(:,:,:)
-        ZWORK1D( 1 : SIZE(ZWORK_SX_YP2_ZP1) ) => ZWORK_SX_YP2_ZP1(:,:,:)
-        CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSX, KIFAXX, INC2_SX_YP2_ZP1, IIMAX, ILOT_SX_YP2_ZP1, +1 )
+        CALL FFT991( ZBAND1D, ZWORK_SX_YP2_ZP1(:,:,:), PTRIGSX, KIFAXX, INC2_SX_YP2_ZP1, IIMAX, ILOT_SX_YP2_ZP1, +1 )
      ELSE
         CALL FFT55( ZBAND_SX_YP2_ZP1, ZWORK_SX_YP2_ZP1, PTRIGSX, KIFAXX, +1 )
      END IF
-- 
GitLab