#pragma once #include namespace fluidsim::port { struct Port { float mass_flow{}; // kg/s, positive into the owning component float enthalpy{}; // J/kg float pressure{101325.0f}; float density{1.1768f}; float temperature{300.0f}; float air_fraction{1.0f}; float* owner_air_mass{}; float* owner_exhaust_mass{}; }; // Small equivalent of the C# IComponent lifecycle. Components update their // conserved state after the coupled 1-D pipe solve has accumulated port flow. class Component { public: virtual ~Component() = default; virtual std::vector ports() = 0; virtual void update_state(float dt) = 0; }; } // namespace fluidsim::port