@@ -1186,73 +1186,83 @@ SUBROUTINE CALC_AFT_REAC_AND_PROD(ZZ,ZZ_REAC,ZZ_PROD)
11861186
11871187REAL (EB), INTENT (IN ) :: ZZ(N_TRACKED_SPECIES)
11881188REAL (EB), INTENT (OUT ) :: ZZ_REAC(N_TRACKED_SPECIES),ZZ_PROD(N_TRACKED_SPECIES)
1189+ REAL (EB) :: ZZ_EQUIV(N_TRACKED_SPECIES)
11891190REAL (EB) :: EQUIV, X,Y,Z,A,B,C,D,E, SUM_ZZ
11901191REAL (EB) :: ZZ_MASS, ZZ_FUEL_O2_MASS
11911192REAL (EB) :: REAC_MASS, PROD_MASS, FUEL_MASS, O2_MASS, CO2_MASS, H2O_MASS
11921193INTEGER :: NS
1193-
1194- CALL CALC_EQUIV_RATIO(ZZ(1 :N_TRACKED_SPECIES), EQUIV)
1195- IF (SIM_MODE /= DNS_MODE .AND. USE_MIXED_ZN_AFT_TMP) THEN
1196- EQUIV = MAX (1._EB ,EQUIV)
1197- ENDIF
1194+ REAL (EB), PARAMETER :: EQUIV_TOL= 1.E-4_EB
11981195
11991196! Adjust for diluents
12001197ZZ_FUEL_O2_MASS = 0._EB
12011198ZZ_MASS = SUM (ZZ(1 :N_TRACKED_SPECIES))
1199+ ZZ_EQUIV = 0.0_EB
12021200ZZ_REAC(1 :N_TRACKED_SPECIES) = ZZ(1 :N_TRACKED_SPECIES)
12031201ZZ_PROD(1 :N_TRACKED_SPECIES) = ZZ(1 :N_TRACKED_SPECIES)
12041202DO NS= 1 , N_TRACKED_SPECIES
1205- IF (SPECIES_MIXTURE(NS)% OXR > TWO_EPSILON_EB) THEN ! FUEL
1203+ IF (SPECIES_MIXTURE(NS)% OXR > TWO_EPSILON_EB .AND. &
1204+ ABS (SPECIES_MIXTURE(NS)% EQUIV - 1.0_EB ) > EQUIV_TOL) THEN ! FUEL
12061205 ZZ_REAC(NS) = 0._EB
12071206 ZZ_PROD(NS) = 0._EB
12081207 ZZ_FUEL_O2_MASS = ZZ_FUEL_O2_MASS + ZZ(NS)
1208+ ZZ_EQUIV(NS) = ZZ(NS)
12091209 ENDIF
12101210ENDDO
12111211ZZ_REAC(I_O2) = 0._EB
12121212ZZ_PROD(I_O2) = 0._EB
1213+ ZZ_EQUIV(I_O2) = ZZ(I_O2)
12131214ZZ_FUEL_O2_MASS = ZZ_FUEL_O2_MASS + ZZ(I_O2)
12141215
1215- ! Based on CxHyOz + aO2 = bCO2 + cH2O + dCxHyOz + eO2
1216- X= SPECIES_MIXTURE(I_FUEL)% ATOMS(6 ) ! C
1217- Y= SPECIES_MIXTURE(I_FUEL)% ATOMS(1 ) ! H
1218- Z= SPECIES_MIXTURE(I_FUEL)% ATOMS(8 ) ! O
1219- A= 0.5_EB * ((2._EB * X+0.5_EB * Y)/ EQUIV - Z) ! a is a function of equivalence ratio
1220- IF (ABS (EQUIV - 1.0_EB ) < TWO_EPSILON_EB) THEN ! Stoich
1221- B = X
1222- C = 0.5_EB * Y
1223- D = 0._EB ! No fuel
1224- E = 0._EB ! No O2
1225- ELSEIF (EQUIV > 1 ) THEN ! Rich
1226- D = (2._EB * X+0.5_EB * Y-2._EB * A- Z)/ (2._EB * X+0.5_EB * Y- Z)
1227- B = (1._EB - D)* X
1228- C = 0.5_EB * (1._EB - D)* Y
1229- E = 0._EB ! No O2
1230- ELSE ! EQUIV < 1, Lean
1231- B = X
1232- C = 0.5_EB * Y
1233- D = 0._EB ! No fuel
1234- E = A + 0.5 * Z - B - 0.5_EB * C
1235- ENDIF
1216+ IF (ZZ_FUEL_O2_MASS > TWO_EPSILON_EB) THEN
1217+ SUM_ZZ= SUM (ZZ_EQUIV)
1218+ ZZ_EQUIV = ZZ_EQUIV/ (SUM_ZZ + TWO_EPSILON_EB)
1219+ CALL CALC_EQUIV_RATIO(ZZ_EQUIV(1 :N_TRACKED_SPECIES), EQUIV)
1220+ IF (SIM_MODE /= DNS_MODE .AND. USE_MIXED_ZN_AFT_TMP) THEN
1221+ EQUIV = MAX (1._EB ,EQUIV)
1222+ ENDIF
12361223
1237- ! Setup reactants
1238- FUEL_MASS = 1._EB * SPECIES_MIXTURE(I_FUEL)% MW
1239- O2_MASS = A* SPECIES_MIXTURE(I_O2)% MW
1240- REAC_MASS = FUEL_MASS+ O2_MASS
1241- ZZ_REAC(I_FUEL)= FUEL_MASS/ REAC_MASS* ZZ_FUEL_O2_MASS
1242- ZZ_REAC(I_O2)= O2_MASS/ REAC_MASS* ZZ_FUEL_O2_MASS
1243- SUM_ZZ= SUM (ZZ_REAC)
1244- ZZ_REAC = ZZ_REAC/ SUM_ZZ
1245-
1246- ! Setup products
1247- CO2_MASS = B* SPECIES_MIXTURE(I_CO2)% MW
1248- H2O_MASS = C* SPECIES_MIXTURE(I_H2O)% MW
1249- FUEL_MASS = D* SPECIES_MIXTURE(I_FUEL)% MW
1250- O2_MASS = E* SPECIES_MIXTURE(I_O2)% MW
1251- PROD_MASS = CO2_MASS+ H2O_MASS+ FUEL_MASS+ O2_MASS
1252- ZZ_PROD(I_CO2)= ZZ_PROD(I_CO2)+ CO2_MASS/ PROD_MASS* ZZ_FUEL_O2_MASS
1253- ZZ_PROD(I_H2O)= ZZ_PROD(I_H2O)+ H2O_MASS/ PROD_MASS* ZZ_FUEL_O2_MASS
1254- ZZ_PROD(I_FUEL)= FUEL_MASS/ PROD_MASS* ZZ_FUEL_O2_MASS
1255- ZZ_PROD(I_O2)= O2_MASS/ PROD_MASS* ZZ_FUEL_O2_MASS
1224+ ! Based on CxHyOz + aO2 = bCO2 + cH2O + dCxHyOz + eO2
1225+ X= SPECIES_MIXTURE(I_FUEL)% ATOMS(6 ) ! C
1226+ Y= SPECIES_MIXTURE(I_FUEL)% ATOMS(1 ) ! H
1227+ Z= SPECIES_MIXTURE(I_FUEL)% ATOMS(8 ) ! O
1228+ A= 0.5_EB * ((2._EB * X+0.5_EB * Y)/ EQUIV - Z) ! a is a function of equivalence ratio
1229+ IF (ABS (EQUIV - 1.0_EB ) < EQUIV_TOL) THEN ! Stoich
1230+ B = X
1231+ C = 0.5_EB * Y
1232+ D = 0._EB ! No fuel
1233+ E = 0._EB ! No O2
1234+ ELSEIF (EQUIV > 1 ) THEN ! Rich
1235+ D = (2._EB * X+0.5_EB * Y-2._EB * A- Z)/ (2._EB * X+0.5_EB * Y- Z)
1236+ B = (1._EB - D)* X
1237+ C = 0.5_EB * (1._EB - D)* Y
1238+ E = 0._EB ! No O2
1239+ ELSE ! EQUIV < 1, Lean
1240+ B = X
1241+ C = 0.5_EB * Y
1242+ D = 0._EB ! No fuel
1243+ E = A + 0.5 * Z - B - 0.5_EB * C
1244+ ENDIF
1245+
1246+ ! Setup reactants
1247+ FUEL_MASS = 1._EB * SPECIES_MIXTURE(I_FUEL)% MW
1248+ O2_MASS = A* SPECIES_MIXTURE(I_O2)% MW
1249+ REAC_MASS = FUEL_MASS+ O2_MASS
1250+ ZZ_REAC(I_FUEL)= FUEL_MASS/ REAC_MASS* ZZ_FUEL_O2_MASS
1251+ ZZ_REAC(I_O2)= O2_MASS/ REAC_MASS* ZZ_FUEL_O2_MASS
1252+ SUM_ZZ= SUM (ZZ_REAC)
1253+ ZZ_REAC = ZZ_REAC/ SUM_ZZ
1254+
1255+ ! Setup products
1256+ CO2_MASS = B* SPECIES_MIXTURE(I_CO2)% MW
1257+ H2O_MASS = C* SPECIES_MIXTURE(I_H2O)% MW
1258+ FUEL_MASS = D* SPECIES_MIXTURE(I_FUEL)% MW
1259+ O2_MASS = E* SPECIES_MIXTURE(I_O2)% MW
1260+ PROD_MASS = CO2_MASS+ H2O_MASS+ FUEL_MASS+ O2_MASS
1261+ ZZ_PROD(I_CO2)= ZZ_PROD(I_CO2)+ CO2_MASS/ PROD_MASS* ZZ_FUEL_O2_MASS
1262+ ZZ_PROD(I_H2O)= ZZ_PROD(I_H2O)+ H2O_MASS/ PROD_MASS* ZZ_FUEL_O2_MASS
1263+ ZZ_PROD(I_FUEL)= FUEL_MASS/ PROD_MASS* ZZ_FUEL_O2_MASS
1264+ ZZ_PROD(I_O2)= O2_MASS/ PROD_MASS* ZZ_FUEL_O2_MASS
1265+ ENDIF
12561266SUM_ZZ= SUM (ZZ_PROD)
12571267ZZ_PROD = ZZ_PROD/ SUM_ZZ
12581268
0 commit comments