public function hmap_frenet_eval_gij(sf, qL_in, q_G, qR_in) result(g_ab)
evaluate sum_ij (qL_i (G_ij(q_G)) qR_j) ,,
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 of ds and dtheta and 1 for dzeta
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Source Code
FUNCTION hmap_frenet_eval_gij(sf,qL_in,q_G,qR_in)RESULT(g_ab)!-----------------------------------------------------------------------------------------------------------------------------------! INPUT VARIABLESCLASS(t_hmap_frenet),INTENT(IN)::sfREAL(wp),INTENT(IN)::qL_in(3)REAL(wp),INTENT(IN)::q_G(3)REAL(wp),INTENT(IN)::qR_in(3)!-----------------------------------------------------------------------------------------------------------------------------------! OUTPUT VARIABLESREAL(wp)::g_ab!-----------------------------------------------------------------------------------------------------------------------------------! LOCAL VARIABLESREAL(wp),DIMENSION(3)::X0,X0p,X0pp,X0ppp,BlocREAL(wp)::lp,absB,kappa,tau,sigmaREAL(wp)::Ga,Gb,Gc!===================================================================================================================================! A = -q2*l' * tau! B = q1*l' * tau! C = Jh^2 + (l'*tau)^2(q1^2+q2^2)! |q1 | |1 0 Ga| |q1 |!q_i G_ij q_j = (dalpha |q2 | ) |0 1 Gb| (dbeta |q2 | )! |q3 | |Ga Gb Gc| |q3 |ASSOCIATE(q1=>q_G(1),q2=>q_G(2),zeta=>q_G(3))CALL sf%eval_X0(zeta,X0,X0p,X0pp,X0ppp)lp=SQRT(SUM(X0p*X0p))Bloc=CROSS(X0p,X0pp)absB=SQRT(SUM(Bloc*Bloc))kappa=absB/(lp**3)sigma=sf%sigma(zeta)tau=SUM(X0ppp*Bloc)/(absB**2)Ga=-lp*tau*q2Gb=lp*tau*q1Gc=(lp**2)*((1.0_wp-sigma*kappa*q1)**2+tau**2*(q1**2+q2**2))g_ab=qL_in(1)*qR_in(1)&+qL_in(2)*qR_in(2)&+Gc*qL_in(3)*qR_in(3)&+Ga*(qL_in(1)*qR_in(3)+qL_in(3)*qR_in(1))&+Gb*(qL_in(2)*qR_in(3)+qL_in(3)*qR_in(2))END ASSOCIATEEND FUNCTION hmap_frenet_eval_gij