Skip to content

Commit

Permalink
FDS Source: change FLUX_LIMITER to character input
Browse files Browse the repository at this point in the history
  • Loading branch information
rmcdermo committed May 1, 2018
1 parent 8e65019 commit 288f4c4
Show file tree
Hide file tree
Showing 7 changed files with 73 additions and 49 deletions.
2 changes: 1 addition & 1 deletion Source/cons.f90
Expand Up @@ -321,7 +321,7 @@ MODULE GLOBAL_CONSTANTS
! Flux limiter

INTEGER, PARAMETER :: CENTRAL_LIMITER=0,GODUNOV_LIMITER=1,SUPERBEE_LIMITER=2,MINMOD_LIMITER=3,CHARM_LIMITER=4,MP5_LIMITER=5
INTEGER :: FLUX_LIMITER=SUPERBEE_LIMITER,CFL_VELOCITY_NORM=0
INTEGER :: I_FLUX_LIMITER=SUPERBEE_LIMITER,CFL_VELOCITY_NORM=0

! Numerical quadrature (used in TEST_FILTER)

Expand Down
36 changes: 18 additions & 18 deletions Source/divg.f90
Expand Up @@ -775,7 +775,7 @@ SUBROUTINE ENTHALPY_ADVECTION
DO J=1,JBAR
DO I=1,IBM1
ZZZ(1:4) = RHO_H_S_P(I-1:I+2,J,K)
FX_H_S(I,J,K) = SCALAR_FACE_VALUE(UU(I,J,K),ZZZ,FLUX_LIMITER)
FX_H_S(I,J,K) = SCALAR_FACE_VALUE(UU(I,J,K),ZZZ,I_FLUX_LIMITER)
ENDDO
ENDDO
ENDDO
Expand All @@ -786,7 +786,7 @@ SUBROUTINE ENTHALPY_ADVECTION
DO J=1,JBM1
DO I=1,IBAR
ZZZ(1:4) = RHO_H_S_P(I,J-1:J+2,K)
FY_H_S(I,J,K) = SCALAR_FACE_VALUE(VV(I,J,K),ZZZ,FLUX_LIMITER)
FY_H_S(I,J,K) = SCALAR_FACE_VALUE(VV(I,J,K),ZZZ,I_FLUX_LIMITER)
ENDDO
ENDDO
ENDDO
Expand All @@ -797,7 +797,7 @@ SUBROUTINE ENTHALPY_ADVECTION
DO J=1,JBAR
DO I=1,IBAR
ZZZ(1:4) = RHO_H_S_P(I,J,K-1:K+2)
FZ_H_S(I,J,K) = SCALAR_FACE_VALUE(WW(I,J,K),ZZZ,FLUX_LIMITER)
FZ_H_S(I,J,K) = SCALAR_FACE_VALUE(WW(I,J,K),ZZZ,I_FLUX_LIMITER)
ENDDO
ENDDO
ENDDO
Expand Down Expand Up @@ -858,35 +858,35 @@ SUBROUTINE ENTHALPY_ADVECTION
! ^ WALL_INDEX(II+1,+1)
IF ((UU(II+1,JJ,KK)>0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II+1,JJ,KK),+1)>0)) THEN
ZZZ(1:3) = (/WC%ONE_D%RHO_F*H_S,RHO_H_S_P(II+1:II+2,JJ,KK)/)
FX_H_S(II+1,JJ,KK) = SCALAR_FACE_VALUE(UU(II+1,JJ,KK),ZZZ,FLUX_LIMITER)
FX_H_S(II+1,JJ,KK) = SCALAR_FACE_VALUE(UU(II+1,JJ,KK),ZZZ,I_FLUX_LIMITER)
ENDIF
CASE(-1) OFF_WALL_SELECT_1
! FX/UU(II-2) ghost
! ... | II-2 | II-1 /// II ///
! ^ WALL_INDEX(II-1,-1)
IF ((UU(II-2,JJ,KK)<0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II-1,JJ,KK),-1)>0)) THEN
ZZZ(2:4) = (/RHO_H_S_P(II-2:II-1,JJ,KK),WC%ONE_D%RHO_F*H_S/)
FX_H_S(II-2,JJ,KK) = SCALAR_FACE_VALUE(UU(II-2,JJ,KK),ZZZ,FLUX_LIMITER)
FX_H_S(II-2,JJ,KK) = SCALAR_FACE_VALUE(UU(II-2,JJ,KK),ZZZ,I_FLUX_LIMITER)
ENDIF
CASE( 2) OFF_WALL_SELECT_1
IF ((VV(II,JJ+1,KK)>0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II,JJ+1,KK),+2)>0)) THEN
ZZZ(1:3) = (/WC%ONE_D%RHO_F*H_S,RHO_H_S_P(II,JJ+1:JJ+2,KK)/)
FY_H_S(II,JJ+1,KK) = SCALAR_FACE_VALUE(VV(II,JJ+1,KK),ZZZ,FLUX_LIMITER)
FY_H_S(II,JJ+1,KK) = SCALAR_FACE_VALUE(VV(II,JJ+1,KK),ZZZ,I_FLUX_LIMITER)
ENDIF
CASE(-2) OFF_WALL_SELECT_1
IF ((VV(II,JJ-2,KK)<0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II,JJ-1,KK),-2)>0)) THEN
ZZZ(2:4) = (/RHO_H_S_P(II,JJ-2:JJ-1,KK),WC%ONE_D%RHO_F*H_S/)
FY_H_S(II,JJ-2,KK) = SCALAR_FACE_VALUE(VV(II,JJ-2,KK),ZZZ,FLUX_LIMITER)
FY_H_S(II,JJ-2,KK) = SCALAR_FACE_VALUE(VV(II,JJ-2,KK),ZZZ,I_FLUX_LIMITER)
ENDIF
CASE( 3) OFF_WALL_SELECT_1
IF ((WW(II,JJ,KK+1)>0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II,JJ,KK+1),+3)>0)) THEN
ZZZ(1:3) = (/WC%ONE_D%RHO_F*H_S,RHO_H_S_P(II,JJ,KK+1:KK+2)/)
FZ_H_S(II,JJ,KK+1) = SCALAR_FACE_VALUE(WW(II,JJ,KK+1),ZZZ,FLUX_LIMITER)
FZ_H_S(II,JJ,KK+1) = SCALAR_FACE_VALUE(WW(II,JJ,KK+1),ZZZ,I_FLUX_LIMITER)
ENDIF
CASE(-3) OFF_WALL_SELECT_1
IF ((WW(II,JJ,KK-2)<0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II,JJ,KK-1),-3)>0)) THEN
ZZZ(2:4) = (/RHO_H_S_P(II,JJ,KK-2:KK-1),WC%ONE_D%RHO_F*H_S/)
FZ_H_S(II,JJ,KK-2) = SCALAR_FACE_VALUE(WW(II,JJ,KK-2),ZZZ,FLUX_LIMITER)
FZ_H_S(II,JJ,KK-2) = SCALAR_FACE_VALUE(WW(II,JJ,KK-2),ZZZ,I_FLUX_LIMITER)
ENDIF
END SELECT OFF_WALL_SELECT_1

