Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Source/cons.f90
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,7 @@ MODULE GLOBAL_CONSTANTS
INTEGER :: N_PASSIVE_SCALARS=0 !< Number of passive scalars
INTEGER :: N_TOTAL_SCALARS=0 !< Number of total scalars, tracked and passive
INTEGER :: N_FIXED_CHEMISTRY_SUBSTEPS=-1 !< Number of chemistry substeps in combustion routine
INTEGER :: ZETA_0_RAMP_INDEX=0 !< Ramp index for initial unmixed fraction

LOGICAL :: OUTPUT_CHEM_IT=.FALSE.
LOGICAL :: REAC_SOURCE_CHECK=.FALSE.
Expand Down
27 changes: 15 additions & 12 deletions Source/fire.f90
Original file line number Diff line number Diff line change
Expand Up @@ -96,12 +96,13 @@ SUBROUTINE COMBUSTION_GENERAL_LOAD_BALANCED(T,DT)
USE PHYSICAL_FUNCTIONS, ONLY: GET_SPECIFIC_GAS_CONSTANT,GET_MASS_FRACTION_ALL,GET_SPECIFIC_HEAT,GET_MOLECULAR_WEIGHT, &
GET_SENSIBLE_ENTHALPY_Z,IS_REALIZABLE
USE CHEMCONS, ONLY: DO_CHEM_LOAD_BALANCE
USE MATH_FUNCTIONS, ONLY: EVALUATE_RAMP

INTEGER :: NM,I,J,K,NC, CHEM_SUBIT_TMP,CHEM_SUBIT_TMP_OUT,ICC,JCC,INDX,NRECEIVE_CELLS
INTEGER :: NCHEM_ACTIVE_CELLS_AND_CC, NCHEM_ACTIVE_CELLS_AND_CC_GLOBAL, IERR, NCHEM_ACTIVE_CELLS, NCHEM_ACTIVE_CC
REAL(EB), INTENT(IN) :: T,DT
REAL(EB) :: ZZ_GET(1:N_TRACKED_SPECIES),DZZ(1:N_TRACKED_SPECIES),&
REAC_SOURCE_TERM_TMP(N_TRACKED_SPECIES),Q_REAC_TMP(N_REACTIONS),VCELL,PRES
REAC_SOURCE_TERM_TMP(N_TRACKED_SPECIES),Q_REAC_TMP(N_REACTIONS),VCELL,PRES,ZETA_0,TSI
LOGICAL :: Q_EXISTS
TYPE (CC_CUTCELL_TYPE), POINTER :: CC
LOGICAL :: IS_CHEM_ACTIVE
Expand Down Expand Up @@ -175,7 +176,10 @@ SUBROUTINE COMBUSTION_GENERAL_LOAD_BALANCED(T,DT)
! For 1 MPI process (serial) distribution is not needed.
!------

DO_CHEM_LOAD_BALANCE_IF : IF(N_MPI_PROCESSES > 1 .AND. DO_CHEM_LOAD_BALANCE) THEN
TSI = T-T_BEGIN
ZETA_0 = EVALUATE_RAMP(TSI,ZETA_0_RAMP_INDEX)*INITIAL_UNMIXED_FRACTION

CHEM_LOAD_BALANCE_IF : IF(N_MPI_PROCESSES > 1 .AND. DO_CHEM_LOAD_BALANCE) THEN
IF (.NOT. ALLOCATED(NCHEM_ACTIVE_CELLS_AND_CC_RANK_WISE)) ALLOCATE(NCHEM_ACTIVE_CELLS_AND_CC_RANK_WISE(N_MPI_PROCESSES))
NCHEM_ACTIVE_CELLS_AND_CC_RANK_WISE = 0
CALL MPI_ALLGATHER(NCHEM_ACTIVE_CELLS_AND_CC,1,MPI_INTEGER,NCHEM_ACTIVE_CELLS_AND_CC_RANK_WISE,1,MPI_INTEGER,MPI_COMM_WORLD,IERR)
Expand Down Expand Up @@ -205,7 +209,7 @@ SUBROUTINE COMBUSTION_GENERAL_LOAD_BALANCED(T,DT)
! Call combustion integration routine for Cartesian cell (I,J,K)
CALL COMBUSTION_MODEL( T,DT,ZZ_GET,Q_OUT,MIX_TIME_OUT,CHI_R_OUT,&
CHEM_SUBIT_TMP_OUT,REAC_SOURCE_TERM_TMP,Q_REAC_TMP,&
MYTEMP,MYRHO,PRES,MYMU,DELTA,VOL)
MYTEMP,MYRHO,PRES,MYMU,DELTA,VOL,ZETA_0)
!***************************************************************************************

RESULTS_TO_SEND_ARRAY(1:N_TRACKED_SPECIES,INDX) = ZZ_GET
Expand All @@ -216,7 +220,6 @@ SUBROUTINE COMBUSTION_GENERAL_LOAD_BALANCED(T,DT)

