source: trunk/NS3D_JMC/JMFFT-8.0/test/tjmscfftm.f90 @ 12

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

ajout code NS3D

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