Expand Down Expand Up @@ -978,7 +978,7 @@ SUBROUTINE SPECIES_ADVECTION
DO J=1,JBAR
DO I=1,IBM1
ZZZ(1:4) = RHO_Z_P(I-1:I+2,J,K)
FX_ZZ(I,J,K) = SCALAR_FACE_VALUE(UU(I,J,K),ZZZ,FLUX_LIMITER)
FX_ZZ(I,J,K) = SCALAR_FACE_VALUE(UU(I,J,K),ZZZ,I_FLUX_LIMITER)
ENDDO
ENDDO
ENDDO
Expand All @@ -989,7 +989,7 @@ SUBROUTINE SPECIES_ADVECTION
DO J=1,JBM1
DO I=1,IBAR
ZZZ(1:4) = RHO_Z_P(I,J-1:J+2,K)
FY_ZZ(I,J,K) = SCALAR_FACE_VALUE(VV(I,J,K),ZZZ,FLUX_LIMITER)
FY_ZZ(I,J,K) = SCALAR_FACE_VALUE(VV(I,J,K),ZZZ,I_FLUX_LIMITER)
ENDDO
ENDDO
ENDDO
Expand All @@ -1000,7 +1000,7 @@ SUBROUTINE SPECIES_ADVECTION
DO J=1,JBAR
DO I=1,IBAR
ZZZ(1:4) = RHO_Z_P(I,J,K-1:K+2)
FZ_ZZ(I,J,K) = SCALAR_FACE_VALUE(WW(I,J,K),ZZZ,FLUX_LIMITER)
FZ_ZZ(I,J,K) = SCALAR_FACE_VALUE(WW(I,J,K),ZZZ,I_FLUX_LIMITER)
ENDDO
ENDDO
ENDDO
Expand Down Expand Up @@ -1042,35 +1042,35 @@ SUBROUTINE SPECIES_ADVECTION
! ^ WALL_INDEX(II+1,+1)
IF ((UU(II+1,JJ,KK)>0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II+1,JJ,KK),+1)>0)) THEN
ZZZ(1:3) = (/WC%ONE_D%RHO_F*WC%ONE_D%ZZ_F(N),RHO_Z_P(II+1:II+2,JJ,KK)/)
FX_ZZ(II+1,JJ,KK) = SCALAR_FACE_VALUE(UU(II+1,JJ,KK),ZZZ,FLUX_LIMITER)
FX_ZZ(II+1,JJ,KK) = SCALAR_FACE_VALUE(UU(II+1,JJ,KK),ZZZ,I_FLUX_LIMITER)
ENDIF
CASE(-1) OFF_WALL_SELECT_2
! FX/UU(II-2) ghost
! ... | II-2 | II-1 /// II ///
! ^ WALL_INDEX(II-1,-1)
IF ((UU(II-2,JJ,KK)<0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II-1,JJ,KK),-1)>0)) THEN
ZZZ(2:4) = (/RHO_Z_P(II-2:II-1,JJ,KK),WC%ONE_D%RHO_F*WC%ONE_D%ZZ_F(N)/)
FX_ZZ(II-2,JJ,KK) = SCALAR_FACE_VALUE(UU(II-2,JJ,KK),ZZZ,FLUX_LIMITER)
FX_ZZ(II-2,JJ,KK) = SCALAR_FACE_VALUE(UU(II-2,JJ,KK),ZZZ,I_FLUX_LIMITER)
ENDIF
CASE( 2) OFF_WALL_SELECT_2
IF ((VV(II,JJ+1,KK)>0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II,JJ+1,KK),+2)>0)) THEN
ZZZ(1:3) = (/WC%ONE_D%RHO_F*WC%ONE_D%ZZ_F(N),RHO_Z_P(II,JJ+1:JJ+2,KK)/)
FY_ZZ(II,JJ+1,KK) = SCALAR_FACE_VALUE(VV(II,JJ+1,KK),ZZZ,FLUX_LIMITER)
FY_ZZ(II,JJ+1,KK) = SCALAR_FACE_VALUE(VV(II,JJ+1,KK),ZZZ,I_FLUX_LIMITER)
ENDIF
CASE(-2) OFF_WALL_SELECT_2
IF ((VV(II,JJ-2,KK)<0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II,JJ-1,KK),-2)>0)) THEN
ZZZ(2:4) = (/RHO_Z_P(II,JJ-2:JJ-1,KK),WC%ONE_D%RHO_F*WC%ONE_D%ZZ_F(N)/)
FY_ZZ(II,JJ-2,KK) = SCALAR_FACE_VALUE(VV(II,JJ-2,KK),ZZZ,FLUX_LIMITER)
FY_ZZ(II,JJ-2,KK) = SCALAR_FACE_VALUE(VV(II,JJ-2,KK),ZZZ,I_FLUX_LIMITER)
ENDIF
CASE( 3) OFF_WALL_SELECT_2
IF ((WW(II,JJ,KK+1)>0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II,JJ,KK+1),+3)>0)) THEN
ZZZ(1:3) = (/WC%ONE_D%RHO_F*WC%ONE_D%ZZ_F(N),RHO_Z_P(II,JJ,KK+1:KK+2)/)
FZ_ZZ(II,JJ,KK+1) = SCALAR_FACE_VALUE(WW(II,JJ,KK+1),ZZZ,FLUX_LIMITER)
FZ_ZZ(II,JJ,KK+1) = SCALAR_FACE_VALUE(WW(II,JJ,KK+1),ZZZ,I_FLUX_LIMITER)
ENDIF
CASE(-3) OFF_WALL_SELECT_2
IF ((WW(II,JJ,KK-2)<0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II,JJ,KK-1),-3)>0)) THEN
ZZZ(2:4) = (/RHO_Z_P(II,JJ,KK-2:KK-1),WC%ONE_D%RHO_F*WC%ONE_D%ZZ_F(N)/)
FZ_ZZ(II,JJ,KK-2) = SCALAR_FACE_VALUE(WW(II,JJ,KK-2),ZZZ,FLUX_LIMITER)
FZ_ZZ(II,JJ,KK-2) = SCALAR_FACE_VALUE(WW(II,JJ,KK-2),ZZZ,I_FLUX_LIMITER)
ENDIF
END SELECT OFF_WALL_SELECT_2

