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