get_flux Subroutine

private subroutine get_flux(u, xC, flux_dim, flux)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: u(nw_phys)
real(kind=dp), intent(in) :: xC(ndim)
integer, intent(in) :: flux_dim
real(kind=dp), intent(out) :: flux(nw_flux)

Calls

proc~~get_flux~2~~CallsGraph proc~get_flux~2 get_flux tracer tracer proc~get_flux~2->tracer

Called by

proc~~get_flux~2~~CalledByGraph proc~get_flux~2 get_flux proc~riemann_hll_prim~2 riemann_hll_prim proc~riemann_hll_prim~2->proc~get_flux~2 proc~riemann_hllc_prim~2 riemann_hllc_prim proc~riemann_hllc_prim~2->proc~get_flux~2 proc~riemann_llf_prim~2 riemann_llf_prim proc~riemann_llf_prim~2->proc~get_flux~2 proc~reconflux_muscl_hll_prim~2 reconflux_muscl_hll_prim proc~reconflux_muscl_hll_prim~2->proc~riemann_hll_prim~2 proc~reconflux_muscl_hllc_prim~2 reconflux_muscl_hllc_prim proc~reconflux_muscl_hllc_prim~2->proc~riemann_hllc_prim~2 proc~reconflux_muscl_llf_prim~2 reconflux_muscl_llf_prim proc~reconflux_muscl_llf_prim~2->proc~riemann_llf_prim~2 proc~finite_volume_local_muscl_hllc~2 finite_volume_local_muscl_hllc proc~finite_volume_local_muscl_hllc~2->proc~reconflux_muscl_hllc_prim~2 proc~finite_volume_local_muscl_hll~2 finite_volume_local_muscl_hll proc~finite_volume_local_muscl_hll~2->proc~reconflux_muscl_hll_prim~2 proc~finite_volume_local_muscl_llf~2 finite_volume_local_muscl_llf proc~finite_volume_local_muscl_llf~2->proc~reconflux_muscl_llf_prim~2 proc~finite_volume_local~2 finite_volume_local proc~finite_volume_local~2->proc~finite_volume_local_muscl_hllc~2 proc~finite_volume_local~2->proc~finite_volume_local_muscl_hll~2 proc~finite_volume_local~2->proc~finite_volume_local_muscl_llf~2

Source Code

subroutine get_flux(u, xC, flux_dim, flux)
  
  real(dp), intent(in)  :: u(nw_phys)
  real(dp), intent(in)  :: xC(ndim)
  integer, intent(in)   :: flux_dim
  real(dp), intent(out) :: flux(nw_flux)

  ! Density flux
  flux(iw_rho) = u(iw_rho) * u(iw_mom(flux_dim))

  ! Momentum flux with pressure term
  
       flux(iw_mom(1)) = u(iw_rho) * u(iw_mom(1)) * u(iw_mom(flux_dim))
       flux(iw_mom(2)) = u(iw_rho) * u(iw_mom(2)) * u(iw_mom(flux_dim))
       flux(iw_mom(3)) = u(iw_rho) * u(iw_mom(3)) * u(iw_mom(flux_dim))
  
  flux(iw_mom(flux_dim)) = flux(iw_mom(flux_dim)) + u(iw_e)

  ! Energy flux
  flux(iw_e) = u(iw_mom(flux_dim)) * (u(iw_e) * inv_gamma_1 + 0.5_dp * &
     u(iw_rho) * sum(u(iw_mom(1:ndim))**2) + u(iw_e))

  ! Tracer flux. Note that tracers stay conservative.
      flux(tracer(1)) = u(tracer(1)) * u(iw_mom(flux_dim))

end subroutine get_flux