diff --git a/src/MNH/compute_spectre.f90 b/src/MNH/compute_spectre.f90 index 294453d7868b757c5bfd1dcbafcf8549dd9b493a..c900a114d2a99362b45b62ccd50850e523dc86bf 100644 --- a/src/MNH/compute_spectre.f90 +++ b/src/MNH/compute_spectre.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2023 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -94,11 +94,6 @@ INTEGER :: IKU ! size of the arrays along z ! INTEGER :: JI,JJ,JK ! loop indexes along x, y, z respectively ! -INTEGER :: ILOTX,ILOTY ! number of data vectors along x, y resp. computed - ! in parallel during the FFT process -INTEGER :: INC2X,INC2Y ! increment between the start of one data vector and - ! the next for the FFT along x,y resp. -! REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZWORKX ! work array used by ! the FFT. It has been enlarged in order to be sufficient for 2D and 3D cases REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZWORKY ! work array used by @@ -244,24 +239,6 @@ ENDIF ! !------------------------------------------------------------------------------- ! -!* 3. COMPUTE THE ARRAY INCREMENTS FOR THE FFT -! ---------------------------------------- -! -IF(.NOT. L2D) THEN -! - ILOTX = IJX*IKU - INC2X = IIX -! - ILOTY = IIY*IKU - INC2Y = IJY -! -ELSE -! - ILOTX = IKU - INC2X = IIX*IJX -ENDIF -!------------------------------------------------------------------------------- -! !* 4. FORM HOMOGENEOUS BOUNDARY CONDITIONS FOR A NONCYCLIC CASE ! --------------------------------------------------------- ! @@ -281,7 +258,7 @@ CALL REMAP_2WAY_X_ll(ZY,ZBAND_X,IINFO_ll) ! --------------------------- ! ! -CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, ZTRIGSX, IIFAXX, INC2X, IIMAX, ILOTX, -1 ) +CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, ZTRIGSX, IIFAXX, -1 ) ! ! ZBAND_Y=0. @@ -293,7 +270,7 @@ IF (.NOT. L2D) THEN ! CALL FAST_TRANSPOSE(ZBAND_Y,ZBAND_YT,IIY,IJY,IKU) ! -CALL FFT55( ZBAND_YT(1:,1:,IKB-1:), ZWORKY, ZTRIGSY, IIFAXY, INC2Y, IJMAX, ILOTY, -1 ) +CALL FFT55( ZBAND_YT(1:,1:,IKB-1:), ZWORKY, ZTRIGSY, IIFAXY, -1 ) ! END IF ! @@ -412,7 +389,7 @@ IF(LSTAT) THEN !* 7.1 Second statistics !APPLY A COMPLEX TO REAL FFT IF (.NOT. L2D) THEN - CALL FFT55( ZBAND_YT(1:,1:,IKB-1:), ZWORKY, ZTRIGSY, IIFAXY, INC2Y, IJMAX, ILOTY, +1 ) + CALL FFT55( ZBAND_YT(1:,1:,IKB-1:), ZWORKY, ZTRIGSY, IIFAXY, +1 ) ! array transposition J --> I CALL FAST_TRANSPOSE(ZBAND_YT,ZBAND_Y,IJY,IIY,IKU) ENDIF @@ -423,7 +400,7 @@ IF(LSTAT) THEN CALL REMAP_Y_X_ll(ZBAND_Y,ZBAND_X,IINFO_ll) ! ! - CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, ZTRIGSX, IIFAXX, INC2X, IIMAX, ILOTX, +1 ) + CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, ZTRIGSX, IIFAXX, +1 ) ! !RETURN TO A NON HOMOGENEOUS NEUMAN CONDITION FOR NON-CYCLIC CASES ! Transposition + shift X -> 2way diff --git a/src/MNH/fft55.f90 b/src/MNH/fft55.f90 index 5e677ef09ca6a9d18f173d922f5dc6d211eb2ed2..b6908c37ff970e7815f84ff77590e10f42ccbbb8 100644 --- a/src/MNH/fft55.f90 +++ b/src/MNH/fft55.f90 @@ -15,9 +15,9 @@ PUBLIC :: FFT55 CONTAINS -! ######spl - SUBROUTINE FFT55(PA,PWORK,PTRIGS,KIFAX,KJUMP,KN,KLOT,KISIGN) -! ################################################################# +! #################################################### + SUBROUTINE FFT55( PA, PWORK, PTRIGS, KIFAX, KISIGN ) +! #################################################### ! !!**** *FFT55 * - multiple fast real staggered (shifted) cosine transform !! @@ -83,6 +83,9 @@ CONTAINS ! ------------ ! ! +USE MODD_CONF, ONLY: L2D +USE MODD_PARAMETERS, ONLY: JPHEXT + USE MODE_FFT, ONLY: FFT991 USE MODE_MPPDB @@ -97,13 +100,6 @@ REAL, DIMENSION(:), INTENT(IN) :: PTRIGS ! previously prepared list of INTEGER, DIMENSION(19), INTENT(IN) :: KIFAX ! previously prepared list of ! factors of N ! -INTEGER, INTENT(IN) :: KJUMP ! increment between the start of each - ! data vector -! -INTEGER, INTENT(IN) :: KN ! length of each data vector -! -INTEGER, INTENT(IN) :: KLOT ! number of data vectors -! INTEGER, INTENT(IN) :: KISIGN ! +1 for transform from spectral to gridpoint ! -1 for transform from gridpoint to spectral ! @@ -114,6 +110,9 @@ REAL, DIMENSION(:,:,:), CONTIGUOUS, TARGET, INTENT(INOUT) :: PA ! input and outp !* 0.2 declarations of local variables ! ! +INTEGER :: IJUMP ! increment between the start of each data vector +INTEGER :: ILOT ! number of data vectors +INTEGER :: IN ! length of each data vector INTEGER :: INH, INN, INBLOX, INVEX, ISTART, IJA, IJB, IIA,IIB, IIS INTEGER :: IJA0, IJB0, IIA0, IIB0 ! cvj to promote vectorization INTEGER :: IEVEN ! evenness flag @@ -134,20 +133,28 @@ IF (MPPDB_INITIALIZED) THEN CALL MPPDB_CHECK( KIFAX, "FFT55 beg:KIFAX" ) !Check all INOUT arrays CALL MPPDB_CHECK( PA, "FFT55 beg:PA" ) +IF ( .NOT. L2D ) THEN + IJUMP = SIZE( PA, 1 ) + ILOT = SIZE( PA, 2 ) * SIZE( PA, 3 ) +ELSE + IJUMP = SIZE( PA, 1 ) * SIZE( PA, 2 ) + ILOT = SIZE( PA, 3 ) END IF -ZA(1:KJUMP*KLOT) => PA(:,:,:) -ZWORK(1:KJUMP*KLOT) => PWORK(:,:,:) +IN = SIZE( PA, 1 ) - 2 * JPHEXT + +ZA(1:IJUMP*ILOT) => PA(:,:,:) +ZWORK(1:IJUMP*ILOT) => PWORK(:,:,:) !$acc data present( ZA, ZWORK, PTRIGS ) ! !* 1. COMPUTE LOOP BOUNDS ! ------------------- -IEVEN=MOD(KN,2) -INH=KN/2 -INN=2*KN -INBLOX=1+(KLOT-1)/NVECLEN -INVEX=KLOT-(INBLOX-1)*NVECLEN +IEVEN=MOD(IN,2) +INH=IN/2 +INN=2*IN +INBLOX=1+(ILOT-1)/NVECLEN +INVEX=ILOT-(INBLOX-1)*NVECLEN IF (KISIGN.EQ.1) THEN ! !------------------------------------------------------------------------------- @@ -161,25 +168,25 @@ IF (KISIGN.EQ.1) THEN ! ------------- ! !$acc kernels - ZSCALE=0.5*REAL(KN) + ZSCALE=0.5*REAL(IN) ! this loop works for odd and even case !$acc loop gang independent private( IJA, IJB, IIA0, IIB0, ZRI, ZCO ) - DO JK=1,(KN-1)/2 + DO JK=1,(IN-1)/2 IJA=JK+1 - IJB=KN+1-JK + IJB=IN+1-JK !cvj IIA=ISTART+(IJA-1) !cvj IIB=ISTART+(IJB-1) IIA0=ISTART+(IJA-1) IIB0=ISTART+(IJB-1) ZRI=ZSCALE*PTRIGS(INN+JK) - ZCO=ZSCALE*PTRIGS(INN+KN-JK) + ZCO=ZSCALE*PTRIGS(INN+IN-JK) ! !ocl novrec !CDIR NODEP !$acc loop vector independent private( IIA, IIB, ZT1, ZT2 ) DO JJ=1,INVEX - IIA=IIA0+(JJ-1)*KJUMP - IIB=IIB0+(JJ-1)*KJUMP + IIA=IIA0+(JJ-1)*IJUMP + IIB=IIB0+(JJ-1)*IJUMP ZT1 = ZRI*(ZA(IIA)+ZA(IIB)) - ZCO*(ZA(IIB)-ZA(IIA)) ZT2 = ZRI*(ZA(IIB)-ZA(IIA)) + ZCO*(ZA(IIA)+ZA(IIB)) ZA(IIA) = ZT1 @@ -200,8 +207,8 @@ IF (KISIGN.EQ.1) THEN !CDIR NODEP !$acc loop independent private( IIA, IIB ) DO JJ=1,INVEX - IIA=IIA0+(JJ-1)*KJUMP - IIB=IIB0+(JJ-1)*KJUMP + IIA=IIA0+(JJ-1)*IJUMP + IIB=IIB0+(JJ-1)*IJUMP IF(IEVEN == 0) ZA(IIA)=ZSCALE2*ZA(IIA) ZA(IIB)=ZSCALE1*ZA(IIB) !cvj IIA=IIA+KJUMP @@ -214,13 +221,13 @@ IF (KISIGN.EQ.1) THEN ! IIS=-1 IIA=ISTART - CALL FFT991( ZA(IIA:), ZWORK(:), PTRIGS, KIFAX, KJUMP, KN, INVEX, IIS ) + CALL FFT991( ZA(IIA:), ZWORK(:), PTRIGS, KIFAX, IJUMP, IN, INVEX, IIS ) ! ! 2.3 postprocessing ! -------------- !$acc parallel ! kernels !$acc loop seq - DO JK=2,KN,2 + DO JK=2,IN,2 !cvj IJA=ISTART+(JK-1) IJA0=ISTART+(JK-1) ! @@ -228,7 +235,7 @@ IF (KISIGN.EQ.1) THEN !CDIR NODEP !$acc loop independent private( IJA ) DO JJ=1,INVEX - IJA=IJA0+(JJ-1)*KJUMP + IJA=IJA0+(JJ-1)*IJUMP ZA(IJA)=ZA(IJA+1)-ZA(IJA+2) ZA(IJA+1)=ZA(IJA+1)+ZA(IJA+2) !cvj IJA=IJA+KJUMP @@ -236,7 +243,7 @@ IF (KISIGN.EQ.1) THEN ENDDO !$acc end parallel ! kernels ! - ISTART=ISTART+INVEX*KJUMP + ISTART=ISTART+INVEX*IJUMP INVEX=NVECLEN ENDDO ! @@ -256,14 +263,14 @@ ELSE !cvjIIA=ISTART !cvjIIB=IIA+(KN-1) IIA0=ISTART - IIB0=IIA0+(KN-1) + IIB0=IIA0+(IN-1) ! !ocl novrec !CDIR NODEP !$acc loop independent private( IIA, IIB ) DO JJ=1,INVEX - IIA=IIA0+(JJ-1)*KJUMP - IIB=IIB0+(JJ-1)*KJUMP + IIA=IIA0+(JJ-1)*IJUMP + IIB=IIB0+(JJ-1)*IJUMP ZA(IIA)=2.0*ZA(IIA) IF(IEVEN == 0) ZA(IIB+1)=2.0*ZA(IIB) !cvj IIA=IIA+KJUMP @@ -272,7 +279,7 @@ ELSE ! ! this loop works for odd and even case !$acc loop seq - DO JK=KN-2+IEVEN,2,-2 + DO JK=IN-2+IEVEN,2,-2 !cvj IIA=ISTART+(JK-1) IIA0=ISTART+(JK-1) ! @@ -280,7 +287,7 @@ ELSE !CDIR NODEP !$acc loop independent private( IIA ) DO JJ=1,INVEX - IIA=IIA0+(JJ-1)*KJUMP + IIA=IIA0+(JJ-1)*IJUMP ZA(IIA+2)=ZA(IIA+1)-ZA(IIA) ZA(IIA+1)=ZA(IIA+1)+ZA(IIA) !cvj IIA=IIA+KJUMP @@ -293,31 +300,31 @@ ELSE ! IIA=ISTART IIS=1 - CALL FFT991( ZA(IIA:), ZWORK(:), PTRIGS, KIFAX, KJUMP, KN, INVEX, IIS ) + CALL FFT991( ZA(IIA:), ZWORK(:), PTRIGS, KIFAX, IJUMP, IN, INVEX, IIS ) ! ! 3.3 postprocessing ! -------------- ! - ZSCALE=0.5/REAL(KN) + ZSCALE=0.5/REAL(IN) ! this loop works for odd and even case !$acc kernels present( ZA ) !$acc loop gang independent private( IIA, IIB, IJA0, IJB0, ZRI, ZCO ) - DO JK=1,(KN-1)/2 + DO JK=1,(IN-1)/2 IIA=JK+1 - IIB=KN-JK+1 + IIB=IN-JK+1 !cvj IJA=ISTART+(IIA-1) !cvj IJB=ISTART+(IIB-1) IJA0=ISTART+(IIA-1) IJB0=ISTART+(IIB-1) ZRI=ZSCALE*PTRIGS(INN+JK) - ZCO=ZSCALE*PTRIGS(INN+KN-JK) + ZCO=ZSCALE*PTRIGS(INN+IN-JK) ! !ocl novrec !CDIR NODEP !$acc loop vector independent private( IJA, IJB, ZT1, ZT2 ) DO JJ=1,INVEX - IJA=IJA0+(JJ-1)*KJUMP - IJB=IJB0+(JJ-1)*KJUMP + IJA=IJA0+(JJ-1)*IJUMP + IJB=IJB0+(JJ-1)*IJUMP ZT1 = ZRI*(ZA(IJA)-ZA(IJB)) + ZCO*(ZA(IJA)+ZA(IJB)) ZT2 = ZRI*(ZA(IJA)+ZA(IJB)) - ZCO*(ZA(IJA)-ZA(IJB)) ZA(IJA) = ZT1 @@ -337,8 +344,8 @@ ELSE !CDIR NODEP !$acc loop independent private( IJA, IJB ) DO JJ=1,INVEX - IJA=IJA0+(JJ-1)*KJUMP - IJB=IJB0+(JJ-1)*KJUMP + IJA=IJA0+(JJ-1)*IJUMP + IJB=IJB0+(JJ-1)*IJUMP IF(IEVEN == 0) ZA(IJA)=ZSCALE1*ZA(IJA) ZA(IJB)=ZSCALE*ZA(IJB) !cvj IJA=IJA+KJUMP @@ -346,7 +353,7 @@ ELSE ENDDO !$acc end kernels ! - ISTART=ISTART+INVEX*KJUMP + ISTART=ISTART+INVEX*IJUMP INVEX=NVECLEN ENDDO ! diff --git a/src/MNH/flat_inv.f90 b/src/MNH/flat_inv.f90 index fc54320f518c934050b60be6c5ac2677e7de9612..89637dd96815bec15f114fbbd025fc1687c4593d 100644 --- a/src/MNH/flat_inv.f90 +++ b/src/MNH/flat_inv.f90 @@ -420,7 +420,7 @@ IF (HLBCX(1) == 'CYCL') THEN ZWORK1D( 1 : SIZE(ZWORKX) ) => ZWORKX(:,:,:) CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, -1 ) ELSE - CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, -1 ) + CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, -1 ) END IF ! ! @@ -440,7 +440,7 @@ IF (.NOT. L2D) THEN ZWORK1D( 1 : SIZE(ZWORKY) ) => ZWORKY(:,:,:) CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, -1 ) ELSE - CALL FFT55( ZBAND_YT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, -1 ) + CALL FFT55( ZBAND_YT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, -1 ) END IF ! END IF @@ -496,7 +496,7 @@ IF (.NOT. L2D) THEN ZWORK1D( 1 : SIZE(ZWORKY) ) => ZWORKY(:,:,:) CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, +1 ) ELSE - CALL FFT55( ZBAND_YRT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, +1 ) + CALL FFT55( ZBAND_YRT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, +1 ) END IF ! array transposition J --> I CALL FAST_TRANSPOSE(ZBAND_YRT,ZBAND_YR,IJY,IIY,IKU) @@ -515,7 +515,7 @@ IF (HLBCX(1) == 'CYCL') THEN ZWORK1D( 1 : SIZE(ZWORKX) ) => ZWORKX(:,:,:) CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, +1 ) ELSE - CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, +1 ) + 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 fd02735299cc557efe6315163735cf29a266e39b..334d618949106bf9c36d678c75465dfa9efc373d 100644 --- a/src/MNH/flat_invz.f90 +++ b/src/MNH/flat_invz.f90 @@ -674,7 +674,7 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'OpenACC: IAND(NZ_SPLITTING,1 ZWORK1D( 1 : SIZE(ZWORKX) ) => ZWORKX(:,:,:) CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, -1 ) ELSE - CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, -1 ) + CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, -1 ) END IF ! !$acc kernels @@ -697,8 +697,7 @@ CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'FLAT_INVZ', 'OpenACC: HLBCX(1)==CYCL not po 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 ELSE - CALL FFT55(ZBAND_SX_YP2_ZP1,ZWORK_SX_YP2_ZP1,PTRIGSX,KIFAXX,INC2_SX_YP2_ZP1, & - IIMAX,ILOT_SX_YP2_ZP1,-1 ) + CALL FFT55( ZBAND_SX_YP2_ZP1, ZWORK_SX_YP2_ZP1, PTRIGSX, KIFAXX, -1 ) END IF !$acc kernels ZBAND_SXP2_Y_ZP1(:,:,:) = 0. @@ -727,7 +726,7 @@ CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'FLAT_INVZ', 'OpenACC: HLBCX(1)==CYCL not po ZWORK1D( 1 : SIZE(ZWORKY) ) => ZWORKY(:,:,:) CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, -1 ) ELSE - CALL FFT55( ZBAND_YT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, -1 ) + CALL FFT55( ZBAND_YT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, -1 ) END IF ! END IF @@ -751,7 +750,7 @@ CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'FLAT_INVZ', 'OpenACC: HLBCY(1)==CYCL not po 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 ELSE - CALL FFT55( ZBAND_SXP2_Y_ZP1T, ZWORK_SXP2_Y_ZP1, PTRIGSY, KIFAXY, INC2_SXP2_Y_ZP1, IJMAX, ILOT_SXP2_Y_ZP1, -1 ) + CALL FFT55( ZBAND_SXP2_Y_ZP1T, ZWORK_SXP2_Y_ZP1, PTRIGSY, KIFAXY, -1 ) END IF END IF END IF ! NZ_SPLITTING @@ -885,7 +884,7 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'L2D=T not tested' ) ZWORK1D( 1 : SIZE(ZWORKY) ) => ZWORKY(:,:,:) CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, +1 ) ELSE - CALL FFT55( ZBAND_YRT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, +1 ) + CALL FFT55( ZBAND_YRT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, +1 ) END IF ! array transposition J --> I CALL FAST_TRANSPOSE(ZBAND_YRT,ZBAND_YR,IJY,IIY,IKU) @@ -904,7 +903,7 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'L2D=T not tested' ) ZWORK1D( 1 : SIZE(ZWORKX) ) => ZWORKX(:,:,:) CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, +1 ) ELSE - CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, +1 ) + CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, +1 ) END IF END IF ! NZ_SPLITTING @@ -940,7 +939,7 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'L2D=T not tested' ) 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 ) ELSE - CALL FFT55( ZBAND_SXP2_Y_ZP1RT, ZWORK_SXP2_Y_ZP1, PTRIGSY, KIFAXY, INC2_SXP2_Y_ZP1, IJMAX, ILOT_SXP2_Y_ZP1, +1 ) + CALL FFT55( ZBAND_SXP2_Y_ZP1RT, ZWORK_SXP2_Y_ZP1, PTRIGSY, KIFAXY, +1 ) END IF ! array transposition J --> I CALL FAST_TRANSPOSE(ZBAND_SXP2_Y_ZP1RT,ZBAND_SXP2_Y_ZP1R,IJ_SXP2_Y_ZP1+2,II_SXP2_Y_ZP1,IK_SXP2_Y_ZP1) @@ -967,7 +966,7 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'L2D=T not tested' ) 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 ) ELSE - CALL FFT55( ZBAND_SX_YP2_ZP1, ZWORK_SX_YP2_ZP1, PTRIGSX, KIFAXX, INC2_SX_YP2_ZP1, IIMAX, ILOT_SX_YP2_ZP1, +1 ) + CALL FFT55( ZBAND_SX_YP2_ZP1, ZWORK_SX_YP2_ZP1, PTRIGSX, KIFAXX, +1 ) END IF END IF ! NZ_SPLITTING