Expand Down
2 changes: 1 addition & 1 deletion Source/geom.f90
Expand Up @@ -1900,7 +1900,7 @@ SUBROUTINE CCIBM_SET_DATA
GEOMEPS = GEOMEPS*MAX_DIST

! Set Flux limiter for cut-cell region:
IF(FLUX_LIMITER==CENTRAL_LIMITER) THEN
IF(I_FLUX_LIMITER==CENTRAL_LIMITER) THEN
BRP1 = 1._EB ! If 0., Godunov for advective term; if 1., centered interp.
ELSE ! For any other flux limiter use Godunov in CC region.
BRP1 = 0._EB ! If 0., Godunov for advective term; if 1., centered interp.
Expand Down
18 changes: 9 additions & 9 deletions Source/mass.f90
Expand Up @@ -74,7 +74,7 @@ SUBROUTINE MASS_FINITE_DIFFERENCES(NM)
DO J=1,JBAR
DO I=1,IBM1
ZZZ(1:4) = RHO_Z_P(I-1:I+2,J,K)
FX(I,J,K,N) = SCALAR_FACE_VALUE(UU(I,J,K),ZZZ,FLUX_LIMITER)
FX(I,J,K,N) = SCALAR_FACE_VALUE(UU(I,J,K),ZZZ,I_FLUX_LIMITER)
ENDDO
ENDDO
ENDDO
Expand All @@ -85,7 +85,7 @@ SUBROUTINE MASS_FINITE_DIFFERENCES(NM)
DO J=1,JBM1
DO I=1,IBAR
ZZZ(1:4) = RHO_Z_P(I,J-1:J+2,K)
FY(I,J,K,N) = SCALAR_FACE_VALUE(VV(I,J,K),ZZZ,FLUX_LIMITER)
FY(I,J,K,N) = SCALAR_FACE_VALUE(VV(I,J,K),ZZZ,I_FLUX_LIMITER)
ENDDO
ENDDO
ENDDO
Expand All @@ -96,7 +96,7 @@ SUBROUTINE MASS_FINITE_DIFFERENCES(NM)
DO J=1,JBAR
DO I=1,IBAR
ZZZ(1:4) = RHO_Z_P(I,J,K-1:K+2)
FZ(I,J,K,N) = SCALAR_FACE_VALUE(WW(I,J,K),ZZZ,FLUX_LIMITER)
FZ(I,J,K,N) = SCALAR_FACE_VALUE(WW(I,J,K),ZZZ,I_FLUX_LIMITER)
ENDDO
ENDDO
ENDDO
Expand Down Expand Up @@ -159,35 +159,35 @@ SUBROUTINE MASS_FINITE_DIFFERENCES(NM)
! ^ WALL_INDEX(II+1,+1)
IF ((UU(II+1,JJ,KK)>0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II+1,JJ,KK),+1)>0)) THEN
ZZZ(1:3) = (/WC%ONE_D%RHO_F*WC%ONE_D%ZZ_F(N),RHO_Z_P(II+1:II+2,JJ,KK)/)
FX(II+1,JJ,KK,N) = SCALAR_FACE_VALUE(UU(II+1,JJ,KK),ZZZ,FLUX_LIMITER)
FX(II+1,JJ,KK,N) = SCALAR_FACE_VALUE(UU(II+1,JJ,KK),ZZZ,I_FLUX_LIMITER)
ENDIF
CASE(-1) OFF_WALL_SELECT_2
! FX/UU(II-2) ghost
! ... | II-2 | II-1 /// II ///
! ^ WALL_INDEX(II-1,-1)
IF ((UU(II-2,JJ,KK)<0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II-1,JJ,KK),-1)>0)) THEN
ZZZ(2:4) = (/RHO_Z_P(II-2:II-1,JJ,KK),WC%ONE_D%RHO_F*WC%ONE_D%ZZ_F(N)/)
FX(II-2,JJ,KK,N) = SCALAR_FACE_VALUE(UU(II-2,JJ,KK),ZZZ,FLUX_LIMITER)
FX(II-2,JJ,KK,N) = SCALAR_FACE_VALUE(UU(II-2,JJ,KK),ZZZ,I_FLUX_LIMITER)
ENDIF
CASE( 2) OFF_WALL_SELECT_2
IF ((VV(II,JJ+1,KK)>0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II,JJ+1,KK),+2)>0)) THEN
ZZZ(1:3) = (/WC%ONE_D%RHO_F*WC%ONE_D%ZZ_F(N),RHO_Z_P(II,JJ+1:JJ+2,KK)/)
FY(II,JJ+1,KK,N) = SCALAR_FACE_VALUE(VV(II,JJ+1,KK),ZZZ,FLUX_LIMITER)
FY(II,JJ+1,KK,N) = SCALAR_FACE_VALUE(VV(II,JJ+1,KK),ZZZ,I_FLUX_LIMITER)
ENDIF
CASE(-2) OFF_WALL_SELECT_2
IF ((VV(II,JJ-2,KK)<0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II,JJ-1,KK),-2)>0)) THEN
ZZZ(2:4) = (/RHO_Z_P(II,JJ-2:JJ-1,KK),WC%ONE_D%RHO_F*WC%ONE_D%ZZ_F(N)/)
FY(II,JJ-2,KK,N) = SCALAR_FACE_VALUE(VV(II,JJ-2,KK),ZZZ,FLUX_LIMITER)
FY(II,JJ-2,KK,N) = SCALAR_FACE_VALUE(VV(II,JJ-2,KK),ZZZ,I_FLUX_LIMITER)
ENDIF
CASE( 3) OFF_WALL_SELECT_2
IF ((WW(II,JJ,KK+1)>0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II,JJ,KK+1),+3)>0)) THEN
ZZZ(1:3) = (/WC%ONE_D%RHO_F*WC%ONE_D%ZZ_F(N),RHO_Z_P(II,JJ,KK+1:KK+2)/)
FZ(II,JJ,KK+1,N) = SCALAR_FACE_VALUE(WW(II,JJ,KK+1),ZZZ,FLUX_LIMITER)
FZ(II,JJ,KK+1,N) = SCALAR_FACE_VALUE(WW(II,JJ,KK+1),ZZZ,I_FLUX_LIMITER)
ENDIF
CASE(-3) OFF_WALL_SELECT_2
IF ((WW(II,JJ,KK-2)<0._EB) .AND. .NOT.(WALL_INDEX(CELL_INDEX(II,JJ,KK-1),-3)>0)) THEN
ZZZ(2:4) = (/RHO_Z_P(II,JJ,KK-2:KK-1),WC%ONE_D%RHO_F*WC%ONE_D%ZZ_F(N)/)
FZ(II,JJ,KK-2,N) = SCALAR_FACE_VALUE(WW(II,JJ,KK-2),ZZZ,FLUX_LIMITER)
FZ(II,JJ,KK-2,N) = SCALAR_FACE_VALUE(WW(II,JJ,KK-2),ZZZ,I_FLUX_LIMITER)
ENDIF
END SELECT OFF_WALL_SELECT_2

