Files
FluidSimCpp/include/FluidSim/Component.hpp

35 lines
1.0 KiB
C++

#pragma once
#include <vector>
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 gamma_value{1.4f}, gas_constant_value{287.0f};
float air_fraction{1.0f};
float fuel_fraction{};
float fuel_equivalent_fraction{}; // fuel origin, including fuel already burned
float* owner_energy{};
float* owner_air_mass{};
float* owner_exhaust_mass{};
float* owner_fuel_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<Port*> ports() = 0;
// Optional actuation at each CFL substep, before boundary fluxes are resolved.
virtual void prepare_step(float /*dt*/) {}
virtual void update_state(float dt) = 0;
};
} // namespace fluidsim::port