evaluate derivative of Jacobian of mapping h: sum_k q_vec^k * dJ_h/dq^k, k=1,2,3 at q=(q^1,q^2,zeta)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(in) | :: | q_in(3) | |||
| real(kind=wp), | intent(in) | :: | q_vec(3) |
FUNCTION hmap_frenet_eval_Jh_dq( sf ,q_in,q_vec) RESULT(Jh_dq) ! MODULES IMPLICIT NONE !----------------------------------------------------------------------------------------------------------------------------------- ! INPUT VARIABLES CLASS(t_hmap_frenet), INTENT(IN) :: sf REAL(wp) , INTENT(IN) :: q_in(3) REAL(wp) , INTENT(IN) :: q_vec(3) !----------------------------------------------------------------------------------------------------------------------------------- ! OUTPUT VARIABLES REAL(wp) :: Jh_dq !----------------------------------------------------------------------------------------------------------------------------------- REAL(wp),DIMENSION(3) :: X0,X0p,X0pp,X0ppp,Bloc REAL(wp) :: lp,absB,kappa,sigma REAL(wp) :: lp_p,absB_p,kappa_p !=================================================================================================================================== ! |x | ! |y |= X0(zeta) + sigma*(N(zeta)*q1 + B(zeta)*q2) ! |z | ASSOCIATE(q1=>q_in(1),q2=>q_in(2),zeta=>q_in(3)) CALL sf%eval_X0(zeta,X0,X0p,X0pp,X0ppp) lp=SQRT(SUM(X0p*X0p)) Bloc=CROSS(X0p,X0pp) absB=SQRT(SUM(Bloc*Bloc)) kappa=absB/(lp**3) sigma=sf%sigma(zeta) lp_p = SUM(X0pp*X0p) / lp absB_p = SUM(Bloc*CROSS(X0p, X0ppp)) / absB kappa_p = (absB_p*lp -3*absB * lp_p) / (lp**4) !tau_p = (SUM(X0p4*Bloc)*absB -2*SUM(X0ppp*Bloc)*absB_p) / (absB**3) Jh_dq=-lp*sigma*kappa*q_vec(1) + (lp_p-sigma*q1*(lp_p*kappa+lp*kappa_p))*q_vec(3) !dsigma/dzeta is a dirac at kappa=0, so it is not evaluated END ASSOCIATE !zeta END FUNCTION hmap_frenet_eval_Jh_dq