evaluate total derivative of the mapping sum k=1,3 (dx(1:3)/dq^k) q_vec^k, where dx(1:3)/dq^k, k=1,2,3 is evaluated at q_in=(X^1,X^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_dxdq( sf ,q_in,q_vec) RESULT(dxdq_qvec) ! 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) :: dxdq_qvec(3) !----------------------------------------------------------------------------------------------------------------------------------- ! LOCAL VARIABLES REAL(wp),DIMENSION(3) :: X0,X0p,X0pp,X0ppp,T,N,B REAL(wp) :: lp,absB,kappa,tau,sigma,Jh !=================================================================================================================================== ! |x | ! |y |= X0(zeta) + sigma*(N(zeta)*q1 + B(zeta)*q2) ! |z | ! dh/dq1 =sigma*N , dh/dq2=sigma*B ! dh/dq3 = l' [(1-sigma*kappa*q1)T + sigma*tau*(B*q1-N*q2) ] 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)) T=X0p/lp B=CROSS(X0p,X0pp) absB=SQRT(SUM(B*B)) kappa=absB/(lp**3) IF(kappa.LT.1.0e-8) & CALL abort(__STAMP__, & "hmap_frenet cannot evaluate frame at curvature < 1e-8 !",RealInfo=zeta*sf%nfp/TWOPI) sigma=sf%sigma(zeta) Jh=lp*(1.0_wp-sigma*kappa*q1) IF(Jh.LT.1.0e-12) & CALL abort(__STAMP__, & "hmap_frenet, evaluation outside curvature radius (sigma*q1 >= 1/(kappa))",RealInfo=zeta*sf%nfp/TWOPI) tau=SUM(X0ppp*B)/(absB**2) B=B/absB N=CROSS(B,T) dxdq_qvec(1:3)= sigma*(N*q_vec(1)+B*q_vec(2))+(Jh*T +sigma*lp*tau*(B*q1-N*q2))*q_vec(3) END ASSOCIATE !zeta END FUNCTION hmap_frenet_eval_dxdq