1 SUBROUTINE unique_boundary(rbc, zbs, rhobc, mmax, nmax,
8 INTEGER,
INTENT(in) :: nmax, mmax, mpol, ntor, mrho
9 REAL(rprec),
DIMENSION(-nmax:nmax,0:mmax),
INTENT(inout) ::
11 REAL(rprec),
DIMENSION(-nmax:nmax,0:mmax),
INTENT(inout) ::
16 INTEGER,
PARAMETER :: pexp = 4
17 REAL(rprec),
PARAMETER :: zero = 0, one = 1
21 INTEGER :: mcount, ncount, mpol_max
22 REAL(rprec),
DIMENSION(1:mpol) :: t1, t2
33 IF (mpol .gt. mmax) stop
'MPOL > MMAX in UNIQUE_BOUNDARY'
34 IF (ntor .gt. nmax) stop
'NTOR > NMAX in UNIQUE_BOUNDARY'
37 t1(mcount) = ( real(mcount-1,rprec)/
38 1 real(mcount,rprec) )**pexp
39 t2(mcount) = ( real(mcount+1,rprec)/
40 1 real(mcount,rprec) )**pexp
55 rhobc(ncount,0) = rhobc(-ncount,0)
65 DO ncount = -ntor, ntor
66 DO mcount = 1, mpol_max
67 rbc(ncount,mcount) = t1(mcount)*rhobc(ncount,mcount-1)
68 1 + t2(mcount)*rhobc(ncount,mcount+1)
69 zbs(ncount,mcount) = t1(mcount)*rhobc(ncount,mcount-1)
70 1 - t2(mcount)*rhobc(ncount,mcount+1)
73 DO mcount = mrho, mpol
74 rbc(ncount,mcount) = t1(mcount)*rhobc(ncount,mcount-1)
75 zbs(ncount,mcount) = rbc(ncount,mcount)
79 END SUBROUTINE unique_boundary