droeint_droP Function

public function droeint_droP(ro, p, e, dedv, dedp) result(droeint_dro)

Energy-related terms from (ro,p): returns d(rho*e)/d(ro)|p and can also provide e, de/dv|p, and de/dp|v.

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: ro
real(kind=dp), intent(in) :: p
real(kind=dp), intent(out), optional :: e
real(kind=dp), intent(out), optional :: dedv
real(kind=dp), intent(out), optional :: dedp

Return Value real(kind=dp)


Calls

proc~~droeint_drop~~CallsGraph proc~droeint_drop droeint_droP proc~eos_terms eos_terms proc~droeint_drop->proc~eos_terms proc~t_rop T_roP proc~droeint_drop->proc~t_rop proc~eos_e_terms eos_e_terms proc~eos_terms->proc~eos_e_terms proc~fill_f_terms fill_f_terms proc~eos_terms->proc~fill_f_terms proc~brent brent proc~t_rop->proc~brent proc~t_rop->proc~fill_f_terms proc~fill_g_dreg_terms fill_g_Dreg_terms proc~t_rop->proc~fill_g_dreg_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_e_tpart fill_e_Tpart proc~eos_e_terms->proc~fill_e_tpart proc~fill_ff_terms fill_ff_terms proc~eos_e_terms->proc~fill_ff_terms proc~fill_e_tpart->proc~fill_g_dreg_terms proc~zero->f

Called by

proc~~droeint_drop~~CalledByGraph proc~droeint_drop droeint_droP proc~hug_brent_f hug_brent_t%hug_brent_f proc~hug_brent_f->proc~droeint_drop proc~hugoniot_star_state hugoniot_star_state proc~hugoniot_star_state->proc~droeint_drop proc~junction_dynamic_parameters_fcn junction_dynamic_parameters_t%junction_dynamic_parameters_fcn proc~junction_dynamic_parameters_fcn->proc~droeint_drop proc~solve_junction solve_junction proc~solve_junction->proc~droeint_drop proc~junction_resolution_from_and_to_ports Junction_resolution_from_and_to_ports proc~junction_resolution_from_and_to_ports->proc~solve_junction proc~solve_boundary_pt solve_boundary_PT proc~solve_boundary_pt->proc~hugoniot_star_state proc~boundary_resolution_from_and_to_ports boundary_resolution_from_and_to_ports proc~boundary_resolution_from_and_to_ports->proc~solve_boundary_pt proc~main_loop main_loop proc~main_loop->proc~junction_resolution_from_and_to_ports proc~main_loop->proc~boundary_resolution_from_and_to_ports program~reims_p reims_p program~reims_p->proc~main_loop

Source Code

function droeint_droP(ro, p, e, dedv, dedp) result(droeint_dro)
    !! Energy-related terms from (ro,p):
    !! returns d(rho*e)/d(ro)|p and can also provide e, de/dv|p, and de/dp|v.
    real(dp), intent(in) :: ro, p
    real(dp), intent(out), optional :: e, dedv, dedp
    real(dp) :: droeint_dro
    real(dp) :: ro_Arp, T, cvloc_Arp, dPdRo_Arp, dPdT_Arp, eint_Arp, deintdRo_Arp, dedT_Arp, e_loc
    type(ThArrays_t) :: ThAr
    integer :: n

    T = T_roP(ro, p)
    ro_Arp = ro/(MolMass*1000.0_dp)
    call eos_terms(ro_Arp, T, ThAr)

    cvloc_Arp    = cp0_Arp - R_cte_gaz_Arp
    dPdRo_Arp    = R_cte_gaz_Arp*T
    dPdT_Arp     = ro_Arp*R_cte_gaz_Arp
    eint_Arp     = cp0_Arp*T + q0_Arp - R_cte_gaz_Arp*T
    deintdRo_Arp = 0.0_dp
    dedT_Arp     = cp0_Arp - R_cte_gaz_Arp
    do n = 1, 14
        cvloc_Arp    = cvloc_Arp    + ThAr%Dergg(n)*ThAr%hh(n)/ro_Arp
        dPdRo_Arp    = dPdRo_Arp    + ThAr%Derf(n)*ThAr%g(n)
        dPdT_Arp     = dPdT_Arp     + ThAr%f(n)*ThAr%Derg(n)
        eint_Arp     = eint_Arp     + ThAr%gg(n)*ThAr%ff(n)
        deintdRo_Arp = deintdRo_Arp + ThAr%gg(n)*ThAr%f(n)/(ro_Arp**2)
        dedT_Arp     = dedT_Arp     + ThAr%Dergg(n)*ThAr%ff(n)
    enddo

    e_loc = eint_Arp * 1000.0_dp/MolMass
    droeint_dro = ro_Arp*deintdRo_Arp - ro_Arp*cvloc_Arp*dPdRo_Arp/dPdT_Arp + eint_Arp
    droeint_dro = droeint_dro * 1000.0_dp/MolMass
    if (present(e))    e    = e_loc
    if (present(dedv)) dedv = ro*(e_loc - droeint_dro)
    if (present(dedp)) dedp = (dedT_Arp*1000.0_dp/MolMass)/(dPdT_Arp*1.0e6_dp)
end function droeint_droP