Add machine workshop, typed logic, mechanics and sensor-driven ECUs
This commit is contained in:
31
include/FluidSim/FuelInjector.hpp
Normal file
31
include/FluidSim/FuelInjector.hpp
Normal file
@@ -0,0 +1,31 @@
|
||||
#pragma once
|
||||
#include "FluidSim/MachinePorts.hpp"
|
||||
|
||||
namespace fluidsim::port {
|
||||
class Volume0D;
|
||||
// Initial delivery model: calibrated regulated rail, with declared ideal or
|
||||
// finite supply. Rail pressure dynamics and liquid plumbing are separate work.
|
||||
struct FuelInjectorConfig {
|
||||
enum class Supply {IdealRail,FiniteRail};
|
||||
Supply supply{Supply::FiniteRail};
|
||||
double maximum_mass_flow{.001}; // kg/s at the calibrated rail pressure
|
||||
double initial_fuel_mass{.1}; // kg, used only by FiniteRail
|
||||
float fuel_temperature{300}; // sensible energy of the vaporized fuel
|
||||
};
|
||||
struct FuelInjectorState {
|
||||
bool command_fault{},saturated{},empty{};
|
||||
double mass_flow{},delivered_mass{},remaining_mass{};
|
||||
};
|
||||
class FuelInjector {
|
||||
public:
|
||||
explicit FuelInjector(FuelInjectorConfig config={});
|
||||
// Continuous/batch-average delivery, not a sequential pulse-width model.
|
||||
// Adds conserved fuel species, tracer and sensible energy to its host.
|
||||
const FuelInjectorState& deliver(Volume0D& host,const SignalValue& command,
|
||||
double time,double dt);
|
||||
const FuelInjectorState& state()const{return state_;}
|
||||
private:
|
||||
FuelInjectorConfig config_;
|
||||
FuelInjectorState state_;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user