hmap_frenet_eval_gij Function

public function hmap_frenet_eval_gij(sf, qL_in, q_G, qR_in) result(g_ab)

evaluate sum_ij (qL_i (G_ij(q_G)) qR_j) ,, 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)

Return Value real(kind=wp)


Calls

proc~~hmap_frenet_eval_gij~~CallsGraph proc~hmap_frenet_eval_gij t_hmap_frenet%hmap_frenet_eval_gij interface~cross CROSS proc~hmap_frenet_eval_gij->interface~cross proc~hmap_frenet_eval_x0_fromrz t_hmap_frenet%hmap_frenet_eval_X0_fromRZ proc~hmap_frenet_eval_gij->proc~hmap_frenet_eval_x0_fromrz proc~hmap_frenet_sigma t_hmap_frenet%hmap_frenet_sigma proc~hmap_frenet_eval_gij->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~~CalledByGraph proc~hmap_frenet_eval_gij t_hmap_frenet%hmap_frenet_eval_gij proc~hmap_frenet_test hmap_frenet_test proc~hmap_frenet_test->proc~hmap_frenet_eval_gij 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( sf ,qL_in,q_G,qR_in) RESULT(g_ab)
!-----------------------------------------------------------------------------------------------------------------------------------
! INPUT VARIABLES
  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)
!-----------------------------------------------------------------------------------------------------------------------------------
! OUTPUT VARIABLES
  REAL(wp)                        :: g_ab
!-----------------------------------------------------------------------------------------------------------------------------------
! LOCAL VARIABLES
  REAL(wp),DIMENSION(3) :: X0,X0p,X0pp,X0ppp,Bloc
  REAL(wp)              :: lp,absB,kappa,tau,sigma
  REAL(wp)              :: Ga, Gb, Gc
!===================================================================================================================================
  ! A = -q2*l' * tau
  ! B =  q1*l' * tau
  ! C = Jh^2 + (l'*tau)^2(q1^2+q2^2)
  !                       |q1  |   |1   0   Ga|        |q1  |
  !q_i G_ij q_j = (dalpha |q2  | ) |0   1   Gb| (dbeta |q2  | )
  !                       |q3  |   |Ga  Gb  Gc|        |q3  |
  ASSOCIATE(q1=>q_G(1),q2=>q_G(2),zeta=>q_G(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)
  tau=SUM(X0ppp*Bloc)/(absB**2)

  Ga = -lp*tau*q2
  Gb =  lp*tau*q1
  Gc = (lp**2)*((1.0_wp-sigma*kappa*q1)**2+tau**2*(q1**2+q2**2))
  g_ab=      qL_in(1)*qR_in(1) &
            +qL_in(2)*qR_in(2) &
       + Gc* qL_in(3)*qR_in(3) &
       + Ga*(qL_in(1)*qR_in(3)+qL_in(3)*qR_in(1)) &
       + Gb*(qL_in(2)*qR_in(3)+qL_in(3)*qR_in(2))
  END ASSOCIATE
END FUNCTION hmap_frenet_eval_gij