to_primitive Subroutine

private pure subroutine to_primitive(u)

Uses

  • proc~~to_primitive~~UsesGraph proc~to_primitive to_primitive module~mod_con2prim mod_con2prim proc~to_primitive->module~mod_con2prim mod_physics_vars mod_physics_vars module~mod_con2prim->mod_physics_vars module~mod_global_parameters mod_global_parameters module~mod_con2prim->module~mod_global_parameters module~mod_basic_types mod_basic_types module~mod_global_parameters->module~mod_basic_types module~mod_connectivity mod_connectivity module~mod_global_parameters->module~mod_connectivity module~mod_constants mod_constants module~mod_global_parameters->module~mod_constants module~mod_physicaldata mod_physicaldata module~mod_global_parameters->module~mod_physicaldata module~mod_variables mod_variables module~mod_global_parameters->module~mod_variables mpi mpi module~mod_global_parameters->mpi module~mod_variables->module~mod_basic_types

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(inout) :: u(nw_phys)

Calls

proc~~to_primitive~~CallsGraph proc~to_primitive to_primitive proc~con2prim con2prim proc~to_primitive->proc~con2prim proc~con2prim_eos con2prim_eos proc~to_primitive->proc~con2prim_eos proc~con2primhydro con2primHydro proc~con2prim->proc~con2primhydro proc~funcd funcd proc~con2prim->proc~funcd proc~con2primhydro_eos con2primHydro_eos proc~con2prim_eos->proc~con2primhydro_eos proc~funcpressure_eos FuncPressure_eos proc~con2prim_eos->proc~funcpressure_eos proc~funcpressure FuncPressure proc~funcd->proc~funcpressure

Called by

proc~~to_primitive~~CalledByGraph proc~to_primitive to_primitive proc~setdt setdt proc~setdt->proc~to_primitive

Source Code

  pure subroutine to_primitive(u)
    use mod_con2prim
    
    real(dp), intent(inout) :: u(nw_phys)

    real(dp) :: rho,rhoh,pth,E
    real(dp) :: ssqr

    !! begin: call srhd_get_auxiliary(u)
    ssqr=(u(iw_mom(1))**2+u(iw_mom(2))**2+u(iw_mom(3))**2)
    if(srhd_eos)then
       call con2prim_eos(u(lfac_),u(xi_),u(iw_rho),ssqr,u(iw_e))
    else
       call con2prim(u(lfac_),u(xi_),u(iw_rho),ssqr,u(iw_e))
    endif
    !! end: call srhd_get_auxiliary(u)

    rho=u(iw_rho)/u(lfac_)
    rhoh=u(xi_)/u(lfac_)**2
    !! begin: call srhd_get_pressure_eos(rho,rhoh,pth,E)
    if(srhd_eos)then
      E = (rhoh+dsqrt(rhoh**2+(srhd_gamma**2-1.0_dp)*rho**2)) &
         /(srhd_gamma+1.0_dp)
      pth = 0.5d0*gamma_1* (E-rho*(rho/E))
    else
      pth =(rhoh-rho)/gamma_to_gamma_1
    endif 
    !! end: call srhd_get_pressure_eos(rho,rhoh,pth,E)

    u(iw_rho)=rho
    u(iw_mom(1))=u(lfac_)*u(iw_mom(1))/u(xi_)
    u(iw_mom(2))=u(lfac_)*u(iw_mom(2))/u(xi_)
    u(iw_mom(3))=u(lfac_)*u(iw_mom(3))/u(xi_)
    u(iw_e)=pth

  end subroutine to_primitive