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