Ignore:
Timestamp:
Oct 7, 2015 11:56:08 PM (9 years ago)
Author:
knoop
Message:

Code annotations made doxygen readable

File:
1 edited

Legend:

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

    r1343 r1682  
    1  MODULE temperton_fft
    2 
     1!> @file temperton_fft.f90
    32!------------------------------------------------------------------------------!
     3!
    44! Current revisions:
    55! -----------------
    6 !
     6! Code annotations made doxygen readable
    77!
    88! Former revisions:
     
    3131! Description:
    3232! ------------
    33 ! Fast Fourier transformation developed by Clive Temperton, ECMWF.
     33!> Fast Fourier transformation developed by Clive Temperton, ECMWF.
    3434!------------------------------------------------------------------------------!
     35 MODULE temperton_fft
    3536
    3637    USE kinds
     
    4344
    4445
    45     INTEGER(iwp)          ::  nfax(10)   !: array used by *fft991*.
    46     REAL(wp), ALLOCATABLE ::  trig(:)    !: array used by *fft991*.
     46    INTEGER(iwp)          ::  nfax(10)   !< array used by *fft991*.
     47    REAL(wp), ALLOCATABLE ::  trig(:)    !< array used by *fft991*.
    4748
    4849!
    4950!-- nfft: maximum length of calls to *fft.
    5051#if defined( __nec )
    51     INTEGER(iwp), PARAMETER ::  nfft = 256  !:
     52    INTEGER(iwp), PARAMETER ::  nfft = 256  !<
    5253#else
    53     INTEGER(iwp), PARAMETER ::  nfft =  32  !:
     54    INTEGER(iwp), PARAMETER ::  nfft =  32  !<
    5455#endif
    5556
    56     INTEGER(iwp), PARAMETER ::  nout =   6  !: standard output stream
     57    INTEGER(iwp), PARAMETER ::  nout =   6  !< standard output stream
    5758
    5859CONTAINS
    5960
     61!------------------------------------------------------------------------------!
     62! Description:
     63! ------------
     64!> Calls fortran-versions of fft's.
     65!>
     66!> Method:
     67!>
     68!> Subroutine 'fft991cy' - multiple fast real periodic transform
     69!> supersedes previous routine 'fft991cy'.
     70!>
     71!> Real transform of length n performed by removing redundant
     72!> operations from complex transform of length n.
     73!>
     74!> a       is the array containing input & output data.
     75!> work    is an area of size (n+1)*min(lot,nfft).
     76!> trigs   is a previously prepared list of trig function values.
     77!> ifax    is a previously prepared list of factors of n.
     78!> inc     is the increment within each data 'vector'
     79!>         (e.g. inc=1 for consecutively stored data).
     80!> jump    is the increment between the start of each data vector.
     81!> n       is the length of the data vectors.
     82!> lot     is the number of data vectors.
     83!> isign = +1 for transform from spectral to gridpoint
     84!>       = -1 for transform from gridpoint to spectral.
     85!>
     86!> ordering of coefficients:
     87!> a(0),b(0),a(1),b(1),a(2),b(2),.,a(n/2),b(n/2)
     88!> where b(0)=b(n/2)=0; (n+2) locations required.
     89!>
     90!> ordering of data:
     91!> x(0),x(1),x(2),.,x(n-1), 0 , 0 ; (n+2) locations required.
     92!>
     93!> Vectorization is achieved on cray by doing the transforms
     94!> in parallel.
     95!>
     96!> n must be composed of factors 2,3 & 5 but does not have to be even.
     97!>
     98!> definition of transforms:
     99!>
     100!> isign=+1: x(j)=sum(k=0,.,n-1)(c(k)*exp(2*i*j*k*pi/n))
     101!> where c(k)=a(k)+i*b(k) and c(n-k)=a(k)-i*b(k)
     102!>
     103!> isign=-1: a(k)=(1/n)*sum(j=0,.,n-1)(x(j)*cos(2*j*k*pi/n))
     104!> b(k)=-(1/n)*sum(j=0,.,n-1)(x(j)*sin(2*j*k*pi/n))
     105!>
     106!> calls fortran-versions of fft's  !!!
     107!> dimension a(n),work(n),trigs(n),ifax(1)
     108!------------------------------------------------------------------------------!
    60109  SUBROUTINE fft991cy(a,work,trigs,ifax,inc,jump,n,lot,isign)
    61110
    62     ! Description:
    63     !
    64     ! Calls fortran-versions of fft's.
    65     !
    66     ! Method:
    67     !
    68     ! Subroutine 'fft991cy' - multiple fast real periodic transform
    69     ! supersedes previous routine 'fft991cy'.
    70     !
    71     ! Real transform of length n performed by removing redundant
    72     ! operations from complex transform of length n.
    73     !
    74     ! a       is the array containing input & output data.
    75     ! work    is an area of size (n+1)*min(lot,nfft).
    76     ! trigs   is a previously prepared list of trig function values.
    77     ! ifax    is a previously prepared list of factors of n.
    78     ! inc     is the increment within each data 'vector'
    79     !         (e.g. inc=1 for consecutively stored data).
    80     ! jump    is the increment between the start of each data vector.
    81     ! n       is the length of the data vectors.
    82     ! lot     is the number of data vectors.
    83     ! isign = +1 for transform from spectral to gridpoint
    84     !       = -1 for transform from gridpoint to spectral.
    85     !
    86     ! ordering of coefficients:
    87     ! a(0),b(0),a(1),b(1),a(2),b(2),.,a(n/2),b(n/2)
    88     ! where b(0)=b(n/2)=0; (n+2) locations required.
    89     !
    90     ! ordering of data:
    91     ! x(0),x(1),x(2),.,x(n-1), 0 , 0 ; (n+2) locations required.
    92     !
    93     ! Vectorization is achieved on cray by doing the transforms
    94     ! in parallel.
    95     !
    96     ! n must be composed of factors 2,3 & 5 but does not have to be even.
    97     !
    98     ! definition of transforms:
    99     !
    100     ! isign=+1: x(j)=sum(k=0,.,n-1)(c(k)*exp(2*i*j*k*pi/n))
    101     ! where c(k)=a(k)+i*b(k) and c(n-k)=a(k)-i*b(k)
    102 
    103     ! isign=-1: a(k)=(1/n)*sum(j=0,.,n-1)(x(j)*cos(2*j*k*pi/n))
    104     ! b(k)=-(1/n)*sum(j=0,.,n-1)(x(j)*sin(2*j*k*pi/n))
    105 
    106     ! calls fortran-versions of fft's  !!!
    107     ! dimension a(n),work(n),trigs(n),ifax(1)
    108 
    109111    USE kinds
    110112
     
    112114
    113115    !  Scalar arguments
    114     INTEGER(iwp) ::  inc   !:
    115     INTEGER(iwp) ::  isign !:
    116     INTEGER(iwp) ::  jump  !:
    117     INTEGER(iwp) ::  lot   !:
    118     INTEGER(iwp) ::  n     !:
     116    INTEGER(iwp) ::  inc   !<
     117    INTEGER(iwp) ::  isign !<
     118    INTEGER(iwp) ::  jump  !<
     119    INTEGER(iwp) ::  lot   !<
     120    INTEGER(iwp) ::  n     !<
    119121
    120122    !  Array arguments
    121     REAL(wp)     ::  a(*)     !:
    122     REAL(wp)     ::  trigs(*) !:
    123     REAL(wp)     ::  work(*)  !:
    124     INTEGER(iwp) ::  ifax(*)  !:
     123    REAL(wp)     ::  a(*)     !<
     124    REAL(wp)     ::  trigs(*) !<
     125    REAL(wp)     ::  work(*)  !<
     126    INTEGER(iwp) ::  ifax(*)  !<
    125127
    126128    !  Local scalars:
    127     INTEGER(iwp) ::  i      !:
    128     INTEGER(iwp) ::  ia     !:
    129     INTEGER(iwp) ::  ibase  !:
    130     INTEGER(iwp) ::  ierr   !:
    131     INTEGER(iwp) ::  ifac   !:
    132     INTEGER(iwp) ::  igo    !:
    133     INTEGER(iwp) ::  ii     !:
    134     INTEGER(iwp) ::  istart !:
    135     INTEGER(iwp) ::  ix     !:
    136     INTEGER(iwp) ::  iz     !:
    137     INTEGER(iwp) ::  j      !:
    138     INTEGER(iwp) ::  jbase  !:
    139     INTEGER(iwp) ::  jj     !:
    140     INTEGER(iwp) ::  k      !:
    141     INTEGER(iwp) ::  la     !:
    142     INTEGER(iwp) ::  nb     !:
    143     INTEGER(iwp) ::  nblox  !:
    144     INTEGER(iwp) ::  nfax   !:
    145     INTEGER(iwp) ::  nvex   !:
    146     INTEGER(iwp) ::  nx     !:
     129    INTEGER(iwp) ::  i      !<
     130    INTEGER(iwp) ::  ia     !<
     131    INTEGER(iwp) ::  ibase  !<
     132    INTEGER(iwp) ::  ierr   !<
     133    INTEGER(iwp) ::  ifac   !<
     134    INTEGER(iwp) ::  igo    !<
     135    INTEGER(iwp) ::  ii     !<
     136    INTEGER(iwp) ::  istart !<
     137    INTEGER(iwp) ::  ix     !<
     138    INTEGER(iwp) ::  iz     !<
     139    INTEGER(iwp) ::  j      !<
     140    INTEGER(iwp) ::  jbase  !<
     141    INTEGER(iwp) ::  jj     !<
     142    INTEGER(iwp) ::  k      !<
     143    INTEGER(iwp) ::  la     !<
     144    INTEGER(iwp) ::  nb     !<
     145    INTEGER(iwp) ::  nblox  !<
     146    INTEGER(iwp) ::  nfax   !<
     147    INTEGER(iwp) ::  nvex   !<
     148    INTEGER(iwp) ::  nx     !<
    147149
    148150    !  Intrinsic functions
     
    320322  END SUBROUTINE fft991cy
    321323
     324!------------------------------------------------------------------------------!
     325! Description:
     326! ------------
     327!> Performs one pass through data as part of
     328!> multiple real fft (fourier analysis) routine.
     329!>
     330!> Method:
     331!>
     332!> a       is first real input vector
     333!>         equivalence b(1) with a(ifac*la*inc1+1)
     334!> c       is first real output vector
     335!>         equivalence d(1) with c(la*inc2+1)
     336!> trigs   is a precalculated list of sines & cosines
     337!> inc1    is the addressing increment for a
     338!> inc2    is the addressing increment for c
     339!> inc3    is the increment between input vectors a
     340!> inc4    is the increment between output vectors c
     341!> lot     is the number of vectors
     342!> n       is the length of the vectors
     343!> ifac    is the current factor of n
     344!>         la = n/(product of factors used so far)
     345!> ierr    is an error indicator:
     346!>         0 - pass completed without error
     347!>         1 - lot greater than nfft
     348!>         2 - ifac not catered for
     349!>         3 - ifac only catered for if la=n/ifac
     350!------------------------------------------------------------------------------!
    322351  SUBROUTINE qpassm(a,b,c,d,trigs,inc1,inc2,inc3,inc4,lot,n,ifac,la,ierr)
    323352
    324     ! Description:
    325     !
    326     ! Performs one pass through data as part of
    327     ! multiple real fft (fourier analysis) routine.
    328     !
    329     ! Method:
    330     !
    331     ! a       is first real input vector
    332     !         equivalence b(1) with a(ifac*la*inc1+1)
    333     ! c       is first real output vector
    334     !         equivalence d(1) with c(la*inc2+1)
    335     ! trigs   is a precalculated list of sines & cosines
    336     ! inc1    is the addressing increment for a
    337     ! inc2    is the addressing increment for c
    338     ! inc3    is the increment between input vectors a
    339     ! inc4    is the increment between output vectors c
    340     ! lot     is the number of vectors
    341     ! n       is the length of the vectors
    342     ! ifac    is the current factor of n
    343     !         la = n/(product of factors used so far)
    344     ! ierr    is an error indicator:
    345     !         0 - pass completed without error
    346     !         1 - lot greater than nfft
    347     !         2 - ifac not catered for
    348     !         3 - ifac only catered for if la=n/ifac
    349     !
    350 
    351353    USE kinds
    352354
     
    354356
    355357    !  Scalar arguments
    356     INTEGER(iwp) ::  ierr !:
    357     INTEGER(iwp) ::  ifac !:
    358     INTEGER(iwp) ::  inc1 !:
    359     INTEGER(iwp) ::  inc2 !:
    360     INTEGER(iwp) ::  inc3 !:
    361     INTEGER(iwp) ::  inc4 !:
    362     INTEGER(iwp) ::  la   !:
    363     INTEGER(iwp) ::  lot  !:
    364     INTEGER(iwp) ::  n    !:
     358    INTEGER(iwp) ::  ierr !<
     359    INTEGER(iwp) ::  ifac !<
     360    INTEGER(iwp) ::  inc1 !<
     361    INTEGER(iwp) ::  inc2 !<
     362    INTEGER(iwp) ::  inc3 !<
     363    INTEGER(iwp) ::  inc4 !<
     364    INTEGER(iwp) ::  la   !<
     365    INTEGER(iwp) ::  lot  !<
     366    INTEGER(iwp) ::  n    !<
    365367
    366368    !  Array arguments
    367369    ! REAL :: a(n),b(n),c(n),d(n),trigs(n)
    368     REAL(wp) ::  a(*)     !:
    369     REAL(wp) ::  b(*)     !:
    370     REAL(wp) ::  c(*)     !:
    371     REAL(wp) ::  d(*)     !:
    372     REAL(wp) ::  trigs(*) !:
     370    REAL(wp) ::  a(*)     !<
     371    REAL(wp) ::  b(*)     !<
     372    REAL(wp) ::  c(*)     !<
     373    REAL(wp) ::  d(*)     !<
     374    REAL(wp) ::  trigs(*) !<
    373375 
    374376    !  Local scalars:
    375     REAL(wp) ::  a0     !:
    376     REAL(wp) ::  a1     !:
    377     REAL(wp) ::  a10    !:
    378     REAL(wp) ::  a11    !:
    379     REAL(wp) ::  a2     !:
    380     REAL(wp) ::  a20    !:
    381     REAL(wp) ::  a21    !:
    382     REAL(wp) ::  a3     !:
    383     REAL(wp) ::  a4     !:
    384     REAL(wp) ::  a5     !:
    385     REAL(wp) ::  a6     !:
    386     REAL(wp) ::  b0     !:
    387     REAL(wp) ::  b1     !:
    388     REAL(wp) ::  b10    !:
    389     REAL(wp) ::  b11    !:
    390     REAL(wp) ::  b2     !:
    391     REAL(wp) ::  b20    !:
    392     REAL(wp) ::  b21    !:
    393     REAL(wp) ::  b3     !:
    394     REAL(wp) ::  b4     !:
    395     REAL(wp) ::  b5     !:
    396     REAL(wp) ::  b6     !:
    397     REAL(wp) ::  c1     !:
    398     REAL(wp) ::  c2     !:
    399     REAL(wp) ::  c3     !:
    400     REAL(wp) ::  c4     !:
    401     REAL(wp) ::  c5     !:
    402     REAL(wp) ::  qrt5   !:
    403     REAL(wp) ::  s1     !:
    404     REAL(wp) ::  s2     !:
    405     REAL(wp) ::  s3     !:
    406     REAL(wp) ::  s4     !:
    407     REAL(wp) ::  s5     !:
    408     REAL(wp) ::  sin36  !:
    409     REAL(wp) ::  sin45  !:
    410     REAL(wp) ::  sin60  !:
    411     REAL(wp) ::  sin72  !:
    412     REAL(wp) ::  z      !:
    413     REAL(wp) ::  zqrt5  !:
    414     REAL(wp) ::  zsin36 !:
    415     REAL(wp) ::  zsin45 !:
    416     REAL(wp) ::  zsin60 !:
    417     REAL(wp) ::  zsin72 !:
    418 
    419     INTEGER(iwp) ::  i     !:
    420     INTEGER(iwp) ::  ia    !:
    421     INTEGER(iwp) ::  ib    !:
    422     INTEGER(iwp) ::  ibad  !:
    423     INTEGER(iwp) ::  ibase !:
    424     INTEGER(iwp) ::  ic    !:
    425     INTEGER(iwp) ::  id    !:
    426     INTEGER(iwp) ::  ie    !:
    427     INTEGER(iwp) ::  if    !:
    428     INTEGER(iwp) ::  ig    !:
    429     INTEGER(iwp) ::  igo   !:
    430     INTEGER(iwp) ::  ih    !:
    431     INTEGER(iwp) ::  iink  !:
    432     INTEGER(iwp) ::  ijk   !:
    433     INTEGER(iwp) ::  ijump !:
    434     INTEGER(iwp) ::  j     !:
    435     INTEGER(iwp) ::  ja    !:
    436     INTEGER(iwp) ::  jb    !:
    437     INTEGER(iwp) ::  jbase !:
    438     INTEGER(iwp) ::  jc    !:
    439     INTEGER(iwp) ::  jd    !:
    440     INTEGER(iwp) ::  je    !:
    441     INTEGER(iwp) ::  jf    !:
    442     INTEGER(iwp) ::  jink  !:
    443     INTEGER(iwp) ::  k     !:
    444     INTEGER(iwp) ::  kb    !:
    445     INTEGER(iwp) ::  kc    !:
    446     INTEGER(iwp) ::  kd    !:
    447     INTEGER(iwp) ::  ke    !:
    448     INTEGER(iwp) ::  kf    !:
    449     INTEGER(iwp) ::  kstop !:
    450     INTEGER(iwp) ::  l     !:
    451     INTEGER(iwp) ::  m     !:
     377    REAL(wp) ::  a0     !<
     378    REAL(wp) ::  a1     !<
     379    REAL(wp) ::  a10    !<
     380    REAL(wp) ::  a11    !<
     381    REAL(wp) ::  a2     !<
     382    REAL(wp) ::  a20    !<
     383    REAL(wp) ::  a21    !<
     384    REAL(wp) ::  a3     !<
     385    REAL(wp) ::  a4     !<
     386    REAL(wp) ::  a5     !<
     387    REAL(wp) ::  a6     !<
     388    REAL(wp) ::  b0     !<
     389    REAL(wp) ::  b1     !<
     390    REAL(wp) ::  b10    !<
     391    REAL(wp) ::  b11    !<
     392    REAL(wp) ::  b2     !<
     393    REAL(wp) ::  b20    !<
     394    REAL(wp) ::  b21    !<
     395    REAL(wp) ::  b3     !<
     396    REAL(wp) ::  b4     !<
     397    REAL(wp) ::  b5     !<
     398    REAL(wp) ::  b6     !<
     399    REAL(wp) ::  c1     !<
     400    REAL(wp) ::  c2     !<
     401    REAL(wp) ::  c3     !<
     402    REAL(wp) ::  c4     !<
     403    REAL(wp) ::  c5     !<
     404    REAL(wp) ::  qrt5   !<
     405    REAL(wp) ::  s1     !<
     406    REAL(wp) ::  s2     !<
     407    REAL(wp) ::  s3     !<
     408    REAL(wp) ::  s4     !<
     409    REAL(wp) ::  s5     !<
     410    REAL(wp) ::  sin36  !<
     411    REAL(wp) ::  sin45  !<
     412    REAL(wp) ::  sin60  !<
     413    REAL(wp) ::  sin72  !<
     414    REAL(wp) ::  z      !<
     415    REAL(wp) ::  zqrt5  !<
     416    REAL(wp) ::  zsin36 !<
     417    REAL(wp) ::  zsin45 !<
     418    REAL(wp) ::  zsin60 !<
     419    REAL(wp) ::  zsin72 !<
     420
     421    INTEGER(iwp) ::  i     !<
     422    INTEGER(iwp) ::  ia    !<
     423    INTEGER(iwp) ::  ib    !<
     424    INTEGER(iwp) ::  ibad  !<
     425    INTEGER(iwp) ::  ibase !<
     426    INTEGER(iwp) ::  ic    !<
     427    INTEGER(iwp) ::  id    !<
     428    INTEGER(iwp) ::  ie    !<
     429    INTEGER(iwp) ::  if    !<
     430    INTEGER(iwp) ::  ig    !<
     431    INTEGER(iwp) ::  igo   !<
     432    INTEGER(iwp) ::  ih    !<
     433    INTEGER(iwp) ::  iink  !<
     434    INTEGER(iwp) ::  ijk   !<
     435    INTEGER(iwp) ::  ijump !<
     436    INTEGER(iwp) ::  j     !<
     437    INTEGER(iwp) ::  ja    !<
     438    INTEGER(iwp) ::  jb    !<
     439    INTEGER(iwp) ::  jbase !<
     440    INTEGER(iwp) ::  jc    !<
     441    INTEGER(iwp) ::  jd    !<
     442    INTEGER(iwp) ::  je    !<
     443    INTEGER(iwp) ::  jf    !<
     444    INTEGER(iwp) ::  jink  !<
     445    INTEGER(iwp) ::  k     !<
     446    INTEGER(iwp) ::  kb    !<
     447    INTEGER(iwp) ::  kc    !<
     448    INTEGER(iwp) ::  kd    !<
     449    INTEGER(iwp) ::  ke    !<
     450    INTEGER(iwp) ::  kf    !<
     451    INTEGER(iwp) ::  kstop !<
     452    INTEGER(iwp) ::  l     !<
     453    INTEGER(iwp) ::  m     !<
    452454
    453455    !  Intrinsic functions
     
    12191221  END SUBROUTINE qpassm
    12201222
     1223!------------------------------------------------------------------------------!
     1224! Description:
     1225! ------------
     1226!> @todo Missing subroutine description.
     1227!------------------------------------------------------------------------------!
    12211228  SUBROUTINE rpassm(a,b,c,d,trigs,inc1,inc2,inc3,inc4,lot,n,ifac,la,ierr)
    12221229    ! Dimension a(n),b(n),c(n),d(n),trigs(n)
     
    12271234
    12281235    !  Scalar arguments
    1229     INTEGER(iwp) ::  ierr !:
    1230     INTEGER(iwp) ::  ifac !:
    1231     INTEGER(iwp) ::  inc1 !:
    1232     INTEGER(iwp) ::  inc2 !:
    1233     INTEGER(iwp) ::  inc3 !:
    1234     INTEGER(iwp) ::  inc4 !:
    1235     INTEGER(iwp) ::  la   !:
    1236     INTEGER(iwp) ::  lot  !:
    1237     INTEGER(iwp) ::  n    !:
     1236    INTEGER(iwp) ::  ierr !<
     1237    INTEGER(iwp) ::  ifac !<
     1238    INTEGER(iwp) ::  inc1 !<
     1239    INTEGER(iwp) ::  inc2 !<
     1240    INTEGER(iwp) ::  inc3 !<
     1241    INTEGER(iwp) ::  inc4 !<
     1242    INTEGER(iwp) ::  la   !<
     1243    INTEGER(iwp) ::  lot  !<
     1244    INTEGER(iwp) ::  n    !<
    12381245
    12391246    !  Array arguments
    1240     REAL(wp) ::  a(*)     !:
    1241     REAL(wp) ::  b(*)     !:
    1242     REAL(wp) ::  c(*)     !:
    1243     REAL(wp) ::  d(*)     !:
    1244     REAL(wp) ::  trigs(*) !:
     1247    REAL(wp) ::  a(*)     !<
     1248    REAL(wp) ::  b(*)     !<
     1249    REAL(wp) ::  c(*)     !<
     1250    REAL(wp) ::  d(*)     !<
     1251    REAL(wp) ::  trigs(*) !<
    12451252
    12461253    !  Local scalars:
    1247     REAL(wp) ::  c1     !:
    1248     REAL(wp) ::  c2     !:
    1249     REAL(wp) ::  c3     !:
    1250     REAL(wp) ::  c4     !:
    1251     REAL(wp) ::  c5     !:
    1252     REAL(wp) ::  qqrt5  !:
    1253     REAL(wp) ::  qrt5   !:
    1254     REAL(wp) ::  s1     !:
    1255     REAL(wp) ::  s2     !:
    1256     REAL(wp) ::  s3     !:
    1257     REAL(wp) ::  s4     !:
    1258     REAL(wp) ::  s5     !:
    1259     REAL(wp) ::  sin36  !:
    1260     REAL(wp) ::  sin45  !:
    1261     REAL(wp) ::  sin60  !:
    1262     REAL(wp) ::  sin72  !:
    1263     REAL(wp) ::  ssin36 !:
    1264     REAL(wp) ::  ssin45 !:
    1265     REAL(wp) ::  ssin60 !:
    1266     REAL(wp) ::  ssin72 !:
    1267 
    1268     INTEGER(iwp) ::  i     !:
    1269     INTEGER(iwp) ::  ia    !:
    1270     INTEGER(iwp) ::  ib    !:
    1271     INTEGER(iwp) ::  ibad  !:
    1272     INTEGER(iwp) ::  ibase !:
    1273     INTEGER(iwp) ::  ic    !:
    1274     INTEGER(iwp) ::  id    !:
    1275     INTEGER(iwp) ::  ie    !:
    1276     INTEGER(iwp) ::  if    !:
    1277     INTEGER(iwp) ::  igo   !:
    1278     INTEGER(iwp) ::  iink  !:
    1279     INTEGER(iwp) ::  ijk   !:
    1280     INTEGER(iwp) ::  j     !:
    1281     INTEGER(iwp) ::  ja    !:
    1282     INTEGER(iwp) ::  jb    !:
    1283     INTEGER(iwp) ::  jbase !:
    1284     INTEGER(iwp) ::  jc    !:
    1285     INTEGER(iwp) ::  jd    !:
    1286     INTEGER(iwp) ::  je    !:
    1287     INTEGER(iwp) ::  jf    !:
    1288     INTEGER(iwp) ::  jg    !:
    1289     INTEGER(iwp) ::  jh    !:
    1290     INTEGER(iwp) ::  jink  !:
    1291     INTEGER(iwp) ::  jump  !:
    1292     INTEGER(iwp) ::  k     !:
    1293     INTEGER(iwp) ::  kb    !:
    1294     INTEGER(iwp) ::  kc    !:
    1295     INTEGER(iwp) ::  kd    !:
    1296     INTEGER(iwp) ::  ke    !:
    1297     INTEGER(iwp) ::  kf    !:
    1298     INTEGER(iwp) ::  kstop !:
    1299     INTEGER(iwp) ::  l     !:
    1300     INTEGER(iwp) ::  m     !:
     1254    REAL(wp) ::  c1     !<
     1255    REAL(wp) ::  c2     !<
     1256    REAL(wp) ::  c3     !<
     1257    REAL(wp) ::  c4     !<
     1258    REAL(wp) ::  c5     !<
     1259    REAL(wp) ::  qqrt5  !<
     1260    REAL(wp) ::  qrt5   !<
     1261    REAL(wp) ::  s1     !<
     1262    REAL(wp) ::  s2     !<
     1263    REAL(wp) ::  s3     !<
     1264    REAL(wp) ::  s4     !<
     1265    REAL(wp) ::  s5     !<
     1266    REAL(wp) ::  sin36  !<
     1267    REAL(wp) ::  sin45  !<
     1268    REAL(wp) ::  sin60  !<
     1269    REAL(wp) ::  sin72  !<
     1270    REAL(wp) ::  ssin36 !<
     1271    REAL(wp) ::  ssin45 !<
     1272    REAL(wp) ::  ssin60 !<
     1273    REAL(wp) ::  ssin72 !<
     1274
     1275    INTEGER(iwp) ::  i     !<
     1276    INTEGER(iwp) ::  ia    !<
     1277    INTEGER(iwp) ::  ib    !<
     1278    INTEGER(iwp) ::  ibad  !<
     1279    INTEGER(iwp) ::  ibase !<
     1280    INTEGER(iwp) ::  ic    !<
     1281    INTEGER(iwp) ::  id    !<
     1282    INTEGER(iwp) ::  ie    !<
     1283    INTEGER(iwp) ::  if    !<
     1284    INTEGER(iwp) ::  igo   !<
     1285    INTEGER(iwp) ::  iink  !<
     1286    INTEGER(iwp) ::  ijk   !<
     1287    INTEGER(iwp) ::  j     !<
     1288    INTEGER(iwp) ::  ja    !<
     1289    INTEGER(iwp) ::  jb    !<
     1290    INTEGER(iwp) ::  jbase !<
     1291    INTEGER(iwp) ::  jc    !<
     1292    INTEGER(iwp) ::  jd    !<
     1293    INTEGER(iwp) ::  je    !<
     1294    INTEGER(iwp) ::  jf    !<
     1295    INTEGER(iwp) ::  jg    !<
     1296    INTEGER(iwp) ::  jh    !<
     1297    INTEGER(iwp) ::  jink  !<
     1298    INTEGER(iwp) ::  jump  !<
     1299    INTEGER(iwp) ::  k     !<
     1300    INTEGER(iwp) ::  kb    !<
     1301    INTEGER(iwp) ::  kc    !<
     1302    INTEGER(iwp) ::  kd    !<
     1303    INTEGER(iwp) ::  ke    !<
     1304    INTEGER(iwp) ::  kf    !<
     1305    INTEGER(iwp) ::  kstop !<
     1306    INTEGER(iwp) ::  l     !<
     1307    INTEGER(iwp) ::  m     !<
    13011308
    13021309    !  Local arrays:
    1303     REAL(wp) ::  a10(nfft) !:
    1304     REAL(wp) ::  a11(nfft) !:
    1305     REAL(wp) ::  a20(nfft) !:
    1306     REAL(wp) ::  a21(nfft) !:
    1307     REAL(wp) ::  b10(nfft) !:
    1308     REAL(wp) ::  b11(nfft) !:
    1309     REAL(wp) ::  b20(nfft) !:
    1310     REAL(wp) ::  b21(nfft) !:
     1310    REAL(wp) ::  a10(nfft) !<
     1311    REAL(wp) ::  a11(nfft) !<
     1312    REAL(wp) ::  a20(nfft) !<
     1313    REAL(wp) ::  a21(nfft) !<
     1314    REAL(wp) ::  b10(nfft) !<
     1315    REAL(wp) ::  b11(nfft) !<
     1316    REAL(wp) ::  b20(nfft) !<
     1317    REAL(wp) ::  b21(nfft) !<
    13111318
    13121319    !  Intrinsic functions
     
    20652072  END SUBROUTINE rpassm
    20662073
     2074!------------------------------------------------------------------------------!
     2075! Description:
     2076! ------------
     2077!> Computes factors of n & trigonometric functins required by fft99 & fft991cy
     2078!> Method: Dimension trigs(n),ifax(1),jfax(10),lfax(7)
     2079!> subroutine 'set99' - computes factors of n & trigonometric
     2080!> functins required by fft99 & fft991cy
     2081!------------------------------------------------------------------------------!
    20672082  SUBROUTINE set99(trigs,ifax,n)
    2068 
    2069     ! Description:
    2070     !
    2071     ! Computes factors of n & trigonometric functins required by fft99 & fft991cy
    2072     !
    2073     ! Method:
    2074     !
    2075     ! Dimension trigs(n),ifax(1),jfax(10),lfax(7)
    2076     !
    2077     ! subroutine 'set99' - computes factors of n & trigonometric
    2078     ! functins required by fft99 & fft991cy
    20792083
    20802084
     
    20872091
    20882092    !  Scalar arguments
    2089     INTEGER(iwp) ::  n !:
     2093    INTEGER(iwp) ::  n !<
    20902094
    20912095    !  Array arguments
    2092     INTEGER(iwp) ::  ifax(*)  !:
    2093     REAL(wp)     ::  trigs(*) !:
     2096    INTEGER(iwp) ::  ifax(*)  !<
     2097    REAL(wp)     ::  trigs(*) !<
    20942098
    20952099
    20962100    !  Local scalars:
    2097     REAL(wp) ::  angle    !:
    2098     REAL(wp) ::  del      !:
    2099     INTEGER(iwp) ::  i    !:
    2100     INTEGER(iwp) ::  ifac !:
    2101     INTEGER(iwp) ::  ixxx !:
    2102     INTEGER(iwp) ::  k    !:
    2103     INTEGER(iwp) ::  l    !:
    2104     INTEGER(iwp) ::  nfax !:
    2105     INTEGER(iwp) ::  nhl  !:
    2106     INTEGER(iwp) ::  nil  !:
    2107     INTEGER(iwp) ::  nu   !:
     2101    REAL(wp) ::  angle    !<
     2102    REAL(wp) ::  del      !<
     2103    INTEGER(iwp) ::  i    !<
     2104    INTEGER(iwp) ::  ifac !<
     2105    INTEGER(iwp) ::  ixxx !<
     2106    INTEGER(iwp) ::  k    !<
     2107    INTEGER(iwp) ::  l    !<
     2108    INTEGER(iwp) ::  nfax !<
     2109    INTEGER(iwp) ::  nhl  !<
     2110    INTEGER(iwp) ::  nil  !<
     2111    INTEGER(iwp) ::  nu   !<
    21082112
    21092113    !  Local arrays:
    2110     INTEGER(iwp) ::  jfax(10) !:
    2111     INTEGER(iwp) ::  lfax(7)  !:
     2114    INTEGER(iwp) ::  jfax(10) !<
     2115    INTEGER(iwp) ::  lfax(7)  !<
    21122116
    21132117    !  Intrinsic functions
Note: See TracChangeset for help on using the changeset viewer.