@@ -1187,18 +1187,36 @@ SUBROUTINE CALC_AFT_REAC_AND_PROD(ZZ,ZZ_REAC,ZZ_PROD)
11871187REAL (EB), INTENT (IN ) :: ZZ(N_TRACKED_SPECIES)
11881188REAL (EB), INTENT (OUT ) :: ZZ_REAC(N_TRACKED_SPECIES),ZZ_PROD(N_TRACKED_SPECIES)
11891189REAL (EB) :: EQUIV, X,Y,Z,A,B,C,D,E, SUM_ZZ
1190-
1190+ REAL (EB) :: ZZ_MASS, ZZ_FUEL_O2_MASS
1191+ REAL (EB) :: REAC_MASS, PROD_MASS, FUEL_MASS, O2_MASS, CO2_MASS, H2O_MASS
1192+ INTEGER :: NS
11911193
11921194CALL CALC_EQUIV_RATIO(ZZ(1 :N_TRACKED_SPECIES), EQUIV)
11931195IF (SIM_MODE /= DNS_MODE .AND. USE_MIXED_ZN_AFT_TMP) THEN
11941196 EQUIV = MAX (1.0_EB ,EQUIV)
11951197ENDIF
11961198
1197- ! Based on CxHyOz + a(O2+3.76N2) = bCO2 + cH2O + dCxHyOz + eO2 + 3.76aN2
1199+ ! Adjust for diluents
1200+ ZZ_FUEL_O2_MASS = 0.0_EB
1201+ ZZ_MASS = SUM (ZZ(1 :N_TRACKED_SPECIES))
1202+ ZZ_REAC(1 :N_TRACKED_SPECIES) = ZZ(1 :N_TRACKED_SPECIES)
1203+ ZZ_PROD(1 :N_TRACKED_SPECIES) = ZZ(1 :N_TRACKED_SPECIES)
1204+ DO NS= 1 , N_TRACKED_SPECIES
1205+ IF (SPECIES_MIXTURE(NS)% OXR > 0.0_EB ) THEN ! FUEL
1206+ ZZ_REAC(NS) = 0.0_EB
1207+ ZZ_PROD(NS) = 0.0_EB
1208+ ZZ_FUEL_O2_MASS = ZZ_FUEL_O2_MASS + ZZ(NS)
1209+ ENDIF
1210+ ENDDO
1211+ ZZ_REAC(I_O2) = 0.0_EB
1212+ ZZ_PROD(I_O2) = 0.0_EB
1213+ ZZ_FUEL_O2_MASS = ZZ_FUEL_O2_MASS + ZZ(I_O2)
1214+
1215+ ! Based on CxHyOz + aO2 = bCO2 + cH2O + dCxHyOz + eO2
11981216X= SPECIES_MIXTURE(I_FUEL)% ATOMS(6 ) ! C
11991217Y= SPECIES_MIXTURE(I_FUEL)% ATOMS(1 ) ! H
12001218Z= SPECIES_MIXTURE(I_FUEL)% ATOMS(8 ) ! O
1201- A= 0.5_EB * ((2.0_EB * X+0.5_EB * Y)/ EQUIV - Z)
1219+ A= 0.5_EB * ((2.0_EB * X+0.5_EB * Y)/ EQUIV - Z) ! a is a function of equivalence ratio
12021220IF (ABS (EQUIV - 1.0_EB ) <1E-3_EB ) THEN ! Stoich
12031221 B = X
12041222 C = 0.5_EB * Y
@@ -1217,25 +1235,29 @@ SUBROUTINE CALC_AFT_REAC_AND_PROD(ZZ,ZZ_REAC,ZZ_PROD)
12171235ENDIF
12181236
12191237! Setup reactants
1220- ZZ_REAC = 0.0_EB
1221- ZZ_REAC(I_FUEL)= 1._EB * SPECIES_MIXTURE(I_FUEL)% MW
1222- ZZ_REAC(I_O2)= A* SPECIES_MIXTURE(I_O2)% MW
1223- ZZ_REAC(I_N2)= 3.76 * A* SPECIES_MIXTURE(I_N2)% MW
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
12241243SUM_ZZ= SUM (ZZ_REAC)
12251244ZZ_REAC = ZZ_REAC/ SUM_ZZ
12261245
12271246! Setup products
1228- ZZ_PROD = 0.0_EB
1229- ZZ_PROD(I_CO2)= B* SPECIES_MIXTURE(I_CO2)% MW
1230- ZZ_PROD(I_H2O)= C* SPECIES_MIXTURE(I_H2O)% MW
1231- ZZ_PROD(I_FUEL)= D* SPECIES_MIXTURE(I_FUEL)% MW
1232- ZZ_PROD(I_O2)= E* SPECIES_MIXTURE(I_O2)% MW
1233- ZZ_PROD(I_N2)= 3.76_EB * A* SPECIES_MIXTURE(I_N2)% MW
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
12341256SUM_ZZ= SUM (ZZ_PROD)
12351257ZZ_PROD = ZZ_PROD/ SUM_ZZ
12361258
1237-
12381259END SUBROUTINE CALC_AFT_REAC_AND_PROD
1260+
12391261#endif
12401262
12411263SUBROUTINE CHECK_AUTO_IGNITION (EXTINCT ,TMP_IN ,AIT ,IIC ,JJC ,KKC ,REAC_INDEX )
0 commit comments