|
10 | 10 |
|
11 | 11 | SUBROUTINE SETUP_TRANS(KSMAX,KDGL,KDLON,KLOEN,LDSPLIT,PSTRET,&
|
12 | 12 | &KTMAX,KRESOL,PWEIGHT,LDGRIDONLY,LDUSERPNM,LDKEEPRPNM,LDUSEFLT,&
|
13 |
| -&LDSPSETUPONLY,LDPNMONLY,LDUSEFFTW,& |
| 13 | +&LDSPSETUPONLY,LDPNMONLY,LDUSEFFTW,LD_ALL_FFTW,& |
14 | 14 | &LDLL,LDSHIFTLL,CDIO_LEGPOL,CDLEGPOLFNAME,KLEGPOLPTR,KLEGPOLPTR_LEN)
|
15 | 15 |
|
16 | 16 | !**** *SETUP_TRANS* - Setup transform package for specific resolution
|
@@ -54,6 +54,7 @@ SUBROUTINE SETUP_TRANS(KSMAX,KDGL,KDLON,KLOEN,LDSPLIT,PSTRET,&
|
54 | 54 | ! FLT, otherwise always kept)
|
55 | 55 | ! LDPNMONLY - Compute the Legendre polynomials only, not the FFTs.
|
56 | 56 | ! LDUSEFFTW - Use FFTW for FFTs (option deprecated - FFTW is now mandatory)
|
| 57 | +! LD_ALL_FFTW : T to transform all fields in one call, F to transforms fields one after another |
57 | 58 | ! LDLL - Setup second set of input/output latitudes
|
58 | 59 | ! the number of input/output latitudes to transform is equal KDGL
|
59 | 60 | ! or KDGL+2 in the case that includes poles + equator
|
@@ -96,6 +97,7 @@ SUBROUTINE SETUP_TRANS(KSMAX,KDGL,KDLON,KLOEN,LDSPLIT,PSTRET,&
|
96 | 97 | ! G. Mozdzynski : Jun 2015 Support alternative FFTs to FFTW
|
97 | 98 | ! M.Hamrud/W.Deconinck : July 2015 IO options for Legenndre polynomials
|
98 | 99 | ! R. El Khatib 07-Mar-2016 Better flexibility for Legendre polynomials computation in stretched mode
|
| 100 | +! R. El Khatib 08-Jun-2023 LALL_FFTW for better flexibility |
99 | 101 | ! ------------------------------------------------------------------
|
100 | 102 |
|
101 | 103 | USE PARKIND1, ONLY: JPIM, JPRD, JPRB
|
@@ -140,6 +142,7 @@ SUBROUTINE SETUP_TRANS(KSMAX,KDGL,KDLON,KLOEN,LDSPLIT,PSTRET,&
|
140 | 142 | REAL(KIND=JPRD) ,OPTIONAL,INTENT(IN) :: PSTRET
|
141 | 143 | LOGICAL ,OPTIONAL,INTENT(IN):: LDGRIDONLY
|
142 | 144 | LOGICAL ,OPTIONAL,INTENT(IN):: LDUSEFLT
|
| 145 | +LOGICAL ,OPTIONAL,INTENT(IN):: LD_ALL_FFTW |
143 | 146 | LOGICAL ,OPTIONAL,INTENT(IN):: LDUSERPNM
|
144 | 147 | LOGICAL ,OPTIONAL,INTENT(IN):: LDKEEPRPNM
|
145 | 148 | LOGICAL ,OPTIONAL,INTENT(IN):: LDSPSETUPONLY
|
@@ -228,6 +231,7 @@ SUBROUTINE SETUP_TRANS(KSMAX,KDGL,KDLON,KLOEN,LDSPLIT,PSTRET,&
|
228 | 231 | S%LUSE_BELUSOV=.TRUE. ! use Belusov algorithm to compute RPNM array instead of per m
|
229 | 232 | S%LKEEPRPNM=.FALSE. ! Keep Legendre polonomials (RPNM)
|
230 | 233 | S%LUSEFLT=.FALSE. ! Use fast legendre transforms
|
| 234 | +TW%LALL_FFTW=.FALSE. ! transform fields one at a time |
231 | 235 | LLSPSETUPONLY = .FALSE. ! Only create distributed spectral setup
|
232 | 236 | S%LDLL = .FALSE. ! use mapping to/from second set of latitudes
|
233 | 237 | S%LSHIFTLL = .FALSE. ! shift output lat-lon by 0.5dx, 0.5dy
|
@@ -340,6 +344,10 @@ SUBROUTINE SETUP_TRANS(KSMAX,KDGL,KDLON,KLOEN,LDSPLIT,PSTRET,&
|
340 | 344 | ! Setup distribution independent dimensions
|
341 | 345 | CALL SETUP_DIMS
|
342 | 346 |
|
| 347 | +IF(PRESENT(LD_ALL_FFTW)) THEN |
| 348 | + TW%LALL_FFTW=LD_ALL_FFTW |
| 349 | +ENDIF |
| 350 | + |
343 | 351 | S%LSOUTHPNM=.FALSE.
|
344 | 352 | IF(PRESENT(PSTRET)) THEN
|
345 | 353 | IF (ABS(PSTRET-1.0_JPRD)>100._JPRD*EPSILON(1._JPRD)) THEN
|
|
0 commit comments