finite_volume_local Subroutine

public subroutine finite_volume_local(qdt, dtfactor, ixImin1, ixImin2, ixImin3, ixImax1, ixImax2, ixImax3, ixOmin1, ixOmin2, ixOmin3, ixOmax1, ixOmax2, ixOmax3, idimsmin, idimsmax, qtC, bga, qt, bgb)

Uses

  • proc~~finite_volume_local~~UsesGraph proc~finite_volume_local finite_volume_local module~mod_comm_lib mod_comm_lib proc~finite_volume_local->module~mod_comm_lib module~mod_global_parameters mod_global_parameters proc~finite_volume_local->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
double precision, intent(in) :: qdt
double precision, intent(in) :: dtfactor
integer, intent(in) :: ixImin1
integer, intent(in) :: ixImin2
integer, intent(in) :: ixImin3
integer, intent(in) :: ixImax1
integer, intent(in) :: ixImax2
integer, intent(in) :: ixImax3
integer, intent(in) :: ixOmin1
integer, intent(in) :: ixOmin2
integer, intent(in) :: ixOmin3
integer, intent(in) :: ixOmax1
integer, intent(in) :: ixOmax2
integer, intent(in) :: ixOmax3
integer, intent(in) :: idimsmin
integer, intent(in) :: idimsmax
double precision, intent(in) :: qtC
type(block_grid_t) :: bga
double precision, intent(in) :: qt
type(block_grid_t) :: bgb

Calls

proc~~finite_volume_local~~CallsGraph proc~finite_volume_local finite_volume_local proc~finite_volume_local_muscl_hll finite_volume_local_muscl_hll proc~finite_volume_local->proc~finite_volume_local_muscl_hll proc~finite_volume_local_muscl_hllc finite_volume_local_muscl_hllc proc~finite_volume_local->proc~finite_volume_local_muscl_hllc proc~finite_volume_local_muscl_llf finite_volume_local_muscl_llf proc~finite_volume_local->proc~finite_volume_local_muscl_llf proc~mpistop mpistop proc~finite_volume_local->proc~mpistop proc~addsource_local~4 addsource_local proc~finite_volume_local_muscl_hll->proc~addsource_local~4 proc~reconflux_muscl_hll_prim reconflux_muscl_hll_prim proc~finite_volume_local_muscl_hll->proc~reconflux_muscl_hll_prim proc~to_primitive~9 to_primitive proc~finite_volume_local_muscl_hll->proc~to_primitive~9 proc~finite_volume_local_muscl_hllc->proc~addsource_local~4 proc~reconflux_muscl_hllc_prim reconflux_muscl_hllc_prim proc~finite_volume_local_muscl_hllc->proc~reconflux_muscl_hllc_prim proc~finite_volume_local_muscl_hllc->proc~to_primitive~9 proc~finite_volume_local_muscl_llf->proc~addsource_local~4 proc~reconflux_muscl_llf_prim reconflux_muscl_llf_prim proc~finite_volume_local_muscl_llf->proc~reconflux_muscl_llf_prim proc~finite_volume_local_muscl_llf->proc~to_primitive~9 mpi_abort mpi_abort proc~mpistop->mpi_abort addsource_usr addsource_usr proc~addsource_local~4->addsource_usr proc~muscl_reconstruct_prim muscl_reconstruct_prim proc~reconflux_muscl_hll_prim->proc~muscl_reconstruct_prim proc~riemann_hll_prim riemann_hll_prim proc~reconflux_muscl_hll_prim->proc~riemann_hll_prim proc~reconflux_muscl_hllc_prim->proc~muscl_reconstruct_prim proc~riemann_hllc_prim riemann_hllc_prim proc~reconflux_muscl_hllc_prim->proc~riemann_hllc_prim proc~reconflux_muscl_llf_prim->proc~muscl_reconstruct_prim proc~riemann_llf_prim riemann_llf_prim proc~reconflux_muscl_llf_prim->proc~riemann_llf_prim proc~con2prim con2prim proc~to_primitive~9->proc~con2prim proc~con2prim_eos con2prim_eos proc~to_primitive~9->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~fix_prim_state fix_prim_state proc~muscl_reconstruct_prim->proc~fix_prim_state proc~koren koren proc~muscl_reconstruct_prim->proc~koren proc~mcbeta mcbeta proc~muscl_reconstruct_prim->proc~mcbeta proc~minmod minmod proc~muscl_reconstruct_prim->proc~minmod proc~vanleer vanleer proc~muscl_reconstruct_prim->proc~vanleer flux_type flux_type proc~riemann_hll_prim->flux_type proc~estimate_speeds_minmax estimate_speeds_minmax proc~riemann_hll_prim->proc~estimate_speeds_minmax proc~get_flux get_flux proc~riemann_hll_prim->proc~get_flux proc~to_conservative~5 to_conservative proc~riemann_hll_prim->proc~to_conservative~5 proc~estimate_speeds_toro_pvrs estimate_speeds_toro_pvrs proc~riemann_hllc_prim->proc~estimate_speeds_toro_pvrs proc~riemann_hllc_prim->proc~get_flux proc~riemann_hllc_prim->proc~to_conservative~5 proc~get_cmax~2 get_cmax proc~riemann_llf_prim->proc~get_cmax~2 proc~riemann_llf_prim->proc~get_flux proc~riemann_llf_prim->proc~to_conservative~5 proc~estimate_speeds_toro_pvrs->proc~mpistop proc~funcpressure FuncPressure proc~funcd->proc~funcpressure tracer tracer proc~get_flux->tracer