ENDDO


IF (COMBUSTION_ODE_SOLVER == CVODE_SOLVER) THEN
T_CHEM_ODE = T_CHEM_ODE+CURRENT_TIME()-TNOW2
ENDIF
Expand All @@ -230,7 +233,7 @@ SUBROUTINE COMBUSTION_GENERAL_LOAD_BALANCED(T,DT)
IF (STOP_STATUS/=NO_STOP) RETURN
ENDIF !NCHEM_ACTIVE_CELLS_AND_CC_GLOBAL >0

ELSE DO_CHEM_LOAD_BALANCE_IF
ELSE CHEM_LOAD_BALANCE_IF

IF (NCHEM_ACTIVE_CELLS_AND_CC >0) THEN
! Serial chemistry:
Expand All @@ -254,7 +257,7 @@ SUBROUTINE COMBUSTION_GENERAL_LOAD_BALANCED(T,DT)
CALL COMBUSTION_MODEL( T,DT,ZZ_GET,Q(I,J,K),MIX_TIME(I,J,K),CHI_R(I,J,K),&
CHEM_SUBIT_TMP,REAC_SOURCE_TERM_TMP,Q_REAC_TMP,&
TMP(I,J,K),RHO(I,J,K),PRES, MU(I,J,K),&
LES_FILTER_WIDTH(I,J,K),DX(I)*DY(J)*DZ(K),IIC=I,JJC=J,KKC=K )
LES_FILTER_WIDTH(I,J,K),DX(I)*DY(J)*DZ(K),ZETA_0,IIC=I,JJC=J,KKC=K )
!***************************************************************************************
!IF (STOP_STATUS/=NO_STOP) RETURN
IF (OUTPUT_CHEM_IT) CHEM_SUBIT(I,J,K) = CHEM_SUBIT_TMP
Expand All @@ -278,7 +281,7 @@ SUBROUTINE COMBUSTION_GENERAL_LOAD_BALANCED(T,DT)
CC%CHI_R(JCC),&
CHEM_SUBIT_TMP,REAC_SOURCE_TERM_TMP,Q_REAC_TMP,&
CC%TMP(JCC),CC%RHO(JCC),PRES,MU(I,J,K),&
LES_FILTER_WIDTH(I,J,K),CC%VOLUME(JCC),IIC=I,JJC=J,KKC=K)
LES_FILTER_WIDTH(I,J,K),CC%VOLUME(JCC),ZETA_0,IIC=I,JJC=J,KKC=K)
!***************************************************************************************
CALL SET_SPECIES_SOURCE_TERM_CUTCELL(DT, ICC, JCC, ZZ_GET, DZZ, REAC_SOURCE_TERM_TMP, Q_REAC_TMP)
END DO
Expand All @@ -291,7 +294,7 @@ SUBROUTINE COMBUSTION_GENERAL_LOAD_BALANCED(T,DT)
T_CHEM_ODE = T_CHEM_ODE+CURRENT_TIME()-TNOW2
ENDIF
ENDIF !NCHEM_ACTIVE_CELLS_AND_CC >0
ENDIF DO_CHEM_LOAD_BALANCE_IF
ENDIF CHEM_LOAD_BALANCE_IF

! This volume refactoring is needed for RADIATION_FVM (CHI_R, Q) and plotting slices:
IF(CC_IBM) THEN
Expand Down Expand Up @@ -712,13 +715,13 @@ END SUBROUTINE GATHER_CELLS_FROM_MPI_PROCESSES


