#pragma once #include "FluidSim/AudioProcessing.hpp" #include "FluidSim/Fluid.hpp" #include "FluidSim/Solver.hpp" #include namespace fluidsim::port { class HelmholtzScenario { public: explicit HelmholtzScenario(int sample_rate = 44100); float process(); float cavity_pressure() const { return cavity_.pressure(); } float open_end_flow() const { return boundaries_.open_end_mass_flow(0); } const Pipe1D& neck() const { return pipes_.front(); } private: Volume0D cavity_{1e-3f, 1.1f * 101325.0f, 300.0f}; Port* cavity_port_{}; std::vector pipes_; float dt_{}, neck_area_{}, cavity_orifice_area_{}; BoundarySystem boundaries_; Solver solver_; SoundProcessor sound_; }; } // namespace fluidsim::port