hmap_frenet_eval_Jh_dq Function

public function hmap_frenet_eval_Jh_dq(sf, q_in, q_vec) result(Jh_dq)

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 Bound

t_hmap_frenet

Arguments

Type IntentOptional 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)

Return Value real(kind=wp)


Calls

proc~~hmap_frenet_eval_jh_dq~~CallsGraph proc~hmap_frenet_eval_jh_dq t_hmap_frenet%hmap_frenet_eval_Jh_dq interface~cross CROSS proc~hmap_frenet_eval_jh_dq->interface~cross proc~hmap_frenet_eval_x0_fromrz t_hmap_frenet%hmap_frenet_eval_X0_fromRZ proc~hmap_frenet_eval_jh_dq->proc~hmap_frenet_eval_x0_fromrz proc~hmap_frenet_sigma t_hmap_frenet%hmap_frenet_sigma proc~hmap_frenet_eval_jh_dq->proc~hmap_frenet_sigma interface~cross->interface~cross proc~eval_fourier1d eval_fourier1d proc~hmap_frenet_eval_x0_fromrz->proc~eval_fourier1d

Called by

proc~~hmap_frenet_eval_jh_dq~~CalledByGraph proc~hmap_frenet_eval_jh_dq t_hmap_frenet%hmap_frenet_eval_Jh_dq proc~hmap_frenet_test hmap_frenet_test proc~hmap_frenet_test->proc~hmap_frenet_eval_jh_dq proc~hmap_frenet_init_params hmap_frenet_init_params proc~hmap_frenet_init_params->proc~hmap_frenet_test interface~t_hmap_frenet t_hmap_frenet interface~t_hmap_frenet->proc~hmap_frenet_init_params proc~hmap_frenet_init hmap_frenet_init interface~t_hmap_frenet->proc~hmap_frenet_init proc~hmap_frenet_init->proc~hmap_frenet_init_params

Source Code

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