SUBROUTINE COMBUSTION_MODEL(T,DT,ZZ_GET,Q_OUT,MIX_TIME_OUT,CHI_R_OUT,CHEM_SUBIT_OUT,REAC_SOURCE_TERM_OUT,Q_REAC_OUT,&
TMP_IN,RHO_IN,PRES_IN,MU_IN,DELTA,CELL_VOLUME,IIC,JJC,KKC)
TMP_IN,RHO_IN,PRES_IN,MU_IN,DELTA,CELL_VOLUME,ZETA_0_IN,IIC,JJC,KKC)
USE MATH_FUNCTIONS, ONLY: EVALUATE_RAMP
USE PHYSICAL_FUNCTIONS, ONLY: GET_REALIZABLE_MF
USE COMP_FUNCTIONS, ONLY: SHUTDOWN
USE CHEMCONS, ONLY: ODE_MIN_ATOL
INTEGER, INTENT(IN), OPTIONAL :: IIC,JJC,KKC
REAL(EB), INTENT(IN) :: T,DT,RHO_IN,PRES_IN,MU_IN,DELTA,CELL_VOLUME
REAL(EB), INTENT(IN) :: T,DT,RHO_IN,PRES_IN,MU_IN,DELTA,CELL_VOLUME,ZETA_0_IN
REAL(EB), INTENT(OUT) :: Q_OUT,MIX_TIME_OUT,CHI_R_OUT,REAC_SOURCE_TERM_OUT(N_TRACKED_SPECIES),Q_REAC_OUT(N_REACTIONS)
INTEGER, INTENT(OUT) :: CHEM_SUBIT_OUT
REAL(EB), INTENT(INOUT) :: ZZ_GET(1:N_TRACKED_SPECIES)
Expand All @@ -730,7 +733,7 @@ SUBROUTINE COMBUSTION_MODEL(T,DT,ZZ_GET,Q_OUT,MIX_TIME_OUT,CHI_R_OUT,CHEM_SUBIT_
Q_REAC_SUM(1:N_REACTIONS),Q_SUM_CHI_R,CHI_R_SUM,TIME_RAMP_FACTOR,&
TOTAL_MIXED_MASS_1,TOTAL_MIXED_MASS_2,TOTAL_MIXED_MASS_4,TOTAL_MIXED_MASS,&
ZETA_1,ZETA_2,ZETA_4,D_F,TMP_IN,C_U,DT_SUB_OLD,ERR_EST(N_TRACKED_SPECIES),ERR_TOL(N_TRACKED_SPECIES),ERR_TINY,&
ZZ_TEMP(1:N_TRACKED_SPECIES), ATOL(1:N_TRACKED_SPECIES)
ZZ_TEMP(1:N_TRACKED_SPECIES),ATOL(1:N_TRACKED_SPECIES)
INTEGER :: NR,NS,ITER,TVI,RICH_ITER,TIME_ITER,RICH_ITER_MAX
INTEGER, PARAMETER :: TV_ITER_MIN=5
LOGICAL :: TV_FLUCT(1:N_TRACKED_SPECIES),EXTINCT,NO_REACTIONS,NO_REAC_2,NO_REAC_4
Expand Down Expand Up @@ -761,7 +764,7 @@ SUBROUTINE COMBUSTION_MODEL(T,DT,ZZ_GET,Q_OUT,MIX_TIME_OUT,CHI_R_OUT,CHEM_SUBIT_
END SELECT
ENDIF

ZETA_0 = INITIAL_UNMIXED_FRACTION
ZETA_0 = ZETA_0_IN
CELL_MASS = RHO_IN*CELL_VOLUME

DT_SUB_MIN = DT/REAL(MAX_CHEMISTRY_SUBSTEPS,EB)
Expand Down
7 changes: 6 additions & 1 deletion Source/read.f90
Original file line number Diff line number Diff line change
Expand Up @@ -4492,11 +4492,12 @@ END SUBROUTINE PROC_SPEC_2
SUBROUTINE READ_COMB
USE CHEMCONS, ONLY: ODE_MIN_ATOL, EQUIV_RATIO_CHECK, MIN_EQUIV_RATIO, MAX_EQUIV_RATIO, DO_CHEM_LOAD_BALANCE
REAL(EB) :: ODE_REL_ERROR
CHARACTER(LABEL_LENGTH) :: RAMP_ZETA_0='null'
NAMELIST /COMB/ CHECK_REALIZABILITY,COMPUTE_ADIABATIC_FLAME_TEMPERATURE, DO_CHEM_LOAD_BALANCE, EQUIV_RATIO_CHECK, &
EXTINCTION_MODEL,FINITE_RATE_MIN_TEMP, FIXED_MIX_TIME,FREE_BURN_TEMPERATURE,&
INITIAL_UNMIXED_FRACTION, MAX_CHEMISTRY_SUBSTEPS, MAX_EQUIV_RATIO, MIN_EQUIV_RATIO, &
N_FIXED_CHEMISTRY_SUBSTEPS, ODE_MIN_ATOL,ODE_REL_ERROR,ODE_SOLVER,SUPPRESSION,TAU_CHEM, &
TAU_FLAME,ZZ_MIN_GLOBAL
TAU_FLAME,RAMP_ZETA_0,ZZ_MIN_GLOBAL

ODE_SOLVER = 'null'
ODE_REL_ERROR = -1._EB
Expand Down Expand Up @@ -4563,6 +4564,10 @@ SUBROUTINE READ_COMB
IF (ODE_MIN_ATOL < 0.D0) ODE_MIN_ATOL = DBLE(0.1_EB*ZZ_MIN_GLOBAL)
IF (ODE_REL_ERROR > 0._EB) GLOBAL_ODE_REL_ERROR = ODE_REL_ERROR

! Set index for ZETA_0 ramp, if needed

IF (RAMP_ZETA_0 /='null') CALL GET_RAMP_INDEX(RAMP_ZETA_0,'TIME',ZETA_0_RAMP_INDEX)

END SUBROUTINE READ_COMB


Expand Down
Loading