@@ -1188,73 +1188,83 @@ SUBROUTINE CALC_AFT_REAC_AND_PROD(ZZ,ZZ_REAC,ZZ_PROD)
11881188
11891189REAL (EB), INTENT (IN ) :: ZZ(N_TRACKED_SPECIES)
11901190REAL (EB), INTENT (OUT ) :: ZZ_REAC(N_TRACKED_SPECIES),ZZ_PROD(N_TRACKED_SPECIES)
1191+ REAL (EB) :: ZZ_EQUIV(N_TRACKED_SPECIES)
11911192REAL (EB) :: EQUIV, X,Y,Z,A,B,C,D,E, SUM_ZZ
11921193REAL (EB) :: ZZ_MASS, ZZ_FUEL_O2_MASS
11931194REAL (EB) :: REAC_MASS, PROD_MASS, FUEL_MASS, O2_MASS, CO2_MASS, H2O_MASS
11941195INTEGER :: NS
1195-
1196- CALL CALC_EQUIV_RATIO(ZZ(1 :N_TRACKED_SPECIES), EQUIV)
1197- IF (SIM_MODE /= DNS_MODE .AND. USE_MIXED_ZN_AFT_TMP) THEN
1198- EQUIV = MAX (1._EB ,EQUIV)
1199- ENDIF
1196+ REAL (EB), PARAMETER :: EQUIV_TOL= 1.E-4_EB
12001197
12011198! Adjust for diluents
12021199ZZ_FUEL_O2_MASS = 0._EB
12031200ZZ_MASS = SUM (ZZ(1 :N_TRACKED_SPECIES))
1201+ ZZ_EQUIV = 0.0_EB
12041202ZZ_REAC(1 :N_TRACKED_SPECIES) = ZZ(1 :N_TRACKED_SPECIES)
12051203ZZ_PROD(1 :N_TRACKED_SPECIES) = ZZ(1 :N_TRACKED_SPECIES)
12061204DO NS= 1 , N_TRACKED_SPECIES
1207- IF (SPECIES_MIXTURE(NS)% OXR > TWO_EPSILON_EB) THEN ! FUEL
1205+ IF (SPECIES_MIXTURE(NS)% OXR > TWO_EPSILON_EB .AND. &
1206+ ABS (SPECIES_MIXTURE(NS)% EQUIV - 1.0_EB ) > EQUIV_TOL) THEN ! FUEL
12081207 ZZ_REAC(NS) = 0._EB
12091208 ZZ_PROD(NS) = 0._EB
12101209 ZZ_FUEL_O2_MASS = ZZ_FUEL_O2_MASS + ZZ(NS)
1210+ ZZ_EQUIV(NS) = ZZ(NS)
12111211 ENDIF
12121212ENDDO
12131213ZZ_REAC(I_O2) = 0._EB
12141214ZZ_PROD(I_O2) = 0._EB
1215+ ZZ_EQUIV(I_O2) = ZZ(I_O2)
12151216ZZ_FUEL_O2_MASS = ZZ_FUEL_O2_MASS + ZZ(I_O2)
12161217
1217- ! Based on CxHyOz + aO2 = bCO2 + cH2O + dCxHyOz + eO2
1218- X= SPECIES_MIXTURE(I_FUEL)% ATOMS(6 ) ! C
1219- Y= SPECIES_MIXTURE(I_FUEL)% ATOMS(1 ) ! H
1220- Z= SPECIES_MIXTURE(I_FUEL)% ATOMS(8 ) ! O
1221- A= 0.5_EB * ((2._EB * X+0.5_EB * Y)/ EQUIV - Z) ! a is a function of equivalence ratio
1222- IF (ABS (EQUIV - 1.0_EB ) < TWO_EPSILON_EB) THEN ! Stoich
1223- B = X
1224- C = 0.5_EB * Y
1225- D = 0._EB ! No fuel
1226- E = 0._EB ! No O2
1227- ELSEIF (EQUIV > 1 ) THEN ! Rich
1228- D = (2._EB * X+0.5_EB * Y-2._EB * A- Z)/ (2._EB * X+0.5_EB * Y- Z)
1229- B = (1._EB - D)* X
1230- C = 0.5_EB * (1._EB - D)* Y
1231- E = 0._EB ! No O2
1232- ELSE ! EQUIV < 1, Lean
1233- B = X
1234- C = 0.5_EB * Y
1235- D = 0._EB ! No fuel
1236- E = A + 0.5 * Z - B - 0.5_EB * C
1237- ENDIF
1218+ IF (ZZ_FUEL_O2_MASS > TWO_EPSILON_EB) THEN
1219+ SUM_ZZ= SUM (ZZ_EQUIV)
1220+ ZZ_EQUIV = ZZ_EQUIV/ (SUM_ZZ + TWO_EPSILON_EB)
1221+ CALL CALC_EQUIV_RATIO(ZZ_EQUIV(1 :N_TRACKED_SPECIES), EQUIV)
1222+ IF (SIM_MODE /= DNS_MODE .AND. USE_MIXED_ZN_AFT_TMP) THEN
1223+ EQUIV = MAX (1._EB ,EQUIV)
1224+ ENDIF
12381225
1239- ! Setup reactants
1240- FUEL_MASS = 1._EB * SPECIES_MIXTURE(I_FUEL)% MW
1241- O2_MASS = A* SPECIES_MIXTURE(I_O2)% MW
1242- REAC_MASS = FUEL_MASS+ O2_MASS
1243- ZZ_REAC(I_FUEL)= FUEL_MASS/ REAC_MASS* ZZ_FUEL_O2_MASS
1244- ZZ_REAC(I_O2)= O2_MASS/ REAC_MASS* ZZ_FUEL_O2_MASS
1245- SUM_ZZ= SUM (ZZ_REAC)
1246- ZZ_REAC = ZZ_REAC/ SUM_ZZ
1247-
1248- ! Setup products
1249- CO2_MASS = B* SPECIES_MIXTURE(I_CO2)% MW
1250- H2O_MASS = C* SPECIES_MIXTURE(I_H2O)% MW
1251- FUEL_MASS = D* SPECIES_MIXTURE(I_FUEL)% MW
1252- O2_MASS = E* SPECIES_MIXTURE(I_O2)% MW
1253- PROD_MASS = CO2_MASS+ H2O_MASS+ FUEL_MASS+ O2_MASS
1254- ZZ_PROD(I_CO2)= ZZ_PROD(I_CO2)+ CO2_MASS/ PROD_MASS* ZZ_FUEL_O2_MASS
1255- ZZ_PROD(I_H2O)= ZZ_PROD(I_H2O)+ H2O_MASS/ PROD_MASS* ZZ_FUEL_O2_MASS
1256- ZZ_PROD(I_FUEL)= FUEL_MASS/ PROD_MASS* ZZ_FUEL_O2_MASS
1257- ZZ_PROD(I_O2)= O2_MASS/ PROD_MASS* ZZ_FUEL_O2_MASS
1226+ ! Based on CxHyOz + aO2 = bCO2 + cH2O + dCxHyOz + eO2
1227+ X= SPECIES_MIXTURE(I_FUEL)% ATOMS(6 ) ! C
1228+ Y= SPECIES_MIXTURE(I_FUEL)% ATOMS(1 ) ! H
1229+ Z= SPECIES_MIXTURE(I_FUEL)% ATOMS(8 ) ! O
1230+ A= 0.5_EB * ((2._EB * X+0.5_EB * Y)/ EQUIV - Z) ! a is a function of equivalence ratio
1231+ IF (ABS (EQUIV - 1.0_EB ) < EQUIV_TOL) THEN ! Stoich
1232+ B = X
1233+ C = 0.5_EB * Y
1234+ D = 0._EB ! No fuel
1235+ E = 0._EB ! No O2
1236+ ELSEIF (EQUIV > 1 ) THEN ! Rich
1237+ D = (2._EB * X+0.5_EB * Y-2._EB * A- Z)/ (2._EB * X+0.5_EB * Y- Z)
1238+ B = (1._EB - D)* X
1239+ C = 0.5_EB * (1._EB - D)* Y
1240+ E = 0._EB ! No O2
1241+ ELSE ! EQUIV < 1, Lean
1242+ B = X
1243+ C = 0.5_EB * Y
1244+ D = 0._EB ! No fuel
1245+ E = A + 0.5 * Z - B - 0.5_EB * C
1246+ ENDIF
1247+
1248+ ! Setup reactants
1249+ FUEL_MASS = 1._EB * SPECIES_MIXTURE(I_FUEL)% MW
1250+ O2_MASS = A* SPECIES_MIXTURE(I_O2)% MW
1251+ REAC_MASS = FUEL_MASS+ O2_MASS
1252+ ZZ_REAC(I_FUEL)= FUEL_MASS/ REAC_MASS* ZZ_FUEL_O2_MASS
1253+ ZZ_REAC(I_O2)= O2_MASS/ REAC_MASS* ZZ_FUEL_O2_MASS
1254+ SUM_ZZ= SUM (ZZ_REAC)
1255+ ZZ_REAC = ZZ_REAC/ SUM_ZZ
1256+
1257+ ! Setup products
1258+ CO2_MASS = B* SPECIES_MIXTURE(I_CO2)% MW
1259+ H2O_MASS = C* SPECIES_MIXTURE(I_H2O)% MW
1260+ FUEL_MASS = D* SPECIES_MIXTURE(I_FUEL)% MW
1261+ O2_MASS = E* SPECIES_MIXTURE(I_O2)% MW
1262+ PROD_MASS = CO2_MASS+ H2O_MASS+ FUEL_MASS+ O2_MASS
1263+ ZZ_PROD(I_CO2)= ZZ_PROD(I_CO2)+ CO2_MASS/ PROD_MASS* ZZ_FUEL_O2_MASS
1264+ ZZ_PROD(I_H2O)= ZZ_PROD(I_H2O)+ H2O_MASS/ PROD_MASS* ZZ_FUEL_O2_MASS
1265+ ZZ_PROD(I_FUEL)= FUEL_MASS/ PROD_MASS* ZZ_FUEL_O2_MASS
1266+ ZZ_PROD(I_O2)= O2_MASS/ PROD_MASS* ZZ_FUEL_O2_MASS
1267+ ENDIF
12581268SUM_ZZ= SUM (ZZ_PROD)
12591269ZZ_PROD = ZZ_PROD/ SUM_ZZ
12601270
0 commit comments