Skip to content

Commit 014d0fc

Browse files
authored
Merge pull request #15052 from rmcdermo/master
FDS Source: remove FLUX_LIMITER_SINGLE_COEF parameter I will remove the _NEW designations once I have the CC_IBM code converted over.
2 parents b378561 + 2bf4ee6 commit 014d0fc

File tree

7 files changed

+133
-573
lines changed

7 files changed

+133
-573
lines changed

Source/cons.f90

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,6 @@ MODULE GLOBAL_CONSTANTS
274274
LOGICAL :: TENSOR_DIFFUSIVITY=.FALSE. !< If true, use experimental tensor diffusivity model for spec and tmp
275275
LOGICAL :: OXPYRO_MODEL=.FALSE. !< Flag to use oxidative pyrolysis mass transfer model
276276
LOGICAL :: OUTPUT_WALL_QUANTITIES=.FALSE. !< Flag to force call to WALL_MODEL
277-
LOGICAL :: FLUX_LIMITER_SINGLE_COEF=.TRUE. !< Flag to base flux coefficients off of a single worst-case scalar gradient
278277
LOGICAL :: STORE_FIRE_ARRIVAL=.FALSE. !< Flag for tracking arrival of spreading fire front over a surface
279278
LOGICAL :: STORE_FIRE_RESIDENCE=.FALSE. !< Flag for tracking residence time of spreading fire front over a surface
280279
LOGICAL :: STORE_LS_SPREAD_RATE=.FALSE. !< Flag for outputting local level set spread rate magnitude

Source/divg.f90

Lines changed: 29 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -586,7 +586,7 @@ SUBROUTINE DIVERGENCE_PART_1(T,DT,NM)
586586

587587
CONST_GAMMA_IF_1: IF (.NOT.CONSTANT_SPECIFIC_HEAT_RATIO) THEN
588588

589-
CALL ENTHALPY_ADVECTION(U_DOT_DEL_RHO_H_S) ! Compute u dot grad rho h_s
589+
CALL ENTHALPY_ADVECTION_NEW(U_DOT_DEL_RHO_H_S) ! Compute u dot grad rho h_s
590590

591591
DO K=1,KBAR
592592
DO J=1,JBAR
@@ -635,11 +635,7 @@ SUBROUTINE DIVERGENCE_PART_1(T,DT,NM)
635635

636636
CONST_GAMMA_IF_2: IF (.NOT.CONSTANT_SPECIFIC_HEAT_RATIO) THEN
637637

638-
IF (FLUX_LIMITER_SINGLE_COEF) THEN
639-
CALL SPECIES_ADVECTION_PART_1_NEW
640-
ELSE
641-
CALL SPECIES_ADVECTION_PART_1 ! Compute and store face values of (rho Z_n)
642-
ENDIF
638+
CALL SPECIES_ADVECTION_PART_1_NEW ! Compute and store face values of (rho Z_n)
643639

644640
DO N=1,N_TRACKED_SPECIES
645641

@@ -789,14 +785,14 @@ SUBROUTINE DIVERGENCE_PART_1(T,DT,NM)
789785
END SUBROUTINE DIVERGENCE_PART_1
790786

791787

792-
SUBROUTINE ENTHALPY_ADVECTION(U_DOT_DEL_RHO_H_S)
788+
SUBROUTINE ENTHALPY_ADVECTION_NEW(U_DOT_DEL_RHO_H_S)
793789

