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

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

ajout code NS3D

File size: 1.7 KB
Line 
1! Transformee de Fourier complexe-reel multiple
2
3program tjmrfftmlt1
4
5  implicit none
6
7  integer, parameter :: m = 7
8
9  integer, parameter :: n = 36
10  complex, dimension(0:n/2,0:m-1) :: x, xx
11  real, dimension(0:n/2,0:m-1,2) :: rx
12  equivalence ( x, rx )
13  real, dimension(0:2*(n/2+1)-1,0:m-1) :: y
14  equivalence(x(0,0),y(0,0))
15
16  integer, parameter :: ntrigs = 2*n
17  real, dimension(0:ntrigs-1) :: trigs
18
19  integer, parameter :: nifax = 19
20  real, dimension(0:nifax-1) :: ifax
21
22  integer, parameter :: nwork = 2*m*n
23  real, dimension(0:nwork-1) :: work
24
25  integer :: isign
26  integer :: i, j, k
27  real :: twopi
28  complex :: s
29  integer :: inc, jump
30
31  twopi = 2 * acos(real(-1))
32
33  ! On prepare le tableau d'entree en forcant a 0 les termes necessaires
34  call random_number( rx )
35  x(0,:) = cmplx( real( x(0,:) ), 0 )
36  if ( mod( n, 2 ) == 0 ) x(n/2,:) = cmplx( real( x(n/2,:) ), 0 )
37  xx = x
38
39  call fftfax(n,ifax,trigs)
40  isign = +1
41  print *,'jmrfftmlt ',n,m,isign
42  inc = 1
43  jump = 2*(n/2+1)
44  call rfftmlt(x,work,trigs,ifax,inc,jump,n,m,isign)
45
46  ! On imprime le tableau de sortie
47  open(10,file='temp1',status='unknown',form='formatted')
48  write(10,'(e25.12)') y(0:n-1,0:m-1)
49
50  ! Ce qu'il faut trouver
51  open(11,file='temp2',status='unknown',form='formatted')
52
53  ! On reprepare le tableau d'entree
54  x = xx
55  ! Et on calcule
56  do j = 0,m-1
57    do i = 0,n-1
58      s = 0
59      do k = 0,n/2
60        s = s+cmplx(cos(twopi*i*k/real(n)),sin(twopi*i*k/real(n)))*x(k,j)
61      end do
62      do k = n/2+1,n-1
63        s = s+cmplx(cos(twopi*i*k/real(n)),sin(twopi*i*k/real(n)))* &
64        & conjg(x(n-k,j))
65      end do
66      write(11,'(e25.12)') real(s)
67    end do
68  end do
69  close(11)
70
71end program tjmrfftmlt1
Note: See TracBrowser for help on using the repository browser.