V3FIT
fftrans.f
1  SUBROUTINE fftrans(r0c, z0c, rhoc, rhos, rbc, zbs, rbs, zbc,
2  1 rmnaxis, zmnaxis)
3 C-----------------------------------------------
4 C M o d u l e s
5 C-----------------------------------------------
6  USE vname0
7  USE vname1
8  IMPLICIT NONE
9 C-----------------------------------------------
10 C D u m m y A r g u m e n t s
11 C-----------------------------------------------
12  REAL(rprec), DIMENSION(nphi) :: r0c, z0c
13  REAL(rprec), DIMENSION(0:mrho-1,nphi) :: rhoc, rhos
14  REAL(rprec), DIMENSION(0:mpol-1,-nphi2:nphi2) ::
15  1 rbc, zbs, rbs, zbc
16  REAL(rprec), DIMENSION(0:nphi2) :: rmnaxis, zmnaxis
17 C-----------------------------------------------
18 C L o c a l V a r i a b l e s
19 C-----------------------------------------------
20  INTEGER :: i, mn, mreal, nreal
21  REAL(rprec), DIMENSION(nv) :: intgrate, argi
22  REAL(rprec) :: delphi,dn,rmc_p,zms_p,rms_p,zmc_p,
23  1 arg,tcosn,tsinn
24 C-----------------------------------------------
25 !
26 ! PERFORM FOURIER TRANSFORM IN phi
27 !
28  delphi = one/nphi
29  DO i = 1, nphi
30  intgrate(i) = delphi
31  argi(i) = twopi*(i - 1)/real(nphi*nfp,rprec)
32  END DO
33 
34  rbc = 0; zbs = 0; rbs = 0; zbc = 0
35 
36  DO mn = 1, mpnt
37  mreal = m1(mn)
38  nreal = n1(mn)/nfp
39  dn = real(n1(mn))
40  DO i = 1, nphi
41  CALL getrz(rmc_p,rms_p,zmc_p,zms_p,r0c(i),z0c(i),
42  1 rhoc(0,i),rhos(0,i),mreal,mrho)
43  arg = dn*argi(i)
44  tcosn = cos(arg)
45  tsinn = sin(arg)
46  rbc(mreal,nreal) = rbc(mreal,nreal) + intgrate(i)*(tcosn*
47  1 rmc_p + tsinn*rms_p)
48  zbs(mreal,nreal) = zbs(mreal,nreal) + intgrate(i)*(tcosn*
49  1 zms_p - tsinn*zmc_p)
50  zbc(mreal,nreal) = zbc(mreal,nreal) + intgrate(i)*(tcosn*
51  1 zmc_p + tsinn*zms_p)
52  rbs(mreal,nreal) = rbs(mreal,nreal) + intgrate(i)*(tcosn*
53  1 rms_p - tsinn*rmc_p)
54 
55 ! zbc(mreal, nreal) = 0
56 ! rbs(mreal, nreal) = 0
57 
58  END DO
59  IF (mreal.eq.0 .and. nreal.eq.0) THEN
60  rmnaxis(0) = dot_product(intgrate(:nphi),raxis(:nphi))
61  zmnaxis(0) = zero
62  ELSE IF (mreal.eq.0 .and. nreal.gt.0) THEN
63  rbc(0,nreal) = 2*rbc(0,nreal)
64  rbs(0,nreal) = 2*rbs(0,nreal)
65  zbc(0,nreal) = 2*zbc(0,nreal)
66  zbs(0,nreal) = 2*zbs(0,nreal)
67  rmnaxis(nreal) = zero
68  zmnaxis(nreal) = zero
69  rmnaxis(nreal) = rmnaxis(nreal) + sum(2*intgrate(:nphi)*
70  1 raxis(:nphi)*cos(dn*argi(:nphi)))
71  zmnaxis(nreal) = zmnaxis(nreal) - sum(2*intgrate(:nphi)*
72  1 zaxis(:nphi)*sin(dn*argi(:nphi)))
73  ENDIF
74  END DO
75 
76  END SUBROUTINE fftrans