dc2_roT Subroutine

public elemental subroutine dc2_roT(ro, T, dc2dRo, dc2dP)

d(c^2)/dRo and d(c^2)/dP at constant T / constant Ro respectively.

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: ro
real(kind=dp), intent(in) :: T
real(kind=dp), intent(out) :: dc2dRo
real(kind=dp), intent(out) :: dc2dP

Calls

proc~~dc2_rot~~CallsGraph proc~dc2_rot dc2_roT proc~eos_terms eos_terms proc~dc2_rot->proc~eos_terms 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~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_g_dreg_terms fill_g_Dreg_terms proc~fill_e_tpart->proc~fill_g_dreg_terms

Called by

proc~~dc2_rot~~CalledByGraph proc~dc2_rot dc2_roT proc~full_physics_definition_channel full_physics_definition_channel proc~full_physics_definition_channel->proc~dc2_rot proc~outgoing_branch_cold_circulator outgoing_branch_cold_circulator proc~outgoing_branch_cold_circulator->proc~dc2_rot proc~solve_boundary_mt solve_boundary_MT proc~solve_boundary_mt->proc~dc2_rot proc~solve_boundary_pt solve_boundary_PT proc~solve_boundary_pt->proc~dc2_rot proc~boundary_resolution_from_and_to_ports boundary_resolution_from_and_to_ports proc~boundary_resolution_from_and_to_ports->proc~solve_boundary_mt proc~boundary_resolution_from_and_to_ports->proc~solve_boundary_pt proc~circulator_resolution_from_and_to_ports circulator_resolution_from_and_to_ports proc~circulator_resolution_from_and_to_ports->proc~outgoing_branch_cold_circulator proc~main_loop main_loop proc~main_loop->proc~full_physics_definition_channel proc~main_loop->proc~boundary_resolution_from_and_to_ports proc~main_loop->proc~circulator_resolution_from_and_to_ports program~reims_p reims_p program~reims_p->proc~main_loop

Source Code

elemental subroutine dc2_roT(ro, T, dc2dRo, dc2dP)
    !! d(c^2)/dRo and d(c^2)/dP at constant T / constant Ro respectively.
    real(dp), intent(in)  :: ro, T
    real(dp), intent(out) :: dc2dRo, dc2dP

    real(dp) :: dcSQdRo_T, dcSQdT_Ro, dTdRo, dTdP, AA, BB, DD, cvloc_Arp
    real(dp) :: ro_Arp, DerFunctdRo, DerFunctdP, DerFunctdT
    real(dp) :: DerAAdRo, DerBBdRo, DerDDdRo, DerAAdT, DerBBdT, DerDDdT
    real(dp) :: DercvlocdRo, DercvlocdT
    type(ThArrays_t) :: ThAr
    integer :: n

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

    DerFunctdRo = -R_cte_gaz_Arp*T
    DerFunctdP  = 1.0_dp
    DerFunctdT  = -ro_Arp*R_cte_gaz_Arp
    AA = R_cte_gaz_Arp*T
    cvloc_Arp = cp0_Arp - R_cte_gaz_Arp
    DD = ro_Arp*R_cte_gaz_Arp
    DerAAdRo = 0.0_dp
    DerDDdRo = R_cte_gaz_Arp
    DerAAdT  = R_cte_gaz_Arp
    DerDDdT  = 0.0_dp
    DercvlocdRo = 0.0_dp
    DercvlocdT  = 0.0_dp
    do n = 1, 14
        DerFunctdRo = DerFunctdRo - ThAr%Derf(n)*ThAr%g(n)
        DerFunctdT  = DerFunctdT  - ThAr%f(n)*ThAr%Derg(n)
        AA = AA + ThAr%Derf(n)*ThAr%g(n)
        cvloc_Arp = cvloc_Arp + ThAr%Dergg(n)*ThAr%hh(n)/ro_Arp
        DD = DD + ThAr%f(n)*ThAr%Derg(n)
        DerAAdRo = DerAAdRo + ThAr%Der2f(n)*ThAr%g(n)
        DerDDdRo = DerDDdRo + ThAr%Derf(n)*ThAr%Derg(n)
        DerAAdT  = DerAAdT  + ThAr%Derf(n)*ThAr%Derg(n)
        DerDDdT  = DerDDdT  + ThAr%f(n)*ThAr%Der2g(n)
        DercvlocdRo = DercvlocdRo + ThAr%Dergg(n)*(ThAr%Derhh(n)*ro_Arp-ThAr%hh(n))/(ro_Arp**2)
        DercvlocdT  = DercvlocdT  + ThAr%Der2gg(n)*ThAr%hh(n)/ro_Arp
    enddo
    BB = T/(cvloc_Arp*ro_Arp*ro_Arp)
    DerBBdRo = -T*(DercvlocdRo*ro_Arp*ro_Arp+2.0_dp*cvloc_Arp*ro_Arp)/((cvloc_Arp*ro_Arp*ro_Arp)**2)
    DerBBdT  = (1.0_dp/(ro_Arp**2))*(cvloc_Arp-T*DercvlocdT)/(cvloc_Arp**2)
    dTdP  = -DerFunctdP/DerFunctdT
    dTdRo = -DerFunctdRo/DerFunctdT

    dcSQdRo_T = DerAAdRo + DerBBdRo*(DD**2) + 2.0_dp*BB*DD*DerDDdRo
    dcSQdT_Ro = DerAAdT  + DerBBdT*(DD**2)  + 2.0_dp*BB*DD*DerDDdT

    dc2dRo = dcSQdRo_T + dcSQdT_Ro*dTdRo
    dc2dP  = dcSQdT_Ro*dTdP

    dc2dRo = 1000.0_dp*dc2dRo/MolMass/(MolMass*1000.0_dp)
    dc2dP  = 1000.0_dp*dc2dP/MolMass*1.0e-6_dp
end subroutine dc2_roT