    

 ## On this page

  

 

 # fmu\_logic

 Last update: 16.07.2025 

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

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

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

<a name="l00006"></a> 6 \#include "core/lifecycle/fmu\_activity/i\_fmu\_logic.h"

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

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

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

<a name="l00010"></a>[ 10](namespacefmi4cpp.xhtml) namespace [fmi4cpp](namespacefmi4cpp.xhtml)

<a name="l00011"></a> 11 {

<a name="l00012"></a> 12 namespace fmi2

<a name="l00013"></a> 13 {

<a name="l00014"></a> 14 class fmu;

<a name="l00015"></a> 15 class cs_fmu;

<a name="l00016"></a> 16 class cs_slave;

<a name="l00017"></a> 17 } // namespace fmi2

<a name="l00018"></a> 18 enum class status;

<a name="l00019"></a> 19 } // namespace fmi4cpp

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

<a name="l00025"></a> 25 namespace [simulation\_framework](namespacesimulation__framework.xhtml)

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

<a name="l00027"></a> 27 namespace [core](namespacecore.xhtml)

<a name="l00028"></a> 28 {

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

<a name="l00030"></a> 30 namespace lifecycle

<a name="l00031"></a> 31 {

<a name="l00032"></a> 32 

<a name="l00033"></a> 33 class FmuLogicImpl;

<a name="l00034"></a> 34 

<a name="l00035"></a> 35 namespace fmi = fmi4cpp::fmi2;

<a name="l00036"></a> 36 

<a name="l00039"></a>[ 39](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml) class [FmuLogic](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml) : public [IFmuLogic](classsimulation__framework_1_1core_1_1lifecycle_1_1IFmuLogic.xhtml)

<a name="l00040"></a> 40 {

<a name="l00041"></a> 41 public:

<a name="l00044"></a> 44 [FmuLogic](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#abdb6a692a31b7ee3ddc87f87d353af22)(const std::string&amp; fmu_path);

<a name="l00045"></a> 45 

<a name="l00047"></a> 47 virtual ~[FmuLogic](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml)() override;

<a name="l00048"></a> 48 [FmuLogic](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#abdb6a692a31b7ee3ddc87f87d353af22)([FmuLogic](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml)&amp;&amp;) noexcept;

<a name="l00049"></a> 49 [FmuLogic](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml)&amp; operator=([FmuLogic](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml)&amp;&amp;) noexcept;

<a name="l00051"></a> 51 

<a name="l00053"></a> 53 void [SetupExperiment](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#a52bbed4e360462046b9b6f019f760034)(double start = 0, double stop = 0, double tolerance = 0) override;

<a name="l00054"></a> 54 

<a name="l00056"></a> 56 void [EnterInitialization](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#a0203fe646f1a5621e83f862fc2c4861f)() override;

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

<a name="l00059"></a> 59 void [ExitInitialization](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#abd981adc51682e6e7562332888f00932)() override;

<a name="l00060"></a> 60 

<a name="l00062"></a> 62 void [Setup](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#ac9e6b73f6d11c16f28e5647e62d3d48c)(double start = 0, double stop = 0, double tolerance = 0) override;

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

<a name="l00065"></a> 65 void [PrepareInputsOutputs](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#a329c405e3633a56071384d8db89f92f6)() override;

<a name="l00066"></a> 66 

<a name="l00068"></a> 68 FmuInOutMap [InitInOutMap](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#a8899be3914f9378637f15fd3aa6fbdef)(std::set&lt;std::string&gt; variable_names) override;

<a name="l00069"></a> 69 

<a name="l00071"></a> 71 bool [Step](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#add2ea6f3b48f6010178076e8916db410)(double step_size, const FmuInOutMap&amp; input) override;

<a name="l00072"></a> 72 

<a name="l00074"></a> 74 bool [Step](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#add2ea6f3b48f6010178076e8916db410)(double step_size) override;

<a name="l00075"></a> 75 

<a name="l00077"></a> 77 void [SetInputs](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#a1b0f3a1cba93d938fc55bd8917e836b5)(const FmuInOutMap&amp; inputs) override;

<a name="l00078"></a> 78 

<a name="l00083"></a> 83 template &lt;typename T&gt;

<a name="l00084"></a> 84 void [SetValue](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#a35747b8e4e37700c8ff8706b3a93a833)(const std::string&amp; variable_name, const T&amp; value);

<a name="l00085"></a> 85 

<a name="l00090"></a> 90 template &lt;typename T&gt;

<a name="l00091"></a> 91 T [GetOutput](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#a4ed808f5ab02cc3bcc60f76c1bcff10f)(const std::string&amp; variable_name) const;

<a name="l00092"></a> 92 

<a name="l00094"></a> 94 FmuInOutMap [GetOutputs](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#ae31cf08f14147691cf9f354f1cadd7cf)() const override;

<a name="l00095"></a> 95 

<a name="l00099"></a> 99 void [GetOutputs](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#ae31cf08f14147691cf9f354f1cadd7cf)(FmuInOutMap&amp; requested_outputs) const override;

<a name="l00100"></a> 100 

<a name="l00103"></a> 103 double [GetSimulationTime](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#abf602595ae1d4b9c0eb21315aaa11b1f)() const;

<a name="l00104"></a> 104 

<a name="l00107"></a> 107 fmi4cpp::status [GetLastStatus](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#a739ac5f7595d5faec57787a4572b1c56)() const;

<a name="l00108"></a> 108 

<a name="l00111"></a> 111 const fmi::fmu* [GetFmuPtr](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#a9f18a56814f3189b6dac96f9bce7c392)() const;

<a name="l00112"></a> 112 

<a name="l00115"></a> 115 const fmi::cs_fmu* [GetCsFmuPtr](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#aae028866080e6a1ae4f7d2deef37e9bc)() const;

<a name="l00116"></a> 116 

<a name="l00119"></a> 119 const fmi::cs_slave* [GetFmuInstancePtr](classsimulation__framework_1_1core_1_1lifecycle_1_1FmuLogic.xhtml#a9ba2d6f8d3670534ed6af0cff768c14c)() const;

<a name="l00120"></a> 120 

<a name="l00121"></a> 121 private:

<a name="l00123"></a> 123 std::unique_ptr&lt;FmuLogicImpl&gt; impl_;

<a name="l00124"></a> 124 };

<a name="l00125"></a> 125 

<a name="l00126"></a> 126 } // namespace lifecycle

<a name="l00127"></a> 127 } // namespace core

<a name="l00128"></a> 128 } // namespace simulation\_framework