hmap_frenet_eval_gij_dq Function

public function hmap_frenet_eval_gij_dq(sf, qL_in, q_G, qR_in, q_vec) result(g_ab_dq)

evaluate sum_k=1,3 q_vec^k * sum_ij (qL_i d/dq^k(G_ij(q_G)) qR_j) , k=1,2 where qL=(dX^1/dalpha,dX^2/dalpha [,dzeta/dalpha]) and qR=(dX^1/dbeta,dX^2/dbeta [,dzeta/dbeta]) and where qL=(dX^1/dalpha,dX^2/dalpha ,dzeta/dalpha) and qR=(dX^1/dbeta,dX^2/dbeta ,dzeta/dbeta) and dzeta_dalpha then known to be either 0 of ds and dtheta and 1 for dzeta

Type Bound

t_hmap_frenet

Arguments

Type IntentOptional Attributes Name
class(t_hmap_frenet), intent(in) :: sf
real(kind=wp), intent(in) :: qL_in(3)
real(kind=wp), intent(in) :: q_G(3)
real(kind=wp), intent(in) :: qR_in(3)
real(kind=wp), intent(in) :: q_vec(3)

Return Value real(kind=wp)


Calls

proc~~hmap_frenet_eval_gij_dq~~CallsGraph proc~hmap_frenet_eval_gij_dq t_hmap_frenet%hmap_frenet_eval_gij_dq interface~cross CROSS proc~hmap_frenet_eval_gij_dq->interface~cross proc~hmap_frenet_eval_x0_fromrz t_hmap_frenet%hmap_frenet_eval_X0_fromRZ proc~hmap_frenet_eval_gij_dq->proc~hmap_frenet_eval_x0_fromrz proc~hmap_frenet_sigma t_hmap_frenet%hmap_frenet_sigma proc~hmap_frenet_eval_gij_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_gij_dq~~CalledByGraph proc~hmap_frenet_eval_gij_dq t_hmap_frenet%hmap_frenet_eval_gij_dq proc~hmap_frenet_test hmap_frenet_test proc~hmap_frenet_test->proc~hmap_frenet_eval_gij_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_gij_dq( sf ,qL_in,q_G,qR_in,q_vec) RESULT(g_ab_dq)
  CLASS(t_hmap_frenet), INTENT(IN) :: sf
  REAL(wp)            , INTENT(IN) :: qL_in(3)
  REAL(wp)            , INTENT(IN) :: q_G(3)
  REAL(wp)            , INTENT(IN) :: qR_in(3)
  REAL(wp)            , INTENT(IN) :: q_vec(3)
!-----------------------------------------------------------------------------------------------------------------------------------
! OUTPUT VARIABLES
  REAL(wp)                         :: g_ab_dq
!-----------------------------------------------------------------------------------------------------------------------------------
! LOCAL VARIABLES
  REAL(wp),DIMENSION(3) :: X0,X0p,X0pp,X0ppp,X0p4,Bloc
  REAL(wp)              :: lp,absB,kappa,tau,sigma
  REAL(wp)              :: lp_p,absB_p,kappa_p,tau_p
!===================================================================================================================================
  !                       |q1  |   |0  0        0           |        |q1  |
  !q_i G_ij q_j = (dalpha |q2  | ) |0  0      l'*tau        | (dbeta |q2  | )
  !                       |q3  |   |0  l'*tau  dG33/dq1     |        |q3  |
  ASSOCIATE(q1=>q_G(1),q2=>q_G(2),zeta=>q_G(3))
  CALL sf%eval_X0(zeta,X0,X0p,X0pp,X0ppp,X0p4=X0p4)
  lp=SQRT(SUM(X0p*X0p))
  Bloc=CROSS(X0p,X0pp)
  absB=SQRT(SUM(Bloc*Bloc))
  kappa=absB/(lp**3)
  sigma=sf%sigma(zeta)
  tau=SUM(X0ppp*Bloc)/(absB**2)
  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)

  !G13 = -lp*tau*q2
  !G23 =  lp*tau*q1
  !G33 = (lp**2)*((1.0_wp-sigma*kappa*q1)**2+tau**2*(q1**2+q2**2))

  g_ab_dq =-(lp*tau*q_vec(2)+(lp_p*tau+lp*tau_p)*q2*q_vec(3))*(qL_in(1)*qR_in(3)+ qL_in(3)*qR_in(1)) &
           +(lp*tau*q_vec(1)+(lp_p*tau+lp*tau_p)*q1*q_vec(3))*(qL_in(2)*qR_in(3)+ qL_in(3)*qR_in(2)) &
           +2.0_wp*(qL_in(3)*qR_in(3))*( (lp**2)*( q_vec(1)*((tau**2+kappa**2)*q1-sigma*kappa)       &
                                                  +q_vec(2)*  tau**2*q2                        )     &
                                        +q_vec(3)*( lp_p*lp* ( (1.0_wp-sigma*kappa*q1)**2+tau**2*(q1**2+q2**2)) &
                                                   +(lp**2)* ( (1.0_wp-sigma*kappa*q1)*(-sigma*kappa_p*q1)      &
                                                              +tau*tau_p*(q1**2+q2**2) ) ) )
  END ASSOCIATE
END FUNCTION hmap_frenet_eval_gij_dq