evaluate all second derivatives d^2x(1:3)/(dq^i dq^j), i,j=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(out), | DIMENSION(3) | :: | ddx_dq11 | ||
| real(kind=wp), | intent(out), | DIMENSION(3) | :: | ddx_dq12 | ||
| real(kind=wp), | intent(out), | DIMENSION(3) | :: | ddx_dq13 | ||
| real(kind=wp), | intent(out), | DIMENSION(3) | :: | ddx_dq22 | ||
| real(kind=wp), | intent(out), | DIMENSION(3) | :: | ddx_dq23 | ||
| real(kind=wp), | intent(out), | DIMENSION(3) | :: | ddx_dq33 |
SUBROUTINE hmap_frenet_get_ddx_dqij( sf ,q_in,ddx_dq11,ddx_dq12,ddx_dq13,ddx_dq22,ddx_dq23,ddx_dq33) 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) :: ddx_dq11,ddx_dq12,ddx_dq13,ddx_dq22,ddx_dq23,ddx_dq33 !----------------------------------------------------------------------------------------------------------------------------------- REAL(wp),DIMENSION(3) :: X0,X0p,X0pp,X0ppp,X0p4,Bloc,T,N,B REAL(wp) :: lp,absB,kappa,tau,sigma REAL(wp) :: lp_p,absB_p,kappa_p,tau_p !=================================================================================================================================== ! |x | ! |y |= X0(zeta) + sigma*(N(zeta)*q1 + B(zeta)*q2) ! |z | ASSOCIATE(q1=>q_in(1),q2=>q_in(2),zeta=>q_in(3)) CALL sf%eval_X0(zeta,X0,X0p,X0pp,X0ppp,X0p4=X0p4) lp=SQRT(SUM(X0p*X0p)) T=X0p/lp 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) B=Bloc/absB N=CROSS(B,T) ddx_dq11=0.0_wp ddx_dq12=0.0_wp ddx_dq13=sigma*lp*(-kappa*T +tau*B) ddx_dq22=0.0_wp ddx_dq23=-sigma*lp*tau*N ddx_dq33(1:3)= lp_p*((1.0_wp-sigma*kappa*q1)*T +sigma*tau*(B*q1-N*q2)) & +lp*sigma*( -kappa_p*q1*T +tau_p*(B*q1-N*q2) & +lp*( (1.0_wp-sigma*kappa*q1)*(kappa*N) & +sigma*tau*((-tau*N)*q1-((-kappa*T +tau*B))*q2)) ) END ASSOCIATE END SUBROUTINE hmap_frenet_get_ddx_dqij