evaluate all first derivatives dx(1:3)/dq^i, i=1,2,3 , 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(out), | DIMENSION(3) | :: | dx_dq1 | ||
| real(kind=wp), | intent(out), | DIMENSION(3) | :: | dx_dq2 | ||
| real(kind=wp), | intent(out), | DIMENSION(3) | :: | dx_dq3 |
SUBROUTINE hmap_frenet_get_dx_dqi( sf ,q_in,dx_dq1,dx_dq2,dx_dq3) IMPLICIT NONE !----------------------------------------------------------------------------------------------------------------------------------- ! INPUT VARIABLES CLASS(t_hmap_frenet), INTENT(IN) :: sf REAL(wp) , INTENT(IN) :: q_in(3) !----------------------------------------------------------------------------------------------------------------------------------- ! OUTPUT VARIABLES REAL(wp),DIMENSION(3),INTENT(OUT) :: dx_dq1,dx_dq2,dx_dq3 !----------------------------------------------------------------------------------------------------------------------------------- ! LOCAL VARIABLES REAL(wp),DIMENSION(3) :: X0,X0p,X0pp,X0ppp,T,N,B REAL(wp) :: lp,absB,kappa,tau,sigma !=================================================================================================================================== ! |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) sigma=sf%sigma(zeta) tau=SUM(X0ppp*B)/(absB**2) B=B/absB N=CROSS(B,T) dx_dq1(1:3)= sigma*N dx_dq2(1:3)= sigma*B dx_dq3(1:3)=lp*((1.0_wp-sigma*kappa*q1)*T +sigma*tau*(B*q1-N*q2)) END ASSOCIATE !zeta END SUBROUTINE hmap_frenet_get_dx_dqi