Expand Down
38 changes: 31 additions & 7 deletions Source/read.f90
Expand Up @@ -1624,7 +1624,7 @@ SUBROUTINE READ_MISC
REAL(EB) :: MAXIMUM_VISIBILITY
LOGICAL :: DNS,RESEARCH_MODE
CHARACTER(LABEL_LENGTH) :: ASSUMED_GAS_TEMPERATURE_RAMP,RAMP_GX,RAMP_GY,RAMP_GZ,TURBULENCE_MODEL,&
NEAR_WALL_TURBULENCE_MODEL,SIMULATION_MODE
NEAR_WALL_TURBULENCE_MODEL,SIMULATION_MODE,FLUX_LIMITER

NAMELIST /MISC/ AGGLOMERATION,AEROSOL_AL2O3,ALLOW_SURFACE_PARTICLES,ALLOW_UNDERSIDE_PARTICLES,ASSUMED_GAS_TEMPERATURE,&
ASSUMED_GAS_TEMPERATURE_RAMP,&
Expand Down Expand Up @@ -1723,6 +1723,7 @@ SUBROUTINE READ_MISC
TURBULENCE_MODEL = 'null'
NEAR_WALL_TURBULENCE_MODEL = 'null'
MAX_LEAK_PATHS = 200
FLUX_LIMITER = 'null'

