hmap_knot_eval_all_e Subroutine

public pure subroutine hmap_knot_eval_all_e(k, l, delta, R0, zeta, q1, q2, dX1_dt, dX2_dt, dX1_dz, dX2_dz, Jh, g_tt, g_tz, g_zz, Jh_dq1, g_tt_dq1, g_tz_dq1, g_zz_dq1, Jh_dq2, g_tt_dq2, g_tz_dq2, g_zz_dq2, g_t1, g_t2, g_z1, g_z2, Gh11, Gh22)

evaluate all quantities at one given point (elemental) NOTE: using calls to sf, not implemented/optimized for performance yet!

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: k

hmap parameters

real(kind=wp), intent(in) :: l

hmap parameters

real(kind=wp), intent(in) :: delta

hmap parameters

real(kind=wp), intent(in) :: R0

hmap parameters

real(kind=wp), intent(in) :: zeta

zeta position

real(kind=wp), intent(in) :: q1

solution variables q1,q2

real(kind=wp), intent(in) :: q2

solution variables q1,q2

real(kind=wp), intent(in) :: dX1_dt

theta derivative of solution variables q1,q2

real(kind=wp), intent(in) :: dX2_dt

theta derivative of solution variables q1,q2

real(kind=wp), intent(in) :: dX1_dz

zeta derivative of solution variables q1,q2

real(kind=wp), intent(in) :: dX2_dz

zeta derivative of solution variables q1,q2

real(kind=wp), intent(out) :: Jh

Jac,1/Jac,g_{ab} with a=theta/zeta b=theta/zeta

real(kind=wp), intent(out) :: g_tt

Jac,1/Jac,g_{ab} with a=theta/zeta b=theta/zeta

real(kind=wp), intent(out) :: g_tz

Jac,1/Jac,g_{ab} with a=theta/zeta b=theta/zeta

real(kind=wp), intent(out) :: g_zz

Jac,1/Jac,g_{ab} with a=theta/zeta b=theta/zeta

real(kind=wp), intent(out) :: Jh_dq1

and their variation vs q1

real(kind=wp), intent(out) :: g_tt_dq1

and their variation vs q1

real(kind=wp), intent(out) :: g_tz_dq1

and their variation vs q1

real(kind=wp), intent(out) :: g_zz_dq1

and their variation vs q1

real(kind=wp), intent(out) :: Jh_dq2

and their variation vs q2

real(kind=wp), intent(out) :: g_tt_dq2

and their variation vs q2

real(kind=wp), intent(out) :: g_tz_dq2

and their variation vs q2

real(kind=wp), intent(out) :: g_zz_dq2

and their variation vs q2

real(kind=wp), intent(out) :: g_t1

dq^{i}/dthetaG^{i1}, dq^{i}/dthetaG^{i2}, and dq^{i}/dzetaG^{i1}, dq^{i}/dzetaG^{i2} and G^{11},G^{22}

real(kind=wp), intent(out) :: g_t2

dq^{i}/dthetaG^{i1}, dq^{i}/dthetaG^{i2}, and dq^{i}/dzetaG^{i1}, dq^{i}/dzetaG^{i2} and G^{11},G^{22}

real(kind=wp), intent(out) :: g_z1

dq^{i}/dthetaG^{i1}, dq^{i}/dthetaG^{i2}, and dq^{i}/dzetaG^{i1}, dq^{i}/dzetaG^{i2} and G^{11},G^{22}

real(kind=wp), intent(out) :: g_z2

dq^{i}/dthetaG^{i1}, dq^{i}/dthetaG^{i2}, and dq^{i}/dzetaG^{i1}, dq^{i}/dzetaG^{i2} and G^{11},G^{22}

real(kind=wp), intent(out) :: Gh11

dq^{i}/dthetaG^{i1}, dq^{i}/dthetaG^{i2}, and dq^{i}/dzetaG^{i1}, dq^{i}/dzetaG^{i2} and G^{11},G^{22}

real(kind=wp), intent(out) :: Gh22

dq^{i}/dthetaG^{i1}, dq^{i}/dthetaG^{i2}, and dq^{i}/dzetaG^{i1}, dq^{i}/dzetaG^{i2} and G^{11},G^{22}


Called by

proc~~hmap_knot_eval_all_e~~CalledByGraph proc~hmap_knot_eval_all_e hmap_knot_eval_all_e proc~hmap_knot_eval_all t_hmap_knot%hmap_knot_eval_all proc~hmap_knot_eval_all->proc~hmap_knot_eval_all_e proc~hmap_knot_test hmap_knot_test proc~hmap_knot_test->proc~hmap_knot_eval_all proc~hmap_knot_init_params hmap_knot_init_params proc~hmap_knot_init_params->proc~hmap_knot_test interface~t_hmap_knot t_hmap_knot interface~t_hmap_knot->proc~hmap_knot_init_params proc~hmap_knot_init hmap_knot_init interface~t_hmap_knot->proc~hmap_knot_init proc~hmap_knot_init->proc~hmap_knot_init_params

