i_fmu_logic Last update: 16.07.2025 1 4 #pragma once 5 6 #include "core/lifecycle/fmu_activity/fmu_config.h" 7 #include <set> 8 #include <string> 9 14 namespace simulation_framework 15 { 16 namespace core 17 { 18 19 namespace lifecycle 20 { 21 25 class IFmuLogic 26 { 27 public: 28 virtual ~IFmuLogic() = default; 29 34 virtual void SetupExperiment(double start = 0, double stop = 0, double tolerance = 0) = 0; 35 37 virtual void EnterInitialization() = 0; 38 40 virtual void ExitInitialization() = 0; 41 46 virtual void Setup(double start = 0, double stop = 0, double tolerance = 0) = 0; 47 51 virtual bool Step(double step_size) = 0; 52 54 virtual void PrepareInputsOutputs() = 0; 55 59 virtual FmuInOutMap InitInOutMap(std::set<std::string> variable_names) = 0; 60 65 virtual bool Step(double step_size, const FmuInOutMap& input) = 0; 66 69 virtual void SetInputs(const FmuInOutMap& inputs) = 0; 70 73 virtual FmuInOutMap GetOutputs() const = 0; 74 78 virtual void GetOutputs(FmuInOutMap& requested_outputs) const = 0; 79 }; 80 81 } // namespace lifecycle 82 } // namespace core 83 } // namespace simulation_framework