Improve physical geometry, fluid solvers, audio, and profiling

This commit is contained in:
max
2026-10-30 18:57:56 +01:00
parent bf8621ad39
commit eb2b6366c2
130 changed files with 14649 additions and 862 deletions

View File

@@ -1,5 +1,5 @@
# Engine definition. Dimensional keys state their units.
schema_version = 1
schema_version = 2
id = "v10"
name = "5.0 litre / even-fire V10"
category = "V10"
@@ -7,9 +7,11 @@ description = "Separate five-cylinder banks / junction collectors / dual outlets
order = 30
cycle = "four_stroke"
[simulation]
cells_per_meter = 20.0
[engine]
bank_angle_deg = 72.0
collector_volume_litres = 2.5
cylinders = 10
initial_rpm = 1400.0
initialize_phased_charge = true
@@ -18,7 +20,6 @@ maximum_load_torque_nm = 30.0
minimum_substeps = 1
phase_degrees = [0.0, 576.0, 432.0, 288.0, 144.0, 648.0001, 504.0, 360.0, 216.0, 72.00003]
pipe_damping = 0.0
plenum_volume_litres = 10.0
starter_torque_nm = 124.9751
throttle_diameter_mm = 65.0
topology = "staged"
@@ -31,18 +32,12 @@ burn_duration_deg = 60.0
burn_start_deg = 5.0
compression = 10.0
energy_variation = 0.05
exhaust_close_deg = 390.0
exhaust_open_deg = 130.0
exhaust_valve_count = 1
exhaust_valve_diameter_mm = 29.44
exhaust_valve_lift_mm = 8.280001
fuel_lhv_j_per_kg = 4.4e+07
heat_transfer = 100.0
intake_close_deg = 590.0
intake_open_deg = 340.0
intake_valve_count = 1
intake_valve_diameter_mm = 34.96
intake_valve_lift_mm = 9.2
misfire_probability = 0.0
rod_mm = 135.36
stroke_mm = 75.2
@@ -101,101 +96,607 @@ system = "injection"
[junctions]
h_pipe = true
junction_volume_cc = 50.0
[[pipes]]
id = "intake"
cells = 4
diameter_mm = 75.0
length_mm = 200.0
[[pipes]]
id = "runners"
count = 10
cells = 5
diameter_mm = 35.0
length_mm = 250.0
[[pipes]]
id = "primary_1"
cells = 11
diameter_mm = 38.0
length_mm = 520.0
[[pipes]]
id = "primary_2"
cells = 12
diameter_mm = 38.0
length_mm = 585.0
[[pipes]]
id = "primary_3"
cells = 13
diameter_mm = 38.0
length_mm = 650.0
[[pipes]]
id = "primary_4"
cells = 11
diameter_mm = 38.0
length_mm = 520.0
[[pipes]]
id = "primary_5"
cells = 12
diameter_mm = 38.0
length_mm = 585.0
[[pipes]]
id = "primary_6"
cells = 13
diameter_mm = 38.0
length_mm = 650.0
[[pipes]]
id = "primary_7"
cells = 11
diameter_mm = 38.0
length_mm = 520.0
[[pipes]]
id = "primary_8"
cells = 12
diameter_mm = 38.0
length_mm = 585.0
[[pipes]]
id = "primary_9"
cells = 13
diameter_mm = 38.0
length_mm = 650.0
[[pipes]]
id = "primary_10"
cells = 11
diameter_mm = 38.0
length_mm = 520.0
[[pipes]]
id = "tailpipe_21"
cells = 30
diameter_mm = 60.0
length_mm = 1500.0
[[pipes]]
id = "tailpipe_22"
cells = 28
diameter_mm = 60.0
length_mm = 1380.0
[[pipes]]
id = "secondary_23"
cells = 9
diameter_mm = 48.0
length_mm = 420.0
[[pipes]]
id = "secondary_24"
cells = 11
diameter_mm = 48.0
length_mm = 540.0
[cam.intake]
points = [
[0.000, 0.000000],
[340.000, 0.000000],
[345.000, 0.167219],
[350.000, 0.631194],
[355.000, 1.335398],
[360.000, 2.223309],
[365.000, 3.238400],
[370.000, 4.324147],
[375.000, 5.424026],
[380.000, 6.481510],
[385.000, 7.440077],
[390.000, 8.243200],
[395.000, 8.834355],
[400.000, 9.157018],
[402.500, 9.200000],
[527.500, 9.200000],
[532.500, 9.032781],
[537.500, 8.568806],
[542.500, 7.864602],
[547.500, 6.976691],
[552.500, 5.961600],
[557.500, 4.875853],
[562.500, 3.775974],
[567.500, 2.718490],
[572.500, 1.759923],
[577.500, 0.956800],
[582.500, 0.365645],
[587.500, 0.042982],
[590.000, 0.000000],
[720.000, 0.000000]
]
[cam.exhaust]
points = [
[0.000, 0.000000],
[130.000, 0.000000],
[135.000, 0.139445],
[140.000, 0.527629],
[145.000, 1.119326],
[150.000, 1.869313],
[155.000, 2.732363],
[160.000, 3.663250],
[165.000, 4.616751],
[170.000, 5.547638],
[175.000, 6.410688],
[180.000, 7.160675],
[185.000, 7.752372],
[190.000, 8.140556],
[195.000, 8.280001],
[325.000, 8.280001],
[330.000, 8.140556],
[335.000, 7.752372],
[340.000, 7.160675],
[345.000, 6.410688],
[350.000, 5.547638],
[355.000, 4.616751],
[360.000, 3.663250],
[365.000, 2.732363],
[370.000, 1.869313],
[375.000, 1.119326],
[380.000, 0.527629],
[385.000, 0.139445],
[390.000, 0.000000],
[720.000, 0.000000]
]
[valves.intake]
mass_g = 35.0
spring_rate_n_per_mm = 38.0
damping_n_s_per_m = 24.0
seat_force_n = 75.0
maximum_lift_mm = 15.0
seat_restitution = 0.005
cam_restitution = 0.01
stop_restitution = 0.01
[valves.exhaust]
mass_g = 35.0
spring_rate_n_per_mm = 38.0
damping_n_s_per_m = 24.0
seat_force_n = 75.0
maximum_lift_mm = 15.0
seat_restitution = 0.005
cam_restitution = 0.01
stop_restitution = 0.01
[valve_sound]
mode_hz = 3600.0
effective_mass_g = 180.0
radiation_area_cm2 = 10.0
damping_ratio = 0.9
[[geometry.cylinders]]
origin_mm = [ -220, 0, 0 ]
tilt_deg = -36.0
[[geometry.cylinders]]
origin_mm = [ -110, 0, 0 ]
tilt_deg = -36.0
[[geometry.cylinders]]
origin_mm = [ 0, 0, 0 ]
tilt_deg = -36.0
[[geometry.cylinders]]
origin_mm = [ 110, 0, 0 ]
tilt_deg = -36.0
[[geometry.cylinders]]
origin_mm = [ 220, 0, 0 ]
tilt_deg = -36.0
[[geometry.cylinders]]
origin_mm = [ -220, 0, 0 ]
tilt_deg = 36.0
[[geometry.cylinders]]
origin_mm = [ -110, 0, 0 ]
tilt_deg = 36.0
[[geometry.cylinders]]
origin_mm = [ 0, 0, 0 ]
tilt_deg = 36.0
[[geometry.cylinders]]
origin_mm = [ 110, 0, 0 ]
tilt_deg = 36.0
[[geometry.cylinders]]
origin_mm = [ 220, 0, 0 ]
tilt_deg = 36.0
# intake
[[geometry.pipes]]
index = 0
points_mm = [
[ -475, 450.3337, 0 ],
[ -275, 450.3337, 0 ]
]
# runners 1
[[geometry.pipes]]
index = 1
points_mm = [
[ -220, 411.8457, -72.1005 ],
[ -220, 161.8457, -72.1005 ]
]
# runners 2
[[geometry.pipes]]
index = 2
points_mm = [
[ -110, 411.8457, -72.1005 ],
[ -110, 161.8457, -72.1005 ]
]
# runners 3
[[geometry.pipes]]
index = 3
points_mm = [
[ 0, 411.8457, -72.1005 ],
[ 0, 161.8457, -72.1005 ]
]
# runners 4
[[geometry.pipes]]
index = 4
points_mm = [
[ 110, 411.8457, -72.1005 ],
[ 110, 161.8457, -72.1005 ]
]
# runners 5
[[geometry.pipes]]
index = 5
points_mm = [
[ 220, 411.8457, -72.1005 ],
[ 220, 161.8457, -72.1005 ]
]
# runners 6
[[geometry.pipes]]
index = 6
points_mm = [
[ -220, 411.8457, 72.1005 ],
[ -220, 161.8457, 72.1005 ]
]
# runners 7
[[geometry.pipes]]
index = 7
points_mm = [
[ -110, 411.8457, 72.1005 ],
[ -110, 161.8457, 72.1005 ]
]
# runners 8
[[geometry.pipes]]
index = 8
points_mm = [
[ 0, 411.8457, 72.1005 ],
[ 0, 161.8457, 72.1005 ]
]
# runners 9
[[geometry.pipes]]
index = 9
points_mm = [
[ 110, 411.8457, 72.1005 ],
[ 110, 161.8457, 72.1005 ]
]
# runners 10
[[geometry.pipes]]
index = 10
points_mm = [
[ 220, 411.8457, 72.1005 ],
[ 220, 161.8457, 72.1005 ]
]
# primary_1
[[geometry.pipes]]
index = 11
points_mm = [
[ -220, 113.1771, -139.0871 ],
[ -218.6901, 101.7204, -149.7241 ],
[ -214.8997, 90.254, -158.5286 ],
[ -208.8379, 78.8812, -165.6588 ],
[ -200.7136, 67.7054, -171.2728 ],
[ -190.7357, 56.8299, -175.5288 ],
[ -179.1134, 46.358, -178.5849 ],
[ -166.0556, 36.3931, -180.5993 ],
[ -151.7712, 27.0384, -181.7302 ],
[ -136.4693, 18.3972, -182.1357 ],
[ -120.3588, 10.573, -181.974 ],
[ -103.6488, 3.6691, -181.4032 ],
[ -86.5482, -2.2113, -180.5816 ],
[ -69.2661, -6.9648, -179.6672 ],
[ -52.0114, -10.4881, -178.8183 ],
[ -34.9931, -12.6778, -178.1929 ],
[ -18.4202, -13.4307, -177.9493 ]
]
# primary_2
[[geometry.pipes]]
index = 12
points_mm = [
[ -110, 113.1771, -139.0871 ],
[ -108.9293, 105.9052, -146.1577 ],
[ -105.9035, 98.9449, -152.2659 ],
[ -101.2019, 92.2234, -157.4816 ],
[ -95.1037, 85.6677, -161.8746 ],
[ -87.8884, 79.2051, -165.5148 ],
[ -79.8351, 72.7626, -168.472 ],
[ -71.2232, 66.2675, -170.816 ],
[ -62.332, 59.6468, -172.6168 ],
[ -53.4407, 52.8278, -173.9442 ],
[ -44.8288, 45.7375, -174.8679 ],
[ -36.7756, 38.3031, -175.458 ],
[ -29.5602, 30.4518, -175.7841 ],
[ -23.462, 22.1107, -175.9161 ],
[ -18.7604, 13.207, -175.924 ],
[ -15.7346, 3.6677, -175.8775 ],
[ -14.6639, -6.5798, -175.8465 ]
]
# primary_3
[[geometry.pipes]]
index = 13
points_mm = [
[ 0, 113.1771, -139.0871 ],
[ 0, 107.1157, -144.7979 ],
[ 0, 100.8007, -149.8969 ],
[ 0, 94.2457, -154.4176 ],
[ 0, 87.4644, -158.3936 ],
[ 0, 80.4706, -161.8586 ],
[ 0, 73.2778, -164.846 ],
[ 0, 65.8998, -167.3895 ],
[ 0, 58.3503, -169.5227 ],
[ 0, 50.6429, -171.2791 ],
[ 0, 42.7913, -172.6924 ],
[ 0, 34.8092, -173.7961 ],
[ 0, 26.7103, -174.6238 ],
[ 0, 18.5083, -175.2091 ],
[ 0, 10.2168, -175.5856 ],
[ 0, 1.8495, -175.7868 ],
[ 0, -6.5798, -175.8465 ]
]
# primary_4
[[geometry.pipes]]
index = 14
points_mm = [
[ 110, 113.1771, -139.0871 ],
[ 108.9293, 105.9052, -146.1577 ],
[ 105.9035, 98.9449, -152.2659 ],
[ 101.2019, 92.2234, -157.4816 ],
[ 95.1037, 85.6677, -161.8746 ],
[ 87.8884, 79.2051, -165.5148 ],
[ 79.8351, 72.7626, -168.472 ],
[ 71.2232, 66.2675, -170.816 ],
[ 62.332, 59.6468, -172.6168 ],
[ 53.4407, 52.8278, -173.9442 ],
[ 44.8288, 45.7375, -174.8679 ],
[ 36.7756, 38.3031, -175.458 ],
[ 29.5602, 30.4518, -175.7841 ],
[ 23.462, 22.1107, -175.9161 ],
[ 18.7604, 13.207, -175.924 ],
[ 15.7346, 3.6677, -175.8775 ],
[ 14.6639, -6.5798, -175.8465 ]
]
# primary_5
[[geometry.pipes]]
index = 15
points_mm = [
[ 220, 113.1771, -139.0871 ],
[ 218.6901, 101.7204, -149.7241 ],
[ 214.8997, 90.254, -158.5286 ],
[ 208.8379, 78.8812, -165.6588 ],
[ 200.7136, 67.7054, -171.2728 ],
[ 190.7357, 56.8299, -175.5288 ],
[ 179.1134, 46.358, -178.5849 ],
[ 166.0556, 36.3931, -180.5993 ],
[ 151.7712, 27.0384, -181.7302 ],
[ 136.4693, 18.3972, -182.1357 ],
[ 120.3588, 10.573, -181.974 ],
[ 103.6488, 3.6691, -181.4032 ],
[ 86.5483, -2.2113, -180.5816 ],
[ 69.2661, -6.9648, -179.6672 ],
[ 52.0114, -10.4881, -178.8183 ],
[ 34.9931, -12.6778, -178.1929 ],
[ 18.4202, -13.4307, -177.9493 ]
]
# primary_6
[[geometry.pipes]]
index = 16
points_mm = [
[ -220, 113.1771, 139.0871 ],
[ -218.6901, 101.7204, 149.7241 ],
[ -214.8997, 90.254, 158.5286 ],
[ -208.8379, 78.8812, 165.6588 ],
[ -200.7136, 67.7054, 171.2728 ],
[ -190.7357, 56.8299, 175.5288 ],
[ -179.1134, 46.358, 178.5849 ],
[ -166.0556, 36.3931, 180.5993 ],
[ -151.7712, 27.0384, 181.7302 ],
[ -136.4693, 18.3972, 182.1357 ],
[ -120.3588, 10.573, 181.974 ],
[ -103.6488, 3.6691, 181.4032 ],
[ -86.5482, -2.2113, 180.5816 ],
[ -69.2661, -6.9648, 179.6672 ],
[ -52.0114, -10.4881, 178.8183 ],
[ -34.9931, -12.6778, 178.1929 ],
[ -18.4202, -13.4307, 177.9493 ]
]
# primary_7
[[geometry.pipes]]
index = 17
points_mm = [
[ -110, 113.1771, 139.0871 ],
[ -108.9293, 105.9052, 146.1577 ],
[ -105.9035, 98.9449, 152.2659 ],
[ -101.2019, 92.2234, 157.4816 ],
[ -95.1037, 85.6677, 161.8746 ],
[ -87.8884, 79.2051, 165.5148 ],
[ -79.8351, 72.7626, 168.472 ],
[ -71.2232, 66.2675, 170.816 ],
[ -62.332, 59.6468, 172.6168 ],
[ -53.4407, 52.8278, 173.9442 ],
[ -44.8288, 45.7375, 174.8679 ],
[ -36.7756, 38.3031, 175.458 ],
[ -29.5602, 30.4518, 175.7841 ],
[ -23.462, 22.1107, 175.9161 ],
[ -18.7604, 13.207, 175.924 ],
[ -15.7346, 3.6677, 175.8775 ],
[ -14.6639, -6.5798, 175.8465 ]
]
# primary_8
[[geometry.pipes]]
index = 18
points_mm = [
[ 0, 113.1771, 139.0871 ],
[ 0, 107.1157, 144.7979 ],
[ 0, 100.8007, 149.8969 ],
[ 0, 94.2457, 154.4176 ],
[ 0, 87.4644, 158.3936 ],
[ 0, 80.4706, 161.8586 ],
[ 0, 73.2778, 164.846 ],
[ 0, 65.8998, 167.3895 ],
[ 0, 58.3503, 169.5227 ],
[ 0, 50.6429, 171.2791 ],
[ 0, 42.7913, 172.6924 ],
[ 0, 34.8092, 173.7961 ],
[ 0, 26.7103, 174.6238 ],
[ 0, 18.5083, 175.2091 ],
[ 0, 10.2168, 175.5856 ],
[ 0, 1.8495, 175.7868 ],
[ 0, -6.5798, 175.8465 ]
]
# primary_9
[[geometry.pipes]]
index = 19
points_mm = [
[ 110, 113.1771, 139.0871 ],
[ 108.9293, 105.9052, 146.1577 ],
[ 105.9035, 98.9449, 152.2659 ],
[ 101.2019, 92.2234, 157.4816 ],
[ 95.1037, 85.6677, 161.8746 ],
[ 87.8884, 79.2051, 165.5148 ],
[ 79.8351, 72.7626, 168.472 ],
[ 71.2232, 66.2675, 170.816 ],
[ 62.332, 59.6468, 172.6168 ],
[ 53.4407, 52.8278, 173.9442 ],
[ 44.8288, 45.7375, 174.8679 ],
[ 36.7756, 38.3031, 175.458 ],
[ 29.5602, 30.4518, 175.7841 ],
[ 23.462, 22.1107, 175.9161 ],
[ 18.7604, 13.207, 175.924 ],
[ 15.7346, 3.6677, 175.8775 ],
[ 14.6639, -6.5798, 175.8465 ]
]
# primary_10
[[geometry.pipes]]
index = 20
points_mm = [
[ 220, 113.1771, 139.0871 ],
[ 218.6901, 101.7204, 149.7241 ],
[ 214.8997, 90.254, 158.5286 ],
[ 208.8379, 78.8812, 165.6588 ],
[ 200.7136, 67.7054, 171.2728 ],
[ 190.7357, 56.8299, 175.5288 ],
[ 179.1134, 46.358, 178.5849 ],
[ 166.0556, 36.3931, 180.5993 ],
[ 151.7712, 27.0384, 181.7302 ],
[ 136.4693, 18.3972, 182.1357 ],
[ 120.3588, 10.573, 181.974 ],
[ 103.6488, 3.6691, 181.4032 ],
[ 86.5483, -2.2113, 180.5816 ],
[ 69.2661, -6.9648, 179.6672 ],
[ 52.0114, -10.4881, 178.8183 ],
[ 34.9931, -12.6778, 178.1929 ],
[ 18.4202, -13.4307, 177.9493 ]
]
# tailpipe_21
[[geometry.pipes]]
index = 21
points_mm = [
[ 218.4202, -70, -181.5005 ],
[ 1718.4201, -70, -181.5005 ]
]
# tailpipe_22
[[geometry.pipes]]
index = 22
points_mm = [
[ 218.4202, -70, 181.5005 ],
[ 1598.4201, -70, 181.5005 ]
]
# secondary_23
[[geometry.pipes]]
index = 23
points_mm = [
[ 18.4202, -29.1445, -164.7842 ],
[ 29.5589, -29.5568, -164.9719 ],
[ 40.3211, -30.722, -165.5024 ],
[ 50.7606, -32.5324, -166.3268 ],
[ 60.9312, -34.8806, -167.3961 ],
[ 70.8866, -37.659, -168.6613 ],
[ 80.6807, -40.7601, -170.0733 ],
[ 90.3673, -44.0763, -171.5833 ],
[ 100, -47.5, -173.1423 ],
[ 109.6328, -50.9237, -174.7013 ],
[ 119.3193, -54.2399, -176.2114 ],
[ 129.1134, -57.341, -177.6234 ],
[ 139.0688, -60.1194, -178.8886 ],
[ 149.2394, -62.4676, -179.9578 ],
[ 159.6789, -64.278, -180.7822 ],
[ 170.4412, -65.4432, -181.3128 ],
[ 181.5798, -65.8555, -181.5005 ]
]
# secondary_24
[[geometry.pipes]]
index = 24
points_mm = [
[ 18.4202, -29.1445, 164.7842 ],
[ 29.5589, -29.5568, 164.9719 ],
[ 40.3211, -30.722, 165.5024 ],
[ 50.7606, -32.5324, 166.3268 ],
[ 60.9312, -34.8806, 167.3961 ],
[ 70.8866, -37.659, 168.6613 ],
[ 80.6807, -40.7601, 170.0733 ],
[ 90.3673, -44.0763, 171.5833 ],
[ 100, -47.5, 173.1423 ],
[ 109.6328, -50.9237, 174.7013 ],
[ 119.3193, -54.2399, 176.2114 ],
[ 129.1134, -57.341, 177.6234 ],
[ 139.0688, -60.1194, 178.8886 ],
[ 149.2394, -62.4676, 179.9578 ],
[ 159.6789, -64.278, 180.7822 ],
[ 170.4412, -65.4432, 181.3128 ],
[ 181.5798, -65.8555, 181.5005 ]
]
[[geometry.volumes]]
id = "intake_plenum"
center_mm = [ 0, 450.3337, 0 ]
size_mm = [ 550, 76.976, 236.201 ]
[[geometry.volumes]]
id = "junction_0"
center_mm = [ 0, -25, -181.5005 ]
size_mm = [ 36.8403, 36.8403, 36.8403 ]
[[geometry.volumes]]
id = "junction_1"
center_mm = [ 0, -25, 181.5005 ]
size_mm = [ 36.8403, 36.8403, 36.8403 ]
[[geometry.volumes]]
id = "junction_2"
center_mm = [ 200, -70, -181.5005 ]
size_mm = [ 36.8403, 36.8403, 36.8403 ]
[[geometry.volumes]]
id = "junction_3"
center_mm = [ 200, -70, 181.5005 ]
size_mm = [ 36.8403, 36.8403, 36.8403 ]