V3FIT
init_geometry.f90
1  MODULE init_geometry
2 
3  LOGICAL :: lflip
4 
5  CONTAINS
6 
7  SUBROUTINE flip_theta(rmn, zmn, lmn)
8  USE vmec_main
9  USE vmec_params, ONLY: ntmax, rcc, rss, zsc, zcs, &
10  zcc, zss, rsc, rcs
11 !-----------------------------------------------
12 ! D u m m y A r g u m e n t s
13 !-----------------------------------------------
14  REAL(rprec), DIMENSION(0:ntor,0:mpol1,ntmax), &
15  INTENT(inout) :: rmn, zmn
16  REAL(rprec), DIMENSION(0:ntor,0:mpol1,ntmax), &
17  INTENT(inout), OPTIONAL :: lmn
18 !-----------------------------------------------
19 ! L o c a l V a r i a b l e s
20 !-----------------------------------------------
21  INTEGER :: n, m
22  REAL(rprec) :: mul1
23  LOGICAL :: l_lmn
24 !-----------------------------------------------
25 !
26 ! FLIP THETA -> PI - THETA (INITIALLY, TO MAKE JACOBIAN < 0)
27 !
28  mul1=-1
29  l_lmn = PRESENT(lmn)
30  DO m=1,mpol1
31  DO n=0,ntor
32  rmn(n,m,rcc) = mul1*rmn(n,m,rcc)
33  zmn(n,m,zsc) =-mul1*zmn(n,m,zsc)
34  IF (l_lmn) lmn(n,m,zsc) =-mul1*lmn(n,m,zsc)
35  IF (lthreed) THEN
36  rmn(n,m,rss) =-mul1*rmn(n,m,rss)
37  zmn(n,m,zcs) = mul1*zmn(n,m,zcs)
38  IF (l_lmn) lmn(n,m,zcs) = mul1*lmn(n,m,zcs)
39  END IF
40  IF (lasym) THEN
41  rmn(n,m,rsc) =-mul1*rmn(n,m,rsc)
42  zmn(n,m,zcc) = mul1*zmn(n,m,zcc)
43  IF (l_lmn) lmn(n,m,zcc) = mul1*lmn(n,m,zcc)
44  IF (lthreed) THEN
45  rmn(n,m,rcs) = mul1*rmn(n,m,rcs)
46  zmn(n,m,zss) =-mul1*zmn(n,m,zss)
47  IF (l_lmn) lmn(n,m,zss) =-mul1*lmn(n,m,zss)
48  END IF
49  END IF
50  END DO
51 
52  mul1 = -mul1
53 
54  END DO
55 
56  END SUBROUTINE flip_theta
57 
58  END MODULE init_geometry