T_roE Function

public function T_roE(ro, e) result(T)

Solve e(ro,T) = e for T

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: ro
real(kind=dp), intent(in) :: e

Return Value real(kind=dp)


Calls

proc~~t_roe~~CallsGraph proc~t_roe T_roE proc~brent brent proc~t_roe->proc~brent proc~fill_e_tpart fill_e_Tpart proc~t_roe->proc~fill_e_tpart proc~fill_ff_terms fill_ff_terms proc~t_roe->proc~fill_ff_terms f f proc~brent->f proc~set_error set_error proc~brent->proc~set_error proc~zero zero proc~brent->proc~zero proc~fill_g_dreg_terms fill_g_Dreg_terms proc~fill_e_tpart->proc~fill_g_dreg_terms proc~zero->f

Called by

proc~~t_roe~~CalledByGraph proc~t_roe T_roE proc~solve_junction solve_junction proc~solve_junction->proc~t_roe proc~state_roe state_roE proc~state_roe->proc~t_roe proc~friction_source_term friction_source_term proc~friction_source_term->proc~state_roe proc~from_sol_to_prim_channel from_sol_to_prim_channel proc~from_sol_to_prim_channel->proc~state_roe proc~junction_resolution_from_and_to_ports Junction_resolution_from_and_to_ports proc~junction_resolution_from_and_to_ports->proc~solve_junction proc~sourceterms_notfriction_channel SourceTerms_NOTfriction_channel proc~sourceterms_notfriction_channel->proc~state_roe proc~main_loop main_loop proc~main_loop->proc~friction_source_term proc~main_loop->proc~from_sol_to_prim_channel proc~main_loop->proc~junction_resolution_from_and_to_ports proc~source_term_definition_channel source_term_definition_channel proc~main_loop->proc~source_term_definition_channel proc~full_physics_definition_channel full_physics_definition_channel proc~main_loop->proc~full_physics_definition_channel proc~source_term_definition_channel->proc~sourceterms_notfriction_channel proc~full_physics_definition_channel->proc~source_term_definition_channel program~reims_p reims_p program~reims_p->proc~main_loop

Source Code

function T_roE(ro, e) result(T)
    !! Solve e(ro,T) = e for T
    real(dp), intent(in) :: ro, e
    real(dp) :: T

    type(T_from_roE_obj_t) :: obj
    type(ThArrays_t) :: ThAr
    real(dp) :: ro_Arp, e_Arp
    real(dp) :: Funct, DerFunct
    logical  :: converged
    integer  :: ite

    ro_Arp = ro/(MolMass*1000.0_dp)
    e_Arp  = e*MolMass*1.0e-3_dp
    obj%ro = ro_Arp
    obj%e  = e_Arp

    call fill_ff_terms(ro_Arp, ThAr)
    ThAr%hh = ro_Arp * ThAr%ff

    T = Newton_T_guess0
    converged = .false.
    do ite = 1, Newton_MaxIte
        call fill_e_Tpart(T, ThAr)
        Funct = e_Arp - (cp0_Arp-R_cte_gaz_Arp)*T - q0_Arp - sum(ThAr%gg*ThAr%hh)/ro_Arp
        if (abs(Funct) <= Newton_FunctTol) then
            converged = .true.
            exit
        endif
        DerFunct = -(cp0_Arp-R_cte_gaz_Arp) - sum(ThAr%Dergg*ThAr%hh)/ro_Arp
        T = T - Funct/DerFunct
    enddo
    if (converged .and. T >= T_He_min .and. T <= T_He_max) return
    T = brent(obj, T_He_min, T_He_max, 'T_roE')
end function T_roE