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 @@ -521,6 +521,7 @@ MODULE GLOBAL_CONSTANTS
INTEGER, ALLOCATABLE, DIMENSION(:,:) :: VELOCITY_ERROR_MAX_LOC !< Indices of max velocity error
INTEGER, ALLOCATABLE, DIMENSION(:,:) :: PRESSURE_ERROR_MAX_LOC !< Indices of max pressure error
INTEGER :: PRESSURE_ITERATIONS=0 !< Counter for pressure iterations
INTEGER :: MAX_PREDICTOR_PRESSURE_ITERATIONS=-1 !< Max pressure iterations per pressure solve in predictor
INTEGER :: MAX_PRESSURE_ITERATIONS=10 !< Max pressure iterations per pressure solve
INTEGER :: TOTAL_PRESSURE_ITERATIONS=0 !< Counter for total pressure iterations
CHARACTER(LABEL_LENGTH) :: PRES_METHOD='FFT' !< Pressure solver method
Expand Down
22 changes: 11 additions & 11 deletions Source/fire.f90
Original file line number Diff line number Diff line change
Expand Up @@ -1182,7 +1182,7 @@ END SUBROUTINE CALC_ADIABATIC_FLAME_TEMPERATURE
! Calculate Reactants and products
SUBROUTINE CALC_AFT_REAC_AND_PROD(ZZ,ZZ_REAC,ZZ_PROD)
USE PHYSICAL_FUNCTIONS, ONLY: CALC_EQUIV_RATIO
USE CHEMCONS, ONLY: I_FUEL,I_CO2,I_H2O,I_O2,I_N2,USE_MIXED_ZN_AFT_TMP
USE CHEMCONS, ONLY: I_FUEL,I_CO2,I_H2O,I_O2,USE_MIXED_ZN_AFT_TMP

REAL(EB), INTENT(IN) :: ZZ(N_TRACKED_SPECIES)
REAL(EB), INTENT(OUT) :: ZZ_REAC(N_TRACKED_SPECIES),ZZ_PROD(N_TRACKED_SPECIES)
Expand All @@ -1193,37 +1193,37 @@ SUBROUTINE CALC_AFT_REAC_AND_PROD(ZZ,ZZ_REAC,ZZ_PROD)

CALL CALC_EQUIV_RATIO(ZZ(1:N_TRACKED_SPECIES), EQUIV)
IF (SIM_MODE /= DNS_MODE .AND. USE_MIXED_ZN_AFT_TMP) THEN
EQUIV = MAX(1.0_EB,EQUIV)
EQUIV = MAX(1._EB,EQUIV)
ENDIF

! Adjust for diluents
ZZ_FUEL_O2_MASS = 0.0_EB
ZZ_FUEL_O2_MASS = 0._EB
ZZ_MASS = SUM(ZZ(1:N_TRACKED_SPECIES))
ZZ_REAC(1:N_TRACKED_SPECIES) = ZZ(1:N_TRACKED_SPECIES)
ZZ_PROD(1:N_TRACKED_SPECIES) = ZZ(1:N_TRACKED_SPECIES)
DO NS=1, N_TRACKED_SPECIES
IF (SPECIES_MIXTURE(NS)%OXR > 0.0_EB) THEN ! FUEL
ZZ_REAC(NS) = 0.0_EB
ZZ_PROD(NS) = 0.0_EB
IF (SPECIES_MIXTURE(NS)%OXR > TWO_EPSILON_EB) THEN ! FUEL
ZZ_REAC(NS) = 0._EB
ZZ_PROD(NS) = 0._EB
ZZ_FUEL_O2_MASS = ZZ_FUEL_O2_MASS + ZZ(NS)
ENDIF
ENDDO
ZZ_REAC(I_O2) = 0.0_EB
ZZ_PROD(I_O2) = 0.0_EB
ZZ_REAC(I_O2) = 0._EB
ZZ_PROD(I_O2) = 0._EB
ZZ_FUEL_O2_MASS = ZZ_FUEL_O2_MASS + ZZ(I_O2)

