calculate the auxiliary parameter for the given elliptic modulus
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=real32), | intent(in) | :: | pw02_k |
|
||
| real(kind=real32), | intent(in) | :: | comp_k |
|
||
| real(kind=real32), | intent(out) | :: | sqrt_comp_k |
|
||
| real(kind=real32), | intent(out) | :: | pw01_eps |
auxiliary parameter |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real32), | private | :: | pls1_comp_k |
|
elemental subroutine calculate_pw01_epsilon(pw02_k, comp_k, sqrt_comp_k, pw01_eps) !! calculate the auxiliary parameter \( \varepsilon \) !! for the given elliptic modulus \( k \) real(real32), intent(in) :: pw02_k !! \( { k }^{ 2 } \) real(real32), intent(in) :: comp_k !! \( { k }^{ \prime } \) real(real32), intent(out) :: sqrt_comp_k !! \( \sqrt{ { k }^{ \prime } } \) real(real32), intent(out) :: pw01_eps !! auxiliary parameter \( \varepsilon \) real(real32) :: pls1_comp_k !! \( 1 + { k }^{ \prime } \) pls1_comp_k = comp_k + 1.0_real32 sqrt_comp_k = sqrt(comp_k) pw01_eps = 0.5_real32 * pw02_k &! & / ( pls1_comp_k * ( pls1_comp_k + sqrt_comp_k + sqrt_comp_k ) ) end subroutine calculate_pw01_epsilon