hmap_axisNB_eval_gij_dq Function

public function hmap_axisNB_eval_gij_dq(sf, qL_in, q_G, qR_in, q_vec) 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

Type Bound

t_hmap_axisNB

Arguments

Type IntentOptional Attributes Name
class(t_hmap_axisNB), intent(in) :: sf
real(kind=wp), intent(in) :: qL_in(3)
real(kind=wp), intent(in) :: q_G(3)
real(kind=wp), intent(in) :: qR_in(3)
real(kind=wp), intent(in) :: q_vec(3)

Return Value real(kind=wp)


Calls

proc~~hmap_axisnb_eval_gij_dq~~CallsGraph proc~hmap_axisnb_eval_gij_dq t_hmap_axisNB%hmap_axisNB_eval_gij_dq proc~hmap_axisnb_eval_tnb_hat t_hmap_axisNB%hmap_axisNB_eval_TNB_hat proc~hmap_axisnb_eval_gij_dq->proc~hmap_axisnb_eval_tnb_hat dgemv dgemv proc~hmap_axisnb_eval_tnb_hat->dgemv proc~fbase_eval t_fBase%fBase_eval proc~hmap_axisnb_eval_tnb_hat->proc~fbase_eval proc~fbase_eval_xn t_fBase%fBase_eval_xn proc~fbase_eval->proc~fbase_eval_xn

Called by

proc~~hmap_axisnb_eval_gij_dq~~CalledByGraph proc~hmap_axisnb_eval_gij_dq t_hmap_axisNB%hmap_axisNB_eval_gij_dq proc~hmap_axisnb_test hmap_axisNB_test proc~hmap_axisnb_test->proc~hmap_axisnb_eval_gij_dq proc~hmap_axisnb_init_params hmap_axisNB_init_params proc~hmap_axisnb_init_params->proc~hmap_axisnb_test interface~t_hmap_axisnb t_hmap_axisNB interface~t_hmap_axisnb->proc~hmap_axisnb_init_params proc~hmap_axisnb_init hmap_axisNB_init interface~t_hmap_axisnb->proc~hmap_axisnb_init proc~hmap_axisnb_init->proc~hmap_axisnb_init_params

Source Code

FUNCTION hmap_axisNB_eval_gij_dq( sf ,qL_in,q_G,qR_in,q_vec) RESULT(g_ab_dq)
  CLASS(t_hmap_axisNB), INTENT(IN) :: sf
  REAL(wp)            , INTENT(IN) :: qL_in(3)
  REAL(wp)            , INTENT(IN) :: q_G(3)
  REAL(wp)            , INTENT(IN) :: qR_in(3)
  REAL(wp)            , INTENT(IN) :: q_vec(3)
!-----------------------------------------------------------------------------------------------------------------------------------
! OUTPUT VARIABLES
  REAL(wp)                         :: g_ab_dq
!-----------------------------------------------------------------------------------------------------------------------------------
! LOCAL VARIABLES
  REAL(wp),DIMENSION(3) :: X0,T,N,B,Np,Bp,Tq,Tq_p,Tp,Npp,Bpp
  REAL(wp) :: NpN,NpB,BpN,BpB,TqNp,TqBp
!===================================================================================================================================
  !                            |q1  |   |0     0      N'.N  |        |q1  |
  !q_i dG_ij/dq1 q_j = (dalpha |q2  | ) |0     0      N'.B  | (dbeta |q2  | )
  !                            |q3  |   |N.N'  B.N'  2N'.Tq |        |q3  |
  ASSOCIATE(q1=>q_G(1),q2=>q_G(2),zeta=>q_G(3))
  CALL sf%eval_TNB(zeta,X0,T,N,B,Np,Bp,Tp=Tp,Npp=Npp,Bpp=Bpp)
  NpN=SUM(Np*N); BpN=SUM(Bp*N); NpB=SUM(Np*B); BpB=SUM(Bp*B)

  Tq=(T+q1*Np+q2*Bp)
  TqNp = SUM(Tq*Np)
  TqBp = SUM(Tq*Bp)

  Tq_p=(Tp+q1*Npp+q2*Bpp) !d/dzeta Tq

  g_ab_dq = 2.0_wp*(   q_vec(3)*(       NpN       *  (qL_in(1)*qR_in(1)) &
                                 +      BpB       *  (qL_in(2)*qR_in(2)) )                &
                    +( q_vec(1)*        TqNp       &
                      +q_vec(2)*        TqBp       &
                      +q_vec(3)*    SUM(Tq*Tq_p)   )*(qL_in(3)*qR_in(3))                  ) &
                   +   q_vec(3)*  (     BpN      &
                                   +    NpB      )*  (qL_in(1)*qR_in(2)+qL_in(2)*qR_in(1))  &
                   + ( q_vec(1)*        NpN        &
                      +q_vec(2)*        BpN        &
                      +q_vec(3)*  (     TqNp     &
                                   +SUM(N *Tq_p) ) )*(qL_in(1)*qR_in(3)+qL_in(3)*qR_in(1))  &
                   + ( q_vec(1)*        NpB        &
                      +q_vec(2)*        BpB        &
                      +q_vec(3)*  (     TqBp     &
                                   +SUM(B *Tq_p) ) )*(qL_in(2)*qR_in(3)+qL_in(3)*qR_in(2))

  END ASSOCIATE
END FUNCTION hmap_axisNB_eval_gij_dq