Engine Thermal Simulation
Released as of version 0.5.3. All information as of version 0.15. CombustionEngines in BeamNG support complex and detailed thermal systems. If enabled, the heat flow from the cylinder, to the cylinder wall, oil and coolant galleries, engine block, exhaust manifold, and then out to the air is considered, and the engine can be damaged if temperatures are not kept under control.
Contents
Jbeam Variables
Engine Section
Example configuration
Engine part:
"engine":{ //cooling and oil system "thermalsEnabled":true //absolutely required, without this the thermal simulation will be disabled "engineBlockMaterial":"iron" "oilVolume":6 //engine durability "cylinderWallTemperatureDamageThreshold":160 "headGasketDamageThreshold":1500000 "pistonRingDamageThreshold":1500000 "connectingRodDamageThreshold":1500000 },
Radiator part:
"engine":{ //cooling system "radiatorArea":0.4, "radiatorEffectiveness":15000, "coolantVolume":10 "radiatorFanType":"electric", "radiatorFanTemperature":105 "radiatorFanMaxAirSpeed":2, "thermostatTemperature":90 },
Tying the simulation into the vehicle
The exhaust chain system allows exhaust particles to exit out the tailpipe, or the last intact section of exhaust if a section breaks off.
Nodes Section
Beams Section
The thermal simulation also makes use of engineGroups and deformGroups to integrate the simulation into the vehicle.
engineGroups
engineGroups are a special node property used to tag nodes for certain engine related features.
Name | Description |
---|---|
engine_block | This engineGroup is used to define the mass of the engine for thermal simulation. Put all the engine block nodes in this engineGroup and make sure that those nodes have a realistic weight as they will be used to caculate the weight of the engine block. |
radiator | This engineGroup is used to define the location of steam generation point on the radiator. Put 2 nodes in the group to define locations for the steam particles. |
Just defining the engineGroups is not enough, you must also, in an "engine":{} section in the main vehicle jbeam, link the names of the engineGroups to the variables of the thermal simulation. For example:
"engine":{ "radiator": {"[engineGroup]:":["radiator"]} "engineBlock": {"[engineGroup]:":["engine_block"]} },
An example of engineGroups in the nodes section of an engine part:
"nodes": [ ["id", "posX", "posY", "posZ"], {"selfCollision":false} {"collision":true} //--4.1L I6 Engine- {"frictionCoef":0.5}, {"nodeMaterial":"|NM_METAL"}, {"nodeWeight":23}, {"group":"pickup_engine"}, {"engineGroup":["pickup_engine_block","pickup_exhaust_manifold"]} ["e1r", -0.14, -1.07, 0.43], {"engineGroup":"pickup_engine_block"}, ["e1l", 0.14, -1.07, 0.43], ["e2r", -0.14, -1.72, 0.43], ["e2l", 0.14, -1.72, 0.43], {"engineGroup":["pickup_engine_block","pickup_engine_intake"]} ["e3r", -0.15, -1.07, 0.88], ["e3l", 0.15, -1.07, 0.88], ["e4r", -0.15, -1.72, 0.88,], ["e4l", 0.15, -1.72, 0.88], {"engineGroup":""} {"group":""}, ],
deformGroups
deformGroups are used to measure beam deformation in order to control damage states. See http://wiki.beamng.com/DeformGroups
Name | Description |
---|---|
radiator_damage | This deformGroup is used to sense deformation of the radiator. When beams in this group deform, the thermal simulation causes coolant to leak and cooling effectiveness to go down. |
An example of deformGroups used in the beams section of a radiator part:
"beams": [ ["id1:", "id2:"], {"beamType":"|NORMAL", "beamLongBound":1.0, "beamShortBound":1.0}, {"beamSpring":501000,"beamDamp":50}, {"beamDeform":1000,"beamStrength":"FLT_MAX"}, //radiator shape {"deformGroup":"radiator_damage", "deformationTriggerRatio":0.02}, ["f1r","fr5l"], ["f1l","fr5r"], //radiator crush {"deformationTriggerRatio":0.1} {"beamType":"|SUPPORT", "beamLongBound":1.0}, ["fr5r","fr6r"], ["fr5r","fr6r"], ["fr5","fr6"], ["f1r","f3r"], ["f1r","f3"], ["f1","f3l"], {"deformGroup":""} ],
Vehicle Creation | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Get started: Introduction to Vehicle Creation | ||||||||||||||||
| ||||||||||||||||
See also: JBeam Examples • JBeam Physics Theory |