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

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

ajout code NS3D

File size: 1.3 KB
Line 
1! Transformee de Fourier complexe-complexe multiple
2
3program tjmccfftm
4
5  implicit none
6
7  integer, parameter :: m = 7
8
9  integer, parameter :: n = 36
10  complex, dimension(0:n-1,0:m-1) :: x, xx
11  real, dimension(0:n-1,0:m-1,2) :: rx
12  equivalence ( x, rx )
13
14  integer, parameter :: ntable = 100+2*n
15  real, dimension(0:ntable-1) :: table
16
17  integer, parameter :: nwork = 4*m*n
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  twopi = 2 * acos(real(-1))
28
29  ! On prepare le tableau d'entree
30  call random_number( rx ) 
31  xx = x
32
33  isys = 0
34  scale = 1./real(n)
35
36  isign = 0
37  call ccfftm(isign,n,m,scale,x,n,x,n,table,work,isys)
38  isign = 1
39  print *,'jmccfftm ',n,m,isign,scale
40  call ccfftm(isign,n,m,scale,x,n,x,n,table,work,isys)
41
42  ! On imprime le tableau de sortie
43  open(10,file='temp1',status='unknown',form='formatted')
44  write(10,'(2e25.12)') x
45
46  ! Ce qu'il faut trouver
47  open(11,file='temp2',status='unknown',form='formatted')
48  ! On reprepare le tableau d'entree
49  x = xx
50  ! Et on calcule
51  do j = 0,m-1
52    do i = 0,n-1
53      s = 0
54      do k = 0,n-1
55        s = s+ cmplx(cos(twopi*i*k/real(n)),isign*sin(twopi*i*k/real(n)))*x(k,j)
56      end do
57      write(11,'(2e25.12)') s*scale
58    end do
59  end do
60
61end program tjmccfftm
Note: See TracBrowser for help on using the repository browser.