source: trunk/NS3D_JMC/JMFFT-8.0/test/tjmscfft.f90

Last change on this file was 12, checked in by xlvlod, 17 years ago

ajout code NS3D

File size: 1.2 KB
Line 
1! Transformee de Fourier reelle-complexe 1d
2
3program tjmscfft
4
5  implicit none
6
7  integer, parameter :: n = 12
8  real, dimension(0:n-1) :: x, xx
9  complex, dimension(0:n/2) :: y
10
11  ! Pour stocker les cosinus et les sinus
12  integer, parameter :: ntable = 100+2*n
13  real, dimension(0:ntable-1) :: table
14
15  ! En fait, les routines jm n'ont besoin que de 2*n
16  integer, parameter :: nwork = 4+4*n
17  real, dimension(nwork) :: work
18
19  integer :: isign
20  real :: scale
21  integer :: isys
22  integer :: i, j
23  real :: twopi
24  complex :: s
25
26  ! On prepare le tableau d'entree
27  call random_number( x )
28  xx = x
29
30  scale = 1.
31  isys = 0
32
33  isign = 0
34  call scfft(isign,n,scale,x,y,table,work,isys)
35  isign = 1
36  print *,'jmscfft ',n,isign,scale
37  call scfft(isign,n,scale,x,y,table,work,isys)
38
39  ! On imprime le tableau de sortie
40  open(10,file='temp1',status='unknown',form='formatted')
41  write(10,'(2e25.12)') y
42
43  ! Ce qu'il faut trouver
44  open(11,file='temp2',status='unknown',form='formatted')
45  twopi = 2 * acos(real(-1))
46  ! On reprepare le tableau d'entree
47  x = xx
48  ! Et on calcule
49  do i = 0,n/2
50    s = 0
51    do j = 0,n-1
52      s = s + cmplx(cos(twopi*i*j/real(n)),isign*sin(twopi*i*j/real(n)))*x(j)
53    end do
54    write(11,'(2e25.12)') s*scale
55  end do
56
57end program tjmscfft
Note: See TracBrowser for help on using the repository browser.