@@ -62,8 +62,10 @@ SUBROUTINE INITIALIZE_LEVEL_SET_FIRESPREAD_1(NM)
6262
6363! Level set values (Phi). PHI1_LS is the first-order accurate estimate at the next time step.
6464
65- ALLOCATE (M% PHI_LS(0 :IBP1,0 :JBP1)) ; CALL ChkMemErr(' VEGE:LEVEL SET' ,' PHI_LS' ,IZERO) ; PHI_LS = > M% PHI_LS ; PHI_LS = PHI_LS_MIN
66- ALLOCATE (M% PHI1_LS(0 :IBP1,0 :JBP1)); CALL ChkMemErr(' VEGE:LEVEL SET' ,' PHI1_LS' ,IZERO) ; PHI1_LS = > M% PHI1_LS ; PHI1_LS = PHI_LS_MIN
65+ ALLOCATE (M% PHI_LS(- 1 :IBAR+2 ,- 1 :JBAR+2 )) ; CALL ChkMemErr(' VEGE:LEVEL SET' ,' PHI_LS' ,IZERO) ; PHI_LS = > M% PHI_LS
66+ PHI_LS = PHI_LS_MIN
67+ ALLOCATE (M% PHI1_LS(- 1 :IBAR+2 ,- 1 :JBAR+2 )); CALL ChkMemErr(' VEGE:LEVEL SET' ,' PHI1_LS' ,IZERO) ; PHI1_LS = > M% PHI1_LS
68+ PHI1_LS = PHI_LS_MIN
6769
6870! Wind speed components in the center of the first gas phsae cell above the ground.
6971
@@ -682,8 +684,8 @@ SUBROUTINE GET_BOUNDARY_VALUES
682684SUBROUTINE FILL_BOUNDARY_VALUES
683685
684686USE COMPLEX_GEOMETRY, ONLY : CC_CGSC,CC_SOLID,CC_CUTCFE
685- INTEGER :: IW,IIO,JJO,N_INT_CELLS,NOM,IC
686- REAL (EB) :: PHI_LS_OTHER,U_LS_OTHER,V_LS_OTHER,Z_LS_OTHER
687+ INTEGER :: IW,IIO,JJO,IIO_2,JJO_2, N_INT_CELLS,NOM,IC
688+ REAL (EB) :: PHI_LS_OTHER,PHI_LS_OTHER_2, U_LS_OTHER,V_LS_OTHER,Z_LS_OTHER
687689TYPE (EXTERNAL_WALL_TYPE), POINTER :: EWC
688690LOGICAL :: SOLID_CELL
689691
@@ -707,16 +709,27 @@ SUBROUTINE FILL_BOUNDARY_VALUES
707709 RETURN
708710ENDIF
709711
710- PHI_LS_OTHER = 0._EB
712+ PHI_LS_OTHER = 0._EB
713+ PHI_LS_OTHER_2 = 0._EB
711714U_LS_OTHER = 0._EB
712715V_LS_OTHER = 0._EB
713716Z_LS_OTHER = 0._EB
714717DO JJO= EWC% JJO_MIN,EWC% JJO_MAX
715718 DO IIO= EWC% IIO_MIN,EWC% IIO_MAX
719+ IIO_2 = IIO
720+ JJO_2 = JJO
721+ SELECT CASE (IOR)
722+ CASE ( 1 ) ; IIO_2 = IIO - 1
723+ CASE (- 1 ) ; IIO_2 = IIO + 1
724+ CASE ( 2 ) ; JJO_2 = JJO - 1
725+ CASE (- 2 ) ; JJO_2 = JJO + 1
726+ END SELECT
716727 IF (PREDICTOR) THEN
717- PHI_LS_OTHER = PHI_LS_OTHER + OMESH(NOM)% PHI_LS(IIO,JJO)
728+ PHI_LS_OTHER = PHI_LS_OTHER + OMESH(NOM)% PHI_LS(IIO ,JJO )
729+ PHI_LS_OTHER_2 = PHI_LS_OTHER_2 + OMESH(NOM)% PHI_LS(IIO_2,JJO_2)
718730 ELSE
719- PHI_LS_OTHER = PHI_LS_OTHER + OMESH(NOM)% PHI1_LS(IIO,JJO)
731+ PHI_LS_OTHER = PHI_LS_OTHER + OMESH(NOM)% PHI1_LS(IIO ,JJO )
732+ PHI_LS_OTHER_2 = PHI_LS_OTHER_2 + OMESH(NOM)% PHI1_LS(IIO_2,JJO_2)
720733 ENDIF
721734 U_LS_OTHER = U_LS_OTHER + OMESH(NOM)% U_LS(IIO,JJO)
722735 V_LS_OTHER = V_LS_OTHER + OMESH(NOM)% V_LS(IIO,JJO)
@@ -728,6 +741,10 @@ SUBROUTINE FILL_BOUNDARY_VALUES
728741SELECT CASE (IOR)
729742 CASE (- 2 :2 )
730743 PHI_LS_P(II,JJ) = PHI_LS_OTHER/ REAL (N_INT_CELLS,EB)
744+ IF (IOR==- 2 ) PHI_LS_P(II,JJ-1 ) = PHI_LS_OTHER_2/ REAL (N_INT_CELLS,EB)
745+ IF (IOR== 2 ) PHI_LS_P(II,JJ+1 ) = PHI_LS_OTHER_2/ REAL (N_INT_CELLS,EB)
746+ IF (IOR==- 1 ) PHI_LS_P(II-1 ,JJ) = PHI_LS_OTHER_2/ REAL (N_INT_CELLS,EB)
747+ IF (IOR== 1 ) PHI_LS_P(II+1 ,JJ) = PHI_LS_OTHER_2/ REAL (N_INT_CELLS,EB)
731748 U_LS(II,JJ) = U_LS_OTHER/ REAL (N_INT_CELLS,EB)
732749 V_LS(II,JJ) = V_LS_OTHER/ REAL (N_INT_CELLS,EB)
733750 Z_LS(II,JJ) = Z_LS_OTHER/ REAL (N_INT_CELLS,EB)
@@ -997,7 +1014,7 @@ END SUBROUTINE LEVEL_SET_SPREAD_RATE
9971014
9981015SUBROUTINE LEVEL_SET_ADVECT_FLUX
9991016
1000- INTEGER :: I,IM1,IP1,IP2,J,JM1,JP1,JP2
1017+ INTEGER :: I,J
10011018REAL (EB), DIMENSION (:) :: Z(4 )
10021019REAL (EB), POINTER , DIMENSION (:,:) :: FLUX_LS_P,F_X,F_Y
10031020REAL (EB) :: DPHIDX,DPHIDY,SR_X_AVG,SR_Y_AVG
@@ -1015,28 +1032,22 @@ SUBROUTINE LEVEL_SET_ADVECT_FLUX
10151032
10161033DO J= 1 ,JBAR
10171034 DO I= 0 ,IBAR
1018- IM1 = I-1 ; IF (IM1< 0 ) IM1 = I
1019- IP1 = I+1
1020- IP2 = I+2 ; IF (IP2> IBP1) IP2 = IP1
1021- Z(1 ) = PHI_LS_P(IM1,J)
1022- Z(2 ) = PHI_LS_P(I,J)
1023- Z(3 ) = PHI_LS_P(IP1,J)
1024- Z(4 ) = PHI_LS_P(IP2,J)
1025- SR_X_AVG = 0.5_EB * (SR_X_LS(MIN (IP1,IBAR),J)+ SR_X_LS(MAX (1 ,I),J))
1035+ Z(1 ) = PHI_LS_P(I-1 ,J)
1036+ Z(2 ) = PHI_LS_P(I ,J)
1037+ Z(3 ) = PHI_LS_P(I+1 ,J)
1038+ Z(4 ) = PHI_LS_P(I+2 ,J)
1039+ SR_X_AVG = 0.5_EB * (SR_X_LS(MIN (I+1 ,IBAR),J)+ SR_X_LS(MAX (1 ,I),J))
10261040 F_X(I,J) = SCALAR_FACE_VALUE_LS(SR_X_AVG,Z,LIMITER_LS)
10271041 ENDDO
10281042ENDDO
10291043
10301044DO J= 0 ,JBAR
10311045 DO I= 1 ,IBAR
1032- JM1 = J-1 ; IF (JM1< 0 ) JM1 = J
1033- JP1 = J+1
1034- JP2 = J+2 ; IF (JP2> JBP1) JP2 = JP1
1035- Z(1 ) = PHI_LS_P(I,JM1)
1036- Z(2 ) = PHI_LS_P(I,J)
1037- Z(3 ) = PHI_LS_P(I,JP1)
1038- Z(4 ) = PHI_LS_P(I,JP2)
1039- SR_Y_AVG = 0.5_EB * (SR_Y_LS(I,MIN (JP1,JBAR))+ SR_Y_LS(I,MAX (1 ,J)))
1046+ Z(1 ) = PHI_LS_P(I,J-1 )
1047+ Z(2 ) = PHI_LS_P(I,J )
1048+ Z(3 ) = PHI_LS_P(I,J+1 )
1049+ Z(4 ) = PHI_LS_P(I,J+2 )
1050+ SR_Y_AVG = 0.5_EB * (SR_Y_LS(I,MIN (J+1 ,JBAR))+ SR_Y_LS(I,MAX (1 ,J)))
10401051 F_Y(I,J) = SCALAR_FACE_VALUE_LS(SR_Y_AVG,Z,LIMITER_LS)
10411052 ENDDO
10421053ENDDO
0 commit comments