hmap_axisNB_eval_gij_dq_aux Function

public 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)

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 Bound

t_hmap_axisNB

Arguments

Type IntentOptional 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

Return Value real(kind=wp)


Source Code

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