source: LMDZ4/trunk/libf/filtrez/mod_fft_mathkeisan.F90 @ 3817

Last change on this file since 3817 was 1403, checked in by Laurent Fairhead, 15 years ago

Merged LMDZ4V5.0-dev branch changes r1292:r1399 to trunk.

Validation:
Validation consisted in compiling the HEAD revision of the trunk,
LMDZ4V5.0-dev branch and the merged sources and running different
configurations on local and SX8 machines comparing results.

Local machine: bench configuration, 32x24x11, gfortran

  • IPSLCM5A configuration (comparison between trunk and merged sources):
    • numerical convergence on dynamical fields over 3 days
    • start files are equivalent (except for RN and PB fields)
    • daily history files equivalent
  • MH07 configuration, new physics package (comparison between LMDZ4V5.0-dev branch and merged sources):
    • numerical convergence on dynamical fields over 3 days
    • start files are equivalent (except for RN and PB fields)
    • daily history files equivalent

SX8 machine (brodie), 96x95x39 on 4 processors:

  • IPSLCM5A configuration:
    • start files are equivalent (except for RN and PB fields)
    • monthly history files equivalent
  • MH07 configuration:
    • start files are equivalent (except for RN and PB fields)
    • monthly history files equivalent

Changes to the makegcm and create_make_gcm scripts to take into account
main programs in F90 files


Fusion de la branche LMDZ4V5.0-dev (r1292:r1399) au tronc principal

Validation:
La validation a consisté à compiler la HEAD de le trunk et de la banche
LMDZ4V5.0-dev et les sources fusionnées et de faire tourner le modéle selon
différentes configurations en local et sur SX8 et de comparer les résultats

En local: 32x24x11, config bench/gfortran

  • pour une config IPSLCM5A (comparaison tronc/fusion):
    • convergence numérique sur les champs dynamiques après 3 jours
    • restart et restartphy égaux (à part sur RN et Pb)
    • fichiers histoire égaux
  • pour une config nlle physique (MH07) (comparaison LMDZ4v5.0-dev/fusion):
    • convergence numérique sur les champs dynamiques après 3 jours
    • restart et restartphy égaux
    • fichiers histoire équivalents

Sur brodie, 96x95x39 sur 4 proc:

  • pour une config IPSLCM5A:
    • restart et restartphy égaux (à part sur RN et PB)
    • pas de différence dans les fichiers histmth.nc
  • pour une config MH07
    • restart et restartphy égaux (à part sur RN et PB)
    • pas de différence dans les fichiers histmth.nc

Changement sur makegcm et create_make-gcm pour pouvoir prendre en compte des
programmes principaux en *F90

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1.8 KB
Line 
1MODULE mod_fft_mathkeisan
2#ifdef FFT_MATHKEISAN
3
4  REAL,SAVE,ALLOCATABLE    :: Table_forward(:)
5  REAL,SAVE,ALLOCATABLE    :: Table_backward(:)
6  REAL,SAVE                :: scale_factor
7  INTEGER,SAVE             :: vsize
8  INTEGER,PARAMETER        :: inc=2
9
10CONTAINS
11 
12  SUBROUTINE Init_fft(iim,nb_vect_max)
13  IMPLICIT NONE
14    INTEGER :: iim
15    INTEGER :: nb_vect_max
16    REAL    :: rtmp=1.
17    COMPLEX :: ctmp
18    INTEGER :: itmp=1
19    INTEGER :: isign=0
20    INTEGER :: ierr
21   
22    vsize=iim
23    scale_factor=1./SQRT(1.*vsize)
24    ALLOCATE(Table_forward(2*vsize+64))
25    ALLOCATE(Table_backward(2*vsize+64))
26   
27    CALL DZFFTM(isign,vsize,itmp,scale_factor,rtmp,vsize+inc,ctmp,vsize/2+1,table_forward,rtmp,ierr)
28   
29    CALL ZDFFTM(isign,vsize,itmp,scale_factor,ctmp,vsize/2+1,rtmp,vsize+inc,table_backward,rtmp,ierr)
30
31   
32  END SUBROUTINE Init_fft
33 
34 
35  SUBROUTINE fft_forward(vect,TF_vect,nb_vect)
36    IMPLICIT NONE
37    INTEGER,INTENT(IN)  :: nb_vect
38    REAL,INTENT(IN)     :: vect(vsize+inc,nb_vect)
39    COMPLEX,INTENT(OUT) :: TF_vect(vsize/2+1,nb_vect)
40    REAL                :: work(4*vsize*nb_vect)
41    INTEGER             :: ierr
42    INTEGER, PARAMETER :: isign=-1
43   
44    work=0
45    CALL DZFFTM(isign,vsize,nb_vect,scale_factor,vect,vsize+inc,TF_vect,vsize/2+1,table_forward,work,ierr)
46 
47  END SUBROUTINE fft_forward
48 
49  SUBROUTINE fft_backward(TF_vect,vect,nb_vect)
50    IMPLICIT NONE
51    INTEGER,INTENT(IN)  :: nb_vect
52    REAL,INTENT(OUT)    :: vect(vsize+inc,nb_vect)
53    COMPLEX,INTENT(IN ) :: TF_vect(vsize/2+1,nb_vect)
54    REAL                :: work(4*vsize*nb_vect)
55    INTEGER             :: ierr
56    INTEGER, PARAMETER :: isign=1
57   
58    work(:)=0
59    CALL ZDFFTM(isign,vsize,nb_vect,scale_factor,TF_vect,vsize/2+1,vect,vsize+inc,table_backward,work,ierr)
60 
61  END SUBROUTINE fft_backward
62
63#endif
64 
65END MODULE mod_fft_mathkeisan
66
67
Note: See TracBrowser for help on using the repository browser.