Ignore:
Timestamp:
May 18, 2010, 9:48:01 AM (15 years ago)
Author:
Laurent Fairhead
Message:
  • Differing COMPLEX declarations were causing problems in FFT routines

compilation. The FFTs should only be used in double precision in any case

  • the ALLOCATE command for the o_trac variable was misplaced and called

several times (causing an error for some compilators)


  • Des déclarations COMPLEX différenciées causaient des problèmes de

compilation dans les routines des filtres FFT. Celles-ci ne devraient être
utilisées qu'en double précision de toutes façons.

  • L'ALLOCATE de la variable o_trac était mal placé et appelé plusieurs fois

(ce qui causait des crash pour certains compilateurs)

Location:
LMDZ4/branches/LMDZ4V5.0-dev/libf
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/filtrez/mod_fft_fftw.F90

    r1383 r1389  
    8989    INTEGER,INTENT(IN)     :: nb_vect
    9090    REAL,INTENT(IN)        :: vect(vsize+inc,nb_vect)
    91     COMPLEX*16,INTENT(OUT) :: TF_vect(vsize/2+1,nb_vect)
     91    COMPLEX,INTENT(OUT) :: TF_vect(vsize/2+1,nb_vect)
    9292
    9393    CALL dfftw_execute_dft_r2c(plan_forward(nb_vect),vect,TF_vect)
     
    102102    INTEGER,INTENT(IN)     :: nb_vect
    103103    REAL,INTENT(OUT)       :: vect(vsize+inc,nb_vect)
    104     COMPLEX*16,INTENT(IN ) :: TF_vect(vsize/2+1,nb_vect)
     104    COMPLEX,INTENT(IN ) :: TF_vect(vsize/2+1,nb_vect)
    105105
    106106    CALL dfftw_execute_dft_c2r(plan_backward(nb_vect),TF_vect,vect)
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/filtrez/mod_fft_mathkeisan.F90

    r986 r1389  
    1515    INTEGER :: nb_vect_max
    1616    REAL    :: rtmp=1.
    17     COMPLEX*16 :: ctmp
     17    COMPLEX :: ctmp
    1818    INTEGER :: itmp=1
    1919    INTEGER :: isign=0
     
    3737    INTEGER,INTENT(IN)  :: nb_vect
    3838    REAL,INTENT(IN)     :: vect(vsize+inc,nb_vect)
    39     COMPLEX*16,INTENT(OUT) :: TF_vect(vsize/2+1,nb_vect)
     39    COMPLEX,INTENT(OUT) :: TF_vect(vsize/2+1,nb_vect)
    4040    REAL                :: work(4*vsize*nb_vect)
    4141    INTEGER             :: ierr
     
    5151    INTEGER,INTENT(IN)  :: nb_vect
    5252    REAL,INTENT(OUT)    :: vect(vsize+inc,nb_vect)
    53     COMPLEX*16,INTENT(IN ) :: TF_vect(vsize/2+1,nb_vect)
     53    COMPLEX,INTENT(IN ) :: TF_vect(vsize/2+1,nb_vect)
    5454    REAL                :: work(4*vsize*nb_vect)
    5555    INTEGER             :: ierr
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/filtrez/mod_fft_mkl.F90

    r1279 r1389  
    2424    INTEGER :: nb_vect_max
    2525    REAL    :: rtmp=1.
    26     COMPLEX*16 :: ctmp
     26    COMPLEX :: ctmp
    2727    INTEGER :: itmp=1
    2828    INTEGER :: isign=0
     
    6060    INTEGER,INTENT(IN)  :: nb_vect
    6161    REAL,INTENT(IN)     :: vect((vsize+inc)*nb_vect)
    62     COMPLEX*16,INTENT(OUT) :: TF_vect((vsize/2+1)*nb_vect)
     62    COMPLEX,INTENT(OUT) :: TF_vect((vsize/2+1)*nb_vect)
    6363    REAL                :: work(4*vsize*nb_vect)
    6464    INTEGER             :: ierr
     
    102102    INTEGER,INTENT(IN)  :: nb_vect
    103103    REAL,INTENT(OUT)    :: vect((vsize+inc)*nb_vect)
    104     COMPLEX*16,INTENT(IN ) :: TF_vect((vsize/2+1)*nb_vect)
     104    COMPLEX,INTENT(IN ) :: TF_vect((vsize/2+1)*nb_vect)
    105105    REAL                :: work(4*vsize*nb_vect)
    106106    INTEGER             :: ierr
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/filtrez/mod_fft_wrapper.F90

    r1279 r1389  
    1919    INTEGER,INTENT(IN)  :: nb_vect
    2020    REAL,INTENT(IN)     :: vect(vsize+inc,nb_vect)
    21     COMPLEX*16,INTENT(INOUT) :: TF_vect(vsize/2+1,nb_vect)
     21    COMPLEX,INTENT(INOUT) :: TF_vect(vsize/2+1,nb_vect)
    2222   
    2323    STOP "wrapper fft : une FFT doit etre specifiee a l'aide d'une clee CPP, sinon utiliser le filtre classique"
     
    2929    INTEGER,INTENT(IN)  :: nb_vect
    3030    REAL,INTENT(INOUT)    :: vect(vsize+inc,nb_vect)
    31     COMPLEX*16,INTENT(IN ) :: TF_vect(vsize/2+1,nb_vect)
     31    COMPLEX,INTENT(IN ) :: TF_vect(vsize/2+1,nb_vect)
    3232 
    3333    STOP "wrapper fft : une FFT doit etre specifiee a l'aide d'une clee CPP, sinon utiliser le filtre classique"
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/filtrez/mod_filtre_fft.F90

    r1383 r1389  
    129129
    130130    REAL               :: vect(iim+inc,jj_end-jj_begin+1,nbniv)
    131     COMPLEX            :: TF_vect(iim/2+1,jj_end-jj_begin+1,nbniv)
     131    COMPLEX         :: TF_vect(iim/2+1,jj_end-jj_begin+1,nbniv)
    132132    INTEGER            :: nb_vect
    133133    INTEGER :: i,j,l
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/phys_output_mod.F90

    r1388 r1389  
    602602!IM definition dynamique flag o_trac pour sortie traceurs
    603603  INTEGER :: nq
    604 !  type(ctrl_out) :: o_trac(nqtot)
    605604  CHARACTER(len=8) :: solsym(nqtot)
    606605
    607606   print*,'Debut phys_output_mod.F90'
    608607! Initialisations (Valeurs par defaut
     608
     609   if (.not. allocated(o_trac)) ALLOCATE(o_trac(nqtot))
     610
    609611   levmax = (/ klev, klev, klev, klev, klev /)
    610612
     
    12201222
    12211223!IM traceurs dynamiques
    1222     ALLOCATE(o_trac(nqtot))
    12231224    DO nq=1,nqtot
    12241225      IF(nq.LT.10) THEN
Note: See TracChangeset for help on using the changeset viewer.