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

@@ -12,6 +12,7 @@
#include "FluidSim/Fluid.hpp"
#include "FluidSim/OutdoorAudio.hpp"
#include "FluidSim/Solver.hpp"
#include "FluidSim/RuntimeProfiler.hpp"
#include "FluidSim/Vehicle.hpp"
#include "FluidSim/MotorcycleTest.hpp"
#include <memory>
@@ -35,13 +36,22 @@ public:
int cylinder_count() const { return engine_config.cylinders; }
std::array<FourStrokeCylinder*, 12> cylinders() { return {&cylinder1, &cylinder2, &cylinder3, &cylinder4,
&cylinder5, &cylinder6, &cylinder7, &cylinder8,&cylinder9,&cylinder10,&cylinder11,&cylinder12}; }
std::array<const FourStrokeCylinder*, 12> cylinders() const { return {&cylinder1, &cylinder2, &cylinder3, &cylinder4,
&cylinder5, &cylinder6, &cylinder7, &cylinder8,&cylinder9,&cylinder10,&cylinder11,&cylinder12}; }
AudioFrame process();
void enable_profiling(bool enabled) { profiler_.enable(enabled); }
const ProfileTotals& profile_totals() const { return profiler_.totals(); }
void set_controls(float throttle_value, float load_value, float clutch_value);
void set_audio_scene(OutdoorScene scene);
void set_listener(AudioListener listener);
void set_pipe_solver(PipeSolver solver);
void set_monitor_filter(bool enabled);
void set_starter(bool engaged);
// Replaces calibration at a simulation step boundary, preserving all state.
void set_tuning(const EngineConfig& tuning);
const auto& source_audio() const { return audio_.source_frames(); }
AudioFrame tail_audio() const { return audio_.tail_frame(); }
void set_audio_source_enabled(std::size_t index,bool enabled) { audio_.set_source_enabled(index,enabled); }
AudioFrame dry_audio() const;
AudioFrame unfiltered_audio() const;
void shift_up();
@@ -69,6 +79,12 @@ private:
BoundarySystem boundaries_;
Solver solver_;
OutdoorAudio audio_;
RuntimeProfiler profiler_;
std::shared_ptr<const PhysicalGeometry> geometry_;
std::shared_ptr<const EngineConfig> active_tuning_;
std::array<float,181> intake_lift_trace_{},exhaust_lift_trace_{};
float last_contact_impulse_{};
float valve_sound_displacement_{},valve_sound_velocity_{};
mutable std::mutex mutex_;
std::vector<std::unique_ptr<Junction>> exhaust_junctions_;
std::unique_ptr<Carburetor> carb_;