! Based on CxHyOz + aO2 = bCO2 + cH2O + dCxHyOz + eO2
X=SPECIES_MIXTURE(I_FUEL)%ATOMS(6) !C
Y=SPECIES_MIXTURE(I_FUEL)%ATOMS(1) !H
Z=SPECIES_MIXTURE(I_FUEL)%ATOMS(8) !O
A=0.5_EB*((2.0_EB*X+0.5_EB*Y)/EQUIV -Z) ! a is a function of equivalence ratio
IF(ABS(EQUIV - 1.0_EB) <1E-3_EB) THEN ! Stoich
A=0.5_EB*((2._EB*X+0.5_EB*Y)/EQUIV -Z) ! a is a function of equivalence ratio
IF (ABS(EQUIV - 1.0_EB) < TWO_EPSILON_EB) THEN ! Stoich
B = X
C = 0.5_EB*Y
D = 0._EB ! No fuel
E = 0._EB ! No O2
ELSEIF (EQUIV > 1) THEN ! Rich
D = (2.0_EB*X+0.5_EB*Y-2.0_EB*A-Z)/(2.0_EB*X+0.5_EB*Y-Z)
D = (2._EB*X+0.5_EB*Y-2._EB*A-Z)/(2._EB*X+0.5_EB*Y-Z)
B = (1._EB-D)*X
C = 0.5_EB*(1._EB-D)*Y
E = 0._EB ! No O2
Expand Down
7 changes: 5 additions & 2 deletions Source/main.f90
Original file line number Diff line number Diff line change
Expand Up @@ -1520,9 +1520,12 @@ SUBROUTINE PRESSURE_ITERATION_SCHEME

IF (MAXVAL(PRESSURE_ERROR_MAX)<PRESSURE_TOLERANCE) ITERATE_BAROCLINIC_TERM = .FALSE.

IF ((MAXVAL(PRESSURE_ERROR_MAX)<PRESSURE_TOLERANCE .AND. &
MAXVAL(VELOCITY_ERROR_MAX)<VELOCITY_TOLERANCE) .OR. PRESSURE_ITERATIONS>=MAX_PRESSURE_ITERATIONS) &
IF (PREDICTOR .AND. PRESSURE_ITERATIONS>=MAX_PREDICTOR_PRESSURE_ITERATIONS) EXIT PRESSURE_ITERATION_LOOP
IF (CORRECTOR .AND. PRESSURE_ITERATIONS>=MAX_PRESSURE_ITERATIONS) EXIT PRESSURE_ITERATION_LOOP

IF (MAXVAL(PRESSURE_ERROR_MAX)<PRESSURE_TOLERANCE .AND. MAXVAL(VELOCITY_ERROR_MAX)<VELOCITY_TOLERANCE) THEN
EXIT PRESSURE_ITERATION_LOOP
ENDIF

! Exit the iteration loop if satisfactory progress is not achieved

Expand Down
8 changes: 7 additions & 1 deletion Source/read.f90
Original file line number Diff line number Diff line change
Expand Up @@ -9932,7 +9932,7 @@ SUBROUTINE READ_PRES
INTEGER :: NM

NAMELIST /PRES/ BAROCLINIC,CHECK_POISSON,FISHPAK_BC,ITERATION_SUSPEND_FACTOR, &
MAX_PRESSURE_ITERATIONS,PRESSURE_RELAX_TIME,PRESSURE_TOLERANCE, &
MAX_PREDICTOR_PRESSURE_ITERATIONS,MAX_PRESSURE_ITERATIONS,PRESSURE_RELAX_TIME,PRESSURE_TOLERANCE, &
RELAXATION_FACTOR,SOLVER,SUSPEND_PRESSURE_ITERATIONS,TUNNEL_PRECONDITIONER,VELOCITY_TOLERANCE, &
WRITE_PARCSRPCG_MATRIX

Expand Down Expand Up @@ -10028,6 +10028,8 @@ SUBROUTINE READ_PRES
IF (PRESSURE_TOLERANCE<TWO_EPSILON_EB) PRESSURE_TOLERANCE = 20.0_EB/MIN(1._EB,CHARACTERISTIC_CELL_SIZE)**2
ENDIF

! Error checks

IF (NMESHES>1 .AND. ANY(FISHPAK_BC==FISHPAK_BC_PERIODIC)) THEN
CALL SHUTDOWN('ERROR(372): Cannot use FISHPAK_BC for multiple mesh simulations.') ; RETURN
ENDIF
Expand Down Expand Up @@ -10058,6 +10060,10 @@ SUBROUTINE READ_PRES
ALLOCATE(H_BAR(0:TUNNEL_NXP+1)) ; H_BAR = 0._EB
ENDIF

! Optionally set a different number of max pressure iterations in the predictor stage

IF (MAX_PREDICTOR_PRESSURE_ITERATIONS<0) MAX_PREDICTOR_PRESSURE_ITERATIONS = MAX_PRESSURE_ITERATIONS

END SUBROUTINE READ_PRES


Expand Down
Loading