    

 ## On this page

  

 

 # i\_fmu\_logic

 Last update: 16.07.2025 

<a id="l00001" name="l00001"></a> 1 

<a id="l00003" name="l00003"></a> 3 

<a id="l00004" name="l00004"></a> 4\#pragma once

<a id="l00005" name="l00005"></a> 5 

<a id="l00006" name="l00006"></a> 6\#include "core/lifecycle/fmu\_activity/fmu\_config.h"

<a id="l00007" name="l00007"></a> 7\#include &lt;set&gt;

<a id="l00008" name="l00008"></a> 8\#include &lt;string&gt;

<a id="l00009" name="l00009"></a> 9 

<a id="l00014" name="l00014"></a> 14namespace [simulation\_framework](namespacesimulation__framework.xhtml)

<a id="l00015" name="l00015"></a> 15{

<a id="l00016" name="l00016"></a> 16namespace [core](namespacecore.xhtml)

<a id="l00017" name="l00017"></a> 17{

<a id="l00018" name="l00018"></a> 18 

<a id="l00019" name="l00019"></a> 19namespace lifecycle

<a id="l00020" name="l00020"></a> 20{

<a id="l00021" name="l00021"></a> 21 

<a id="l00025" name="l00025"></a>[ 25](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml)class [IFmuLogic](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml)

<a id="l00026" name="l00026"></a> 26{

<a id="l00027" name="l00027"></a> 27 public:

<a id="l00028" name="l00028"></a> 28 virtual [~IFmuLogic](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml)() = default;

<a id="l00029" name="l00029"></a> 29 

<a id="l00034" name="l00034"></a>[ 34](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a31bd3fac13966e3bbeac00874fc8a2a2) virtual void [SetupExperiment](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a31bd3fac13966e3bbeac00874fc8a2a2)(double [start](classsimulation__framework_1_1core_1_1Topic.xhtml) = 0, double [stop](classsimulation__framework_1_1core_1_1Topic.xhtml) = 0, double [tolerance](classsimulation__framework_1_1core_1_1Topic.xhtml) = 0) = 0;

<a id="l00035" name="l00035"></a> 35 

<a id="l00037" name="l00037"></a>[ 37](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a37799269a2473c00bc062dec185ccec2) virtual void [EnterInitialization](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a37799269a2473c00bc062dec185ccec2)() = 0;

<a id="l00038" name="l00038"></a> 38 

<a id="l00040" name="l00040"></a>[ 40](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#ae6fc6b7997934b0029c1502d1cd9b891) virtual void [ExitInitialization](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#ae6fc6b7997934b0029c1502d1cd9b891)() = 0;

<a id="l00041" name="l00041"></a> 41 

<a id="l00046" name="l00046"></a>[ 46](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a3a68d8e71105c3f41094d2f34cf4a7bf) virtual void [Setup](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a3a68d8e71105c3f41094d2f34cf4a7bf)(double [start](classsimulation__framework_1_1core_1_1Topic.xhtml) = 0, double [stop](classsimulation__framework_1_1core_1_1Topic.xhtml) = 0, double [tolerance](classsimulation__framework_1_1core_1_1Topic.xhtml) = 0) = 0;

<a id="l00047" name="l00047"></a> 47 

<a id="l00051" name="l00051"></a>[ 51](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a9c0f65bae99a9e27d265b70c8e96540f) virtual bool [Step](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a9c0f65bae99a9e27d265b70c8e96540f)(double [step\_size](classsimulation__framework_1_1core_1_1Topic.xhtml)) = 0;

<a id="l00052" name="l00052"></a> 52 

<a id="l00056" name="l00056"></a>[ 56](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a52806434ca9460d5494964d2427625d7) virtual FmuInOutMap [InitInOutMap](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a52806434ca9460d5494964d2427625d7)(std::set&lt;std::string&gt; [variable\_names](classsimulation__framework_1_1core_1_1Topic.xhtml)) = 0;

<a id="l00057" name="l00057"></a> 57 

<a id="l00062" name="l00062"></a>[ 62](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a9bcdb0a6da50c28e4ea0fc43dde61c5b) virtual bool [Step](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a9bcdb0a6da50c28e4ea0fc43dde61c5b)(double [step\_size](classsimulation__framework_1_1core_1_1Topic.xhtml), const FmuInOutMap&amp; [input](classsimulation__framework_1_1core_1_1Topic.xhtml)) = 0;

<a id="l00063" name="l00063"></a> 63 

<a id="l00066" name="l00066"></a>[ 66](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a2561e600ec9b6cd47fba87d4f7abccda) virtual void [SetInputs](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a2561e600ec9b6cd47fba87d4f7abccda)(const FmuInOutMap&amp; [inputs](classsimulation__framework_1_1core_1_1Topic.xhtml)) = 0;

<a id="l00067" name="l00067"></a> 67 

<a id="l00070" name="l00070"></a>[ 70](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a78a9abe5d2efee8fd629b82b41c52753) virtual FmuInOutMap [GetOutputs](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a78a9abe5d2efee8fd629b82b41c52753)() const = 0;

<a id="l00071" name="l00071"></a> 71 

<a id="l00075" name="l00075"></a>[ 75](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a871f93e3dc6c01f7fded7d5952538e61) virtual void [GetOutputs](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a871f93e3dc6c01f7fded7d5952538e61)(FmuInOutMap&amp; [requested\_outputs](classsimulation__framework_1_1core_1_1Topic.xhtml)) const = 0;

<a id="l00076" name="l00076"></a> 76};



<a id="l00077" name="l00077"></a> 77 

<a id="l00078" name="l00078"></a> 78} // namespace lifecycle

<a id="l00079" name="l00079"></a> 79} // namespace core

<a id="l00080" name="l00080"></a> 80} // namespace simulation\_framework

[simulation\_framework::core::Topic](classsimulation__framework_1_1core_1_1Topic.xhtml)

This is the concrete Topic class that can be used for creation of a communication channel with given ...

**Definition** [topic.h:38](topic_8h_source.xhtml#l00037)



[simulation\_framework::core::lifecycle::IFmuLogic](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml)

The interface for FMU Logic to be used by an FMU activity.

**Definition** [i\_fmu\_logic.h:26](i__fmu__logic_8h_source.xhtml#l00025)



[simulation\_framework::core::lifecycle::IFmuLogic::SetInputs](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a2561e600ec9b6cd47fba87d4f7abccda)

virtual void SetInputs(const FmuInOutMap &amp;inputs)=0

Set the fmu inputs.



[simulation\_framework::core::lifecycle::IFmuLogic::SetupExperiment](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a31bd3fac13966e3bbeac00874fc8a2a2)

virtual void SetupExperiment(double start=0, double stop=0, double tolerance=0)=0

Call fmi2SetupExperiment



[simulation\_framework::core::lifecycle::IFmuLogic::EnterInitialization](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a37799269a2473c00bc062dec185ccec2)

virtual void EnterInitialization()=0

Call fmi2EnterInitializationMode



[simulation\_framework::core::lifecycle::IFmuLogic::Setup](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a3a68d8e71105c3f41094d2f34cf4a7bf)

virtual void Setup(double start=0, double stop=0, double tolerance=0)=0

Call SetupExperiment, EnterInitialization, and ExitInitialization.



[simulation\_framework::core::lifecycle::IFmuLogic::InitInOutMap](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a52806434ca9460d5494964d2427625d7)

virtual FmuInOutMap InitInOutMap(std::set&lt; std::string &gt; variable_names)=0

Use the internal implementation to initialize the inputs or outputs with the correct underlying type.



[simulation\_framework::core::lifecycle::IFmuLogic::GetOutputs](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a78a9abe5d2efee8fd629b82b41c52753)

virtual FmuInOutMap GetOutputs() const =0

Get all fmu outputs.



[simulation\_framework::core::lifecycle::IFmuLogic::GetOutputs](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a871f93e3dc6c01f7fded7d5952538e61)

virtual void GetOutputs(FmuInOutMap &amp;requested_outputs) const =0

Get a subset of the fmu outputs.



[simulation\_framework::core::lifecycle::IFmuLogic::Step](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a9bcdb0a6da50c28e4ea0fc43dde61c5b)

virtual bool Step(double step_size, const FmuInOutMap &amp;input)=0

Set the fmu inputs and step the FMU model for given step size by calling fmi2DoStep



[simulation\_framework::core::lifecycle::IFmuLogic::Step](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#a9c0f65bae99a9e27d265b70c8e96540f)

virtual bool Step(double step_size)=0

Step the FMU model for given step size by calling fmi2DoStep



[simulation\_framework::core::lifecycle::IFmuLogic::ExitInitialization](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml#ae6fc6b7997934b0029c1502d1cd9b891)

virtual void ExitInitialization()=0

Call fmi2ExitInitializationMode



[core](namespacecore.xhtml)

The namespace for all core functionalities under namespace simulation_framework.



[simulation\_framework](namespacesimulation__framework.xhtml)

The top namespace for simulation framework.