evaluate all quantities at one given point (elemental) NOTE: using calls to sf, not implemented/optimized for performance yet!
| Type | Intent | Optional | 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} |
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