evaluate sum_k q_vec^k * sum_ij (qL_i d/dq^k(G_ij(q_G)) qR_j) , k=1,2,3 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.0 for ds and dtheta and 1.0 for dzeta
NOTE: needs auxvar with do_2nd_der=.TRUE.!! not checked for performance reasons.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_axisNB), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(in) | :: | qL1 | |||
| real(kind=wp), | intent(in) | :: | qL2 | |||
| real(kind=wp), | intent(in) | :: | qL3 | |||
| real(kind=wp), | intent(in) | :: | q1 | |||
| real(kind=wp), | intent(in) | :: | q2 | |||
| real(kind=wp), | intent(in) | :: | qR1 | |||
| real(kind=wp), | intent(in) | :: | qR2 | |||
| real(kind=wp), | intent(in) | :: | qR3 | |||
| real(kind=wp), | intent(in) | :: | q1_vec | |||
| real(kind=wp), | intent(in) | :: | q2_vec | |||
| real(kind=wp), | intent(in) | :: | q3_vec | |||
| class(c_hmap_auxvar), | intent(in) | :: | xv |
FUNCTION hmap_axisNB_eval_gij_dq_aux(sf ,qL1,qL2,qL3,q1,q2,qR1,qR2,qR3,q1_vec,q2_vec,q3_vec,xv) RESULT(g_ab_dq) IMPLICIT NONE !----------------------------------------------------------------------------------------------------------------------------------- ! INPUT VARIABLES CLASS(t_hmap_axisNB), INTENT(IN) :: sf REAL(wp) , INTENT(IN) :: qL1,qL2,qL3 REAL(wp) , INTENT(IN) :: q1,q2 REAL(wp) , INTENT(IN) :: qR1,qR2,qR3 REAL(wp) , INTENT(IN) :: q1_vec,q2_vec,q3_vec CLASS(c_hmap_auxvar), INTENT(IN) :: xv !----------------------------------------------------------------------------------------------------------------------------------- ! OUTPUT VARIABLES REAL(wp) :: g_ab_dq !----------------------------------------------------------------------------------------------------------------------------------- ! LOCAL VARIABLES REAL(wp),DIMENSION(3) :: Tq,Tq_p REAL(wp) :: TqNp,TqBp !=================================================================================================================================== SELECT TYPE(xv); TYPE IS(t_hmap_axisNB_auxvar) Tq=(xv%T+q1*xv%Np+q2*xv%Bp) TqNp = SUM(Tq*xv%Np) TqBp = SUM(Tq*xv%Bp) Tq_p=(xv%Tp+q1*xv%Npp+q2*xv%Bpp) g_ab_dq = 2.0_wp*( q3_vec*( xv%NpN * (qL1*qR1) & + xv%BpB * (qL2*qR2) ) & +( q1_vec* TqNp & +q2_vec* TqBp & +q3_vec* SUM(Tq*Tq_p) )*(qL3*qR3) ) & + q3_vec* ( xv%BpN & + xv%NpB )* (qL1*qR2+qL2*qR1) & + ( q1_vec* xv%NpN & +q2_vec* xv%BpN & +q3_vec* ( TqNp & +SUM(xv%N *Tq_p) ) )*(qL1*qR3+qL3*qR1) & + ( q1_vec* xv%NpB & +q2_vec* xv%BpB & +q3_vec* ( TqBp & +SUM(xv%B *Tq_p) ) )*(qL2*qR3+qL3*qR2) END SELECT !type(xv) END FUNCTION hmap_axisNB_eval_gij_dq_aux