1 SUBROUTINE bongrid(irho, ians)
21 REAL(rprec),
PARAMETER :: zero = 0, one = 1
25 INTEGER :: i, j, nh, m, mbuse1, imax, jmax
26 INTEGER,
SAVE :: ihere = 0
28 REAL(rprec),
SAVE :: twopi, dth, dzetah, dthm, dzetahm
33 IF (ihere .eq. 0)
THEN
47 theta(i) = (i - 1)*dth
50 zetah(j) = (j - 1)*dzetah
55 dthm = dth/(nthetahm-1)
56 dzetahm = dzetah/(nzetahm-1)
62 sinnj(nh,j) = sin(zetasign*nh*zetah(j))
63 cosnj(nh,j) = cos(zetasign*nh*zetah(j))
68 sinmi(m,i) = sin(m*theta(i))
69 cosmi(m,i) = cos(m*theta(i))
83 b = b + amnfit(irho,m,nh)*
84 1 (cosmi(m,i)*cosnj(nh,j)-sinmi(m,i)*sinnj(nh,j))
93 ij_max = maxloc(bfield)
101 thetam(1) = theta(imax) - dth/2
102 zetahm(1) = zetah(jmax) - dzetah/2
105 thetam(i) = thetam(i-1) + dthm
108 zetahm(j) = zetahm(j-1) + dzetahm
115 sinnjm(nh,j) = sin(zetasign*nh*zetahm(j))
116 cosnjm(nh,j) = cos(zetasign*nh*zetahm(j))
121 sinmim(m,i) = sin(m*thetam(i))
122 cosmim(m,i) = cos(m*thetam(i))
133 b = b + amnfit(irho,m,nh)*
134 1 (cosmim(m,i)*cosnjm(nh,j)-sinmim(m,i)*sinnjm(nh,j))
137 bfieldm(i,j) = abs(b)
145 ij_max = maxloc(bfieldm)
148 thetamax(irho) = thetam(imax)
149 zetahmax(irho) = zetahm(jmax)
150 bmax1(irho) = bfieldm(imax,jmax)
156 gsqrt_b(:nthetah,:nzetah) = one/bfield(:nthetah,:nzetah)**2
157 sum_gsqrt_b = sum(gsqrt_b)
163 b2avg(irho) = sum(bfield**2 * gsqrt_b)/sum_gsqrt_b
167 bfield(:nthetah,:nzetah) = bfield(:nthetah,:nzetah)/bmax1(irho)
168 WHERE(bfield .gt. one) bfield = one
178 drho = (rhoar(2)**2 - rhoar(1)**2)/(2*rhoar(1))
182 ELSEIF(irho .eq. irup)
THEN
183 drho = 0.5_dp*(d_rho(irho)+d_rho(irho-1))
188 drho = d_rho(irho) + 0.5_dp*(d_rho(irho+1)+d_rho(irho-1))
193 IF (irho .ne. 1 .and. irho .ne. irup) temperho1 =
194 1 (tempe1(irho+1)-tempe1(irho-1))/drho
195 IF (irho .eq. 1) temperho1 = (tempe1(irho+1)-tempe1(irho))/drho
196 IF (irho .eq. irup) temperho1=(tempe1(irho)-tempe1(irho-1))/drho
200 IF (irho .ne. 1 .and. irho .ne. irup) tempirho1 =
201 1 (tempi1(irho+1)-tempi1(irho-1))/drho
202 IF (irho .eq. 1)tempirho1 = (tempi1(irho+1)-tempi1(irho))/drho
203 IF (irho .eq. irup)temperho1=(tempi1(irho)-tempi1(irho-1))/drho
207 IF (irho .ne. 1 .and. irho .ne. irup) densrho1 =
208 1 (dense(irho+1)-dense(irho-1))/drho
209 IF (irho .eq. 1) densrho1 = (dense(irho+1)-dense(irho))/drho
210 IF (irho .eq. irup) densrho1 = (dense(irho)-dense(irho-1))/drho
215 IF (mbuse > 5) mbuse1 = 5
217 WRITE (ians, 400, advance=
'no')
219 DO m = -mbuse1, mbuse1
220 WRITE (ians, 402, advance=
'no') m
222 402
FORMAT(
' m=',i2,
' ')
223 WRITE (ians,
'(a1)')
' '
226 WRITE (ians, 406) nh, (amnfit(irho,m,nh),m=(-mbuse1),mbuse1)
228 406
FORMAT(1x,i2,1p,13e10.3)
232 CALL tok_fraction(fttok(irho))
234 fptok(irho) = one - fttok(irho)
236 END SUBROUTINE bongrid