Does someone know the precise formulas to work backwards to arrive at a Gen V VVE value without using a logged Volumetric Efficiency value? I've been using something that's close, but it's certainly not perfect. I thought I would reach out to see if anyone might help to refine the calculation.
Below is a snippet of Java code I've been using to experiment with known values.
Please assume a fixed camshaft at angle 0.0.
(For context, I'm fully aware of filtering transient data, how to calculate the error and adjust, etc. I'm not looking for anything using fuel trims, wideband readings, etc. I'm specifically looking for insight into the formulas to work backwards when the correct airflow and the conditions surrounding it are known.)
Code:// Sample snapshot of known values double mapKpa = 43.0; double baroKpa = 97.0; double airmassGramsPerSec = 6.5; double intakeAirTempC = 36; // ~97F double manifoldAirTempC = 47; // ~117F double rpm = 660; // Values calculated from known values double mapMpa = mapKpa / 1000.0; double pressureRatio = mapKpa / baroKpa; // 0.443 double manifoldAirTempKelvin = manifoldAirTempC + 273.15; // ~320 double revSec = rpm / 60.0; // 11 double cylinderIntakesPerRev = 4.0; // V8 4-Stroke Engine double cylinderIntakesPerSec = revSec * cylinderIntakesPerRev; // 44 double cylAirmassGrams = airmassGramsPerSec / cylinderIntakesPerSec; // 0.1477 (This calculation checks out with logged value) // This formula is close, but I'm not sure exactly how it's defined on a GEN 5 LT Engine // I expected pressureRatio to be part of the equation, but I could never get it to work out. double gmVe = ((cylAirmassGrams * manifoldAirTempKelvin) / mapMpa); // This is where things get really fuzzy. // I assume this air temp correction exists in some form based on what's in the tune. // However, I don't know exactly how it works and whether it's based on ambient temp, intake temp, manifold temp, etc // This is all made up. double veBaseTempC = 20.0; // From tune double veDeltaPerDegree = 0.00225; // Completely made up value based on what appears to kind of work double airTempDeltaC = intakeAirTempC - veBaseTempC ; // Final result double gmVeCorrected = gmVe * (1.0 - (airTempDeltaC * veDeltaPerDegree));