794790
USE PHYSICAL_FUNCTIONS, ONLY: GET_SENSIBLE_ENTHALPY
795-
USE MATH_FUNCTIONS, ONLY: GET_SCALAR_FACE_VALUE
791+
USE MATH_FUNCTIONS, ONLY: GET_SCALAR_FACE_COEF,GET_SCALAR_FACE_VALUE_NEW
796792
REAL(EB), POINTER, DIMENSION(:,:,:) :: FX_H_S,FY_H_S,FZ_H_S,RHO_H_S_P,U_DOT_DEL_RHO_H_S
797793
REAL(EB) :: UN,UN_P,TMP_F_GAS,DU_P,DU_M,DV_P,DV_M,DW_P,DW_M,DU,H_S
798794
REAL(EB), ALLOCATABLE, DIMENSION(:) :: ZZ_GET
799-
REAL(EB), DIMENSION(0:3,0:3,0:3) :: U_TEMP,F_TEMP
795+
REAL(EB), DIMENSION(0:3,0:3,0:3) :: U_TEMP,F_TEMP,B_TEMP
800796
REAL(EB), DIMENSION(-1:3,-1:3,-1:3) :: Z_TEMP
801797
INTEGER :: IC,I,J,K,IW
802798
TYPE(WALL_TYPE), POINTER :: WC
@@ -809,6 +805,10 @@ SUBROUTINE ENTHALPY_ADVECTION(U_DOT_DEL_RHO_H_S)
809805
FZ_H_S=>WORK4 ; FZ_H_S = 0._EB
810806
U_DOT_DEL_RHO_H_S=>WORK6 ; U_DOT_DEL_RHO_H_S=0._EB
811807

808+
BFX = 1.E10_EB
809+
BFY = 1.E10_EB
810+
BFZ = 1.E10_EB
811+
812812
! Compute and store rho*h_s
813813

814814
!$OMP PARALLEL PRIVATE(ZZ_GET, H_S)
@@ -829,9 +829,13 @@ SUBROUTINE ENTHALPY_ADVECTION(U_DOT_DEL_RHO_H_S)
829829

830830
! Compute scalar face values
831831

832-
CALL GET_SCALAR_FACE_VALUE(UU,RHO_H_S_P,FX_H_S,1,IBM1,1,JBAR,1,KBAR,1,I_FLUX_LIMITER)
833-
CALL GET_SCALAR_FACE_VALUE(VV,RHO_H_S_P,FY_H_S,1,IBAR,1,JBM1,1,KBAR,2,I_FLUX_LIMITER)
834-
CALL GET_SCALAR_FACE_VALUE(WW,RHO_H_S_P,FZ_H_S,1,IBAR,1,JBAR,1,KBM1,3,I_FLUX_LIMITER)
832+
CALL GET_SCALAR_FACE_COEF(UU,RHO_H_S_P,BFX,0,IBAR,1,JBAR,1,KBAR,1,I_FLUX_LIMITER)
833+
CALL GET_SCALAR_FACE_COEF(VV,RHO_H_S_P,BFY,1,IBAR,0,JBAR,1,KBAR,2,I_FLUX_LIMITER)
834+
CALL GET_SCALAR_FACE_COEF(WW,RHO_H_S_P,BFZ,1,IBAR,1,JBAR,0,KBAR,3,I_FLUX_LIMITER)
835+
836+
CALL GET_SCALAR_FACE_VALUE_NEW(UU,RHO_H_S_P,FX_H_S,BFX,0,IBAR,1,JBAR,1,KBAR,1,I_FLUX_LIMITER)
837+
CALL GET_SCALAR_FACE_VALUE_NEW(VV,RHO_H_S_P,FY_H_S,BFY,1,IBAR,0,JBAR,1,KBAR,2,I_FLUX_LIMITER)
838+
CALL GET_SCALAR_FACE_VALUE_NEW(WW,RHO_H_S_P,FZ_H_S,BFZ,1,IBAR,1,JBAR,0,KBAR,3,I_FLUX_LIMITER)
835839

836840
ALLOCATE(ZZ_GET(1:N_TRACKED_SPECIES))
837841

