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 | Intent | Optional | 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) |
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