V3FIT
aspectratio.f
1  FUNCTION aspectratio()
2  USE vmec_main
3  USE realspace
4  USE vmec_io
5  IMPLICIT NONE
6 C-----------------------------------------------
7 C L o c a l V a r i a b l e s
8 C-----------------------------------------------
9  INTEGER :: lk, l
10  REAL(rprec) :: rb, zub, pi, t1, aspectratio
11 C-----------------------------------------------
12 !
13 ! routine for computing aspect-ratio (independent of elongation):
14 ! A = <R>/<ab>**.5
15 !
16 ! WHERE pi <a>**2 = Area (toroidally averaged)
17 ! 2*pi * <R> * Area = Volume
18 ! Use integration by parts to compute as surface integral (Stoke''s theorem)
19 !
20 
21  pi = 4*atan(one)
22 
23 !
24 ! Compute Volume and Mean (toroidally averaged) Cross Section Area
25 !
26  volume_p = 0
27  cross_area_p = 0
28  DO lk = 1, nznt
29  l = ns*lk
30  rb = r1(l,0) + r1(l,1)
31  zub = zu(l,0) + zu(l,1)
32  t1 = rb*zub*wint(l)
33  volume_p = volume_p + rb*t1
34  cross_area_p = cross_area_p + t1
35  END DO
36 
37  volume_p = 2*pi*pi*abs(volume_p)
38  cross_area_p = 2*pi*abs(cross_area_p)
39 
40  rmajor_p = volume_p/(2*pi*cross_area_p)
41  aminor_p = sqrt(cross_area_p/pi)
42 
43  aspectratio = rmajor_p/aminor_p
44 
45  END FUNCTION aspectratio