@@ -871,7 +875,8 @@ SUBROUTINE ENTHALPY_ADVECTION(U_DOT_DEL_RHO_H_S)
871875
IF ((UU(BC%II+1,BC%JJ,BC%KK)>0._EB) .AND. .NOT.(CELL(CELL_INDEX(BC%II+1,BC%JJ,BC%KK))%WALL_INDEX(+1)>0)) THEN
872876
Z_TEMP(0:2,1,1) = (/RHO_H_S_P(BC%II+1,BC%JJ,BC%KK),RHO_H_S_P(BC%II+1:BC%II+2,BC%JJ,BC%KK)/)
873877
U_TEMP(1,1,1) = UU(BC%II+1,BC%JJ,BC%KK)
874-
CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1,1,1,1,1,1,1,I_FLUX_LIMITER)
878+
B_TEMP(1,1,1) = BFX(BC%II+1,BC%JJ,BC%KK)
879+
CALL GET_SCALAR_FACE_VALUE_NEW(U_TEMP,Z_TEMP,F_TEMP,B_TEMP,1,1,1,1,1,1,1,I_FLUX_LIMITER)
875880
FX_H_S(BC%II+1,BC%JJ,BC%KK) = F_TEMP(1,1,1)
876881
ENDIF
877882
CASE(-1) OFF_WALL_SELECT_1
@@ -881,35 +886,40 @@ SUBROUTINE ENTHALPY_ADVECTION(U_DOT_DEL_RHO_H_S)
881886
IF ((UU(BC%II-2,BC%JJ,BC%KK)<0._EB) .AND. .NOT.(CELL(CELL_INDEX(BC%II-1,BC%JJ,BC%KK))%WALL_INDEX(-1)>0)) THEN
882887
Z_TEMP(1:3,1,1) = (/RHO_H_S_P(BC%II-2:BC%II-1,BC%JJ,BC%KK),RHO_H_S_P(BC%II-1,BC%JJ,BC%KK)/)
883888
U_TEMP(1,1,1) = UU(BC%II-2,BC%JJ,BC%KK)
884-
CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1,1,1,1,1,1,1,I_FLUX_LIMITER)
889+
B_TEMP(1,1,1) = BFX(BC%II-2,BC%JJ,BC%KK)
890+
CALL GET_SCALAR_FACE_VALUE_NEW(U_TEMP,Z_TEMP,F_TEMP,B_TEMP,1,1,1,1,1,1,1,I_FLUX_LIMITER)
885891
FX_H_S(BC%II-2,BC%JJ,BC%KK) = F_TEMP(1,1,1)
886892
ENDIF
887893
CASE( 2) OFF_WALL_SELECT_1
888894
IF ((VV(BC%II,BC%JJ+1,BC%KK)>0._EB) .AND. .NOT.(CELL(CELL_INDEX(BC%II,BC%JJ+1,BC%KK))%WALL_INDEX(+2)>0)) THEN
889895
Z_TEMP(1,0:2,1) = (/RHO_H_S_P(BC%II,BC%JJ+1,BC%KK),RHO_H_S_P(BC%II,BC%JJ+1:BC%JJ+2,BC%KK)/)
890896
U_TEMP(1,1,1) = VV(BC%II,BC%JJ+1,BC%KK)
891-
CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1,1,1,1,1,1,2,I_FLUX_LIMITER)
897+
B_TEMP(1,1,1) = BFY(BC%II,BC%JJ+1,BC%KK)
898+
CALL GET_SCALAR_FACE_VALUE_NEW(U_TEMP,Z_TEMP,F_TEMP,B_TEMP,1,1,1,1,1,1,2,I_FLUX_LIMITER)
892899
FY_H_S(BC%II,BC%JJ+1,BC%KK) = F_TEMP(1,1,1)
893900
ENDIF
894901
CASE(-2) OFF_WALL_SELECT_1
895902
IF ((VV(BC%II,BC%JJ-2,BC%KK)<0._EB) .AND. .NOT.(CELL(CELL_INDEX(BC%II,BC%JJ-1,BC%KK))%WALL_INDEX(-2)>0)) THEN
896903
Z_TEMP(1,1:3,1) = (/RHO_H_S_P(BC%II,BC%JJ-2:BC%JJ-1,BC%KK),RHO_H_S_P(BC%II,BC%JJ-1,BC%KK)/)
897904
U_TEMP(1,1,1) = VV(BC%II,BC%JJ-2,BC%KK)
898-
CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1,1,1,1,1,1,2,I_FLUX_LIMITER)
905+
B_TEMP(1,1,1) = BFY(BC%II,BC%JJ-2,BC%KK)
906+
CALL GET_SCALAR_FACE_VALUE_NEW(U_TEMP,Z_TEMP,F_TEMP,B_TEMP,1,1,1,1,1,1,2,I_FLUX_LIMITER)
899907
FY_H_S(BC%II,BC%JJ-2,BC%KK) = F_TEMP(1,1,1)
900908
ENDIF
901909
CASE( 3) OFF_WALL_SELECT_1
902910
IF ((WW(BC%II,BC%JJ,BC%KK+1)>0._EB) .AND. .NOT.(CELL(CELL_INDEX(BC%II,BC%JJ,BC%KK+1))%WALL_INDEX(+3)>0)) THEN
903911
Z_TEMP(1,1,0:2) = (/RHO_H_S_P(BC%II,BC%JJ,BC%KK+1),RHO_H_S_P(BC%II,BC%JJ,BC%KK+1:BC%KK+2)/)
904912
U_TEMP(1,1,1) = WW(BC%II,BC%JJ,BC%KK+1)
905-
CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1,1,1,1,1,1,3,I_FLUX_LIMITER)
913+
B_TEMP(1,1,1) = BFZ(BC%II,BC%JJ,BC%KK+1)
914+
CALL GET_SCALAR_FACE_VALUE_NEW(U_TEMP,Z_TEMP,F_TEMP,B_TEMP,1,1,1,1,1,1,3,I_FLUX_LIMITER)
906915
FZ_H_S(BC%II,BC%JJ,BC%KK+1) = F_TEMP(1,1,1)
907916
ENDIF
908917
CASE(-3) OFF_WALL_SELECT_1
909918
IF ((WW(BC%II,BC%JJ,BC%KK-2)<0._EB) .AND. .NOT.(CELL(CELL_INDEX(BC%II,BC%JJ,BC%KK-1))%WALL_INDEX(-3)>0)) THEN
910919
Z_TEMP(1,1,1:3) = (/RHO_H_S_P(BC%II,BC%JJ,BC%KK-2:BC%KK-1),RHO_H_S_P(BC%II,BC%JJ,BC%KK-1)/)
911920
U_TEMP(1,1,1) = WW(BC%II,BC%JJ,BC%KK-2)
912-
CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1,1,1,1,1,1,3,I_FLUX_LIMITER)
921+
B_TEMP(1,1,1) = BFZ(BC%II,BC%JJ,BC%KK-2)
922+
CALL GET_SCALAR_FACE_VALUE_NEW(U_TEMP,Z_TEMP,F_TEMP,B_TEMP,1,1,1,1,1,1,3,I_FLUX_LIMITER)
913923
FZ_H_S(BC%II,BC%JJ,BC%KK-2) = F_TEMP(1,1,1)
914924
ENDIF
915925
END SELECT OFF_WALL_SELECT_1
@@ -966,117 +976,7 @@ SUBROUTINE ENTHALPY_ADVECTION(U_DOT_DEL_RHO_H_S)
966976
ENDDO
967977
!$OMP END PARALLEL DO
968978

