Ignore:
Timestamp:
Mar 20, 2014 8:40:49 AM (10 years ago)
Author:
raasch
Message:

ONLY-attribute added to USE-statements,
kind-parameters added to all INTEGER and REAL declaration statements,
kinds are defined in new module kinds,
old module precision_kind is removed,
revision history before 2012 removed,
comment fields (!:) to be used for variable explanations added to all variable declaration statements

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/fft_xy.f90

    r1310 r1320  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! ONLY-attribute added to USE-statements,
     23! kind-parameters added to all INTEGER and REAL declaration statements,
     24! kinds are defined in new module kinds,
     25! old module precision_kind is removed,
     26! revision history before 2012 removed,
     27! comment fields (!:) to be used for variable explanations added to
     28! all variable declaration statements
    2329!
    2430! Former revisions:
     
    6571! 1036 2012-10-22 13:43:42Z raasch
    6672! code put under GPL (PALM 3.9)
    67 !
    68 ! 274 2009-03-26 15:11:21Z heinze
    69 ! Output of messages replaced by message handling routine.
    70 !
    71 ! Feb. 2007
    72 ! RCS Log replace by Id keyword, revision history cleaned up
    73 !
    74 ! Revision 1.4  2006/03/28 12:27:09  raasch
    75 ! Stop when system-specific fft is selected on NEC. For unknown reasons this
    76 ! causes a program abort during first allocation in init_grid.
    77 !
    78 ! Revision 1.2  2004/04/30 11:44:27  raasch
    79 ! Module renamed from fft_for_1d_decomp to fft_xy, 1d-routines renamed to
    80 ! fft_x and fft_y,
    81 ! function FFT replaced by subroutine FFTN due to problems with 64-bit
    82 ! mode on ibm,
    83 ! shape of array cwork is explicitly stored in ishape/jshape and handled
    84 ! to routine FFTN instead of shape-function (due to compiler error on
    85 ! decalpha),
    86 ! non vectorized FFT for nec included
    8773!
    8874! Revision 1.1  2002/06/11 13:00:49  raasch
     
    9682!------------------------------------------------------------------------------!
    9783
    98     USE control_parameters
    99     USE indices
     84    USE control_parameters,                                                    &
     85        ONLY:  fft_method, message_string
     86       
     87    USE indices,                                                               &
     88        ONLY:  nx, ny, nz
     89       
    10090#if defined( __cuda_fft )
    10191    USE ISO_C_BINDING
     
    10393    USE, INTRINSIC ::  ISO_C_BINDING
    10494#endif
    105     USE precision_kind
    106     USE singleton
     95
     96    USE kinds
     97   
     98    USE singleton,                                                             &
     99        ONLY: fftn
     100   
    107101    USE temperton_fft
    108     USE transpose_indices
     102   
     103    USE transpose_indices,                                                     &
     104        ONLY:  nyn_x, nys_x, nzb_x, nzb_y, nzt_x, nzt_y
    109105
    110106    IMPLICIT NONE
     
    113109    PUBLIC fft_x, fft_x_1d, fft_y, fft_y_1d, fft_init, fft_x_m, fft_y_m
    114110
    115     INTEGER, DIMENSION(:), ALLOCATABLE, SAVE ::  ifax_x, ifax_y
    116 
    117     LOGICAL, SAVE                            ::  init_fft = .FALSE.
    118 
    119     REAL, SAVE ::  dnx, dny, sqr_dnx, sqr_dny
    120     REAL, DIMENSION(:), ALLOCATABLE, SAVE    ::  trigs_x, trigs_y
     111    INTEGER(iwp), DIMENSION(:), ALLOCATABLE, SAVE ::  ifax_x  !:
     112    INTEGER(iwp), DIMENSION(:), ALLOCATABLE, SAVE ::  ifax_y  !:
     113
     114    LOGICAL, SAVE ::  init_fft = .FALSE.  !:
     115
     116    REAL(wp), SAVE ::  dnx      !:
     117    REAL(wp), SAVE ::  dny      !:
     118    REAL(wp), SAVE ::  sqr_dnx  !:
     119    REAL(wp), SAVE ::  sqr_dny  !:
     120   
     121    REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE ::  trigs_x  !:
     122    REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE ::  trigs_y  !:
    121123
    122124#if defined( __ibm )
    123     INTEGER, PARAMETER ::  nau1 = 20000, nau2 = 22000
     125    INTEGER(iwp), PARAMETER ::  nau1 = 20000  !:
     126    INTEGER(iwp), PARAMETER ::  nau2 = 22000  !:
    124127!
    125128!-- The following working arrays contain tables and have to be "save" and
    126129!-- shared in OpenMP sense
    127     REAL, DIMENSION(nau1), SAVE ::  aux1, auy1, aux3, auy3
     130    REAL(wp), DIMENSION(nau1), SAVE ::  aux1  !:
     131    REAL(wp), DIMENSION(nau1), SAVE ::  auy1  !:
     132    REAL(wp), DIMENSION(nau1), SAVE ::  aux3  !:
     133    REAL(wp), DIMENSION(nau1), SAVE ::  auy3  !:
     134   
    128135#elif defined( __nec )
    129     INTEGER, SAVE ::  nz1
    130     REAL, DIMENSION(:), ALLOCATABLE, SAVE ::  trig_xb, trig_xf, trig_yb, &
    131                                               trig_yf
     136    INTEGER(iwp), SAVE ::  nz1  !:
     137   
     138    REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE ::  trig_xb  !:
     139    REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE ::  trig_xf  !:
     140    REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE ::  trig_yb  !:
     141    REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE ::  trig_yf  !:
     142   
    132143#elif defined( __cuda_fft )
    133     INTEGER(C_INT), SAVE ::  plan_xf, plan_xi, plan_yf, plan_yi
    134     INTEGER, SAVE        ::  total_points_x_transpo, total_points_y_transpo
     144    INTEGER(C_INT), SAVE ::  plan_xf  !:
     145    INTEGER(C_INT), SAVE ::  plan_xi  !:
     146    INTEGER(C_INT), SAVE ::  plan_yf  !:
     147    INTEGER(C_INT), SAVE ::  plan_yi  !:
     148   
     149    INTEGER(iwp), SAVE   ::  total_points_x_transpo  !:
     150    INTEGER(iwp), SAVE   ::  total_points_y_transpo  !:
    135151#endif
    136152
    137153#if defined( __fftw )
    138154    INCLUDE  'fftw3.f03'
    139     INTEGER(KIND=C_INT) ::  nx_c, ny_c
    140     COMPLEX(KIND=C_DOUBLE_COMPLEX), DIMENSION(:), ALLOCATABLE, SAVE ::  x_out, y_out
    141     REAL(KIND=C_DOUBLE), DIMENSION(:), ALLOCATABLE, SAVE            ::  x_in, y_in
     155    INTEGER(KIND=C_INT) ::  nx_c  !:
     156    INTEGER(KIND=C_INT) ::  ny_c  !:
     157   
     158    COMPLEX(KIND=C_DOUBLE_COMPLEX), DIMENSION(:), ALLOCATABLE, SAVE ::         &
     159       x_out  !:
     160    COMPLEX(KIND=C_DOUBLE_COMPLEX), DIMENSION(:), ALLOCATABLE, SAVE ::         &
     161       y_out  !:
     162   
     163    REAL(KIND=C_DOUBLE), DIMENSION(:), ALLOCATABLE, SAVE ::                    &
     164       x_in   !:
     165    REAL(KIND=C_DOUBLE), DIMENSION(:), ALLOCATABLE, SAVE ::                    &
     166       y_in   !:
     167   
     168   
    142169    TYPE(C_PTR), SAVE ::  plan_xf, plan_xi, plan_yf, plan_yi
    143170#endif
     
    186213!--    in OpenMP sense
    187214#if defined( __ibm )
    188        REAL, DIMENSION(0:nx+2) :: workx
    189        REAL, DIMENSION(0:ny+2) :: worky
    190        REAL, DIMENSION(nau2)   :: aux2, auy2, aux4, auy4
     215       REAL(wp), DIMENSION(0:nx+2) ::  workx  !:
     216       REAL(wp), DIMENSION(0:ny+2) ::  worky  !:
     217       REAL(wp), DIMENSION(nau2)   ::  aux2   !:
     218       REAL(wp), DIMENSION(nau2)   ::  auy2   !:
     219       REAL(wp), DIMENSION(nau2)   ::  aux4   !:
     220       REAL(wp), DIMENSION(nau2)   ::  auy4   !:
    191221#elif defined( __nec )
    192        REAL, DIMENSION(0:nx+3,nz+1)   ::  work_x
    193        REAL, DIMENSION(0:ny+3,nz+1)   ::  work_y
    194        REAL, DIMENSION(6*(nx+3),nz+1) ::  workx
    195        REAL, DIMENSION(6*(ny+3),nz+1) ::  worky
     222       REAL(wp), DIMENSION(0:nx+3,nz+1)   ::  work_x  !:
     223       REAL(wp), DIMENSION(0:ny+3,nz+1)   ::  work_y  !:
     224       REAL(wp), DIMENSION(6*(nx+3),nz+1) ::  workx   !:
     225       REAL(wp), DIMENSION(6*(ny+3),nz+1) ::  worky   !:
    196226#endif
    197227
     
    228258          CALL message( 'fft_init', 'PA0187', 1, 2, 0, 6, 0 )
    229259
    230           ALLOCATE( trig_xb(2*(nx+1)), trig_xf(2*(nx+1)), &
     260          ALLOCATE( trig_xb(2*(nx+1)), trig_xf(2*(nx+1)),                      &
    231261                    trig_yb(2*(ny+1)), trig_yf(2*(ny+1)) )
    232262
     
    240270          CALL DZFFT( 0, nx+1, sqr_dnx, work_x, work_x, trig_xf, workx, 0 )
    241271          CALL ZDFFT( 0, nx+1, sqr_dnx, work_x, work_x, trig_xb, workx, 0 )
    242           CALL DZFFTM( 0, nx+1, nz1, sqr_dnx, work_x, nx+4, work_x, nx+4, &
     272          CALL DZFFTM( 0, nx+1, nz1, sqr_dnx, work_x, nx+4, work_x, nx+4,      &
    243273                       trig_xf, workx, 0 )
    244           CALL ZDFFTM( 0, nx+1, nz1, sqr_dnx, work_x, nx+4, work_x, nx+4, &
     274          CALL ZDFFTM( 0, nx+1, nz1, sqr_dnx, work_x, nx+4, work_x, nx+4,      &
    245275                       trig_xb, workx, 0 )
    246276!
     
    248278          CALL DZFFT( 0, ny+1, sqr_dny, work_y, work_y, trig_yf, worky, 0 )
    249279          CALL ZDFFT( 0, ny+1, sqr_dny, work_y, work_y, trig_yb, worky, 0 )
    250           CALL DZFFTM( 0, ny+1, nz1, sqr_dny, work_y, ny+4, work_y, ny+4, &
     280          CALL DZFFTM( 0, ny+1, nz1, sqr_dny, work_y, ny+4, work_y, ny+4,      &
    251281                       trig_yf, worky, 0 )
    252           CALL ZDFFTM( 0, ny+1, nz1, sqr_dny, work_y, ny+4, work_y, ny+4, &
     282          CALL ZDFFTM( 0, ny+1, nz1, sqr_dny, work_y, ny+4, work_y, ny+4,      &
    253283                       trig_yb, worky, 0 )
    254284#elif defined( __cuda_fft )
     
    278308          nx_c = nx+1
    279309          ny_c = ny+1
    280           ALLOCATE( x_in(0:nx+2), y_in(0:ny+2), x_out(0:(nx+1)/2), &
     310          ALLOCATE( x_in(0:nx+2), y_in(0:ny+2), x_out(0:(nx+1)/2),             &
    281311                    y_out(0:(ny+1)/2) )
    282312          plan_xf = FFTW_PLAN_DFT_R2C_1D( nx_c, x_in, x_out, FFTW_ESTIMATE )
     
    322352       IMPLICIT NONE
    323353
    324        CHARACTER (LEN=*) ::  direction
    325        INTEGER ::  i, ishape(1), j, k
    326 
    327        LOGICAL ::  forward_fft
    328 
    329        REAL, DIMENSION(0:nx+2)   ::  work
    330        REAL, DIMENSION(nx+2)     ::  work1
    331        COMPLEX, DIMENSION(:), ALLOCATABLE ::  cwork
     354       CHARACTER (LEN=*) ::  direction  !:
     355       
     356       COMPLEX(wp), DIMENSION(:), ALLOCATABLE ::  cwork  !:
     357
     358       INTEGER(iwp) ::  i          !:
     359       INTEGER(iwp) ::  ishape(1)  !:
     360       INTEGER(iwp) ::  j          !:
     361       INTEGER(iwp) ::  k          !:
     362
     363       LOGICAL ::  forward_fft !:
     364       
     365       REAL(wp), DIMENSION(0:nx+2) ::  work   !:
     366       REAL(wp), DIMENSION(nx+2)   ::  work1  !:
     367       
    332368#if defined( __ibm )
    333        REAL, DIMENSION(nau2)     ::  aux2, aux4
     369       REAL(wp), DIMENSION(nau2) ::  aux2  !:
     370       REAL(wp), DIMENSION(nau2) ::  aux4  !:
    334371#elif defined( __nec )
    335        REAL, DIMENSION(6*(nx+1)) ::  work2
     372       REAL(wp), DIMENSION(6*(nx+1)) ::  work2  !:
    336373#elif defined( __cuda_fft )
    337        COMPLEX(dpk), DIMENSION(0:(nx+1)/2,nys_x:nyn_x,nzb_x:nzt_x) ::  ar_tmp
     374       COMPLEX(dpk), DIMENSION(0:(nx+1)/2,nys_x:nyn_x,nzb_x:nzt_x) ::          &
     375          ar_tmp  !:
    338376       !$acc declare create( ar_tmp )
    339377#endif
    340        REAL, DIMENSION(0:nx,nys_x:nyn_x), OPTIONAL   ::  ar_2d
    341        REAL, DIMENSION(0:nx,nys_x:nyn_x,nzb_x:nzt_x) ::  ar
     378
     379       REAL(wp), DIMENSION(0:nx,nys_x:nyn_x), OPTIONAL   ::                    &
     380          ar_2d   !:
     381       REAL(wp), DIMENSION(0:nx,nys_x:nyn_x,nzb_x:nzt_x) ::                    &
     382          ar      !:
    342383
    343384       IF ( direction == 'forward' )  THEN
     
    540581                DO  j = nys_x, nyn_x
    541582
    542                    CALL DRCFT( 0, ar, 1, work, 1, nx+1, 1, 1, sqr_dnx, aux1, nau1, &
    543                                aux2, nau2 )
     583                   CALL DRCFT( 0, ar, 1, work, 1, nx+1, 1, 1, sqr_dnx, aux1,   &
     584                               nau1, aux2, nau2 )
    544585
    545586                   DO  i = 0, (nx+1)/2
     
    570611                   work(nx+2) = 0.0
    571612
    572                    CALL DCRFT( 0, work, 1, work, 1, nx+1, 1, -1, sqr_dnx, aux3, nau1, &
    573                                aux4, nau2 )
     613                   CALL DCRFT( 0, work, 1, work, 1, nx+1, 1, -1, sqr_dnx,      &
     614                               aux3, nau1, aux4, nau2 )
    574615
    575616                   DO  i = 0, nx
     
    709750       IMPLICIT NONE
    710751
    711        CHARACTER (LEN=*) ::  direction
    712        INTEGER ::  i, ishape(1)
    713 
    714        LOGICAL ::  forward_fft
    715 
    716        REAL, DIMENSION(0:nx)     ::  ar
    717        REAL, DIMENSION(0:nx+2)   ::  work
    718        REAL, DIMENSION(nx+2)     ::  work1
    719        COMPLEX, DIMENSION(:), ALLOCATABLE ::  cwork
     752       CHARACTER (LEN=*) ::  direction  !:
     753       
     754       INTEGER(iwp) ::  i               !:
     755       INTEGER(iwp) ::  ishape(1)       !:
     756
     757       LOGICAL ::  forward_fft          !:
     758
     759       REAL(wp), DIMENSION(0:nx)   ::  ar     !:
     760       REAL(wp), DIMENSION(0:nx+2) ::  work   !:
     761       REAL(wp), DIMENSION(nx+2)   ::  work1  !:
     762       
     763       COMPLEX(wp), DIMENSION(:), ALLOCATABLE ::  cwork  !:
     764       
    720765#if defined( __ibm )
    721        REAL, DIMENSION(nau2)     ::  aux2, aux4
     766       REAL(wp), DIMENSION(nau2) ::  aux2       !:
     767       REAL(wp), DIMENSION(nau2) ::  aux4       !:
    722768#elif defined( __nec )
    723        REAL, DIMENSION(6*(nx+1)) ::  work2
     769       REAL(wp), DIMENSION(6*(nx+1)) ::  work2  !:
    724770#endif
    725771
     
    838884          IF ( forward_fft )  THEN
    839885
    840              CALL DRCFT( 0, ar, 1, work, 1, nx+1, 1, 1, sqr_dnx, aux1, nau1, &
     886             CALL DRCFT( 0, ar, 1, work, 1, nx+1, 1, 1, sqr_dnx, aux1, nau1,   &
    841887                         aux2, nau2 )
    842888
     
    945991       IMPLICIT NONE
    946992
    947        CHARACTER (LEN=*) ::  direction
    948        INTEGER ::  i, j, jshape(1), k
    949        INTEGER ::  nxl_y_bound, nxl_y_l, nxr_y_bound, nxr_y_l
    950 
    951        LOGICAL ::  forward_fft
    952 
    953        REAL, DIMENSION(0:ny+2)   ::  work
    954        REAL, DIMENSION(ny+2)     ::  work1
    955        COMPLEX, DIMENSION(:), ALLOCATABLE ::  cwork
     993       CHARACTER (LEN=*) ::  direction  !:
     994       
     995       INTEGER(iwp) ::  i            !:
     996       INTEGER(iwp) ::  j            !:
     997       INTEGER(iwp) ::  jshape(1)    !:
     998       INTEGER(iwp) ::  k            !:
     999       INTEGER(iwp) ::  nxl_y_bound  !:
     1000       INTEGER(iwp) ::  nxl_y_l      !:
     1001       INTEGER(iwp) ::  nxr_y_bound  !:
     1002       INTEGER(iwp) ::  nxr_y_l      !:
     1003
     1004       LOGICAL ::  forward_fft  !:
     1005
     1006       REAL(wp), DIMENSION(0:ny+2) ::  work   !:
     1007       REAL(wp), DIMENSION(ny+2)   ::  work1  !:
     1008       
     1009       COMPLEX(wp), DIMENSION(:), ALLOCATABLE ::  cwork  !:
     1010       
    9561011#if defined( __ibm )
    957        REAL, DIMENSION(nau2)     ::  auy2, auy4
     1012       REAL(wp), DIMENSION(nau2) ::  auy2  !:
     1013       REAL(wp), DIMENSION(nau2) ::  auy4  !:
    9581014#elif defined( __nec )
    959        REAL, DIMENSION(6*(ny+1)) ::  work2
     1015       REAL(wp), DIMENSION(6*(ny+1)) ::  work2  !:
    9601016#elif defined( __cuda_fft )
    961        COMPLEX(dpk), DIMENSION(0:(ny+1)/2,nxl_y:nxr_y,nzb_y:nzt_y) ::  ar_tmp
     1017       COMPLEX(dpk), DIMENSION(0:(ny+1)/2,nxl_y:nxr_y,nzb_y:nzt_y) ::          &
     1018          ar_tmp  !:
    9621019       !$acc declare create( ar_tmp )
    9631020#endif
    964        REAL, DIMENSION(0:ny,nxl_y_l:nxr_y_l,nzb_y:nzt_y) ::  ar
    965        REAL, DIMENSION(0:ny,nxl_y_bound:nxr_y_bound,nzb_y:nzt_y) ::  ar_tr
     1021
     1022       REAL(wp), DIMENSION(0:ny,nxl_y_l:nxr_y_l,nzb_y:nzt_y)         ::        &
     1023          ar     !:
     1024       REAL(wp), DIMENSION(0:ny,nxl_y_bound:nxr_y_bound,nzb_y:nzt_y) ::        &
     1025          ar_tr  !:
    9661026
    9671027       IF ( direction == 'forward' )  THEN
     
    11401200                DO  i = nxl_y_l, nxr_y_l
    11411201
    1142                    CALL DRCFT( 0, ar, 1, work, 1, ny+1, 1, 1, sqr_dny, auy1, nau1, &
    1143                                auy2, nau2 )
     1202                   CALL DRCFT( 0, ar, 1, work, 1, ny+1, 1, 1, sqr_dny, auy1,   &
     1203                               nau1, auy2, nau2 )
    11441204
    11451205                   DO  j = 0, (ny+1)/2
     
    11701230                   work(ny+2) = 0.0
    11711231
    1172                    CALL DCRFT( 0, work, 1, work, 1, ny+1, 1, -1, sqr_dny, auy3, nau1, &
    1173                                auy4, nau2 )
     1232                   CALL DCRFT( 0, work, 1, work, 1, ny+1, 1, -1, sqr_dny,     &
     1233                               auy3, nau1, auy4, nau2 )
    11741234
    11751235                   DO  j = 0, ny
     
    13071367
    13081368       CHARACTER (LEN=*) ::  direction
    1309        INTEGER ::  j, jshape(1)
    1310 
    1311        LOGICAL ::  forward_fft
    1312 
    1313        REAL, DIMENSION(0:ny)     ::  ar
    1314        REAL, DIMENSION(0:ny+2)   ::  work
    1315        REAL, DIMENSION(ny+2)     ::  work1
    1316        COMPLEX, DIMENSION(:), ALLOCATABLE ::  cwork
     1369       
     1370       INTEGER(iwp) ::  j          !:
     1371       INTEGER(iwp) ::  jshape(1)  !:
     1372
     1373       LOGICAL ::  forward_fft  !:
     1374
     1375       REAL(wp), DIMENSION(0:ny)    ::  ar     !:
     1376       REAL(wp), DIMENSION(0:ny+2)  ::  work   !:
     1377       REAL(wp), DIMENSION(ny+2)    ::  work1  !:
     1378       
     1379       COMPLEX(wp), DIMENSION(:), ALLOCATABLE ::  cwork  !:
     1380       
    13171381#if defined( __ibm )
    1318        REAL, DIMENSION(nau2)     ::  auy2, auy4
     1382       REAL(wp), DIMENSION(nau2) ::  auy2  !:
     1383       REAL(wp), DIMENSION(nau2) ::  auy4  !:
    13191384#elif defined( __nec )
    1320        REAL, DIMENSION(6*(ny+1)) ::  work2
     1385       REAL(wp), DIMENSION(6*(ny+1)) ::  work2  !:
    13211386#endif
    13221387
     
    14371502          IF ( forward_fft )  THEN
    14381503
    1439              CALL DRCFT( 0, ar, 1, work, 1, ny+1, 1, 1, sqr_dny, auy1, nau1, &
     1504             CALL DRCFT( 0, ar, 1, work, 1, ny+1, 1, 1, sqr_dny, auy1, nau1,   &
    14401505                         auy2, nau2 )
    14411506
     
    14581523             work(ny+2) = 0.0
    14591524
    1460              CALL DCRFT( 0, work, 1, work, 1, ny+1, 1, -1, sqr_dny, auy3, nau1, &
    1461                          auy4, nau2 )
     1525             CALL DCRFT( 0, work, 1, work, 1, ny+1, 1, -1, sqr_dny, auy3,     &
     1526                         nau1, auy4, nau2 )
    14621527
    14631528             DO  j = 0, ny
     
    15271592       IMPLICIT NONE
    15281593
    1529        CHARACTER (LEN=*)              ::  direction
    1530        INTEGER                        ::  i, k, siza
    1531 
    1532        REAL, DIMENSION(0:nx,nz)       ::  ar
    1533        REAL, DIMENSION(0:nx+3,nz+1)   ::  ai
    1534        REAL, DIMENSION(6*(nx+4),nz+1) ::  work1
     1594       CHARACTER (LEN=*) ::  direction  !:
     1595       
     1596       INTEGER(iwp) ::  i     !:
     1597       INTEGER(iwp) ::  k     !:
     1598       INTEGER(iwp) ::  siza  !:
     1599
     1600       REAL(wp), DIMENSION(0:nx,nz)       ::  ar     !:
     1601       REAL(wp), DIMENSION(0:nx+3,nz+1)   ::  ai     !:
     1602       REAL(wp), DIMENSION(6*(nx+4),nz+1) ::  work1  !:
     1603       
    15351604#if defined( __nec )
    1536        INTEGER                             ::  sizw
    1537        COMPLEX, DIMENSION((nx+4)/2+1,nz+1) ::  work
     1605       INTEGER(iwp) ::  sizw  !:
     1606       
     1607       COMPLEX(wp), DIMENSION((nx+4)/2+1,nz+1) ::  work  !:
    15381608#endif
    15391609
     
    15881658!--          Tables are initialized once more. This call should not be
    15891659!--          necessary, but otherwise program aborts in asymmetric case
    1590              CALL DZFFTM( 0, nx+1, nz1, sqr_dnx, work, nx+4, work, nx+4, &
     1660             CALL DZFFTM( 0, nx+1, nz1, sqr_dnx, work, nx+4, work, nx+4,       &
    15911661                          trig_xf, work1, 0 )
    15921662
     
    15961666             ENDIF
    15971667
    1598              CALL DZFFTM( 1, nx+1, nz1, sqr_dnx, ai, siza, work, sizw, &
     1668             CALL DZFFTM( 1, nx+1, nz1, sqr_dnx, ai, siza, work, sizw,         &
    15991669                          trig_xf, work1, 0 )
    16001670
     
    16131683!--          Tables are initialized once more. This call should not be
    16141684!--          necessary, but otherwise program aborts in asymmetric case
    1615              CALL ZDFFTM( 0, nx+1, nz1, sqr_dnx, work, nx+4, work, nx+4, &
     1685             CALL ZDFFTM( 0, nx+1, nz1, sqr_dnx, work, nx+4, work, nx+4,       &
    16161686                          trig_xb, work1, 0 )
    16171687
     
    16641734       IMPLICIT NONE
    16651735
    1666        CHARACTER (LEN=*)              ::  direction
    1667        INTEGER                        ::  j, k, ny1, siza
    1668 
    1669        REAL, DIMENSION(0:ny1,nz)      ::  ar
    1670        REAL, DIMENSION(0:ny+3,nz+1)   ::  ai
    1671        REAL, DIMENSION(6*(ny+4),nz+1) ::  work1
     1736       CHARACTER (LEN=*) ::  direction  !:
     1737       
     1738       INTEGER(iwp) ::  j     !:
     1739       INTEGER(iwp) ::  k     !:
     1740       INTEGER(iwp) ::  ny1   !:
     1741       INTEGER(iwp) ::  siza  !:
     1742
     1743       REAL(wp), DIMENSION(0:ny1,nz)      ::  ar     !:
     1744       REAL(wp), DIMENSION(0:ny+3,nz+1)   ::  ai     !:
     1745       REAL(wp), DIMENSION(6*(ny+4),nz+1) ::  work1  !:
     1746       
    16721747#if defined( __nec )
    1673        INTEGER                             ::  sizw
    1674        COMPLEX, DIMENSION((ny+4)/2+1,nz+1) ::  work
     1748       INTEGER(iwp) ::  sizw  !:
     1749       
     1750       COMPLEX(wp), DIMENSION((ny+4)/2+1,nz+1) ::  work !:
    16751751#endif
    16761752
Note: See TracChangeset for help on using the changeset viewer.