| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(zhao_params_type), | intent(in) | :: | p | |||
| real(kind=dp), | intent(in) | :: | phi0_v | |||
| real(kind=dp), | intent(in) | :: | phi_m_v | |||
| real(kind=dp), | intent(in) | :: | n_swe_inf_m3 |
real(dp) function type_a_e2_sum_at_infinity(p, phi0_v, phi_m_v, n_swe_inf_m3) result(e2_sum) type(zhao_params_type), intent(in) :: p real(dp), intent(in) :: phi0_v, phi_m_v, n_swe_inf_m3 real(dp) :: phi, s_swe, s_phe, e2_swe_f, e2_swe_r, e2_phe_f, e2_swi, arg_phi, arg_m if (abs(p%u) <= 1.0d-12) then e2_sum = 1.0d30 return end if phi = 0.0d0 s_swe = sqrt(max(0.0d0, (phi - phi_m_v)/p%t_swe_ev)) s_phe = sqrt(max(0.0d0, (phi - phi_m_v)/p%t_phe_ev)) e2_swe_f = (p%t_swe_ev/p%t_phe_ev)*(n_swe_inf_m3/p%n_phe_ref_m3)*( & exp(phi/p%t_swe_ev)*(1.0d0 - erf(s_swe - p%u)) - & exp(phi_m_v/p%t_swe_ev)*(1.0d0 - erf(-p%u)) + & (1.0d0/(sqrt(pi)*p%u))*exp(phi_m_v/p%t_swe_ev - p%u*p%u)*(exp(2.0d0*p%u*s_swe) - 1.0d0) & ) e2_swe_r = 2.0d0*(p%t_swe_ev/p%t_phe_ev)*(n_swe_inf_m3/p%n_phe_ref_m3)*( & exp(phi/p%t_swe_ev)*(erf(s_swe - p%u) + erf(p%u)) - & (1.0d0/(sqrt(pi)*p%u))*exp(phi_m_v/p%t_swe_ev - p%u*p%u)*(exp(2.0d0*p%u*s_swe) - 1.0d0) & ) e2_phe_f = (p%n_phe0_m3/p%n_phe_ref_m3)*( & exp((phi - phi0_v)/p%t_phe_ev)*(1.0d0 - erf(s_phe)) - & exp((phi_m_v - phi0_v)/p%t_phe_ev)*(1.0d0 - 2.0d0*s_phe/sqrt(pi)) & ) arg_phi = 1.0d0 - 2.0d0*phi/(p%t_swe_ev*p%mach*p%mach) arg_m = 1.0d0 - 2.0d0*phi_m_v/(p%t_swe_ev*p%mach*p%mach) if (arg_phi <= 0.0d0 .or. arg_m <= 0.0d0) then e2_sum = 1.0d30 return end if e2_swi = 2.0d0*(p%t_swe_ev/p%t_phe_ev)*(p%n_swi_inf_m3/p%n_phe_ref_m3)*p%mach*p%mach*( & sqrt(arg_phi) - sqrt(arg_m) & ) e2_sum = e2_swe_f + e2_swe_r + e2_phe_f + e2_swi end function type_a_e2_sum_at_infinity