969-
END SUBROUTINE ENTHALPY_ADVECTION
970-
971-
972-
SUBROUTINE SPECIES_ADVECTION_PART_1
973-
974-
USE MATH_FUNCTIONS, ONLY: GET_SCALAR_FACE_VALUE
975-
USE PHYSICAL_FUNCTIONS, ONLY: GET_MOLECULAR_WEIGHT
976-
REAL(EB), POINTER, DIMENSION(:,:,:) :: RHO_Z_P
977-
REAL(EB), POINTER, DIMENSION(:,:,:,:) :: FX_ZZ,FY_ZZ,FZ_ZZ
978-
REAL(EB), DIMENSION(0:3,0:3,0:3) :: U_TEMP,F_TEMP
979-
REAL(EB), DIMENSION(-1:3,-1:3,-1:3) :: Z_TEMP
980-
INTEGER :: I,J,K,IW,N
981-
TYPE(WALL_TYPE), POINTER :: WC
982-
TYPE(BOUNDARY_COORD_TYPE), POINTER :: BC
983-
TYPE(BOUNDARY_PROP1_TYPE), POINTER :: B1
984-
985-
FX_ZZ=>SWORK1
986-
FY_ZZ=>SWORK2
987-
FZ_ZZ=>SWORK3
988-
RHO_Z_P=>WORK_PAD
989-
990-
! Species face values
991-
992-
SPECIES_LOOP: DO N=1,N_TOTAL_SCALARS
993-
994-
!$OMP PARALLEL DO
995-
DO K=-1,KBP1+1
996-
DO J=-1,JBP1+1
997-
DO I=-1,IBP1+1
998-
RHO_Z_P(I,J,K) = RHOP(I,J,K)*ZZP(I,J,K,N)
999-
ENDDO
1000-
ENDDO
1001-
ENDDO
1002-
!$OMP END PARALLEL DO
1003-
1004-
! Compute scalar face values
1005-
1006-
CALL GET_SCALAR_FACE_VALUE(UU,RHO_Z_P,FX_ZZ(:,:,:,N),0,IBAR,1,JBAR,1,KBAR,1,I_FLUX_LIMITER)
1007-
CALL GET_SCALAR_FACE_VALUE(VV,RHO_Z_P,FY_ZZ(:,:,:,N),1,IBAR,0,JBAR,1,KBAR,2,I_FLUX_LIMITER)
1008-
CALL GET_SCALAR_FACE_VALUE(WW,RHO_Z_P,FZ_ZZ(:,:,:,N),1,IBAR,1,JBAR,0,KBAR,3,I_FLUX_LIMITER)
1009-
1010-
!$OMP PARALLEL DO PRIVATE(IW,WC,BC,B1,U_TEMP,Z_TEMP,F_TEMP)
1011-
WALL_LOOP_2: DO IW=1,N_EXTERNAL_WALL_CELLS+N_INTERNAL_WALL_CELLS
1012-
WC=>WALL(IW)
1013-
IF (WC%BOUNDARY_TYPE==NULL_BOUNDARY) CYCLE WALL_LOOP_2
1014-
BC=>BOUNDARY_COORD(WC%BC_INDEX)
1015-
B1=>BOUNDARY_PROP1(WC%B1_INDEX)
1016-
1017-
! Overwrite first off-wall advective flux if flow is away from the wall and if the face is not also a wall cell
1018-
1019-
OFF_WALL_IF_2: IF (WC%BOUNDARY_TYPE/=INTERPOLATED_BOUNDARY .AND. WC%BOUNDARY_TYPE/=OPEN_BOUNDARY) THEN
1020-
1021-
OFF_WALL_SELECT_2: SELECT CASE(BC%IOR)
1022-
CASE( 1) OFF_WALL_SELECT_2
1023-
! ghost FX/UU(II+1)
1024-
! /// II /// II+1 | II+2 | ...
1025-
! ^ WALL_INDEX(II+1,+1)
1026-
IF ((UU(BC%II+1,BC%JJ,BC%KK)>0._EB) .AND. .NOT.(CELL(CELL_INDEX(BC%II+1,BC%JJ,BC%KK))%WALL_INDEX(+1)>0)) THEN
1027-
Z_TEMP(0:2,1,1) = (/RHO_Z_P(BC%II+1,BC%JJ,BC%KK),RHO_Z_P(BC%II+1:BC%II+2,BC%JJ,BC%KK)/)
1028-
U_TEMP(1,1,1) = UU(BC%II+1,BC%JJ,BC%KK)
1029-
CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1,1,1,1,1,1,1,I_FLUX_LIMITER)
1030-
FX_ZZ(BC%II+1,BC%JJ,BC%KK,N) = F_TEMP(1,1,1)
1031-
ENDIF
1032-
CASE(-1) OFF_WALL_SELECT_2
1033-
! FX/UU(II-2) ghost
1034-
! ... | II-2 | II-1 /// II ///
1035-
! ^ WALL_INDEX(II-1,-1)
1036-
IF ((UU(BC%II-2,BC%JJ,BC%KK)<0._EB) .AND. .NOT.(CELL(CELL_INDEX(BC%II-1,BC%JJ,BC%KK))%WALL_INDEX(-1)>0)) THEN
1037-
Z_TEMP(1:3,1,1) = (/RHO_Z_P(BC%II-2:BC%II-1,BC%JJ,BC%KK),RHO_Z_P(BC%II-1,BC%JJ,BC%KK)/)
1038-
U_TEMP(1,1,1) = UU(BC%II-2,BC%JJ,BC%KK)
1039-
CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1,1,1,1,1,1,1,I_FLUX_LIMITER)
1040-
FX_ZZ(BC%II-2,BC%JJ,BC%KK,N) = F_TEMP(1,1,1)
1041-
ENDIF
1042-
CASE( 2) OFF_WALL_SELECT_2
1043-
IF ((VV(BC%II,BC%JJ+1,BC%KK)>0._EB) .AND. .NOT.(CELL(CELL_INDEX(BC%II,BC%JJ+1,BC%KK))%WALL_INDEX(+2)>0)) THEN
1044-
Z_TEMP(1,0:2,1) = (/RHO_Z_P(BC%II,BC%JJ+1,BC%KK),RHO_Z_P(BC%II,BC%JJ+1:BC%JJ+2,BC%KK)/)
1045-
U_TEMP(1,1,1) = VV(BC%II,BC%JJ+1,BC%KK)
1046-
CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1,1,1,1,1,1,2,I_FLUX_LIMITER)
1047-
FY_ZZ(BC%II,BC%JJ+1,BC%KK,N) = F_TEMP(1,1,1)
1048-
ENDIF
1049-
CASE(-2) OFF_WALL_SELECT_2
1050-
IF ((VV(BC%II,BC%JJ-2,BC%KK)<0._EB) .AND. .NOT.(CELL(CELL_INDEX(BC%II,BC%JJ-1,BC%KK))%WALL_INDEX(-2)>0)) THEN
1051-
Z_TEMP(1,1:3,1) = (/RHO_Z_P(BC%II,BC%JJ-2:BC%JJ-1,BC%KK),RHO_Z_P(BC%II,BC%JJ-1,BC%KK)/)
1052-
U_TEMP(1,1,1) = VV(BC%II,BC%JJ-2,BC%KK)
1053-
CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1,1,1,1,1,1,2,I_FLUX_LIMITER)
1054-
FY_ZZ(BC%II,BC%JJ-2,BC%KK,N) = F_TEMP(1,1,1)
1055-
ENDIF
1056-
CASE( 3) OFF_WALL_SELECT_2
1057-
IF ((WW(BC%II,BC%JJ,BC%KK+1)>0._EB) .AND. .NOT.(CELL(CELL_INDEX(BC%II,BC%JJ,BC%KK+1))%WALL_INDEX(+3)>0)) THEN
1058-
Z_TEMP(1,1,0:2) = (/RHO_Z_P(BC%II,BC%JJ,BC%KK+1),RHO_Z_P(BC%II,BC%JJ,BC%KK+1:BC%KK+2)/)
1059-
U_TEMP(1,1,1) = WW(BC%II,BC%JJ,BC%KK+1)
1060-
CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1,1,1,1,1,1,3,I_FLUX_LIMITER)
1061-
FZ_ZZ(BC%II,BC%JJ,BC%KK+1,N) = F_TEMP(1,1,1)
1062-
ENDIF
1063-
CASE(-3) OFF_WALL_SELECT_2
1064-
IF ((WW(BC%II,BC%JJ,BC%KK-2)<0._EB) .AND. .NOT.(CELL(CELL_INDEX(BC%II,BC%JJ,BC%KK-1))%WALL_INDEX(-3)>0)) THEN
1065-
Z_TEMP(1,1,1:3) = (/RHO_Z_P(BC%II,BC%JJ,BC%KK-2:BC%KK-1),RHO_Z_P(BC%II,BC%JJ,BC%KK-1)/)
1066-
U_TEMP(1,1,1) = WW(BC%II,BC%JJ,BC%KK-2)
1067-
CALL GET_SCALAR_FACE_VALUE(U_TEMP,Z_TEMP,F_TEMP,1,1,1,1,1,1,3,I_FLUX_LIMITER)
1068-
FZ_ZZ(BC%II,BC%JJ,BC%KK-2,N) = F_TEMP(1,1,1)
1069-
ENDIF
1070-
END SELECT OFF_WALL_SELECT_2
1071-
1072-
ENDIF OFF_WALL_IF_2
1073-
1074-
ENDDO WALL_LOOP_2
1075-
!$OMP END PARALLEL DO
1076-
1077-
ENDDO SPECIES_LOOP
1078-
1079-
END SUBROUTINE SPECIES_ADVECTION_PART_1
979+
END SUBROUTINE ENTHALPY_ADVECTION_NEW
1080980

