MODULE Generic_GetFlux
! ---- Given the values of conserved variables (ux)
! ---- this calculates the flux vector (fx)
INTERFACE GetFlux
MODULE PROCEDURE OneDGetFlux
MODULE PROCEDURE TwoDGetFlux
MODULE PROCEDURE ThreeDGetFlux
END INTERFACE
CONTAINS
SUBROUTINE OneDGetFlux(ux,vx,fx,direction)
! ---- Shared Variables
USE mesh
USE array_bounds
USE method_parms
! ---- Shared Procedures
USE Generic_FluxF
USE Generic_FluxG
USE Generic_FluxH
IMPLICIT NONE
DOUBLE PRECISION, INTENT(OUT) :: fx(nvars,ixlo:ixhi)
DOUBLE PRECISION, INTENT(IN) :: ux(ncomps,ixlo:ixhi)
DOUBLE PRECISION, INTENT(IN) :: vx(nvars,ixlo:ixhi)
INTEGER, INTENT(IN) :: direction
whichdirection: SELECT CASE(direction)
CASE (1)
! ---- The Flux Term F ( to be differenced in the x-direction)
CALL GetFluxF(ux,vx,fx)
CASE (2)
! ---- The Flux Term G ( to be differenced in the y-direction)
CALL GetFluxG(ux,vx,fx)
CASE (3)
! ---- The Flux Term H ( to be differenced in the z-direction)
CALL GetFluxH(ux,vx,fx)
END SELECT WHICHDIRECTION
END SUBROUTINE OneDGetFlux
SUBROUTINE TwoDGetFlux(ux,vx,fx,direction)
! ---- Shared Variables
USE mesh
USE array_bounds
USE method_parms
! ---- Shared Procedures
USE Generic_FluxF
USE Generic_FluxG
USE Generic_FluxH
IMPLICIT NONE
DOUBLE PRECISION, INTENT(OUT) :: fx(nvars,ixlo:ixhi,iylo:iyhi)
DOUBLE PRECISION, INTENT(IN) :: ux(ncomps,ixlo:ixhi,iylo:iyhi)
DOUBLE PRECISION, INTENT(IN) :: vx(nvars,ixlo:ixhi,iylo:iyhi)
INTEGER, INTENT(IN) :: direction
whichdirection: SELECT CASE(direction)
CASE (1)
! ---- The Flux Term F ( to be differenced in the x-direction)
CALL GetFluxF(ux,vx,fx)
CASE (2)
! ---- The Flux Term G ( to be differenced in the y-direction)
CALL GetFluxG(ux,vx,fx)
CASE (3)
! ---- The Flux Term H ( to be differenced in the z-direction)
CALL GetFluxH(ux,vx,fx)
END SELECT WHICHDIRECTION
END SUBROUTINE TwoDGetFlux
SUBROUTINE ThreeDGetFlux(ux,vx,fx,direction)
! ---- Shared Variables
USE mesh
USE array_bounds
USE method_parms
! ---- Shared Procedures
USE Generic_FluxF
USE Generic_FluxG
USE Generic_FluxH
IMPLICIT NONE
DOUBLE PRECISION, INTENT(OUT) :: fx(nvars,ixlo:ixhi,iylo:iyhi,izlo:izhi)
DOUBLE PRECISION, INTENT(IN) :: ux(ncomps,ixlo:ixhi,iylo:iyhi,izlo:izhi)
DOUBLE PRECISION, INTENT(IN) :: vx(nvars,ixlo:ixhi,iylo:iyhi,izlo:izhi)
INTEGER, INTENT(IN) :: direction
whichdirection: SELECT CASE(direction)
CASE (1)
! ---- The Flux Term F ( to be differenced in the x-direction)
CALL GetFluxF(ux,vx,fx)
CASE (2)
! ---- The Flux Term G ( to be differenced in the y-direction)
CALL GetFluxG(ux,vx,fx)
CASE (3)
! ---- The Flux Term H ( to be differenced in the z-direction)
CALL GetFluxH(ux,vx,fx)
END SELECT WHICHDIRECTION
END SUBROUTINE ThreeDGetFlux
END MODULE Generic_GetFlux