29 lines
766 B
C++
29 lines
766 B
C++
#pragma once
|
|
|
|
#include "FluidSim/AudioProcessing.hpp"
|
|
#include "FluidSim/Fluid.hpp"
|
|
#include "FluidSim/Solver.hpp"
|
|
#include <vector>
|
|
|
|
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<Pipe1D> pipes_;
|
|
float dt_{}, neck_area_{}, cavity_orifice_area_{};
|
|
BoundarySystem boundaries_;
|
|
Solver solver_;
|
|
SoundProcessor sound_;
|
|
};
|
|
|
|
} // namespace fluidsim::port
|