1 SUBROUTINE rt_hand_side_dphi(neq, phi, yin, fout)
8 INTEGER,
INTENT(IN):: neq
9 REAL(rprec),
INTENT(IN):: phi
10 REAL(rprec),
DIMENSION(neq),
INTENT(IN) :: yin
11 REAL(rprec),
DIMENSION(neq),
INTENT(OUT):: fout
13 REAL(KIND=rprec) :: s_eval, phi_eval, theta_eval,
18 s_eval = yin(2*i-1); theta_eval = yin(2*i)
20 CALL reset_coords(s_eval, theta_eval, phi_eval)
21 s_nb(i) = s_eval; phi_nb(i) = phi_eval
22 theta_nb(i) = theta_eval
25 CALL dbs3vd(0, 0, 0, isize, s_nb, theta_nb, phi_nb, ks, ku,
26 & kv, s_knots, u_knots, v_knots, is, itht, iphi, br_coef,
27 & br_s_nb, is_uniformx, is_uniformy, is_uniformz )
29 CALL dbs3vd(0, 0, 0, isize, s_nb, theta_nb, phi_nb, ks, ku,
30 & kv, s_knots, u_knots, v_knots, is, itht, iphi, bphi_coef,
31 & bphi_s_nb, is_uniformx, is_uniformy, is_uniformz )
33 CALL dbs3vd(0, 0, 0, isize, s_nb, theta_nb, phi_nb, ks, ku,
34 & kv, s_knots, u_knots, v_knots, is, itht, iphi, bz_coef,
35 & bz_s_nb, is_uniformx, is_uniformy, is_uniformz )
37 CALL dbs3vd(0, 0, 0, isize, s_nb, theta_nb, phi_nb, ks, ku,
38 & kv, s_knots, u_knots, v_knots, is, itht, iphi, r_coef,
39 & r_s_nb, is_uniformx, is_uniformy, is_uniformz )
42 s_eval = s_nb(i); theta_eval = theta_nb(i)
44 drds_s_nb(i) = dbs3dr(1, 0, 0, s_eval, theta_eval, phi_eval,
45 & ks, ku, kv, s_knots, u_knots, v_knots, is, itht, iphi, r_coef)
46 drdtht_s_nb(i) = dbs3dr(0, 1, 0, s_eval, theta_eval, phi_eval,
47 & ks, ku, kv, s_knots, u_knots, v_knots, is, itht, iphi, r_coef)
48 drdphi_s_nb(i) = dbs3dr(0, 0, 1, s_eval, theta_eval, phi_eval,
49 & ks, ku, kv, s_knots, u_knots, v_knots, is, itht, iphi, r_coef)
50 dzds_s_nb(i) = dbs3dr(1, 0, 0, s_eval, theta_eval, phi_eval,
51 & ks, ku, kv, s_knots, u_knots, v_knots, is, itht, iphi, z_coef)
52 dzdtht_s_nb(i) = dbs3dr(0, 1, 0, s_eval, theta_eval, phi_eval,
53 & ks, ku, kv, s_knots, u_knots, v_knots, is, itht, iphi, z_coef)
54 dzdphi_s_nb(i) = dbs3dr(0, 0, 1, s_eval, theta_eval, phi_eval,
55 & ks, ku, kv, s_knots, u_knots, v_knots, is, itht, iphi, z_coef)
59 jac = drds_s_nb(i)*dzdtht_s_nb(i) - drdtht_s_nb(i)*dzds_s_nb(i)
60 bs = r_s_nb(i)*(dzdtht_s_nb(i)*br_s_nb(i) -
61 & drdtht_s_nb(i)*bz_s_nb(i)) + bphi_s_nb(i)*(
62 & drdtht_s_nb(i)*dzdphi_s_nb(i) - drdphi_s_nb(i)*dzdtht_s_nb(i))
63 bu = r_s_nb(i)*(drds_s_nb(i)*bz_s_nb(i) -
64 & dzds_s_nb(i)*br_s_nb(i)) + bphi_s_nb(i)*(
65 & drdphi_s_nb(i)*dzds_s_nb(i) - drds_s_nb(i)*dzdphi_s_nb(i))
67 IF (bv == zero) stop
'BV becomes zero for some orbit!'
68 fout(2*i-1) = bs/(jac*bv)
69 fout(2*i) = bu/(jac*bv)
72 END SUBROUTINE rt_hand_side_dphi