Source Code

  subroutine finite_volume_local(qdt, dtfactor, ixImin1,ixImin2,&
    ixImin3,ixImax1,ixImax2,ixImax3, ixOmin1,ixOmin2,ixOmin3,ixOmax1,ixOmax2,&
    ixOmax3, idimsmin,idimsmax, qtC, bga, qt, bgb)
    use mod_global_parameters
    use mod_comm_lib, only: mpistop

    double precision, intent(in)                                       :: qdt,&
      dtfactor, qtC, qt
    integer, intent(in)                                                :: &
      ixImin1,ixImin2,ixImin3,ixImax1,ixImax2,ixImax3, ixOmin1,ixOmin2,&
      ixOmin3,ixOmax1,ixOmax2,ixOmax3, idimsmin,idimsmax
    ! remember, old names map as: wCT => bga, wnew => bgb
    type(block_grid_t)                                    :: bga
    type(block_grid_t)                                    :: bgb
    ! .. local ..
    integer                :: n, iigrid, ix1,ix2,ix3
    double precision       :: uprim(nw_phys, ixImin1:ixImax1,ixImin2:ixImax2,&
      ixImin3:ixImax3)
    real(dp)               :: tmp(nw_phys,5)
    real(dp)               :: f(nw_flux, 2)
    real(dp)               :: inv_dr(ndim)
    real(dp)               :: dr(ndim)
    integer                :: typelim
    real(dp)               :: xloc(ndim)
    real(dp)               :: xlocC(ndim,2)
    real(dp)               :: wprim(nw_phys), wCT(nw_phys), wnew(nw_phys)
    integer :: method
    !-----------------------------------------------------------------------------

    method = flux_method(1)  ! TODO: implement per grid level
    select case (method)
    case (fs_tvdlf)
      call finite_volume_local_muscl_llf(qdt, dtfactor, ixImin1,ixImin2,&
            ixImin3,ixImax1,ixImax2,ixImax3, ixOmin1,ixOmin2,ixOmin3,ixOmax1,ixOmax2,&
            ixOmax3, idimsmin,idimsmax, qtC, bga, qt, bgb)
    case (fs_hll)
      call finite_volume_local_muscl_hll(qdt, dtfactor, ixImin1,ixImin2,&
            ixImin3,ixImax1,ixImax2,ixImax3, ixOmin1,ixOmin2,ixOmin3,ixOmax1,ixOmax2,&
            ixOmax3, idimsmin,idimsmax, qtC, bga, qt, bgb)
    case (fs_hllc)
      call finite_volume_local_muscl_hllc(qdt, dtfactor, ixImin1,ixImin2,&
            ixImin3,ixImax1,ixImax2,ixImax3, ixOmin1,ixOmin2,ixOmin3,ixOmax1,ixOmax2,&
            ixOmax3, idimsmin,idimsmax, qtC, bga, qt, bgb)
    case default
      call mpistop("finite_volume_local: unknown flux scheme")
    end select
end subroutine finite_volume_local