Files
FluidSimCpp/include/FluidSim/ScenarioCatalog.hpp

34 lines
1.4 KiB
C++

#pragma once
#include "FluidSim/EngineConfig.hpp"
#include "FluidSim/Silencer.hpp"
#include "FluidSim/TwoStrokeConfig.hpp"
#include <filesystem>
#include <string>
#include <vector>
namespace fluidsim::port {
struct ScenarioExample {
std::string id,title,description;
ScenarioKind kind{ScenarioKind::Twin};
TwoStrokeConfig two{};
ExhaustConfig exhaust{};
JunctionConfig junctions{};
EngineConfig engine{};
std::string category;
int order{};
std::filesystem::path source_path;
};
ScenarioExample load_engine_file(const std::filesystem::path& path);
void migrate_engine_geometry(const std::filesystem::path& path,bool relayout=false);
// Writes a distinct, validated engine file; never overwrites a preset.
std::filesystem::path save_tuned_engine(const ScenarioExample& source,const EngineConfig& tuning,
const std::filesystem::path& directory);
std::vector<ScenarioExample> load_engine_directory(const std::filesystem::path& directory);
// FLUIDSIM_ENGINE_DIR overrides discovery. Otherwise search the working directory,
// beside the executable, then the source tree for developer tools.
std::filesystem::path engine_directory();
const std::vector<ScenarioExample>& scenario_examples();
const ScenarioExample& scenario_example(const std::string& id);
const ScenarioExample& preset_engine_definition(FourStrokePreset preset);
}