Skip to content

AcresPowerModel.h#

Acres/Source/Acres/AcresPowerModel.h Generated

Engine fuel map and the vehicle energy ledger (pure C++, no Unreal objects).

Fuel: a Willans-line diesel (fuel power = (brake power + friction power) / indicated efficiency) with a speed-dependent friction mean effective pressure, calibrated to the OECD test 2974 of the Case IH Maxxum 150 (2016; fuel at rated and at maximum PTO power). GrissoFuelLph is the ASABE D497.7 equation (Grisso et al. 2004) kept as the reference the tests compare against.

Energy ledger: FEnergyFlows splits where the fuel's chemical energy goes, from the engine through the clutch, gearbox and tyres into the soil and the chassis. AcresVehicleModel.cpp fills the powertrain side every step (SolveDriveline); whoever integrates the chassis (Chaos in the game, the planar model of the physics-only tests) adds the chassis side with AccountChassis. Every term is computed from the torques, forces and mid-step speeds the integrator actually used, so the balance closes to the solver tolerance.

EngineFrictionPowerW#

Friction power of a four-stroke engine from its friction mean effective pressure.

FMEP = a + b (n / 1000) + c (n / 1000)^2 (the speed terms of the Chen and Flynn 1965 correlation), friction power FMEP V_d omega / (4 pi) (one cycle per two revolutions).

Argument Description
EngineRadS Engine speed, rad/s.
DisplacementL Swept volume, L. FmepBar, FmepBarPerKrpm, FmepBarPerKrpm2: a, b, c, bar, bar per 1000 rpm and bar per (1000 rpm)^2.

Returns: Friction power, W (0 at or below zero speed).

double EngineFrictionPowerW(double EngineRadS, double DisplacementL, double FmepBar, double FmepBarPerKrpm, double FmepBarPerKrpm2);

WillansFuelPowerW#

Willans-line fuel power: (brake power + friction power) / indicated efficiency, 0 when the engine is not fuelled.

Argument Description
BrakePowerW Brake power the engine delivers (torque curve x command x speed), W.
FrictionPowerW EngineFrictionPowerW at this speed, W.
IndicatedEfficiency Indicated thermal efficiency, 0..1.
bFuelled False on overrun (no torque requested above idle): the injectors are cut.

Returns: Fuel chemical power, W.

double WillansFuelPowerW(double BrakePowerW, double FrictionPowerW, double IndicatedEfficiency, bool bFuelled);

GrissoFuelLph#

ASABE D497.7 diesel fuel consumption (Grisso, Kocher and Vaughan 2004, Appl. Eng. Agric. 20(5):553-561).

Full throttle Q = (0.22 X + 0.096) P_rated (L/h, kW; the SI form of (0.0434 X + 0.019) gal/h per rated PTO hp), reduced engine speed Q (1 - (N - 1)(0.45 X - 0.877)).

Argument Description
LoadRatio X, equivalent PTO power over rated PTO power.
RatedPtoKW Rated PTO power, kW.
SpeedRatio N, part-throttle engine speed over full-throttle speed (1 at full throttle).

Returns: Fuel consumption, L/h.

double GrissoFuelLph(double LoadRatio, double RatedPtoKW, double SpeedRatio = 1);

FEnergyFlows#

struct FEnergyFlows

Energy flows of the vehicle. The same struct holds cumulative energies, J (FVehicleState::Energy), and the powers of the last step, W (FVehicleState::Power). Sinks and stores are positive when they take energy.

Name Type Unit Default Description
Fuel double 0 Fuel: chemical energy of the fuel burnt (lower heating value).
EngineLoss double 0 Fuel energy not delivered as brake work (combustion and exhaust heat, engine friction).
Parasitic double 0 Engine drag torque (fan, alternator, pumps). Pto,
Pto double 0 See above.
Hydraulic double 0 Work delivered to the PTO shaft and to the hydraulic consumers.
AccessoryLoss double 0 PTO driveline and hydraulic pump losses.
EngineKinetic double 0 Change of the engine's rotational energy.
Clutch double 0 Slip heat.
Driveline double 0 Gearbox and axle losses (1 - efficiency).
WheelKinetic double 0 Change of the wheels' rotational energy.
Brake double 0 Brake heat.
Hysteresis double 0 Tyre flexing (rolling resistance torque).
Slip double 0 Tyre slip loss F (omega r - v).
Soil double 0 Soil rutting work (compaction and bulldozing resistance times speed).
Traction double 0 Net longitudinal work of the tyres on the chassis, sum of F_net v.
Axle double 0 Work put into the wheel shafts by the driveline (informational, for tractive efficiency; not part of the balance).
Drawbar, Aero, Water, Lateral, Suspension, ChassisKinetic, Potential double Chassis side (AccountChassis): Drawbar: work pulling the implement. Aero, Water: air and standing-water drag. Lateral: tyre side-slip (scrub) loss. Suspension: net work absorbed by the springs, dampers and soil below the chassis (minus the work of the ground normal forces on the body). ChassisKinetic, Potential: change of the chassis kinetic and potential energy.
FEnergyFlows& operator+=(const FEnergyFlows& O); FEnergyFlows& operator+ Adds another set of flows field by field.

FEnergyFlows::PowertrainResidual#

Fuel minus every powertrain sink and store, through Traction: what the engine-to-ground bookkeeping fails to explain (solver tolerance, clamps). Same unit as the fields.

double PowertrainResidual() const ;

FEnergyFlows::ChassisResidual#

Traction minus the chassis sinks and stores (meaningful only when AccountChassis is called every step).

double ChassisResidual() const ;

FEnergyFlows::Residual#

Whole-vehicle residual: PowertrainResidual + ChassisResidual.

double Residual() const ;

FEnergyFlows::Scaled#

Every field multiplied by Factor (energy of a step times 1 / Dt gives its power).

FEnergyFlows Scaled(double Factor) const;