V3FIT
caprsh2.f
1  SUBROUTINE caprsh2(irho)
2 c--
3 c Evaluate CAPR, CAPS, and H2. Here, m is the poloidal mode number
4 c and n is the toroidal mode number/periods.
5 c--LAB--changed calculation of H2 to USE proper 1/b**2 Jacobian for
6 c flux surface average
7 C-----------------------------------------------
8 C M o d u l e s
9 C-----------------------------------------------
10  USE parambs
11  USE vmec0
12  IMPLICIT NONE
13 C-----------------------------------------------
14 C D u m m y A r g u m e n t s
15 C-----------------------------------------------
16  INTEGER irho
17 C-----------------------------------------------
18 C L o c a l P a r a m e t e r s
19 C-----------------------------------------------
20  REAL(rprec), PARAMETER :: zero = 0, one = 1
21 C-----------------------------------------------
22 C L o c a l V a r i a b l e s
23 C-----------------------------------------------
24  INTEGER :: nh, m, i, j
25  REAL(rprec) :: h2top_th, h2top_phi, den, qn
26  REAL(rprec) :: b2, h2top
27  REAL(rprec) :: den_tmp, sin_eps
28 C-----------------------------------------------------------------------
29 
30 c the following code was added to evaluate H2 LAB
31  h2top = zero
32  den = zero
33  DO i=1, nthetah
34  DO j=1, nzetah
35  h2top_th = zero
36  h2top_phi = zero
37  den_tmp = zero
38  DO nh = 0, nbuse ! evaluate i,j terms in num and denom of H2
39  qn = qsafety(irho)*periods*nh*zetasign
40  DO m = -mbuse, mbuse
41  sin_eps = amnfit(irho,m,nh)*
42  1 (sinmi(m,i)*cosnj(nh,j)+cosmi(m,i)*sinnj(nh,j))
43  h2top_th = h2top_th - m*sin_eps
44  h2top_phi = h2top_phi - qn*sin_eps
45  den_tmp = den_tmp - (m + qn)*sin_eps
46  ENDDO
47  ENDDO
48  b2 = bfield(i,j)**2
49  h2top = h2top + (h2top_th**2 - h2top_phi**2)/b2
50  den = den + den_tmp**2/b2
51  ENDDO
52  ENDDO
53 
54  IF (den .eq. zero) stop 'den = 0 in caprsh2'
55  h2(irho) = h2top/den
56  capr(irho) = (one - h2(irho))/(2*qsafety(irho))
57  caps(irho) = (one + h2(irho))/2
58 
59  END SUBROUTINE caprsh2