V3FIT
convert_boundary_PG.f
1  SUBROUTINE convert_boundary_pg(rbc, zbs, rhobc, mpol, ntor)
2  USE stel_kinds
3  IMPLICIT NONE
4 !-----------------------------------------------
5 ! D u m m y A r g u m e n t s
6 !-----------------------------------------------
7  INTEGER, INTENT(in) :: mpol, ntor
8  REAL(rprec), DIMENSION(-ntor:ntor,0:mpol) ::
9  1 rbc, zbs
10  REAL(rprec), DIMENSION(-ntor:ntor,-mpol:mpol), INTENT(out) ::
11  1 rhobc
12  REAL(rprec) :: rnorm, r00
13 !-----------------------------------------------
14 ! L o c a l P a r a m e t e r s
15 !-----------------------------------------------
16  INTEGER, PARAMETER :: pexp = 4
17  INTEGER :: mcount, ncount, m_bdy, n_bdy
18  REAL(rprec), PARAMETER :: p25 = 0.25_dp, p50 = 0.50_dp,
19  1 zero = 0, one = 1
20 !-----------------------------------------------
21 !
22 ! GIVEN A BOUNDARY REPRESENTATION OF THE FORM
23 !
24 ! R = RBC(n,m)*COS(mu-nv)
25 ! Z = ZBS(n,m)*SIN(mu-nv)
26 !
27 !
28 ! CONVERT TO GARABEDIAN DELTA REPRESENTATION
29 !
30  m_bdy = 0
31  n_bdy = 0
32  DO mcount = 1, mpol
33  DO ncount = -ntor, ntor
34  IF (rbc(ncount,mcount).ne.zero .or.
35  1 zbs(ncount,mcount).ne.zero) THEN
36  m_bdy = max(m_bdy,mcount)
37  n_bdy = max(n_bdy,abs(ncount))
38  END IF
39  END DO
40  END DO
41 
42  IF(m_bdy+1 .gt. mpol) THEN
43  WRITE(6,*) "In Conversion to Delta-mn, mpol too small"
44  stop
45  END IF
46 
47  rhobc = zero
48  r00 = rbc(0,0)
49  rnorm = rbc(0,1)+zbs(0,1)
50  rnorm = 2/rnorm
51 
52  DO mcount = 0, mpol
53  DO ncount = -ntor, ntor
54  rbc(ncount,mcount)=rbc(ncount,mcount)*rnorm
55  zbs(ncount,mcount)=zbs(ncount,mcount)*rnorm
56  END DO
57  END DO
58 
59  DO mcount = 0, m_bdy
60  DO ncount = -n_bdy, n_bdy
61  rhobc(ncount,mcount+1) =
62  > 0.5*(rbc(ncount,mcount)-zbs(ncount,mcount))
63  > + rhobc(ncount,mcount+1)
64  rhobc(-ncount,-mcount+1) =
65  > 0.5*(rbc(ncount,mcount)+zbs(ncount,mcount))
66  > + rhobc(-ncount,-mcount+1)
67  END DO
68  END DO
69 !
70 ! restore r(0,0) and keep fixed
71 !
72  rhobc(0,0) = r00
73 
74  END SUBROUTINE convert_boundary_pg