! Initial read of the MISC line

Expand All @@ -1744,7 +1745,7 @@ SUBROUTINE READ_MISC
CFL_MIN = 0.4
VN_MAX = 0.5
VN_MIN = 0.4
FLUX_LIMITER = CHARM_LIMITER
I_FLUX_LIMITER = CHARM_LIMITER
PROJECTION = .TRUE.
IF (TURBULENCE_MODEL/='null') THEN
WRITE(MESSAGE,'(A,A,A)') 'ERROR: TURBULENCE_MODEL,',TRIM(TURBULENCE_MODEL),', is not appropriate for DNS.'
Expand All @@ -1753,17 +1754,17 @@ SUBROUTINE READ_MISC
ELSEIF (RESEARCH_MODE .OR. SIMULATION_MODE=='LES') THEN
SIM_MODE = LES_MODE
CFL_VELOCITY_NORM = 2
FLUX_LIMITER = CHARM_LIMITER
I_FLUX_LIMITER = CHARM_LIMITER
PROJECTION = .TRUE.
TURBULENCE_MODEL = 'DEARDORFF'
ELSEIF (SIMULATION_MODE=='VLES') THEN
SIM_MODE = VLES_MODE
!! CFL_VELOCITY_NORM = 0 ! global default
FLUX_LIMITER = SUPERBEE_LIMITER
I_FLUX_LIMITER = SUPERBEE_LIMITER
TURBULENCE_MODEL = 'DEARDORFF'
ELSEIF (SIMULATION_MODE=='SVLES') THEN
SIM_MODE = SVLES_MODE
FLUX_LIMITER = SUPERBEE_LIMITER
I_FLUX_LIMITER = SUPERBEE_LIMITER
TURBULENCE_MODEL = 'DEARDORFF'
BAROCLINIC = .FALSE.
CFL_VELOCITY_NORM = 3
Expand Down Expand Up @@ -1828,8 +1829,8 @@ SUBROUTINE READ_MISC

