diff --git a/src/MNH/fft.f90 b/src/MNH/fft.f90 index e75f2032ab6bf831385cd51aed7f0e0d795e04bd..63bc7eed263e73d79ac948535d5f635c9a3b8ee4 100644 --- a/src/MNH/fft.f90 +++ b/src/MNH/fft.f90 @@ -87,17 +87,16 @@ SUBROUTINE SET99( PTRIGS, KFAX, KN ) END SUBROUTINE SET99 -SUBROUTINE FFT991( PA, PWORK, PTRIGS, PFAX, KJUMP, KN, KLOT, KSIGN, KSZA, KSZW, KSZT ) +SUBROUTINE FFT991( PA, PWORK, PTRIGS, PFAX, KJUMP, KN, KLOT, KSIGN ) USE MODE_MPPDB IMPLICIT NONE - REAL, DIMENSION(KSZA), INTENT(INOUT) :: PA - REAL, DIMENSION(KSZW), INTENT(OUT) :: PWORK - REAL, DIMENSION(KSZT), INTENT(IN) :: PTRIGS - INTEGER, DIMENSION(19), INTENT(IN) :: PFAX - INTEGER, INTENT(IN) :: KJUMP, KN, KLOT, KSIGN - INTEGER, INTENT(IN) :: KSZA, KSZW, KSZT + REAL, DIMENSION(:), INTENT(INOUT) :: PA + REAL, DIMENSION(:), INTENT(OUT) :: PWORK + REAL, DIMENSION(:), INTENT(IN) :: PTRIGS + INTEGER, DIMENSION(19), INTENT(IN) :: PFAX + INTEGER, INTENT(IN) :: KJUMP, KN, KLOT, KSIGN ! ! SUBROUTINE 'FFT991' - MULTIPLE FAST REAL PERIODIC TRANSFORM ! SUPERSEDES PREVIOUS ROUTINE 'FFT991' diff --git a/src/MNH/flat_inv.f90 b/src/MNH/flat_inv.f90 index ab0bf19654cce00c68e446222e4012b43dabc024..fc54320f518c934050b60be6c5ac2677e7de9612 100644 --- a/src/MNH/flat_inv.f90 +++ b/src/MNH/flat_inv.f90 @@ -418,8 +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, INC2X, IIMAX, ILOTX,-1, & - SIZE(ZBAND1D), SIZE(ZWORK1D), size(PTRIGSX) ) + 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 ) END IF @@ -439,8 +438,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, & - SIZE(ZBAND1D), SIZE(ZWORK1D), SIZE(PTRIGSY) ) + 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 ) END IF @@ -496,8 +494,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, ZWORK1D, PTRIGSY, KIFAXY, INC2Y, IJMAX,ILOTY, +1, & - SIZE(ZBAND1D), SIZE(ZWORK1D), SIZE(PTRIGSY) ) + 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 ) END IF @@ -516,8 +513,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, & - SIZE(ZBAND1D), SIZE(ZWORK1D), SIZE(PTRIGSX) ) + 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 ) END IF diff --git a/src/MNH/flat_invz.f90 b/src/MNH/flat_invz.f90 index d430bd07fd6509b6f82ec7cbf881cd4927618c72..fd02735299cc557efe6315163735cf29a266e39b 100644 --- a/src/MNH/flat_invz.f90 +++ b/src/MNH/flat_invz.f90 @@ -672,8 +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, INC2X, IIMAX, ILOTX,-1, & - SIZE(ZBAND1D), SIZE(ZWORK1D), size(PTRIGSX) ) + 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 ) END IF @@ -693,8 +692,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, INC2_SX_YP2_ZP1, IIMAX, ILOT_SX_YP2_ZP1, -1, & - SIZE(ZBAND1D), SIZE(ZWORK1D), size(PTRIGSX) ) + CALL FFT991( ZBAND1D, ZWORK1D, 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 @@ -727,8 +725,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, & - SIZE(ZBAND1D), SIZE(ZWORK1D), SIZE(PTRIGSY) ) + 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 ) END IF @@ -749,8 +746,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, INC2_SXP2_Y_ZP1, IJMAX, ILOT_SXP2_Y_ZP1, -1, & - SIZE(ZBAND1D), SIZE(ZWORK1D), size(PTRIGSY) ) + CALL FFT991( ZBAND1D, ZWORK1D, 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 @@ -887,8 +883,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, INC2Y, IJMAX, ILOTY, +1, & - SIZE(ZBAND1D), SIZE(ZWORK1D), SIZE(PTRIGSY) ) + 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 ) END IF @@ -907,8 +902,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, & - SIZE(ZBAND1D), SIZE(ZWORK1D), SIZE(PTRIGSX) ) + 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 ) END IF @@ -944,8 +938,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, INC2_SXP2_Y_ZP1, IJMAX, & - ILOT_SXP2_Y_ZP1, +1, SIZE(ZBAND1D), SIZE(ZWORK1D), size(PTRIGSY) ) + 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 ) END IF @@ -972,8 +965,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, INC2_SX_YP2_ZP1, IIMAX, & - ILOT_SX_YP2_ZP1, +1, SIZE(ZBAND1D), SIZE(ZWORK1D), size(PTRIGSX) ) + 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 ) END IF