1081981

1082982
SUBROUTINE SPECIES_ADVECTION_PART_1_NEW

Source/init.f90

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -595,18 +595,6 @@ SUBROUTINE INITIALIZE_MESH_VARIABLES_1(DT,NM)
595595

596596
ALLOCATE(M%RSUM(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO) ; CALL ChkMemErr('INIT','RSUM',IZERO) ; M%RSUM=RSUM0
597597

598-
! Allocate scalar face values
599-
600-
ALLOCATE( M%FX(0:IBP1,0:JBP1,0:KBP1,1:N_TOTAL_SCALARS),STAT=IZERO); CALL ChkMemErr('INIT','FX',IZERO) ; M%FX=0._EB
601-
ALLOCATE( M%FY(0:IBP1,0:JBP1,0:KBP1,1:N_TOTAL_SCALARS),STAT=IZERO); CALL ChkMemErr('INIT','FY',IZERO) ; M%FY=0._EB
602-
ALLOCATE( M%FZ(0:IBP1,0:JBP1,0:KBP1,1:N_TOTAL_SCALARS),STAT=IZERO); CALL ChkMemErr('INIT','FZ',IZERO) ; M%FZ=0._EB
603-
604-
IF (FLUX_LIMITER_SINGLE_COEF) THEN
605-
ALLOCATE( M%BFX(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO); CALL ChkMemErr('INIT','BFX',IZERO) ; M%BFX=0._EB
606-
ALLOCATE( M%BFY(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO); CALL ChkMemErr('INIT','BFY',IZERO) ; M%BFY=0._EB
607-
ALLOCATE( M%BFZ(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO); CALL ChkMemErr('INIT','BFZ',IZERO) ; M%BFZ=0._EB
608-
ENDIF
609-
610598
! Allocate storage for scalar total fluxes
611599

612600
IF (STORE_SPECIES_FLUX) THEN
@@ -831,6 +819,23 @@ SUBROUTINE INITIALIZE_MESH_VARIABLES_1(DT,NM)
831819
M%ZZS(:,:,:,N) = INITIAL_UNMIXED_FRACTION
832820
ENDDO
833821

822+
! Allocate scalar face values
823+
824+
ALLOCATE( M%FX(0:IBP1,0:JBP1,0:KBP1,1:N_TOTAL_SCALARS),STAT=IZERO); CALL ChkMemErr('INIT','FX',IZERO) ; M%FX=0._EB
825+
ALLOCATE( M%FY(0:IBP1,0:JBP1,0:KBP1,1:N_TOTAL_SCALARS),STAT=IZERO); CALL ChkMemErr('INIT','FY',IZERO) ; M%FY=0._EB
826+
ALLOCATE( M%FZ(0:IBP1,0:JBP1,0:KBP1,1:N_TOTAL_SCALARS),STAT=IZERO); CALL ChkMemErr('INIT','FZ',IZERO) ; M%FZ=0._EB
827+
DO N=1,N_TRACKED_SPECIES
828+
M%FX(:,:,:,N)=RHOA*SPECIES_MIXTURE(N)%ZZ0
829+
M%FY(:,:,:,N)=RHOA*SPECIES_MIXTURE(N)%ZZ0
830+
M%FZ(:,:,:,N)=RHOA*SPECIES_MIXTURE(N)%ZZ0
831+
ENDDO
832+
833+
! Allocate flux limiter coefficients
834+
835+
ALLOCATE( M%BFX(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO); CALL ChkMemErr('INIT','BFX',IZERO) ; M%BFX=0._EB
836+
ALLOCATE( M%BFY(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO); CALL ChkMemErr('INIT','BFY',IZERO) ; M%BFY=0._EB
837+
ALLOCATE( M%BFZ(0:IBP1,0:JBP1,0:KBP1),STAT=IZERO); CALL ChkMemErr('INIT','BFZ',IZERO) ; M%BFZ=0._EB
838+
834839
! Allocate and Initialize Mesh-Dependent Radiation Arrays
835840

836841
M%QR = 0._EB

Source/main.f90

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -626,11 +626,7 @@ PROGRAM FDS
626626
COMPUTE_FINITE_DIFFERENCES_1: DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
627627
CALL INSERT_ALL_PARTICLES(T,NM)
628628
IF (.NOT.SOLID_PHASE_ONLY .AND. .NOT.FREEZE_VELOCITY) CALL COMPUTE_VISCOSITY(NM,APPLY_TO_ESTIMATED_VARIABLES=.FALSE.)
629-
IF (FLUX_LIMITER_SINGLE_COEF) THEN
630-
CALL MASS_FINITE_DIFFERENCES_NEW(NM)
631-
ELSE
632-
CALL MASS_FINITE_DIFFERENCES(NM)
633-
ENDIF
629+
CALL MASS_FINITE_DIFFERENCES_NEW(NM)
634630
ENDDO COMPUTE_FINITE_DIFFERENCES_1
635631

636632
! Estimate quantities at next time step, and decrease/increase time step if necessary based on CFL condition
@@ -811,11 +807,7 @@ PROGRAM FDS
811807

812808
COMPUTE_FINITE_DIFFERENCES_2: DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
813809
IF (.NOT.SOLID_PHASE_ONLY .AND. .NOT.FREEZE_VELOCITY) CALL COMPUTE_VISCOSITY(NM,APPLY_TO_ESTIMATED_VARIABLES=.TRUE.)
814-
IF (FLUX_LIMITER_SINGLE_COEF) THEN
815-
CALL MASS_FINITE_DIFFERENCES_NEW(NM)
816-
ELSE
817-
CALL MASS_FINITE_DIFFERENCES(NM)
818-
ENDIF
810+
CALL MASS_FINITE_DIFFERENCES_NEW(NM)
819811
CALL DENSITY(T,DT,NM)
820812
IF (LEVEL_SET_MODE>0) CALL LEVEL_SET_FIRESPREAD(T,DT,NM)
821813
ENDDO COMPUTE_FINITE_DIFFERENCES_2

0 commit comments

Comments
 (0)