! Min and Max values of flux limiter

IF (FLUX_LIMITER<0 .OR. FLUX_LIMITER>5) THEN
WRITE(MESSAGE,'(A)') 'ERROR on MISC: Permissible values for FLUX_LIMITER=0:5'
IF (I_FLUX_LIMITER<0 .OR. I_FLUX_LIMITER>5) THEN
WRITE(MESSAGE,'(A)') 'ERROR on MISC: Permissible values for I_FLUX_LIMITER=0:5'
CALL SHUTDOWN(MESSAGE) ; RETURN
ENDIF

Expand Down Expand Up @@ -1864,6 +1865,29 @@ SUBROUTINE READ_MISC
NEAR_WALL_TURB_MODEL=WALE
END SELECT

! Flux limiter

SELECT CASE (TRIM(FLUX_LIMITER))
CASE ('null')
! set above, see SIMULATION_MODE
CASE ('CENTRAL')
I_FLUX_LIMITER=CENTRAL_LIMITER
CASE ('GODUNOV')
I_FLUX_LIMITER=GODUNOV_LIMITER
CASE ('SUPERBEE')
I_FLUX_LIMITER=SUPERBEE_LIMITER
CASE ('MINMOD')
I_FLUX_LIMITER=MINMOD_LIMITER
CASE ('CHARM')
I_FLUX_LIMITER=CHARM_LIMITER
CASE ('MP5')
I_FLUX_LIMITER=MP5_LIMITER
CASE DEFAULT
WRITE(MESSAGE,'(A,A,A)') "ERROR: FLUX_LIMITER, ",TRIM(FLUX_LIMITER),", is not recognized."
WRITE(MESSAGE,'(A)') " Available options are: 'CENTRAL', GODUNOV', 'SUPERBEE', 'MINMOD', 'CHARM', 'MP5'."
CALL SHUTDOWN(MESSAGE) ; RETURN
END SELECT

! Level set based model of firespread in vegetation

IF (VEG_LEVEL_SET_COUPLED) VEG_LEVEL_SET = .TRUE.
Expand Down
2 changes: 1 addition & 1 deletion Source/vege.f90
Expand Up @@ -659,7 +659,7 @@ SUBROUTINE INITIALIZE_LEVEL_SET_FIRESPREAD(NM)
!LIMITER_LS = 3 !First order upwinding
!
!
LIMITER_LS = FLUX_LIMITER
LIMITER_LS = I_FLUX_LIMITER
IF (LIMITER_LS > 3) LIMITER_LS = 1

! -- Output file
Expand Down

0 comments on commit 288f4c4

Please sign in to comment.