#pragma once #include "FluidSim/Component.hpp" #include "FluidSim/Fluid.hpp" #include #include namespace fluidsim::port { class Solver { public: Solver(std::vector& pipes, BoundarySystem& boundaries); std::uint64_t substep_count() const { return substep_count_; } int minimum_substeps{4}; void add_component(Component& component); void step(float dt); std::uint64_t step_count() const { return step_count_; } private: std::vector& pipes_; BoundarySystem& boundaries_; std::vector components_; std::uint64_t step_count_{}, substep_count_{}; }; } // namespace fluidsim::port