Source Code

PURE SUBROUTINE hmap_knot_eval_all_e(k,l,delta,R0,zeta,q1,q2,dX1_dt,dX2_dt,dX1_dz,dX2_dz, &
                                       Jh,    g_tt,    g_tz,    g_zz,     &
                                       Jh_dq1,g_tt_dq1,g_tz_dq1,g_zz_dq1, &
                                       Jh_dq2,g_tt_dq2,g_tz_dq2,g_zz_dq2, &
                                       g_t1,g_t2,g_z1,g_z2,Gh11,Gh22  )
! MODULES
  IMPLICIT NONE
!-----------------------------------------------------------------------------------------------------------------------------------
! INPUT VARIABLES
  REAL(wp),INTENT(IN)  :: k,l,delta,R0 !! hmap parameters
  REAL(wp),INTENT(IN)  :: zeta        !! zeta position
  REAL(wp),INTENT(IN)  :: q1,q2       !! solution variables q1,q2
  REAL(wp),INTENT(IN)  :: dX1_dt,dX2_dt  !! theta derivative of solution variables q1,q2
  REAL(wp),INTENT(IN)  :: dX1_dz,dX2_dz  !!  zeta derivative of solution variables q1,q2
!-----------------------------------------------------------------------------------------------------------------------------------
! OUTPUT VARIABLES
  REAL(wp),INTENT(OUT) :: Jh,g_tt,g_tz,g_zz              !! Jac,1/Jac,g_{ab} with a=theta/zeta b=theta/zeta
  REAL(wp),INTENT(OUT) :: Jh_dq1,g_tt_dq1,g_tz_dq1,g_zz_dq1  !! and their variation vs q1
  REAL(wp),INTENT(OUT) :: Jh_dq2,g_tt_dq2,g_tz_dq2,g_zz_dq2  !! and their variation vs q2
  REAL(wp),INTENT(OUT) :: g_t1,g_t2,g_z1,g_z2,Gh11,Gh22  !! dq^{i}/dtheta*G^{i1}, dq^{i}/dtheta*G^{i2}, and dq^{i}/dzeta*G^{i1}, dq^{i}/dzeta*G^{i2} and G^{11},G^{22}
!-----------------------------------------------------------------------------------------------------------------------------------
! LOCAL VARIABLES
  REAL(wp) :: Rl,Gh31,Gh32,Gh33
!===================================================================================================================================
  Rl = R0 + delta*COS(l*zeta) + q1
  Jh = k*Rl
  Jh_dq1 = k
  Jh_dq2 = 0.0_wp
  Gh11 = 1.0_wp

  Gh22 = 1.0_wp
  Gh31 =-l*delta*SIN(l*zeta)
  Gh32 = l*delta*COS(l*zeta)
  Gh33 = (k * Rl)**2 + (l* delta)**2

  g_t1 = dX1_dt
  g_t2 = dX2_dt
  g_z1 = dX1_dz + Gh31
  g_z2 = dX2_dz + Gh32

  g_tt =   dX1_dt *  g_t1         +  dX2_dt *  g_t2
  g_tz =   dX1_dt *  g_z1         +  dX2_dt *  g_z2
  g_zz =   dX1_dz * (g_z1 + Gh31) +  dX2_dz * (g_z2 + Gh32)  + Gh33

  !Gh11/dq1 =0             Gh13/dq1 = 0
  !            Gh22/dq1 =0 Gh23/dq1 = 0
  !                        Gh33/dq1 = 2k**2 *Rl
  !Gh11/dq2 =0 Gh12/dq2 =0 Gh13/dq2 = 0
  !            Gh22/dq2 =0 Gh23/dq2 = 0
  !                        Gh33/dq2 = 0
  ! => g_t1 /dq1 =0, g_t1/dq2 =0, g_t2/dq1 =0, g_t2/dq2 =0
  ! => g_z1 /dq1 = 0, g_z1/dq2 =0, g_z2/dq1 =0, g_z2/dq2 =0

  g_tt_dq1 = 0.0_wp
  g_tz_dq1 = 0.0_wp
  g_zz_dq1 = 2.0_wp * k**2 * Rl

  g_tt_dq2 = 0.0_wp
  g_tz_dq2 = 0.0_wp
  g_zz_dq2 = 0.0_wp

END SUBROUTINE hmap_knot_eval_all_e