Energy and Fuel#
This page gives the fuel map of the engine and the energy ledger of a vehicle. The energy ledger shows where the fuel energy goes in each physics step, from the engine to the soil, the implement and the chassis.
Scope and Assumptions#
The fuel map and the ledger structure are in the engine-free model AcresPowerModel.cpp. The function SolveDriveline in AcresVehicleModel.cpp computes the terms.
The page Maxxum 150 Dynamics gives the engine and the driveline that supply the torques and the speeds.
The model makes these assumptions.
- The fuel power is a Willans line: a linear function of the brake power at each engine speed.
- The indicated efficiency is constant. The friction of the engine depends only on the engine speed.
- The engine uses no fuel when the governor demands no torque.
- The efficiency of the driveline, of the PTO and of the hydraulic pump is constant.
- Two full-load points of OECD test 2974 of the Maxxum 150 calibrate the fuel map. No test data calibrate the part-load values.
- The ledger uses the torques and the speeds of the driveline solve. It is thus an exact account of the model, not an estimate.
The Polaris uses the same functions with the parameters of polaris.json. The page Polaris Ranger Dynamics gives its engine.
Symbols#
| Symbol | Quantity | Unit |
|---|---|---|
| \(P_f\) | Fuel power: the chemical power of the fuel at its lower heating value | W |
| \(P_b\) | Brake power of the engine | W |
| \(P_{fr}\) | Friction power of the engine | W |
| \(\eta_i\) | Indicated efficiency | - |
| \(p_{fr}\) | Friction mean effective pressure (FMEP) | Pa |
| \(V_d\) | Displacement of the engine | m³ |
| \(n_k\) | Engine speed in thousands of rpm | 1000 rpm |
| \(T_e\), \(T_{drag}\), \(T_{acc}\), \(T_c\) | Engine torque, drag torque, accessory torque, clutch torque | N m |
| \(\omega_{e0}\), \(\omega_{e1}\), \(\bar\omega_e\) | Engine speed at the start, at the end and in the middle of the step | rad/s |
| \(\bar\omega_c\) | Speed of the rear differential carrier in the middle of the step | rad/s |
| \(\bar\omega_j\) | Speed of wheel \(j\) in the middle of the step | rad/s |
| \(i\), \(\eta\) | Overall ratio and driveline efficiency | - |
| \(P_{pto}\), \(P_{hyd}\) | Power at the PTO shaft and hydraulic power to the consumers | W |
| \(\eta_{pto}\), \(\eta_{hyd}\) | Efficiency of the PTO driveline and of the hydraulic pump | - |
| \(H_u\) | Lower heating value of the fuel | J/kg |
| \(\rho_{fuel}\) | Density of the fuel | kg/L |
| \(q\) | Fuel rate | L/h |
| \(F_{s,j}\), \(F_{x,j}\) | Shear force and net longitudinal force of wheel \(j\) | N |
| \(R_j\) | Motion resistance of wheel \(j\) | N |
| \(v_{x,j}\) | Speed of the contact point of wheel \(j\) along the wheel heading | m/s |
| \(S_j\) | Shaft torque of wheel \(j\) | N m |
| \(T_h\), \(T_b\) | Rolling resistance torque and brake torque of a wheel | N m |
| \(J_e\), \(J_w\) | Inertia of the engine and of a wheel | kg m² |
| \(\Delta t\) | Physics step, 1/120 | s |
Fuel Map#
The function WillansFuelPowerW gives the fuel power from the brake power and the friction power.
The function EngineFrictionPowerW gives the friction power of a four-stroke engine. The friction pressure is a polynomial of the engine speed (the speed terms of Chen and Flynn).
The coefficients are \(a_0 = 0.6\) bar, \(a_1 = 0.2\) bar and \(a_2 = 0.08\) bar for the Maxxum. \(V_d\) is 6.7 L and \(\eta_i\) is 0.47. The function limits \(\eta_i\) to the range 0.05 to 0.7.
The fuel volume of one step and the fuel rate follow from the heating value \(H_u\) and the density \(\rho_{fuel}\).
\(\Delta V\) is in litres when \(H_u\) is in J/kg and \(\rho_{fuel}\) is in kg/L. The values are 42.8 MJ/kg and 0.835 kg/L.
With fuel_tank_l above zero, the tank loses \(\Delta V\) in each step. An empty tank sets the available engine torque to zero.
Calibration#
The values of \(\eta_i\) and the friction coefficients reproduce two points of OECD test 2974 of the Case IH Maxxum 150. The test physics_tests examines them.
| Operating Point | Model | OECD Test 2974 |
|---|---|---|
| Rated speed 2200 rpm, full load (110.3 kW at the engine) | 27.4 L/h | 27.3 L/h |
| 1900 rpm, full load (116.2 kW at the engine) | 27.8 L/h | 28.4 L/h at the maximum PTO power |
| No load at full command, 2267 rpm | 6.6 L/h | No value |
| Idle, 796 rpm | 1.04 L/h | No value |
The part-load values are a result of the Willans line. No test data calibrate them.
The function GrissoFuelLph is the fuel equation of ASABE D497.7 (Grisso, Kocher and Vaughan). Only the tests use it, as a reference.
\(X\) is the ratio of the PTO power to the rated PTO power \(P_{rated}\) in kW. \(N_r\) is the ratio of the engine speed to the full-throttle speed.
| Load Ratio | Model | ASABE D497.7 |
|---|---|---|
| 0.50 | 16.6 L/h | 19.4 L/h |
| 0.75 | 22.0 L/h | 24.6 L/h |
| 1.00 | 27.4 L/h | 29.7 L/h |
The largest difference is 14.4 %. The ASABE equation is a fit to older tractors.
Loads on the Engine#
The PTO shaft and the hydraulic pump take power from the engine. The function StepDrivetrain adds the constant loads of tractor.json and the loads of the implement.
\(P_{pto,0}\) is the key pto_kw and \(P_{hyd,0}\) is the key hydraulic_kw.
\(P_{pto,impl}\) and \(P_{hyd,impl}\) are the loads of the implement from the last physics step.
The hydraulic load of the implement is the fluid power: the shaft power of its pump multiplied by the pump efficiency of the implement data.
The page Implement Mechanics gives the loads of each implement.
With the option -FarmHarvester, the header adds a PTO load that increases linearly between 900 rpm and 1200 rpm.
Energy Ledger#
The structure FEnergyFlows contains one value for each term of the ledger. The vehicle state has two copies of it.
| Copy | Unit | Content |
|---|---|---|
FVehicleState::Energy |
J | The sum of each term from the last reset. |
FVehicleState::Power |
W | The value of each term in the last step, divided by \(\Delta t\). |
A term is positive when it takes energy.
Powertrain Terms#
The function SolveDriveline fills the terms from the fuel to the clutch. The function SettleWheels fills the terms of the wheels.
Each term is a torque multiplied by a speed in the middle of the step, for example \(\bar\omega_j = \tfrac{1}{2}(\omega_{j0} + \omega_{j1})\).
The table gives the energy of one step. The sums are over all wheels.
| Term | Energy of One Step | Meaning |
|---|---|---|
Fuel |
\(P_f\,\Delta t\) | The chemical energy of the fuel. |
EngineLoss |
\((P_f - P_b)\,\Delta t\) | The heat of combustion and the friction of the engine. |
Parasitic |
\(T_{drag}\,\bar\omega_e\,\Delta t\) | The engine drag: fan, alternator and pumps. |
Pto |
\(E_{acc}\,P_{pto} / P_{in}\) | The work at the PTO shaft. |
Hydraulic |
\(E_{acc}\,P_{hyd} / P_{in}\) | The work for the hydraulic consumers. |
AccessoryLoss |
\(E_{acc} - \texttt{Pto} - \texttt{Hydraulic}\) | The losses of the PTO driveline and the hydraulic pump. |
EngineKinetic |
\(\tfrac{1}{2}\,J_e\,(\omega_{e1}^2 - \omega_{e0}^2)\) | The change of the kinetic energy of the engine. |
Clutch |
\(T_c\,(\bar\omega_e - i\,\bar\omega_c)\,\Delta t\) | The heat of a slipping clutch. |
Driveline |
\((1 - \eta)\,T_c\,i\,\bar\omega_c\,\Delta t\) | The losses of the gearbox and the axles. |
WheelKinetic |
\(\sum_j \tfrac{1}{2}\,J_w\,(\omega_{j1}^2 - \omega_{j0}^2)\) | The change of the kinetic energy of the wheels. |
Brake |
\(\sum_j T_b\,\tanh(\omega_{j1}/0.1)\,\bar\omega_j\,\Delta t\) | The heat of the brakes. |
Hysteresis |
\(\sum_j T_h\,\tanh(\omega_{j1}/0.1)\,\bar\omega_j\,\Delta t\) | The rolling resistance of the tyres. |
Slip |
\(\sum_j F_{s,j}\,(r_j\,\bar\omega_j - v_{x,j})\,\Delta t\) | The slip loss between the tyre and the ground. |
Soil |
\(\sum_j R_j\,v_{x,j}\,\Delta t\) | The work to make the ruts: compaction and bulldozing. |
Traction |
\(\sum_j F_{x,j}\,v_{x,j}\,\Delta t\) | The net work of the tyres on the chassis. |
Axle |
\(\sum_j S_j\,\bar\omega_j\,\Delta t\) | The work at the wheel shafts. For information, not a term of the balance. |
The accessory energy is \(E_{acc} = T_{acc}\,\bar\omega_e\,\Delta t\) and the power that the engine supplies for it is \(P_{in} = P_{pto}/\eta_{pto} + P_{hyd}/\eta_{hyd}\). \(R_j\) is the motion resistance on the axle after its limits, see Tyre and Soil.
The balance of the powertrain is:
The balance is exact for this reason. The driveline solve uses the backward Euler method, thus \(J\,(\omega_1 - \omega_0)/\Delta t\) is the sum of the torques.
The product of this equation and the speed \(\tfrac{1}{2}(\omega_0 + \omega_1)\) gives the change of the kinetic energy.
The function PowertrainResidual returns the difference of the two sides. It is zero to the tolerance of the solve.
Chassis Terms#
The function AccountChassis adds the terms of the chassis. The code that integrates the chassis calls it.
In the game this is AAcresVehiclePawn::AccountChassisStep, at the start of the next physics step, after Chaos moved the body.
| Term | Power | Meaning |
|---|---|---|
Drawbar |
\(-(\vec{F}_{impl}\cdot\bar{\vec{v}} + \vec{M}_{impl}\cdot\bar{\vec{\omega}})\) | The work to pull the implement. |
Aero |
\(-\vec{F}_a\cdot\bar{\vec{v}}\) | The air drag. |
Water |
\(-\sum_j \vec{F}_{w,j}\cdot\bar{\vec{u}}_j\) | The drag of standing water on the wheels. |
Lateral |
\(-\sum_j \vec{F}_{y,j}\cdot\bar{\vec{u}}_j\) | The loss of the tyres that slip to the side. |
Suspension |
\(-\sum_j \vec{N}_j\cdot\bar{\vec{u}}_j\) | The work that the springs, the dampers and the soil below the wheels absorb. |
ChassisKinetic |
\(\Delta K / \Delta t\) | The change of the kinetic energy of the chassis. |
Potential |
\(\Delta U / \Delta t\) | The change of the potential energy of the chassis. |
\(\bar{\vec{v}}\) and \(\bar{\vec{\omega}}\) are the means of the body velocity and the angular velocity at the start and the end of the step. \(\bar{\vec{u}}_j = \bar{\vec{v}} + \bar{\vec{\omega}}\times(\vec{p}_j - \vec{p}_{cm})\) is the velocity of the contact point of wheel \(j\). The energies are:
\(I_k\) and \(\omega_k\) are the principal inertias and the angular velocity in the body frame. The balance of the chassis is:
The function ChassisResidual returns the difference of the two sides. This balance is not exact.
The term Traction uses the contact speed at the start of the step. The chassis terms use the speeds in the middle of the step.
In the game, the residual also contains the contacts of the chassis box and the angular damping of the body.
Note
In the game, the chassis terms of the copy Power are zero in the telemetry. The driveline solve writes Power again after the chassis account. Use the copy Energy for the chassis terms.
Closure Test#
The test stand integrates the chassis with speeds in the middle of the step. The test runs a sequence with a PTO load of 20 kW and a hydraulic load of 4 kW. The sequence is: come to rest, accelerate, pull, brake to a stop.
| Condition | Fuel Energy | Powertrain Residual | Chassis Residual |
|---|---|---|---|
| Silt loam after rain | 3.490 MJ | 0.000 % | 0.012 % |
| Silt loam mud with standing water, 3° uphill | 4.123 MJ | 0.000 % | 0.008 % |
| Wet asphalt | 3.207 MJ | 0.000 % | 0.015 % |
| Legacy soil model | 3.662 MJ | 0.000 % | 0.009 % |
Example from the Game#
This table shows the ledger of the Maxxum in gear 8 at full command on the silt loam of field F21, without an implement. The values are means of the session log between 10 s and 15 s of the drive in Drive the Maxxum Tractor.
| Term | Power (kW) | Share of the Fuel Power |
|---|---|---|
Fuel |
75.66 | 100 % |
EngineLoss |
58.55 | 77.4 % |
Parasitic |
10.04 | 13.3 % |
Driveline |
0.71 | 0.9 % |
Hysteresis |
4.12 | 5.4 % |
Slip |
0.05 | 0.1 % |
Soil |
1.75 | 2.3 % |
Traction |
0.45 | 0.6 % |
The brake power is 17.1 kW and the axle work is 6.4 kW. The speed is 8.7 km/h and the fuel rate is 7.6 L/h. The engine runs at 2261 rpm with a low load, thus the engine losses are the largest part.
Distance, Area and Tractive Efficiency#
The function SettleWheels also keeps these values of the vehicle state.
| Value | Equation | Field |
|---|---|---|
| Distance | The mean of \(\lvert v_{x,j}\rvert\) of the wheels on the ground, multiplied by \(\Delta t\), summed. | DistanceM |
| Worked area | The distance of each step multiplied by the working width. | AreaM2 |
| Fuel for each kilometre | Fuel used divided by the distance in km. Zero below 1 m. | FuelPerKmL |
| Fuel for each hectare | Fuel used divided by the area in ha. Zero below 1 m². | FuelPerHaL |
| Tractive efficiency | \(\operatorname{clamp}(\texttt{Traction} / \texttt{Axle},\ 0,\ 1)\) of the step. Zero when Axle is not positive. |
TractiveEfficiency |
The working width is that of the implement in each step in which the implement works. An implement works when its tools are in the soil, when it sows or sprays, or when crop goes into the baler.
Output#
The values of this page are available in four places.
HUD. The key I shows and hides the work panels. The panel "Energy" shows the fuel power, the fuel rate, the engine power and the tractive efficiency.
Its bar shows the terms of Power in seven groups.
| Group of the Bar | Terms |
|---|---|
| engine | EngineLoss + Parasitic + EngineKinetic when positive |
| PTO | Pto + AccessoryLoss |
| hyd | Hydraulic |
| driveline | Driveline + Clutch + Brake |
| tyres | Hysteresis + Slip |
| soil | Soil |
| traction | Traction when positive |
Session log. With -SessionLog, the file tractor.csv has one row for each physics step. The page Session Log gives all columns.
| Column | Value |
|---|---|
fuel_lph, fuel_used_l, fuel_tank_l |
The fuel rate \(q\), the fuel used in the session and the fuel in the tank. |
fuel_l_per_km, fuel_l_per_ha |
Fuel for each kilometre and for each hectare. |
engine_power_kw |
\(T_e\) multiplied by the engine speed at the end of the step. |
fuel_power_kw |
Fuel |
brake_power_kw |
Fuel − EngineLoss |
engine_loss_kw, parasitic_kw |
EngineLoss, Parasitic |
pto_shaft_kw, hydraulic_kw, accessory_loss_kw |
Pto, Hydraulic, AccessoryLoss |
clutch_loss_kw, driveline_loss_kw, brake_loss_kw |
Clutch, Driveline, Brake |
tyre_rolling_kw, tyre_slip_kw, soil_rutting_kw |
Hysteresis, Slip, Soil |
traction_kw, axle_kw |
Traction, Axle |
drawbar_kw |
The draft of the implement multiplied by the forward speed. This is not the term Drawbar. |
tractive_eff |
The tractive efficiency. |
The session log does not contain the two kinetic terms of the powertrain and the chassis terms.
The file session-summary.json contains the fuel of the session (fuel_used_l) and the positive engine work (engine_energy_kwh).
Episode log. The message acres_interfaces/EnergyLedger in the agent state contains all terms of Energy in joules.
It also contains ground_loss_j, the sum of Slip, Lateral and Soil. The page Episode Log gives the format.
Telemetry. The structure FAcresVehicleTelemetry contains Energy, Power and the fuel values for the code of the game.
Parameters#
These keys are in the block vehicle of Content/Simulation/tractor.json.
| Name | Type | Unit | Default | Description |
|---|---|---|---|---|
engine_displacement_l |
number | L | 6.7 | The displacement \(V_d\) of the engine. |
indicated_efficiency |
number | - | 0.47 | The indicated efficiency \(\eta_i\). The permitted range is above 0 and below 1. |
fmep_bar |
number | bar | 0.6 | The constant term \(a_0\) of the friction pressure. |
fmep_bar_per_krpm |
number | bar/(1000 rpm) | 0.2 | The linear term \(a_1\) of the friction pressure. |
fmep_bar_per_krpm2 |
number | bar/(1000 rpm)² | 0.08 | The quadratic term \(a_2\) of the friction pressure. |
fuel_lhv_mj_kg |
number | MJ/kg | 42.8 | The lower heating value \(H_u\) of diesel fuel. |
fuel_density_kg_l |
number | kg/L | 0.835 | The density \(\rho_{fuel}\) of diesel fuel. |
fuel_tank_l |
number | L | 215.0 | The capacity of the fuel tank. 0 means that the model has no tank. |
engine_drag_nm |
number | N m | 15 | The engine drag torque at the idle speed. |
efficiency |
number | - | 0.9 | The driveline efficiency \(\eta\). |
pto_kw |
number | kW | 0 | A constant PTO load. |
pto_efficiency |
number | - | 1.0 | \(\eta_{pto}\). The permitted range is above 0 to 1. |
hydraulic_kw |
number | kW | 0 | A constant hydraulic load. |
hydraulic_efficiency |
number | - | 0.85 | \(\eta_{hyd}\). The permitted range is above 0 to 1. |
Code Map#
| Item | File | Function |
|---|---|---|
| Ledger structure and residuals | AcresPowerModel.h |
FEnergyFlows, PowertrainResidual, ChassisResidual |
| Friction power | AcresPowerModel.cpp |
EngineFrictionPowerW |
| Fuel power | AcresPowerModel.cpp |
WillansFuelPowerW |
| ASABE reference | AcresPowerModel.cpp |
GrissoFuelLph |
| Loads on the engine | AcresVehicleModel.cpp |
StepDrivetrain |
| Fuel and terms from the engine to the axles | AcresVehicleModel.cpp |
SolveDriveline |
| Terms of the wheels, distance, area | AcresVehicleModel.cpp |
SettleWheels |
| Chassis terms | AcresVehicleModel.cpp |
AccountChassis |
| Chassis terms in the game | AcresVehicle.cpp |
AAcresVehiclePawn::AccountChassisStep, ChassisEnergy |
| HUD panel | AcresHud.cpp |
AAcresShellHUD::DrawWorkPanels |
| Session log columns | AcresSessionLog.cpp |
FAcresSessionLog::Push |
| Tests | Tools/Terramechanics/physics_tests.cpp |
Limitations#
- Two full-load points calibrate the fuel map. At part load the model is 8 % to 14 % below the equation of ASABE D497.7.
- The indicated efficiency does not change with the load or the engine temperature.
- An engine that the governor does not fuel uses no fuel. The model has no minimum injection.
- The term
Parasiticuses the constant drag torque of the model. It does not come from data of the fan or the alternator. - The chassis balance in the game is not exact. Its residual contains the effects of Chaos that the ledger does not see.
- The column
drawbar_kwof the session log and the termDrawbarof the ledger are different values.
References#
- ASABE D497.7 (2011, reaffirmed 2015). Agricultural Machinery Management Data. American Society of Agricultural and Biological Engineers, St. Joseph, Michigan.
- Chen, S. K. and Flynn, P. F. (1965). Development of a single cylinder compression ignition research engine. SAE Technical Paper 650733.
- Grisso, R. D., Kocher, M. F. and Vaughan, D. H. (2004). Predicting tractor fuel consumption. Applied Engineering in Agriculture 20(5):553-561.
- Nebraska Tractor Test Laboratory (2016). Nebraska OECD Tractor Test 2974, Summary 1097: Case IH Maxxum 150. University of Nebraska-Lincoln.