Skip to content
Snippets Groups Projects
Commit 61f1b335 authored by WAUTELET Philippe's avatar WAUTELET Philippe
Browse files

Philippe 15/01/2024: FFT: simplify some array bounds

(some missing data problems with OpenACC disappear maybe because less array copies)
parent eb0e6312
No related branches found
No related tags found
No related merge requests found
...@@ -259,7 +259,7 @@ CALL REMAP_2WAY_X_ll(ZY,ZBAND_X,IINFO_ll) ...@@ -259,7 +259,7 @@ CALL REMAP_2WAY_X_ll(ZY,ZBAND_X,IINFO_ll)
! --------------------------- ! ---------------------------
! !
! !
CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, ZTRIGSX, IIFAXX, -1 ) CALL FFT55( ZBAND_X(:,:,:), ZWORKX, ZTRIGSX, IIFAXX, -1 )
! !
! !
ZBAND_Y=0. ZBAND_Y=0.
...@@ -271,7 +271,7 @@ IF (.NOT. L2D) THEN ...@@ -271,7 +271,7 @@ IF (.NOT. L2D) THEN
! !
CALL FAST_TRANSPOSE(ZBAND_Y,ZBAND_YT,IIY,IJY,IKU) CALL FAST_TRANSPOSE(ZBAND_Y,ZBAND_YT,IIY,IJY,IKU)
! !
CALL FFT55( ZBAND_YT(1:,1:,IKB-1:), ZWORKY, ZTRIGSY, IIFAXY, -1 ) CALL FFT55( ZBAND_YT(:,:,:), ZWORKY, ZTRIGSY, IIFAXY, -1 )
! !
END IF END IF
! !
...@@ -390,7 +390,7 @@ IF(LSTAT) THEN ...@@ -390,7 +390,7 @@ IF(LSTAT) THEN
!* 7.1 Second statistics !* 7.1 Second statistics
!APPLY A COMPLEX TO REAL FFT !APPLY A COMPLEX TO REAL FFT
IF (.NOT. L2D) THEN IF (.NOT. L2D) THEN
CALL FFT55( ZBAND_YT(1:,1:,IKB-1:), ZWORKY, ZTRIGSY, IIFAXY, +1 ) CALL FFT55( ZBAND_YT(:,:,:), ZWORKY, ZTRIGSY, IIFAXY, +1 )
! array transposition J --> I ! array transposition J --> I
CALL FAST_TRANSPOSE(ZBAND_YT,ZBAND_Y,IJY,IIY,IKU) CALL FAST_TRANSPOSE(ZBAND_YT,ZBAND_Y,IJY,IIY,IKU)
ENDIF ENDIF
...@@ -401,7 +401,7 @@ IF(LSTAT) THEN ...@@ -401,7 +401,7 @@ IF(LSTAT) THEN
CALL REMAP_Y_X_ll(ZBAND_Y,ZBAND_X,IINFO_ll) CALL REMAP_Y_X_ll(ZBAND_Y,ZBAND_X,IINFO_ll)
! !
! !
CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, ZTRIGSX, IIFAXX, +1 ) CALL FFT55( ZBAND_X(:,:,:), ZWORKX, ZTRIGSX, IIFAXX, +1 )
! !
!RETURN TO A NON HOMOGENEOUS NEUMAN CONDITION FOR NON-CYCLIC CASES !RETURN TO A NON HOMOGENEOUS NEUMAN CONDITION FOR NON-CYCLIC CASES
! Transposition + shift X -> 2way ! Transposition + shift X -> 2way
......
...@@ -416,10 +416,10 @@ CALL REMAP_2WAY_X_ll(ZY,ZBAND_X,IINFO_ll) ...@@ -416,10 +416,10 @@ CALL REMAP_2WAY_X_ll(ZY,ZBAND_X,IINFO_ll)
! !
! !
IF (HLBCX(1) == 'CYCL') 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:) ZBAND1D( 1 : SIZE(ZBAND_X,1)*SIZE(ZBAND_X,2)*SIZE(ZBAND_X,3) ) => ZBAND_X(:,:,:)
CALL FFT991( ZBAND1D, ZWORKX, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, -1 ) CALL FFT991( ZBAND1D, ZWORKX, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, -1 )
ELSE ELSE
CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, -1 ) CALL FFT55( ZBAND_X(:,:,:), ZWORKX, PTRIGSX, KIFAXX, -1 )
END IF END IF
! !
! !
...@@ -435,10 +435,10 @@ IF (.NOT. L2D) THEN ...@@ -435,10 +435,10 @@ IF (.NOT. L2D) THEN
CALL FAST_TRANSPOSE(ZBAND_Y,ZBAND_YT,IIY,IJY,IKU) CALL FAST_TRANSPOSE(ZBAND_Y,ZBAND_YT,IIY,IJY,IKU)
! !
IF (HLBCY(1) == 'CYCL') 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:) ZBAND1D( 1 : SIZE(ZBAND_YT,1)*SIZE(ZBAND_YT,2)*SIZE(ZBAND_YT,3) ) => ZBAND_YT(:,:,:)
CALL FFT991( ZBAND1D, ZWORKY, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, -1 ) CALL FFT991( ZBAND1D, ZWORKY, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, -1 )
ELSE ELSE
CALL FFT55( ZBAND_YT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, -1 ) CALL FFT55( ZBAND_YT(:,:,:), ZWORKY, PTRIGSY, KIFAXY, -1 )
END IF END IF
! !
END IF END IF
...@@ -488,10 +488,10 @@ END IF ...@@ -488,10 +488,10 @@ END IF
! !
IF (.NOT. L2D) THEN IF (.NOT. L2D) THEN
IF (HLBCY(1) == 'CYCL') 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:) ZBAND1D( 1 : SIZE(ZBAND_YRT,1)*SIZE(ZBAND_YRT,2)*SIZE(ZBAND_YRT,3) ) => ZBAND_YRT(:,:,:)
CALL FFT991( ZBAND1D, ZWORKY, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, +1 ) CALL FFT991( ZBAND1D, ZWORKY, PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, +1 )
ELSE ELSE
CALL FFT55( ZBAND_YRT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, +1 ) CALL FFT55( ZBAND_YRT(:,:,:), ZWORKY, PTRIGSY, KIFAXY, +1 )
END IF END IF
! array transposition J --> I ! array transposition J --> I
CALL FAST_TRANSPOSE(ZBAND_YRT,ZBAND_YR,IJY,IIY,IKU) CALL FAST_TRANSPOSE(ZBAND_YRT,ZBAND_YR,IJY,IIY,IKU)
...@@ -506,10 +506,10 @@ CALL REMAP_Y_X_ll(ZBAND_YR,ZBAND_X,IINFO_ll) ...@@ -506,10 +506,10 @@ CALL REMAP_Y_X_ll(ZBAND_YR,ZBAND_X,IINFO_ll)
! !
! !
IF (HLBCX(1) == 'CYCL') 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:) ZBAND1D( 1 : SIZE(ZBAND_X,1)*SIZE(ZBAND_X,2)*SIZE(ZBAND_X,3) ) => ZBAND_X(:,:,:)
CALL FFT991( ZBAND1D, ZWORKX, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, +1 ) CALL FFT991( ZBAND1D, ZWORKX, PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, +1 )
ELSE ELSE
CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, +1 ) CALL FFT55( ZBAND_X(:,:,:), ZWORKX, PTRIGSX, KIFAXX, +1 )
END IF END IF
! !
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
......
...@@ -670,10 +670,10 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'OpenACC: IAND(NZ_SPLITTING,1 ...@@ -670,10 +670,10 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'OpenACC: IAND(NZ_SPLITTING,1
! !
IF ( IAND(NZ_SPLITTING,1) > 0 ) THEN IF ( IAND(NZ_SPLITTING,1) > 0 ) THEN
IF (HLBCX(1) == 'CYCL') 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:) ZBAND1D( 1 : SIZE(ZBAND_X,1)*SIZE(ZBAND_X,2)*SIZE(ZBAND_X,3) ) => ZBAND_X(:,:,:)
CALL FFT991( ZBAND1D, ZWORKX(:,:,:), PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, -1 ) CALL FFT991( ZBAND1D, ZWORKX(:,:,:), PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, -1 )
ELSE ELSE
CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, -1 ) CALL FFT55( ZBAND_X(:,:,:), ZWORKX, PTRIGSX, KIFAXX, -1 )
END IF END IF
! !
!$acc kernels !$acc kernels
...@@ -720,10 +720,10 @@ CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'FLAT_INVZ', 'OpenACC: HLBCX(1)==CYCL not po ...@@ -720,10 +720,10 @@ CALL PRINT_MSG( NVERB_FATAL, 'GEN', 'FLAT_INVZ', 'OpenACC: HLBCX(1)==CYCL not po
CALL FAST_TRANSPOSE(ZBAND_Y,ZBAND_YT,IIY,IJY,IKU) CALL FAST_TRANSPOSE(ZBAND_Y,ZBAND_YT,IIY,IJY,IKU)
! !
IF (HLBCY(1) == 'CYCL') 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:) ZBAND1D( 1 : SIZE(ZBAND_YT,1)*SIZE(ZBAND_YT,2)*SIZE(ZBAND_YT,3) ) => ZBAND_YT(:,:,:)
CALL FFT991( ZBAND1D, ZWORKY(:,:,:), PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, -1 ) CALL FFT991( ZBAND1D, ZWORKY(:,:,:), PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, -1 )
ELSE ELSE
CALL FFT55( ZBAND_YT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, -1 ) CALL FFT55( ZBAND_YT(:,:,:), ZWORKY, PTRIGSY, KIFAXY, -1 )
END IF END IF
! !
END IF END IF
...@@ -874,10 +874,10 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'L2D=T not tested' ) ...@@ -874,10 +874,10 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'L2D=T not tested' )
! !
IF (.NOT. L2D) THEN IF (.NOT. L2D) THEN
IF (HLBCY(1) == 'CYCL') 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:) ZBAND1D( 1 : SIZE(ZBAND_YRT,1)*SIZE(ZBAND_YRT,2)*SIZE(ZBAND_YRT,3) ) => ZBAND_YRT(:,:,:)
CALL FFT991( ZBAND1D, ZWORKY(:,:,:), PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, +1 ) CALL FFT991( ZBAND1D, ZWORKY(:,:,:), PTRIGSY, KIFAXY, INC2Y, IJMAX, ILOTY, +1 )
ELSE ELSE
CALL FFT55( ZBAND_YRT(1:,1:,IKB-1:), ZWORKY, PTRIGSY, KIFAXY, +1 ) CALL FFT55( ZBAND_YRT(:,:,:), ZWORKY, PTRIGSY, KIFAXY, +1 )
END IF END IF
! array transposition J --> I ! array transposition J --> I
CALL FAST_TRANSPOSE(ZBAND_YRT,ZBAND_YR,IJY,IIY,IKU) CALL FAST_TRANSPOSE(ZBAND_YRT,ZBAND_YR,IJY,IIY,IKU)
...@@ -892,10 +892,10 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'L2D=T not tested' ) ...@@ -892,10 +892,10 @@ CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'FLAT_INVZ', 'L2D=T not tested' )
CALL REMAP_Y_X_ll(ZBAND_YR,ZBAND_X,IINFO_ll) CALL REMAP_Y_X_ll(ZBAND_YR,ZBAND_X,IINFO_ll)
! !
IF (HLBCX(1) == 'CYCL') 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:) ZBAND1D( 1 : SIZE(ZBAND_X,1)*SIZE(ZBAND_X,2)*SIZE(ZBAND_X,3) ) => ZBAND_X(:,:,:)
CALL FFT991( ZBAND1D, ZWORKX(:,:,:), PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, +1 ) CALL FFT991( ZBAND1D, ZWORKX(:,:,:), PTRIGSX, KIFAXX, INC2X, IIMAX, ILOTX, +1 )
ELSE ELSE
CALL FFT55( ZBAND_X(1:,1:,IKB-1:), ZWORKX, PTRIGSX, KIFAXX, +1 ) CALL FFT55( ZBAND_X(:,:,:), ZWORKX, PTRIGSX, KIFAXX, +1 )
END IF END IF
END IF ! NZ_SPLITTING END IF ! NZ_SPLITTING
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment