File fmu_logic.h
Last update: 09.03.2026Location: core/lifecycle/fmu_activity/fmu_logic.h
Classes
Namespaces
- fmi4cpp
- fmi4cpp::fmi2
- simulation_framework
- simulation_framework::core
- simulation_framework::core::lifecycle
Includes
- core/lifecycle/fmu_activity/fmu_state.h
- core/lifecycle/fmu_activity/i_fmu_logic.h
-
-
Source
#pragma once
#include "core/lifecycle/fmu_activity/fmu_state.h"
#include "core/lifecycle/fmu_activity/i_fmu_logic.h"
#include <memory>
#include <set>
namespace fmi4cpp
{
namespace fmi2
{
class fmu;
class cs_fmu;
class cs_slave;
} // namespace fmi2
enum class status;
} // namespace fmi4cpp
namespace simulation_framework
{
namespace core
{
namespace lifecycle
{
class FmuLogicImpl;
namespace fmi = fmi4cpp::fmi2;
class FmuLogic : public IFmuLogic
{
public:
FmuLogic(const std::string& fmu_path);
virtual ~FmuLogic() override;
FmuLogic(FmuLogic&&) noexcept;
FmuLogic& operator=(FmuLogic&&) noexcept;
void SetupExperiment(double start = 0, double stop = 0, double tolerance = 0) override;
void EnterInitialization() override;
void ExitInitialization() override;
void Setup(double start = 0, double stop = 0, double tolerance = 0) override;
FmuInOutMap InitInOutMap(std::set<std::string> variable_names) override;
bool Step(double step_size, const FmuInOutMap& input) override;
bool Step(double step_size) override;
void SetInitializationParams(const FmuInOutMap& params) override;
void SetInputs(const FmuInOutMap& inputs) override;
template <typename t>
void SetValue(const std::string& variable_name, const T& value);
template <typename t>
T GetOutput(const std::string& variable_name) const;
FmuInOutMap GetOutputs() const override;
void GetOutputs(FmuInOutMap& requested_outputs) const override;
double GetSimulationTime() const;
fmi4cpp::status GetLastStatus() const;
const fmi::fmu* GetFmuPtr() const;
const fmi::cs_fmu* GetCsFmuPtr() const;
const fmi::cs_slave* GetFmuInstancePtr() const;
FmuState GetFmuState() const override;
private:
std::unique_ptr<fmulogicimpl> impl_;
};
} // namespace lifecycle
} // namespace core
} // namespace simulation_framework
[static]: https://img.shields.io/badge/-static-lightgrey (static)</std::string>