Crank-angle-resolved cycle: Wiebe burn, wall heat loss, valve timing, pumping loop.
Geometry. Cylinder volume from the crank-slider: V(θ) = Vc + Ap[a(1−cosθ) + l − √(l²−a²sin²θ)], with a = stroke/2, l = rod length, r = (Vc+Vd)/Vc. Bore = stroke = 86 mm, l/a = 3.37.
Closed phase (intake valve closes to exhaust valve opens), first law for one ideal-gas zone: dp/dθ = [−γ p dV/dθ + (γ−1)(dQb/dθ − dQw/dθ)] / V, integrated with a 2nd-order Runge-Kutta step of 0.5°.
Combustion is released with a Wiebe function x(θ) = 1 − exp[−6.908((θ−θ0)/Δθ)m+1] (m = 2): a smooth S-curve that reaches 99.9 % at θ0+Δθ (so Δθ is the total burn duration). Heat released = ηc (0.96) x fuel energy x trapped mass. Spark advance moves θ0 before TDC.
Wall loss dQw/dt = h A (T − Tw) with a constant effective h (default 550 W/m²K) and wall temperature 450 K. Real engines have h varying with pressure and gas speed (Woschni correlations); a constant h is a simplification.
Gas exchange is a lumped model: the cylinder pressure relaxes exponentially (τ = 12°) to the exhaust pressure while the exhaust valve is open and to the intake manifold pressure while the intake valve is open. This produces the pumping loop (throttling lowers intake pressure and makes pumping work negative). Residual gas, valve flow areas and wave dynamics are not modelled.
Outputs. Net work W = ∮p dV over 720°; IMEP = W/Vd; indicated efficiency η = W / (qf m); power P = W · rpm/120. Friction is not included, so these are indicated (not brake) values.
Ideal reference. Air-standard Otto cycle: η = 1 − r1−γ. The real-looking loop is always lower: finite burn time, heat loss, pumping.
Honest simplifications: single zone, constant γ (a single effective value stands in for the temperature-dependent cv of air and burned gas, and for dissociation), no residual gas, no knock, no friction, fuel energy per kg of charge is an input rather than computed from an air-fuel ratio. Default numbers are typical of a naturally aspirated petrol engine but are illustrative, not data of any real engine.