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~4~~UsesGraph proc~finite_volume_local~4 finite_volume_local module~mod_comm_lib mod_comm_lib proc~finite_volume_local~4->module~mod_comm_lib module~mod_global_parameters mod_global_parameters proc~finite_volume_local~4->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~4~~CallsGraph proc~finite_volume_local~4 finite_volume_local proc~finite_volume_local_muscl_hllc~4 finite_volume_local_muscl_hllc proc~finite_volume_local~4->proc~finite_volume_local_muscl_hllc~4 proc~finite_volume_local_muscl_hll~4 finite_volume_local_muscl_hll proc~finite_volume_local~4->proc~finite_volume_local_muscl_hll~4 proc~finite_volume_local_muscl_llf~4 finite_volume_local_muscl_llf proc~finite_volume_local~4->proc~finite_volume_local_muscl_llf~4 proc~mpistop mpistop proc~finite_volume_local~4->proc~mpistop proc~addsource_local~8 addsource_local proc~finite_volume_local_muscl_hllc~4->proc~addsource_local~8 proc~addsource_nonlocal~8 addsource_nonlocal proc~finite_volume_local_muscl_hllc~4->proc~addsource_nonlocal~8 proc~reconflux_muscl_hllc_prim~4 reconflux_muscl_hllc_prim proc~finite_volume_local_muscl_hllc~4->proc~reconflux_muscl_hllc_prim~4 proc~to_primitive~15 to_primitive proc~finite_volume_local_muscl_hllc~4->proc~to_primitive~15 proc~finite_volume_local_muscl_hll~4->proc~addsource_local~8 proc~finite_volume_local_muscl_hll~4->proc~addsource_nonlocal~8 proc~reconflux_muscl_hll_prim~4 reconflux_muscl_hll_prim proc~finite_volume_local_muscl_hll~4->proc~reconflux_muscl_hll_prim~4 proc~finite_volume_local_muscl_hll~4->proc~to_primitive~15 proc~finite_volume_local_muscl_llf~4->proc~addsource_local~8 proc~finite_volume_local_muscl_llf~4->proc~addsource_nonlocal~8 proc~reconflux_muscl_llf_prim~4 reconflux_muscl_llf_prim proc~finite_volume_local_muscl_llf~4->proc~reconflux_muscl_llf_prim~4 proc~finite_volume_local_muscl_llf~4->proc~to_primitive~15 mpi_abort mpi_abort proc~mpistop->mpi_abort addsource_usr addsource_usr proc~addsource_local~8->addsource_usr gravity_field gravity_field proc~addsource_local~8->gravity_field radiative_cooling_add_source radiative_cooling_add_source proc~addsource_local~8->radiative_cooling_add_source proc~muscl_reconstruct_prim~4 muscl_reconstruct_prim proc~reconflux_muscl_hll_prim~4->proc~muscl_reconstruct_prim~4 proc~riemann_hll_prim~4 riemann_hll_prim proc~reconflux_muscl_hll_prim~4->proc~riemann_hll_prim~4 proc~reconflux_muscl_hllc_prim~4->proc~muscl_reconstruct_prim~4 proc~riemann_hllc_prim~4 riemann_hllc_prim proc~reconflux_muscl_hllc_prim~4->proc~riemann_hllc_prim~4 proc~reconflux_muscl_llf_prim~4->proc~muscl_reconstruct_prim~4 proc~riemann_llf_prim~4 riemann_llf_prim proc~reconflux_muscl_llf_prim~4->proc~riemann_llf_prim~4 proc~fix_prim_state~4 fix_prim_state proc~muscl_reconstruct_prim~4->proc~fix_prim_state~4 proc~koren~4 koren proc~muscl_reconstruct_prim~4->proc~koren~4 proc~mcbeta~4 mcbeta proc~muscl_reconstruct_prim~4->proc~mcbeta~4 proc~minmod~4 minmod proc~muscl_reconstruct_prim~4->proc~minmod~4 proc~vanleer~4 vanleer proc~muscl_reconstruct_prim~4->proc~vanleer~4 flux_type flux_type proc~riemann_hll_prim~4->flux_type proc~estimate_speeds_minmax~4 estimate_speeds_minmax proc~riemann_hll_prim~4->proc~estimate_speeds_minmax~4 proc~get_flux~4 get_flux proc~riemann_hll_prim~4->proc~get_flux~4 proc~to_conservative~8 to_conservative proc~riemann_hll_prim~4->proc~to_conservative~8 proc~estimate_speeds_toro_pvrs~4 estimate_speeds_toro_pvrs proc~riemann_hllc_prim~4->proc~estimate_speeds_toro_pvrs~4 proc~riemann_hllc_prim~4->proc~get_flux~4 proc~riemann_hllc_prim~4->proc~to_conservative~8 proc~get_cmax~7 get_cmax proc~riemann_llf_prim~4->proc~get_cmax~7 proc~riemann_llf_prim~4->proc~get_flux~4 proc~riemann_llf_prim~4->proc~to_conservative~8 proc~estimate_speeds_minmax~4->proc~mpistop proc~estimate_speeds_toro_pvrs~4->proc~mpistop

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