hmap_RZ_get_dx_dqi Subroutine

public subroutine hmap_RZ_get_dx_dqi(sf, q_in, dx_dq1, dx_dq2, dx_dq3)

evaluate all first derivatives dx(1:3)/dq^i, i=1,2,3 , at q_in=(X^1,X^2,zeta),

Type Bound

t_hmap_RZ

Arguments

Type IntentOptional Attributes Name
class(t_hmap_RZ), intent(in) :: sf
real(kind=wp), intent(in) :: q_in(3)
real(kind=wp), intent(out) :: dx_dq1(3)
real(kind=wp), intent(out) :: dx_dq2(3)
real(kind=wp), intent(out) :: dx_dq3(3)

Source Code

SUBROUTINE hmap_RZ_get_dx_dqi( sf ,q_in,dx_dq1,dx_dq2,dx_dq3)
  IMPLICIT NONE
  !-----------------------------------------------------------------------------------------------------------------------------------
  ! INPUT VARIABLES
  CLASS(t_hmap_RZ), INTENT(IN) :: sf
  REAL(wp)        , INTENT(IN) :: q_in(3)
  !-----------------------------------------------------------------------------------------------------------------------------------
  ! OUTPUT VARIABLES
  REAL(wp)     , INTENT(OUT) :: dx_dq1(3)
  REAL(wp)     , INTENT(OUT) :: dx_dq2(3)
  REAL(wp)     , INTENT(OUT) :: dx_dq3(3)
  ! LOCAL VARIABLES
  REAL(wp) :: coszeta,sinzeta
  !===================================================================================================================================
  !  dxdq_qvec=
  ! |  cos(zeta)  0  -q^1 sin(zeta) | |q_vec(1) |
  ! | -sin(zeta)  0  -q^1 cos(zeta) | |q_vec(2) |
  ! |     0       1        0        | |q_vec(3) |

  sinzeta=SIN(q_in(3))
  coszeta=COS(q_in(3))
  dx_dq1(1:3) = (/  coszeta,-sinzeta, 0.0_wp /)
  dx_dq2(1:3) = (/  0.0_wp ,  0.0_wp, 1.0_wp /)
  dx_dq3(1:3) = (/ -q_in(1)*sinzeta, -q_in(1)*coszeta, 0.0_wp /)

END SUBROUTINE hmap_RZ_get_dx_dqi