diff --git a/src/MNH/fft.f90 b/src/MNH/fft.f90 index 4d7536c30873167f3b702ae5b9c04bd5f8f6c420..59ac09b1d200542c117f0c1bcc5309a3d016b3be 100644 --- a/src/MNH/fft.f90 +++ b/src/MNH/fft.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. @@ -84,7 +84,7 @@ SUBROUTINE SET99( TRIGS, IFAX, N ) END SUBROUTINE SET99 -SUBROUTINE FFT991( A, WORK, TRIGS, IFAX, INC, JUMP, N, ILOT, ISIGN, KSZA, KSZW, KSZT ) +SUBROUTINE FFT991( A, WORK, TRIGS, IFAX, JUMP, N, ILOT, ISIGN, KSZA, KSZW, KSZT ) USE MODE_MPPDB IMPLICIT NONE @@ -93,7 +93,7 @@ SUBROUTINE FFT991( A, WORK, TRIGS, IFAX, INC, JUMP, N, ILOT, ISIGN, KSZA, KSZW, REAL, DIMENSION(KSZW), INTENT(OUT) :: WORK REAL, DIMENSION(KSZT), INTENT(IN) :: TRIGS INTEGER, DIMENSION(19), INTENT(IN) :: IFAX - INTEGER, INTENT(IN) :: INC, JUMP, N, ILOT, ISIGN + INTEGER, INTENT(IN) :: JUMP, N, ILOT, ISIGN INTEGER, INTENT(IN) :: KSZA, KSZW, KSZT ! ! SUBROUTINE 'FFT991' - MULTIPLE FAST REAL PERIODIC TRANSFORM @@ -106,8 +106,6 @@ SUBROUTINE FFT991( A, WORK, TRIGS, IFAX, INC, JUMP, N, ILOT, ISIGN, KSZA, KSZW, ! WORK IS AN AREA OF SIZE (N+1)*MIN(ILOT,LOT) ! TRIGS IS A PREVIOUSLY PREPARED LIST OF TRIG FUNCTION VALUES ! IFAX IS A PREVIOUSLY PREPARED LIST OF FACTORS OF N -! INC IS THE INCREMENT WITHIN EACH DATA 'VECTOR' -! (E.G. INC=1 FOR CONSECUTIVELY STORED DATA) ! JUMP IS THE INCREMENT BETWEEN THE START OF EACH DATA VECTOR ! N IS THE LENGTH OF THE DATA VECTORS ! ILOT IS THE NUMBER OF DATA VECTORS @@ -180,12 +178,12 @@ SUBROUTINE FFT991( A, WORK, TRIGS, IFAX, INC, JUMP, N, ILOT, ISIGN, KSZA, KSZW, !$acc loop independent private( I ) DO J=1,NVEX I = ISTART + ( J - 1 ) * JUMP - A(I+INC)=0.5*A(I) + A(I+1)=0.5*A(I) END DO !$acc end kernels IF ( MOD(N,2) == 0 ) THEN !$acc kernels - I0 = ISTART + N * INC + I0 = ISTART + N !CDIR NODEP !*vocl loop,novrec !$acc loop independent private( I ) @@ -195,7 +193,7 @@ SUBROUTINE FFT991( A, WORK, TRIGS, IFAX, INC, JUMP, N, ILOT, ISIGN, KSZA, KSZW, END DO !$acc end kernels END IF - IA=ISTART+INC + IA=ISTART+1 ILA=1 IGO=+1 ! @@ -203,17 +201,17 @@ SUBROUTINE FFT991( A, WORK, TRIGS, IFAX, INC, JUMP, N, ILOT, ISIGN, KSZA, KSZW, IFAC=IFAX(K+1) IERR=-1 IF ( IGO == 1 ) THEN - CALL RPASSM(A(IA:),A(IA+ILA*INC:),WORK(1:),WORK(IFAC*ILA+1:), & + CALL RPASSM(A(IA:),A(IA+ILA:),WORK(1:),WORK(IFAC*ILA+1:), & TRIGS(:), & - INC,1,JUMP,NX,NVEX,N,IFAC,ILA,IERR, & - SIZE(A(IA:)),SIZE(A(IA+ILA*INC:)),SIZE(WORK(1:)), & + 1,1,JUMP,NX,NVEX,N,IFAC,ILA,IERR, & + SIZE(A(IA:)),SIZE(A(IA+ILA:)),SIZE(WORK(1:)), & SIZE(WORK(IFAC*ILA+1:)),SIZE(TRIGS(:))) ELSE - CALL RPASSM(WORK(1:),WORK(ILA+1:),A(IA:),A(IA+IFAC*ILA*INC:), & + CALL RPASSM(WORK(1:),WORK(ILA+1:),A(IA:),A(IA+IFAC*ILA:), & TRIGS(:), & - 1,INC,NX,JUMP,NVEX,N,IFAC,ILA,IERR, & + 1,1,NX,JUMP,NVEX,N,IFAC,ILA,IERR, & SIZE(WORK(1:)),SIZE(WORK(ILA+1:)),SIZE(A(IA:)), & - SIZE(A(IA+IFAC*ILA*INC:)),SIZE(TRIGS(:))) + SIZE(A(IA+IFAC*ILA:)),SIZE(TRIGS(:))) END IF IF (IERR.NE.0) GO TO 500 ILA=IFAC*ILA @@ -233,7 +231,7 @@ SUBROUTINE FFT991( A, WORK, TRIGS, IFAX, INC, JUMP, N, ILOT, ISIGN, KSZA, KSZW, DO II=1,N A(J)=WORK(I) I=I+1 - J=J+INC + J=J+1 END DO IBASE=IBASE+NX JBASE=JBASE+JUMP @@ -244,8 +242,8 @@ SUBROUTINE FFT991( A, WORK, TRIGS, IFAX, INC, JUMP, N, ILOT, ISIGN, KSZA, KSZW, ! FILL IN ZEROS AT END ! -------------------- !$acc kernels - A(ISTART+N*INC::JUMP) = 0.0 - A(ISTART+(N+1)*INC::JUMP) = 0.0 + A(ISTART+N::JUMP) = 0.0 + A(ISTART+N+1::JUMP) = 0.0 !$acc end kernels ! ISTART=ISTART+NVEX*JUMP @@ -267,21 +265,21 @@ SUBROUTINE FFT991( A, WORK, TRIGS, IFAX, INC, JUMP, N, ILOT, ISIGN, KSZA, KSZW, ILA=ILA/IFAC IERR=-1 IF ( IGO == 1 ) THEN - CALL QPASSM(A(IA:),A(IA+IFAC*ILA*INC:),WORK(1:),WORK(ILA+1:), & - TRIGS(:), & - INC,1,JUMP,NX,NVEX,N,IFAC,ILA,IERR, & - SIZE(A(IA:)),SIZE(A(IA+IFAC*ILA*INC:)),SIZE(WORK(1:)), & + CALL QPASSM(A(IA:),A(IA+IFAC*ILA:),WORK(1:),WORK(ILA+1:), & + TRIGS(:), & + 1,1,JUMP,NX,NVEX,N,IFAC,ILA,IERR, & + SIZE(A(IA:)),SIZE(A(IA+IFAC*ILA:)),SIZE(WORK(1:)), & SIZE(WORK(ILA+1:)),SIZE(TRIGS(:))) ELSE - CALL QPASSM(WORK(1:),WORK(IFAC*ILA+1:),A(IA:),A(IA+ILA*INC:), & - TRIGS(:), & - 1,INC,NX,JUMP,NVEX,N,IFAC,ILA,IERR, & - SIZE(WORK(1:)),SIZE(WORK(IFAC*ILA+1:)),SIZE(A(IA:)), & - SIZE(A(IA+ILA*INC:)),SIZE(TRIGS(:))) + CALL QPASSM(WORK(1:),WORK(IFAC*ILA+1:),A(IA:),A(IA+ILA:), & + TRIGS(:), & + 1,1,NX,JUMP,NVEX,N,IFAC,ILA,IERR, & + SIZE(WORK(1:)),SIZE(WORK(IFAC*ILA+1:)),SIZE(A(IA:)), & + SIZE(A(IA+ILA:)),SIZE(TRIGS(:))) END IF IF (IERR.NE.0) GO TO 500 IGO=-IGO - IA=ISTART+INC + IA=ISTART+1 END DO ! ! IF NECESSARY, COPY RESULTS BACK TO A @@ -296,7 +294,7 @@ SUBROUTINE FFT991( A, WORK, TRIGS, IFAX, INC, JUMP, N, ILOT, ISIGN, KSZA, KSZW, DO II=1,N A(J)=WORK(I) I=I+1 - J=J+INC + J=J+1 END DO IBASE=IBASE+NX JBASE=JBASE+JUMP @@ -312,13 +310,13 @@ SUBROUTINE FFT991( A, WORK, TRIGS, IFAX, INC, JUMP, N, ILOT, ISIGN, KSZA, KSZW, !$acc loop independent private( I ) DO J=1,NVEX IX = ISTART + ( J - 1 ) * JUMP - A(IX)=A(IX+INC) - A(IX+INC)=0.0 + A(IX)=A(IX+1) + A(IX+1)=0.0 END DO !$acc end kernels IF ( MOD(N,2) == 0 ) THEN !$acc kernels - A(ISTART+(N+1)*INC::JUMP) = 0.0 + A(ISTART+N+1::JUMP) = 0.0 !$acc end kernels END IF ! diff --git a/src/MNH/fft55.f90 b/src/MNH/fft55.f90 index 96d59414805831ad5edcb552fb553f09c8497e8e..aed1c343f214045794ca3b0fe7bca58fd52cf5f2 100644 --- a/src/MNH/fft55.f90 +++ b/src/MNH/fft55.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1987-2022 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1987-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. @@ -212,7 +212,7 @@ IF (KISIGN.EQ.1) THEN ! IIS=-1 IIA=ISTART - CALL FFT991(ZA(IIA:),ZWORK(:),PTRIGS,KIFAX,1,KJUMP,KN,INVEX,IIS,SIZE(ZA(IIA:)),SIZE(ZWORK(:)),SIZE(PTRIGS)) + CALL FFT991(ZA(IIA:),ZWORK(:),PTRIGS,KIFAX,KJUMP,KN,INVEX,IIS,SIZE(ZA(IIA:)),SIZE(ZWORK(:)),SIZE(PTRIGS)) ! ! 2.3 postprocessing ! -------------- @@ -291,7 +291,7 @@ ELSE ! IIA=ISTART IIS=1 - CALL FFT991(ZA(IIA:),ZWORK(:),PTRIGS,KIFAX,1,KJUMP,KN,INVEX,IIS,SIZE(ZA(IIA:)),SIZE(ZWORK(:)),SIZE(PTRIGS)) + CALL FFT991(ZA(IIA:),ZWORK(:),PTRIGS,KIFAX,KJUMP,KN,INVEX,IIS,SIZE(ZA(IIA:)),SIZE(ZWORK(:)),SIZE(PTRIGS)) ! ! 3.3 postprocessing ! -------------- diff --git a/src/MNH/flat_inv.f90 b/src/MNH/flat_inv.f90 index 502475f0b5fee58b71c9b547949104650026766a..5ac8c5c8e0b87b51e1c7c48edf4c34f432d7a0ce 100644 --- a/src/MNH/flat_inv.f90 +++ b/src/MNH/flat_inv.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. @@ -199,9 +199,6 @@ INTEGER :: IIE_INT,IJE_INT ! highest indice I and J values for the x y modes. INTEGER :: ILOTX,ILOTY ! number of data vectors along x, y resp. computed ! in parallel during the FFT process ! -INTEGER :: INC1X,INC1Y ! increment within each data vector for the FFT along - ! x, y resp. -! INTEGER :: INC2X,INC2Y ! increment between the start of one data vector and ! the next for the FFT along x,y resp. ! @@ -327,17 +324,14 @@ END IF IF(.NOT. L2D) THEN ! ILOTX = IJX*IKU - INC1X = 1 INC2X = IIX ! ILOTY = IIY*IKU - INC1Y = 1 INC2Y = IJY ! ELSE ! ILOTX = IKU - INC1X = 1 INC2X = IIX*IJX ENDIF ! @@ -424,7 +418,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, INC1X, INC2X, IIMAX, ILOTX,-1, & + CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX,-1, & SIZE(ZBAND1D), SIZE(ZWORK1D), size(PTRIGSX) ) ELSE CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, -1 ) @@ -445,7 +439,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, INC1Y, INC2Y, IJMAX, ILOTY,-1, & + CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY,-1, & SIZE(ZBAND1D), SIZE(ZWORK1D), SIZE(PTRIGSY) ) ELSE CALL FFT55( ZBAND_YT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, -1 ) @@ -502,7 +496,7 @@ 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, ZBAND_YRT, PTRIGSY, KIFAXY, INC1Y, INC2Y, IJMAX,ILOTY, +1, & + CALL FFT991( ZBAND1D, ZBAND_YRT, PTRIGSY, KIFAXY, INC2Y, IJMAX,ILOTY, +1, & SIZE(ZBAND1D), SIZE(ZWORK1D), SIZE(PTRIGSY) ) ELSE CALL FFT55( ZBAND_YRT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, +1 ) @@ -522,7 +516,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, INC1X, INC2X, IIMAX, ILOTX, +1, & + CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, +1, & SIZE(ZBAND1D), SIZE(ZWORK1D), SIZE(PTRIGSX) ) ELSE CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, +1 ) diff --git a/src/MNH/flat_invz.f90 b/src/MNH/flat_invz.f90 index 3e4f4358d58553e6c5c744718faa4ce0fc9ec5a8..f1efeaa0986262bc1c1c169d69025579548f4f82 100644 --- a/src/MNH/flat_invz.f90 +++ b/src/MNH/flat_invz.f90 @@ -222,19 +222,13 @@ SUBROUTINE FLAT_INVZ(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF, & INTEGER :: ILOTX,ILOTY ! number of data vectors along x, y resp. computed ! in parallel during the FFT process ! - INTEGER :: INC1X,INC1Y ! increment within each data vector for the FFT along - ! x, y resp. - ! - INTEGER :: INC2X,INC2Y ! increment between the start of one data vector and + INTEGER :: INC2X,INC2Y ! increment between the start of one data vector and ! the next for the FFT along x,y resp. ! !JUANB INTEGER :: ILOT_SX_YP2_ZP1,ILOT_SXP2_Y_ZP1 ! number of data vectors along zx, zy splitting resp. computed ! in parallel during the FFT process ! - INTEGER :: INC1_SX_YP2_ZP1,INC1_SXP2_Y_ZP1 ! increment within each data vector for the FFT along - ! zx, zy splitting resp. - ! INTEGER :: INC2_SX_YP2_ZP1,INC2_SXP2_Y_ZP1 ! increment between the start of one data vector and ! the next for the FFT along zx,zy splitting resp. !JUANE @@ -545,11 +539,9 @@ SUBROUTINE FLAT_INVZ(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF, & IF(.NOT. L2D) THEN ! ILOTX = IJX*IKU - INC1X = 1 INC2X = IIX ! ILOTY = IIY*IKU - INC1Y = 1 INC2Y = IJY ! !JUAN Z_SPLITTING !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -557,18 +549,15 @@ SUBROUTINE FLAT_INVZ(HLBCX,HLBCY,PDXHATM,PDYHATM,PRHOM,PAF,PBF,PCF, & IF ( IAND(NZ_SPLITTING,2) > 0 ) THEN ! ILOT_SX_YP2_ZP1 = IJ_SX_YP2_ZP1*IK_SX_YP2_ZP1 - INC1_SX_YP2_ZP1 = 1 INC2_SX_YP2_ZP1 = II_SX_YP2_ZP1+2 ! ILOT_SXP2_Y_ZP1 = II_SXP2_Y_ZP1*IK_SXP2_Y_ZP1 - INC1_SXP2_Y_ZP1 = 1 INC2_SXP2_Y_ZP1 = IJ_SXP2_Y_ZP1+2 END IF ! NZ_SPLITTING !JUAN Z_SPLITTING ELSE ! ILOTX = IKU - INC1X = 1 INC2X = IIX*IJX ENDIF ! @@ -683,7 +672,7 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'OpenACC: IAND(NZ_SPLITTING,1 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, INC1X, INC2X, IIMAX, ILOTX,-1, & + CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX,-1, & SIZE(ZBAND1D), SIZE(ZWORK1D), size(PTRIGSX) ) ELSE CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, -1 ) @@ -704,7 +693,7 @@ CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'FLAT_INVZ', 'OpenACC: HLBCX(1)==CYCL not po #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, INC1_SX_YP2_ZP1, INC2_SX_YP2_ZP1, IIMAX, ILOT_SX_YP2_ZP1, -1, & + CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSX, KIFAXX, INC2_SX_YP2_ZP1, IIMAX, ILOT_SX_YP2_ZP1, -1, & SIZE(ZBAND1D), SIZE(ZWORK1D), size(PTRIGSX) ) ! 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,:,:) @@ -738,7 +727,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, INC1Y, INC2Y, IJMAX, ILOTY,-1, & + CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY,-1, & SIZE(ZBAND1D), SIZE(ZWORK1D), SIZE(PTRIGSY) ) ELSE CALL FFT55( ZBAND_YT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, -1 ) @@ -760,7 +749,7 @@ CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'FLAT_INVZ', 'OpenACC: HLBCY(1)==CYCL not po #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, INC1_SXP2_Y_ZP1, INC2_SXP2_Y_ZP1, IJMAX, ILOT_SXP2_Y_ZP1, -1, & + CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSY, KIFAXY, INC2_SXP2_Y_ZP1, IJMAX, ILOT_SXP2_Y_ZP1, -1, & SIZE(ZBAND1D), SIZE(ZWORK1D), size(PTRIGSY) ) ! 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,:,:) @@ -898,7 +887,7 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'L2D=T not tested' ) 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, INC1Y, INC2Y, IJMAX, ILOTY, +1, & + CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, +1, & SIZE(ZBAND1D), SIZE(ZWORK1D), SIZE(PTRIGSY) ) ELSE CALL FFT55( ZBAND_YRT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, +1 ) @@ -918,7 +907,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, INC1X, INC2X, IIMAX, ILOTX, +1, & + CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, +1, & SIZE(ZBAND1D), SIZE(ZWORK1D), SIZE(PTRIGSX) ) ELSE CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, +1 ) @@ -955,7 +944,7 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'L2D=T not tested' ) !$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, INC1_SXP2_Y_ZP1, INC2_SXP2_Y_ZP1, IJMAX, & + CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSY, KIFAXY, INC2_SXP2_Y_ZP1, IJMAX, & ILOT_SXP2_Y_ZP1, +1, SIZE(ZBAND1D), SIZE(ZWORK1D), size(PTRIGSY) ) ELSE CALL FFT55( ZBAND_SXP2_Y_ZP1RT, ZWORK_SXP2_Y_ZP1, PTRIGSY, KIFAXY, INC2_SXP2_Y_ZP1, IJMAX, ILOT_SXP2_Y_ZP1, +1 ) @@ -983,7 +972,7 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'L2D=T not tested' ) !$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, INC1_SX_YP2_ZP1, INC2_SX_YP2_ZP1, IIMAX, & + CALL FFT991( ZBAND1D, ZWORK1D, PTRIGSX, KIFAXX, INC2_SX_YP2_ZP1, IIMAX, & ILOT_SX_YP2_ZP1, +1, SIZE(ZBAND1D), SIZE(ZWORK1D), size(PTRIGSX) ) ELSE CALL FFT55( ZBAND_SX_YP2_ZP1, ZWORK_SX_YP2_ZP1, PTRIGSX, KIFAXX, INC2_SX_YP2_ZP1, IIMAX, ILOT_SX_YP2_ZP1, +1 )