V3FIT
reset_coords.f
1  SUBROUTINE reset_coords(s, theta, phi) ! Keeps orbit within volume where spline fits are valid
2  USE stel_kinds
3  USE stel_constants
4  USE spline3d_fit_coefs
5  IMPLICIT NONE
6  REAL(rprec), INTENT(INOUT) :: s, theta, phi
7 
8  IF(s < smin) s = smin
9  IF(s > smax) s = smax
10 
11  IF(theta < zero) THEN
12  DO
13  theta = theta + twopi
14  IF(theta > zero .AND. theta <= twopi) EXIT
15  ENDDO
16  ELSEIF(theta > twopi) THEN
17  DO
18  theta = theta - twopi
19  IF(theta > zero .AND. theta <= twopi) EXIT
20  ENDDO
21  ENDIF
22 
23  IF(phi < zero) THEN
24  DO
25  phi = phi + twopi
26  IF(phi > zero .AND. phi <= twopi) EXIT
27  ENDDO
28  ELSEIF(phi > twopi) THEN
29  DO
30  phi = phi - twopi
31  IF(phi > zero .AND. phi <= twopi) EXIT
32  ENDDO
33  ENDIF
34 
35  END SUBROUTINE reset_coords