Ver código fonte

investigation of the potential issue (it's not an issue)

Claudio Gomes 6 anos atrás
pai
commit
dd5026dd01
28 arquivos alterados com 731 adições e 88 exclusões
  1. 148 0
      HintCO/examples/case_study_double_loop_approx_cpint.xmi
  2. 168 0
      HintCO/examples/case_study_double_loop_approx_order.xmi
  3. 56 0
      HintCO/examples/case_study_double_loop_hier_cpInt.hintco
  4. 56 0
      HintCO/examples/case_study_double_loop_hier_order.hintco
  5. 58 0
      HintCO/examples/case_study_double_loop_pbond_hier_cpInter.hintco
  6. 21 45
      HintCO/instances/case_study_double_loop.xmi
  7. 3 3
      HintCO/instances/case_study_double_loop_approx.xmi
  8. 1 1
      HintCO/instances/case_study_double_loop_better_proactive.xmi
  9. 1 1
      HintCO/instances/case_study_double_loop_default.hintco
  10. 2 2
      HintCO/instances/case_study_double_loop_hier.hintco
  11. 1 1
      HintCO/instances/case_study_double_loop_pbond.hintco
  12. 2 2
      HintCO/instances/case_study_double_loop_pbond_hier.hintco
  13. 1 1
      HintCO/instances/case_study_double_loop_pbond_hier_proactive.hintco
  14. 8 0
      HintCO/model/Candidates.xcore
  15. 103 4
      HintCO/src-gen/ua/ansymo/hintco/HintcoPackage.java
  16. 9 0
      HintCO/src-gen/ua/ansymo/hintco/PortInstance.java
  17. 9 0
      HintCO/src-gen/ua/ansymo/hintco/UnitInstance.java
  18. 12 0
      HintCO/src-gen/ua/ansymo/hintco/impl/HierarchicalCosimUnitImpl.java
  19. 1 1
      HintCO/src-gen/ua/ansymo/hintco/impl/HierarchicalUnitPortImpl.java
  20. 24 0
      HintCO/src-gen/ua/ansymo/hintco/impl/HintcoPackageImpl.java
  21. 14 16
      HintCO/src-gen/ua/ansymo/hintco/impl/PortInstanceImpl.java
  22. 11 0
      HintCO/src-gen/ua/ansymo/hintco/impl/UnitInstanceImpl.java
  23. 1 1
      HintCO/src/ua/ansymo/hintco/CandidatesGenerator.xtend
  24. 3 3
      HintCO/src/ua/ansymo/hintco/CosimRunUtils.xtend
  25. 2 2
      HintCO/src/ua/ansymo/hintco/CosimRunner.xtend
  26. 1 1
      HintCO/src/ua/ansymo/hintco/HierarchicalInstance.xtend
  27. 15 3
      HintCO/src/ua/ansymo/hintco/Main.xtend
  28. 0 1
      HintCO/test/ua/ansymo/hintco/test/CosimRunnerTest.xtend

+ 148 - 0
HintCO/examples/case_study_double_loop_approx_cpint.xmi

@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="ASCII"?>
+<hintco:Candidates
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:hintco="ua.ansymo.hintco">
+  <candidates
+      identifier="Original"
+      stopTime="5.0"
+      stepSize="1.0E-5"
+      outputStepSize="0.01">
+    <cosimunits
+        xsi:type="hintco:CosimUnitInstance"
+        identifier="Scenario"
+        declaration="//@csuDeclarations.0">
+      <ports
+          xsi:type="hintco:OutputPortInstance"
+          identifier="psuvolt"
+          valueTo="//@candidates.0/@cosimunits.2/@ports.1"/>
+      <ports
+          xsi:type="hintco:OutputPortInstance"
+          identifier="ref"
+          valueTo="//@candidates.0/@cosimunits.1/@ports.2"/>
+    </cosimunits>
+    <cosimunits
+        xsi:type="hintco:CosimUnitInstance"
+        identifier="DLoopController_FixedEuler_1Em6"
+        declaration="//@csuDeclarations.1">
+      <ports
+          xsi:type="hintco:InputPortInstance"
+          identifier="VEL_FB@expseu_"
+          valueFrom="//@candidates.0/@cosimunits.2/@ports.4">
+        <adaptation
+            xsi:type="hintco:ExtrapolationAdaptation"
+            order="1"/>
+      </ports>
+      <ports
+          xsi:type="hintco:InputPortInstance"
+          identifier="POS_FB@expseu_"
+          valueFrom="//@candidates.0/@cosimunits.3/@ports.1">
+        <adaptation
+            xsi:type="hintco:ExtrapolationAdaptation"
+            order="1"/>
+      </ports>
+      <ports
+          xsi:type="hintco:InputPortInstance"
+          identifier="REFERENCE@expseu_"
+          valueFrom="//@candidates.0/@cosimunits.0/@ports.1">
+        <adaptation
+            xsi:type="hintco:InterpolationAdaptation"/>
+      </ports>
+      <ports
+          xsi:type="hintco:OutputPortInstance"
+          identifier="OUTPUT@expseu_"
+          valueTo="//@candidates.0/@cosimunits.2/@ports.0"/>
+    </cosimunits>
+    <cosimunits
+        xsi:type="hintco:CosimUnitInstance"
+        identifier="EMAPlantNoLoad_FixedEuler_1Em6"
+        declaration="//@csuDeclarations.2">
+      <adaptation
+          xsi:type="hintco:MultiRateAdaptation"
+          rate="10"/>
+      <ports
+          xsi:type="hintco:InputPortInstance"
+          identifier="torque_input@expseu_"
+          valueFrom="//@candidates.0/@cosimunits.1/@ports.3">
+        <adaptation
+            xsi:type="hintco:InterpolationAdaptation"/>
+      </ports>
+      <ports
+          xsi:type="hintco:InputPortInstance"
+          identifier="psu_vol_input_v@expseu_"
+          valueFrom="//@candidates.0/@cosimunits.0/@ports.0">
+        <adaptation
+            xsi:type="hintco:ExtrapolationAdaptation"/>
+      </ports>
+      <ports
+          xsi:type="hintco:InputPortInstance"
+          identifier="V_IN@expseu_"
+          valueFrom="//@candidates.0/@cosimunits.3/@ports.2">
+        <adaptation
+            xsi:type="hintco:ExtrapolationAdaptation"
+            order="1"/>
+      </ports>
+      <ports
+          xsi:type="hintco:InputPortInstance"
+          identifier="X_IN@expseu_"
+          valueFrom="//@candidates.0/@cosimunits.3/@ports.3">
+        <adaptation
+            xsi:type="hintco:ExtrapolationAdaptation"
+            order="1"/>
+      </ports>
+      <ports
+          xsi:type="hintco:OutputPortInstance"
+          identifier="ang_vel_out_rpm@expseu_"
+          valueTo="//@candidates.0/@cosimunits.1/@ports.0"/>
+      <ports
+          xsi:type="hintco:OutputPortInstance"
+          identifier="F_OUT@expseu_"
+          valueTo="//@candidates.0/@cosimunits.3/@ports.0"/>
+    </cosimunits>
+    <cosimunits
+        xsi:type="hintco:CosimUnitInstance"
+        identifier="LoadNSensor_FixedEuler_1Em6"
+        declaration="//@csuDeclarations.3">
+      <adaptation
+          xsi:type="hintco:MultiRateAdaptation"
+          rate="10"/>
+      <ports
+          xsi:type="hintco:InputPortInstance"
+          identifier="F_INPUT@expseu_"
+          valueFrom="//@candidates.0/@cosimunits.2/@ports.5">
+        <adaptation
+            xsi:type="hintco:InterpolationAdaptation"
+            order="1"/>
+      </ports>
+      <ports
+          xsi:type="hintco:OutputPortInstance"
+          identifier="X_AFTER_LOAD@expseu_"
+          valueTo="//@candidates.0/@cosimunits.1/@ports.1"/>
+      <ports
+          xsi:type="hintco:OutputPortInstance"
+          identifier="V_OUTPUT@expseu_"
+          valueTo="//@candidates.0/@cosimunits.2/@ports.2"/>
+      <ports
+          xsi:type="hintco:OutputPortInstance"
+          identifier="X_OUTPUT@expseu_"
+          valueTo="//@candidates.0/@cosimunits.2/@ports.3"/>
+    </cosimunits>
+  </candidates>
+  <csuDeclarations
+      identifier="Scenario"
+      path="resources/Scenario.fmu"
+      guid="{a174734c-d15f-4ef0-838d-06526230b19e}"/>
+  <csuDeclarations
+      identifier="DLoopController_FixedEuler_1Em6"
+      path="resources/DLoopController_FixedEuler_1Em6.fmu"
+      guid="2761528305"/>
+  <csuDeclarations
+      identifier="EMAPlantNoLoad_FixedEuler_1Em6"
+      path="resources/EMAPlantNoLoad_FixedEuler_1Em6.fmu"
+      guid="698567049"/>
+  <csuDeclarations
+      identifier="LoadNSensor_FixedEuler_1Em6"
+      path="resources/LoadNSensor_FixedEuler_1Em6.fmu"
+      guid="2810456241"/>
+</hintco:Candidates>

+ 168 - 0
HintCO/examples/case_study_double_loop_approx_order.xmi

@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="ASCII"?>
+<hintco:Candidates
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:hintco="ua.ansymo.hintco">
+  <candidates
+      identifier="Original"
+      stopTime="5.0"
+      stepSize="1.0E-5"
+      outputStepSize="0.01">
+    <cosimunits
+        xsi:type="hintco:CosimUnitInstance"
+        identifier="Scenario"
+        precedes="//@candidates.0/@cosimunits.0/@ports.1"
+        succeeds="//@candidates.0/@cosimunits.0/@ports.0"
+        declaration="//@csuDeclarations.0">
+      <ports
+          xsi:type="hintco:OutputPortInstance"
+          precedes="//@candidates.0/@cosimunits.0"
+          identifier="psuvolt"
+          valueTo="//@candidates.0/@cosimunits.2/@ports.1"/>
+      <ports
+          xsi:type="hintco:OutputPortInstance"
+          precedes="//@candidates.0/@cosimunits.2/@ports.4"
+          succeeds="//@candidates.0/@cosimunits.0"
+          identifier="ref"
+          valueTo="//@candidates.0/@cosimunits.1/@ports.2"/>
+    </cosimunits>
+    <cosimunits
+        xsi:type="hintco:CosimUnitInstance"
+        identifier="DLoopController_FixedEuler_1Em6"
+        precedes="//@candidates.0/@cosimunits.3/@ports.3"
+        succeeds="//@candidates.0/@cosimunits.1/@ports.3"
+        declaration="//@csuDeclarations.1">
+      <ports
+          xsi:type="hintco:InputPortInstance"
+          identifier="VEL_FB@expseu_"
+          valueFrom="//@candidates.0/@cosimunits.2/@ports.4">
+        <adaptation
+            xsi:type="hintco:ExtrapolationAdaptation"/>
+      </ports>
+      <ports
+          xsi:type="hintco:InputPortInstance"
+          identifier="POS_FB@expseu_"
+          valueFrom="//@candidates.0/@cosimunits.3/@ports.1">
+        <adaptation
+            xsi:type="hintco:ExtrapolationAdaptation"/>
+      </ports>
+      <ports
+          xsi:type="hintco:InputPortInstance"
+          identifier="REFERENCE@expseu_"
+          valueFrom="//@candidates.0/@cosimunits.0/@ports.1">
+        <adaptation
+            xsi:type="hintco:InterpolationAdaptation"/>
+      </ports>
+      <ports
+          xsi:type="hintco:OutputPortInstance"
+          precedes="//@candidates.0/@cosimunits.1"
+          succeeds="//@candidates.0/@cosimunits.3/@ports.1"
+          identifier="OUTPUT@expseu_"
+          valueTo="//@candidates.0/@cosimunits.2/@ports.0"/>
+    </cosimunits>
+    <cosimunits
+        xsi:type="hintco:CosimUnitInstance"
+        identifier="EMAPlantNoLoad_FixedEuler_1Em6"
+        precedes="//@candidates.0/@cosimunits.2/@ports.5"
+        succeeds="//@candidates.0/@cosimunits.3/@ports.2"
+        declaration="//@csuDeclarations.2">
+      <adaptation
+          xsi:type="hintco:MultiRateAdaptation"
+          rate="10"/>
+      <ports
+          xsi:type="hintco:InputPortInstance"
+          identifier="torque_input@expseu_"
+          valueFrom="//@candidates.0/@cosimunits.1/@ports.3">
+        <adaptation
+            xsi:type="hintco:ExtrapolationAdaptation"/>
+      </ports>
+      <ports
+          xsi:type="hintco:InputPortInstance"
+          identifier="psu_vol_input_v@expseu_"
+          valueFrom="//@candidates.0/@cosimunits.0/@ports.0">
+        <adaptation
+            xsi:type="hintco:ExtrapolationAdaptation"/>
+      </ports>
+      <ports
+          xsi:type="hintco:InputPortInstance"
+          identifier="V_IN@expseu_"
+          valueFrom="//@candidates.0/@cosimunits.3/@ports.2">
+        <adaptation
+            xsi:type="hintco:ExtrapolationAdaptation"
+            order="1"/>
+      </ports>
+      <ports
+          xsi:type="hintco:InputPortInstance"
+          identifier="X_IN@expseu_"
+          valueFrom="//@candidates.0/@cosimunits.3/@ports.3">
+        <adaptation
+            xsi:type="hintco:ExtrapolationAdaptation"
+            order="1"/>
+      </ports>
+      <ports
+          xsi:type="hintco:OutputPortInstance"
+          precedes="//@candidates.0/@cosimunits.3/@ports.1"
+          succeeds="//@candidates.0/@cosimunits.0/@ports.1"
+          identifier="ang_vel_out_rpm@expseu_"
+          valueTo="//@candidates.0/@cosimunits.1/@ports.0"/>
+      <ports
+          xsi:type="hintco:OutputPortInstance"
+          precedes="//@candidates.0/@cosimunits.3"
+          succeeds="//@candidates.0/@cosimunits.2"
+          identifier="F_OUT@expseu_"
+          valueTo="//@candidates.0/@cosimunits.3/@ports.0"/>
+    </cosimunits>
+    <cosimunits
+        xsi:type="hintco:CosimUnitInstance"
+        identifier="LoadNSensor_FixedEuler_1Em6"
+        succeeds="//@candidates.0/@cosimunits.2/@ports.5"
+        declaration="//@csuDeclarations.3">
+      <adaptation
+          xsi:type="hintco:MultiRateAdaptation"
+          rate="10"/>
+      <ports
+          xsi:type="hintco:InputPortInstance"
+          identifier="F_INPUT@expseu_"
+          valueFrom="//@candidates.0/@cosimunits.2/@ports.5">
+        <adaptation
+            xsi:type="hintco:InterpolationAdaptation"
+            order="1"/>
+      </ports>
+      <ports
+          xsi:type="hintco:OutputPortInstance"
+          precedes="//@candidates.0/@cosimunits.1/@ports.3"
+          succeeds="//@candidates.0/@cosimunits.2/@ports.4"
+          identifier="X_AFTER_LOAD@expseu_"
+          valueTo="//@candidates.0/@cosimunits.1/@ports.1"/>
+      <ports
+          xsi:type="hintco:OutputPortInstance"
+          precedes="//@candidates.0/@cosimunits.2"
+          succeeds="//@candidates.0/@cosimunits.3/@ports.3"
+          identifier="V_OUTPUT@expseu_"
+          valueTo="//@candidates.0/@cosimunits.2/@ports.2"/>
+      <ports
+          xsi:type="hintco:OutputPortInstance"
+          precedes="//@candidates.0/@cosimunits.3/@ports.2"
+          succeeds="//@candidates.0/@cosimunits.1"
+          identifier="X_OUTPUT@expseu_"
+          valueTo="//@candidates.0/@cosimunits.2/@ports.3"/>
+    </cosimunits>
+  </candidates>
+  <csuDeclarations
+      identifier="Scenario"
+      path="resources/Scenario.fmu"
+      guid="{a174734c-d15f-4ef0-838d-06526230b19e}"/>
+  <csuDeclarations
+      identifier="DLoopController_FixedEuler_1Em6"
+      path="resources/DLoopController_FixedEuler_1Em6.fmu"
+      guid="2761528305"/>
+  <csuDeclarations
+      identifier="EMAPlantNoLoad_FixedEuler_1Em6"
+      path="resources/EMAPlantNoLoad_FixedEuler_1Em6.fmu"
+      guid="698567049"/>
+  <csuDeclarations
+      identifier="LoadNSensor_FixedEuler_1Em6"
+      path="resources/LoadNSensor_FixedEuler_1Em6.fmu"
+      guid="2810456241"/>
+</hintco:Candidates>

+ 56 - 0
HintCO/examples/case_study_double_loop_hier_cpInt.hintco

@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="ASCII"?>
+<hintco:Candidates xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hintco="ua.ansymo.hintco">
+  <candidates identifier="Original" stopTime="5.0" stepSize="1.0E-5" outputStepSize="0.01">
+    <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="Scenario" declaration="//@csuDeclarations.0">
+      <ports xsi:type="hintco:OutputPortInstance" identifier="psuvolt" valueTo="//@candidates.0/@cosimunits.2/@ports.0"/>
+      <ports xsi:type="hintco:OutputPortInstance" identifier="ref" valueTo="//@candidates.0/@cosimunits.1/@ports.2"/>
+    </cosimunits>
+    <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="DLoopController_FixedEuler_1Em6" declaration="//@csuDeclarations.1">
+      <ports xsi:type="hintco:InputPortInstance" identifier="VEL_FB@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@ports.3">
+        <adaptation xsi:type="hintco:ExtrapolationAdaptation" order="1"/>
+      </ports>
+      <ports xsi:type="hintco:InputPortInstance" identifier="POS_FB@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@ports.2">
+        <adaptation xsi:type="hintco:ExtrapolationAdaptation" order="1"/>
+      </ports>
+      <ports xsi:type="hintco:InputPortInstance" identifier="REFERENCE@expseu_" valueFrom="//@candidates.0/@cosimunits.0/@ports.1">
+        <adaptation xsi:type="hintco:InterpolationAdaptation"/>
+      </ports>
+      <ports xsi:type="hintco:OutputPortInstance" identifier="OUTPUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@ports.1"/>
+    </cosimunits>
+    <cosimunits xsi:type="hintco:HierarchicalCosimUnit" identifier="plant">
+      <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="EMAPlantNoLoad_FixedEuler_1Em6" declaration="//@csuDeclarations.2">
+        <ports xsi:type="hintco:InputPortInstance" identifier="torque_input@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@ports.1">
+          <adaptation xsi:type="hintco:InterpolationAdaptation"/>
+        </ports>
+        <ports xsi:type="hintco:InputPortInstance" identifier="psu_vol_input_v@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@ports.0">
+          <adaptation xsi:type="hintco:InterpolationAdaptation"/>
+        </ports>
+        <ports xsi:type="hintco:InputPortInstance" identifier="V_IN@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.2">
+          <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+        </ports>
+        <ports xsi:type="hintco:InputPortInstance" identifier="X_IN@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.3">
+          <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+        </ports>
+        <ports xsi:type="hintco:OutputPortInstance" identifier="ang_vel_out_rpm@expseu_" valueTo="//@candidates.0/@cosimunits.2/@ports.3"/>
+        <ports xsi:type="hintco:OutputPortInstance" identifier="F_OUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.0"/>
+      </cosimunits>
+      <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="LoadNSensor_FixedEuler_1Em6" declaration="//@csuDeclarations.3">
+        <ports xsi:type="hintco:InputPortInstance" identifier="F_INPUT@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.5">
+          <adaptation xsi:type="hintco:InterpolationAdaptation"/>
+        </ports>
+        <ports xsi:type="hintco:OutputPortInstance" identifier="X_AFTER_LOAD@expseu_" valueTo="//@candidates.0/@cosimunits.2/@ports.2"/>
+        <ports xsi:type="hintco:OutputPortInstance" identifier="V_OUTPUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.2"/>
+        <ports xsi:type="hintco:OutputPortInstance" identifier="X_OUTPUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.3"/>
+      </cosimunits>
+      <adaptation xsi:type="hintco:MultiRateAdaptation" rate="10"/>
+      <ports xsi:type="hintco:HierarchicalUnitPort" identifier="psu" valueFrom="//@candidates.0/@cosimunits.0/@ports.0" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.1"/>
+      <ports xsi:type="hintco:HierarchicalUnitPort" identifier="ctrl_in" valueFrom="//@candidates.0/@cosimunits.1/@ports.3" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.0"/>
+      <ports xsi:type="hintco:HierarchicalUnitPort" identifier="x" valueFrom="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.1" valueTo="//@candidates.0/@cosimunits.1/@ports.1"/>
+      <ports xsi:type="hintco:HierarchicalUnitPort" identifier="w" valueFrom="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.4" valueTo="//@candidates.0/@cosimunits.1/@ports.0"/>
+    </cosimunits>
+  </candidates>
+  <csuDeclarations identifier="Scenario" path="resources/Scenario.fmu" guid="{a174734c-d15f-4ef0-838d-06526230b19e}"/>
+  <csuDeclarations identifier="DLoopController_FixedEuler_1Em6" path="resources/DLoopController_FixedEuler_1Em6.fmu" guid="2761528305"/>
+  <csuDeclarations identifier="EMAPlantNoLoad_FixedEuler_1Em6" path="resources/EMAPlantNoLoad_FixedEuler_1Em6.fmu" guid="698567049"/>
+  <csuDeclarations identifier="LoadNSensor_FixedEuler_1Em6" path="resources/LoadNSensor_FixedEuler_1Em6.fmu" guid="2810456241"/>
+</hintco:Candidates>

+ 56 - 0
HintCO/examples/case_study_double_loop_hier_order.hintco

@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="ASCII"?>
+<hintco:Candidates xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hintco="ua.ansymo.hintco">
+  <candidates identifier="Original" stopTime="5.0" stepSize="1.0E-5" outputStepSize="0.01">
+    <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="Scenario" precedes="//@candidates.0/@cosimunits.0/@ports.1" succeeds="//@candidates.0/@cosimunits.0/@ports.0" declaration="//@csuDeclarations.0">
+      <ports xsi:type="hintco:OutputPortInstance" precedes="//@candidates.0/@cosimunits.0" identifier="psuvolt" valueTo="//@candidates.0/@cosimunits.2/@ports.0"/>
+      <ports xsi:type="hintco:OutputPortInstance" precedes="//@candidates.0/@cosimunits.2/@ports.3" succeeds="//@candidates.0/@cosimunits.0" identifier="ref" valueTo="//@candidates.0/@cosimunits.1/@ports.2"/>
+    </cosimunits>
+    <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="DLoopController_FixedEuler_1Em6" precedes="//@candidates.0/@cosimunits.2" succeeds="//@candidates.0/@cosimunits.1/@ports.3" declaration="//@csuDeclarations.1">
+      <ports xsi:type="hintco:InputPortInstance" identifier="VEL_FB@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@ports.3">
+        <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+      </ports>
+      <ports xsi:type="hintco:InputPortInstance" identifier="POS_FB@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@ports.2">
+        <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+      </ports>
+      <ports xsi:type="hintco:InputPortInstance" identifier="REFERENCE@expseu_" valueFrom="//@candidates.0/@cosimunits.0/@ports.1">
+        <adaptation xsi:type="hintco:InterpolationAdaptation"/>
+      </ports>
+      <ports xsi:type="hintco:OutputPortInstance" precedes="//@candidates.0/@cosimunits.1" succeeds="//@candidates.0/@cosimunits.2/@ports.2" identifier="OUTPUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@ports.1"/>
+    </cosimunits>
+    <cosimunits xsi:type="hintco:HierarchicalCosimUnit" identifier="plant" succeeds="//@candidates.0/@cosimunits.1">
+      <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="EMAPlantNoLoad_FixedEuler_1Em6" precedes="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.5" succeeds="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.2" declaration="//@csuDeclarations.2">
+        <ports xsi:type="hintco:InputPortInstance" identifier="torque_input@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@ports.1">
+          <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+        </ports>
+        <ports xsi:type="hintco:InputPortInstance" identifier="psu_vol_input_v@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@ports.0">
+          <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+        </ports>
+        <ports xsi:type="hintco:InputPortInstance" identifier="V_IN@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.2">
+          <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+        </ports>
+        <ports xsi:type="hintco:InputPortInstance" identifier="X_IN@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.3">
+          <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+        </ports>
+        <ports xsi:type="hintco:OutputPortInstance" identifier="ang_vel_out_rpm@expseu_" valueTo="//@candidates.0/@cosimunits.2/@ports.3"/>
+        <ports xsi:type="hintco:OutputPortInstance" precedes="//@candidates.0/@cosimunits.2/@cosimunits.1" succeeds="//@candidates.0/@cosimunits.2/@cosimunits.0" identifier="F_OUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.0"/>
+      </cosimunits>
+      <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="LoadNSensor_FixedEuler_1Em6" succeeds="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.5" declaration="//@csuDeclarations.3">
+        <ports xsi:type="hintco:InputPortInstance" identifier="F_INPUT@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.5">
+          <adaptation xsi:type="hintco:InterpolationAdaptation"/>
+        </ports>
+        <ports xsi:type="hintco:OutputPortInstance" identifier="X_AFTER_LOAD@expseu_" valueTo="//@candidates.0/@cosimunits.2/@ports.2"/>
+        <ports xsi:type="hintco:OutputPortInstance" precedes="//@candidates.0/@cosimunits.2/@cosimunits.0" succeeds="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.3" identifier="V_OUTPUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.2"/>
+        <ports xsi:type="hintco:OutputPortInstance" precedes="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.2" identifier="X_OUTPUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.3"/>
+      </cosimunits>
+      <adaptation xsi:type="hintco:MultiRateAdaptation" rate="10"/>
+      <ports xsi:type="hintco:HierarchicalUnitPort" identifier="psu" valueFrom="//@candidates.0/@cosimunits.0/@ports.0" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.1"/>
+      <ports xsi:type="hintco:HierarchicalUnitPort" identifier="ctrl_in" valueFrom="//@candidates.0/@cosimunits.1/@ports.3" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.0"/>
+      <ports xsi:type="hintco:HierarchicalUnitPort" precedes="//@candidates.0/@cosimunits.1/@ports.3" succeeds="//@candidates.0/@cosimunits.2/@ports.3" identifier="x" valueFrom="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.1" valueTo="//@candidates.0/@cosimunits.1/@ports.1"/>
+      <ports xsi:type="hintco:HierarchicalUnitPort" precedes="//@candidates.0/@cosimunits.2/@ports.2" succeeds="//@candidates.0/@cosimunits.0/@ports.1" identifier="w" valueFrom="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.4" valueTo="//@candidates.0/@cosimunits.1/@ports.0"/>
+    </cosimunits>
+  </candidates>
+  <csuDeclarations identifier="Scenario" path="resources/Scenario.fmu" guid="{a174734c-d15f-4ef0-838d-06526230b19e}"/>
+  <csuDeclarations identifier="DLoopController_FixedEuler_1Em6" path="resources/DLoopController_FixedEuler_1Em6.fmu" guid="2761528305"/>
+  <csuDeclarations identifier="EMAPlantNoLoad_FixedEuler_1Em6" path="resources/EMAPlantNoLoad_FixedEuler_1Em6.fmu" guid="698567049"/>
+  <csuDeclarations identifier="LoadNSensor_FixedEuler_1Em6" path="resources/LoadNSensor_FixedEuler_1Em6.fmu" guid="2810456241"/>
+</hintco:Candidates>

+ 58 - 0
HintCO/examples/case_study_double_loop_pbond_hier_cpInter.hintco

@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="ASCII"?>
+<hintco:Candidates xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hintco="ua.ansymo.hintco">
+  <candidates identifier="Original" stopTime="5.0" stepSize="1.0E-5" outputStepSize="0.01">
+    <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="Scenario" declaration="//@csuDeclarations.0">
+      <ports xsi:type="hintco:OutputPortInstance" identifier="psuvolt" valueTo="//@candidates.0/@cosimunits.2/@ports.0"/>
+      <ports xsi:type="hintco:OutputPortInstance" identifier="ref" valueTo="//@candidates.0/@cosimunits.1/@ports.2"/>
+    </cosimunits>
+    <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="DLoopController_FixedEuler_1Em6" declaration="//@csuDeclarations.1">
+      <ports xsi:type="hintco:InputPortInstance" identifier="VEL_FB@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@ports.3">
+        <adaptation xsi:type="hintco:ExtrapolationAdaptation" order="1"/>
+      </ports>
+      <ports xsi:type="hintco:InputPortInstance" identifier="POS_FB@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@ports.2">
+        <adaptation xsi:type="hintco:ExtrapolationAdaptation" order="1"/>
+      </ports>
+      <ports xsi:type="hintco:InputPortInstance" identifier="REFERENCE@expseu_" valueFrom="//@candidates.0/@cosimunits.0/@ports.1">
+        <adaptation xsi:type="hintco:InterpolationAdaptation"/>
+      </ports>
+      <ports xsi:type="hintco:OutputPortInstance" identifier="OUTPUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@ports.1"/>
+    </cosimunits>
+    <cosimunits xsi:type="hintco:HierarchicalCosimUnit" identifier="plant">
+      <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="EMAPlantNoLoad_FixedEuler_1Em6" declaration="//@csuDeclarations.2">
+        <adaptation xsi:type="hintco:PowerBondAdaptation" effort="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.5" flow="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.2"/>
+        <ports xsi:type="hintco:InputPortInstance" identifier="torque_input@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@ports.1">
+          <adaptation xsi:type="hintco:InterpolationAdaptation"/>
+        </ports>
+        <ports xsi:type="hintco:InputPortInstance" identifier="psu_vol_input_v@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@ports.0">
+          <adaptation xsi:type="hintco:InterpolationAdaptation"/>
+        </ports>
+        <ports xsi:type="hintco:InputPortInstance" identifier="V_IN@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.2">
+          <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+        </ports>
+        <ports xsi:type="hintco:InputPortInstance" identifier="X_IN@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.3">
+          <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+        </ports>
+        <ports xsi:type="hintco:OutputPortInstance" identifier="ang_vel_out_rpm@expseu_" valueTo="//@candidates.0/@cosimunits.2/@ports.3"/>
+        <ports xsi:type="hintco:OutputPortInstance" identifier="F_OUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.0"/>
+      </cosimunits>
+      <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="LoadNSensor_FixedEuler_1Em6" declaration="//@csuDeclarations.3">
+        <adaptation xsi:type="hintco:PowerBondAdaptation" effort="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.0" flow="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.2"/>
+        <ports xsi:type="hintco:InputPortInstance" identifier="F_INPUT@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.5">
+          <adaptation xsi:type="hintco:InterpolationAdaptation"/>
+        </ports>
+        <ports xsi:type="hintco:OutputPortInstance" identifier="X_AFTER_LOAD@expseu_" valueTo="//@candidates.0/@cosimunits.2/@ports.2"/>
+        <ports xsi:type="hintco:OutputPortInstance" identifier="V_OUTPUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.2"/>
+        <ports xsi:type="hintco:OutputPortInstance" identifier="X_OUTPUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.3"/>
+      </cosimunits>
+      <adaptation xsi:type="hintco:MultiRateAdaptation" rate="10"/>
+      <ports xsi:type="hintco:HierarchicalUnitPort" identifier="psu" valueFrom="//@candidates.0/@cosimunits.0/@ports.0" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.1"/>
+      <ports xsi:type="hintco:HierarchicalUnitPort" identifier="ctrl_in" valueFrom="//@candidates.0/@cosimunits.1/@ports.3" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.0"/>
+      <ports xsi:type="hintco:HierarchicalUnitPort" identifier="x" valueFrom="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.1" valueTo="//@candidates.0/@cosimunits.1/@ports.1"/>
+      <ports xsi:type="hintco:HierarchicalUnitPort" identifier="w" valueFrom="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.4" valueTo="//@candidates.0/@cosimunits.1/@ports.0"/>
+    </cosimunits>
+  </candidates>
+  <csuDeclarations identifier="Scenario" path="resources/Scenario.fmu" guid="{a174734c-d15f-4ef0-838d-06526230b19e}"/>
+  <csuDeclarations identifier="DLoopController_FixedEuler_1Em6" path="resources/DLoopController_FixedEuler_1Em6.fmu" guid="2761528305"/>
+  <csuDeclarations identifier="EMAPlantNoLoad_FixedEuler_1Em6" path="resources/EMAPlantNoLoad_FixedEuler_1Em6.fmu" guid="698567049"/>
+  <csuDeclarations identifier="LoadNSensor_FixedEuler_1Em6" path="resources/LoadNSensor_FixedEuler_1Em6.fmu" guid="2810456241"/>
+</hintco:Candidates>

+ 21 - 45
HintCO/instances/case_study_double_loop.xmi

@@ -6,132 +6,108 @@
     xmlns:hintco="ua.ansymo.hintco">
   <candidates
       identifier="Original"
-      stopTime="10.0"
+      stopTime="2.0"
       stepSize="1.0E-5"
       outputStepSize="0.001">
-    <cosimunits
- xsi:type="hintco:CosimUnitInstance"
+    <cosimunits
+        xsi:type="hintco:CosimUnitInstance"
         identifier="Scenario"
         declaration="//@csuDeclarations.0">
       <ports
           xsi:type="hintco:OutputPortInstance"
           identifier="psuvolt"
-          valueTo="//@candidates.0/@cosimunits.2/@ports.1"
-          />
+          valueTo="//@candidates.0/@cosimunits.2/@ports.1"/>
       <ports
           xsi:type="hintco:OutputPortInstance"
           identifier="ref"
-          valueTo="//@candidates.0/@cosimunits.1/@ports.2"
-          />
+          valueTo="//@candidates.0/@cosimunits.1/@ports.2"/>
     </cosimunits>
-    <cosimunits
- xsi:type="hintco:CosimUnitInstance"
+    <cosimunits
+        xsi:type="hintco:CosimUnitInstance"
         identifier="DLoopController_FixedEuler_1Em6"
         declaration="//@csuDeclarations.1">
       <ports
           xsi:type="hintco:InputPortInstance"
           identifier="VEL_FB@expseu_"
-
           valueFrom="//@candidates.0/@cosimunits.2/@ports.4"/>
       <ports
           xsi:type="hintco:InputPortInstance"
           identifier="POS_FB@expseu_"
-
           valueFrom="//@candidates.0/@cosimunits.3/@ports.1"/>
       <ports
           xsi:type="hintco:InputPortInstance"
           identifier="REFERENCE@expseu_"
-
           valueFrom="//@candidates.0/@cosimunits.0/@ports.1"/>
       <ports
           xsi:type="hintco:OutputPortInstance"
           identifier="OUTPUT@expseu_"
-          valueTo="//@candidates.0/@cosimunits.2/@ports.0"
-          />
+          valueTo="//@candidates.0/@cosimunits.2/@ports.0"/>
     </cosimunits>
-    <cosimunits
- xsi:type="hintco:CosimUnitInstance"
+    <cosimunits
+        xsi:type="hintco:CosimUnitInstance"
         identifier="EMAPlantNoLoad_FixedEuler_1Em6"
         declaration="//@csuDeclarations.2">
       <ports
           xsi:type="hintco:InputPortInstance"
           identifier="torque_input@expseu_"
-
           valueFrom="//@candidates.0/@cosimunits.1/@ports.3"/>
       <ports
           xsi:type="hintco:InputPortInstance"
           identifier="psu_vol_input_v@expseu_"
-
           valueFrom="//@candidates.0/@cosimunits.0/@ports.0"/>
       <ports
           xsi:type="hintco:InputPortInstance"
           identifier="V_IN@expseu_"
-
           valueFrom="//@candidates.0/@cosimunits.3/@ports.2"/>
       <ports
           xsi:type="hintco:InputPortInstance"
           identifier="X_IN@expseu_"
-
           valueFrom="//@candidates.0/@cosimunits.3/@ports.3"/>
       <ports
           xsi:type="hintco:OutputPortInstance"
           identifier="ang_vel_out_rpm@expseu_"
-          valueTo="//@candidates.0/@cosimunits.1/@ports.0"
-          />
+          valueTo="//@candidates.0/@cosimunits.1/@ports.0"/>
       <ports
           xsi:type="hintco:OutputPortInstance"
           identifier="F_OUT@expseu_"
-          valueTo="//@candidates.0/@cosimunits.3/@ports.0"
-          />
+          valueTo="//@candidates.0/@cosimunits.3/@ports.0"/>
     </cosimunits>
-    <cosimunits
- xsi:type="hintco:CosimUnitInstance"
+    <cosimunits
+        xsi:type="hintco:CosimUnitInstance"
         identifier="LoadNSensor_FixedEuler_1Em6"
         declaration="//@csuDeclarations.3">
       <ports
           xsi:type="hintco:InputPortInstance"
           identifier="F_INPUT@expseu_"
-
           valueFrom="//@candidates.0/@cosimunits.2/@ports.5"/>
       <ports
           xsi:type="hintco:OutputPortInstance"
           identifier="X_AFTER_LOAD@expseu_"
-          valueTo="//@candidates.0/@cosimunits.1/@ports.1"
-          />
+          valueTo="//@candidates.0/@cosimunits.1/@ports.1"/>
       <ports
           xsi:type="hintco:OutputPortInstance"
           identifier="V_OUTPUT@expseu_"
-          valueTo="//@candidates.0/@cosimunits.2/@ports.2"
-          />
+          valueTo="//@candidates.0/@cosimunits.2/@ports.2"/>
       <ports
           xsi:type="hintco:OutputPortInstance"
           identifier="X_OUTPUT@expseu_"
-          valueTo="//@candidates.0/@cosimunits.2/@ports.3"
-          />
+          valueTo="//@candidates.0/@cosimunits.2/@ports.3"/>
     </cosimunits>
   </candidates>
   <csuDeclarations
       identifier="Scenario"
       path="resources/Scenario.fmu"
-      guid="{a174734c-d15f-4ef0-838d-06526230b19e}">
-
-  </csuDeclarations>
+      guid="{a174734c-d15f-4ef0-838d-06526230b19e}"/>
   <csuDeclarations
       identifier="DLoopController_FixedEuler_1Em6"
       path="resources/DLoopController_FixedEuler_1Em6.fmu"
-      guid="2761528305">
-
-  </csuDeclarations>
+      guid="2761528305"/>
   <csuDeclarations
       identifier="EMAPlantNoLoad_FixedEuler_1Em6"
       path="resources/EMAPlantNoLoad_FixedEuler_1Em6.fmu"
-      guid="698567049">
-
-  </csuDeclarations>
+      guid="698567049"/>
   <csuDeclarations
       identifier="LoadNSensor_FixedEuler_1Em6"
       path="resources/LoadNSensor_FixedEuler_1Em6.fmu"
-      guid="2810456241">
-
-  </csuDeclarations>
+      guid="2810456241"/>
 </hintco:Candidates>

+ 3 - 3
HintCO/instances/case_study_double_loop_approx.xmi

@@ -6,7 +6,7 @@
     xmlns:hintco="ua.ansymo.hintco">
   <candidates
       identifier="Original"
-      stopTime="5.0"
+      stopTime="0.1"
       stepSize="1.0E-5"
       outputStepSize="0.01">
     <cosimunits
@@ -45,7 +45,7 @@
           identifier="REFERENCE@expseu_"
           valueFrom="//@candidates.0/@cosimunits.0/@ports.1">
         <adaptation
-            xsi:type="hintco:ExtrapolationAdaptation"/>
+            xsi:type="hintco:InterpolationAdaptation"/>
       </ports>
       <ports
           xsi:type="hintco:OutputPortInstance"
@@ -71,7 +71,7 @@
           identifier="psu_vol_input_v@expseu_"
           valueFrom="//@candidates.0/@cosimunits.0/@ports.0">
         <adaptation
-            xsi:type="hintco:InterpolationAdaptation"/>
+            xsi:type="hintco:ExtrapolationAdaptation"/>
       </ports>
       <ports
           xsi:type="hintco:InputPortInstance"

+ 1 - 1
HintCO/instances/case_study_double_loop_better_proactive.xmi

@@ -6,7 +6,7 @@
     xmlns:hintco="ua.ansymo.hintco">
   <candidates
       identifier="Original"
-      stopTime="5.0"
+      stopTime="2.0"
       stepSize="1.0E-5"
       outputStepSize="0.01">
     <cosimunits

+ 1 - 1
HintCO/instances/case_study_double_loop_default.hintco

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
 <hintco:Candidates xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hintco="ua.ansymo.hintco">
-  <candidates identifier="Original" stopTime="5.0" stepSize="1.0E-5" outputStepSize="0.01">
+  <candidates identifier="Original" stopTime="0.1" stepSize="1.0E-5" outputStepSize="0.01">
     <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="Scenario" declaration="//@csuDeclarations.0">
       <ports xsi:type="hintco:OutputPortInstance" identifier="psuvolt" valueTo="//@candidates.0/@cosimunits.2/@ports.1"/>
       <ports xsi:type="hintco:OutputPortInstance" identifier="ref" valueTo="//@candidates.0/@cosimunits.1/@ports.2"/>

+ 2 - 2
HintCO/instances/case_study_double_loop_hier.hintco

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
 <hintco:Candidates xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hintco="ua.ansymo.hintco">
-  <candidates identifier="Original" stopTime="5.0" stepSize="1.0E-5" outputStepSize="0.01">
+  <candidates identifier="Original" stopTime="0.1" stepSize="1.0E-5" outputStepSize="0.01">
     <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="Scenario" declaration="//@csuDeclarations.0">
       <ports xsi:type="hintco:OutputPortInstance" identifier="psuvolt" valueTo="//@candidates.0/@cosimunits.2/@ports.0"/>
       <ports xsi:type="hintco:OutputPortInstance" identifier="ref" valueTo="//@candidates.0/@cosimunits.1/@ports.2"/>
@@ -42,7 +42,7 @@
         <ports xsi:type="hintco:OutputPortInstance" identifier="V_OUTPUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.2"/>
         <ports xsi:type="hintco:OutputPortInstance" identifier="X_OUTPUT@expseu_" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.3"/>
       </cosimunits>
-      <adaptation xsi:type="hintco:MultiRateAdaptation" rate="100"/>
+      <adaptation xsi:type="hintco:MultiRateAdaptation" rate="10"/>
       <ports xsi:type="hintco:HierarchicalUnitPort" identifier="psu" valueFrom="//@candidates.0/@cosimunits.0/@ports.0" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.1"/>
       <ports xsi:type="hintco:HierarchicalUnitPort" identifier="ctrl_in" valueFrom="//@candidates.0/@cosimunits.1/@ports.3" valueTo="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.0"/>
       <ports xsi:type="hintco:HierarchicalUnitPort" identifier="x" valueFrom="//@candidates.0/@cosimunits.2/@cosimunits.1/@ports.1" valueTo="//@candidates.0/@cosimunits.1/@ports.1"/>

+ 1 - 1
HintCO/instances/case_study_double_loop_pbond.hintco

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
 <hintco:Candidates xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hintco="ua.ansymo.hintco">
-  <candidates identifier="Original" stopTime="2.0" stepSize="1.0E-5" outputStepSize="0.001">
+  <candidates identifier="Original" stopTime="0.1" stepSize="1.0E-5" outputStepSize="0.001">
     <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="Scenario" declaration="//@csuDeclarations.0">
       <ports xsi:type="hintco:OutputPortInstance" identifier="psuvolt" valueTo="//@candidates.0/@cosimunits.2/@ports.1"/>
       <ports xsi:type="hintco:OutputPortInstance" identifier="ref" valueTo="//@candidates.0/@cosimunits.1/@ports.2"/>

+ 2 - 2
HintCO/instances/case_study_double_loop_pbond_hier.hintco

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
 <hintco:Candidates xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hintco="ua.ansymo.hintco">
-  <candidates identifier="Original" stopTime="5.0" stepSize="1.0E-5" outputStepSize="0.01">
+  <candidates identifier="Original" stopTime="0.1" stepSize="1.0E-5" outputStepSize="0.01">
     <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="Scenario" declaration="//@csuDeclarations.0">
       <ports xsi:type="hintco:OutputPortInstance" identifier="psuvolt" valueTo="//@candidates.0/@cosimunits.2/@ports.0"/>
       <ports xsi:type="hintco:OutputPortInstance" identifier="ref" valueTo="//@candidates.0/@cosimunits.1/@ports.2"/>
@@ -21,7 +21,7 @@
       <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="EMAPlantNoLoad_FixedEuler_1Em6" declaration="//@csuDeclarations.2">
         <adaptation xsi:type="hintco:PowerBondAdaptation" effort="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.5" flow="//@candidates.0/@cosimunits.2/@cosimunits.0/@ports.2"/>
         <ports xsi:type="hintco:InputPortInstance" identifier="torque_input@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@ports.1">
-          <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>
+          <adaptation xsi:type="hintco:InterpolationAdaptation"/>
         </ports>
         <ports xsi:type="hintco:InputPortInstance" identifier="psu_vol_input_v@expseu_" valueFrom="//@candidates.0/@cosimunits.2/@ports.0">
           <adaptation xsi:type="hintco:ExtrapolationAdaptation"/>

+ 1 - 1
HintCO/instances/case_study_double_loop_pbond_hier_proactive.hintco

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="ASCII"?>
 <hintco:Candidates xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hintco="ua.ansymo.hintco">
-  <candidates identifier="Original" stopTime="5.0" stepSize="1.0E-5" outputStepSize="0.01">
+  <candidates identifier="Original" stopTime="2.0" stepSize="1.0E-5" outputStepSize="0.01">
     <cosimunits xsi:type="hintco:CosimUnitInstance" identifier="Scenario" declaration="//@csuDeclarations.0">
       <ports xsi:type="hintco:OutputPortInstance" identifier="psuvolt" valueTo="//@candidates.0/@cosimunits.2/@ports.0"/>
       <ports xsi:type="hintco:OutputPortInstance" identifier="ref" valueTo="//@candidates.0/@cosimunits.1/@ports.2"/>

+ 8 - 0
HintCO/model/Candidates.xcore

@@ -97,6 +97,10 @@ abstract class UnitInstance extends IDed,PrecendenceNode{
 	op InputPortInstance[] getInputPorts(){
 		ports.filter(InputPortInstance).filter[it.isInput].toEList
 	}
+	
+	op String toString(){
+		identifier
+	}
 }
 
 class CosimUnitInstance extends UnitInstance {
@@ -128,6 +132,10 @@ abstract class PortInstance extends PrecendenceNode,IDed {
 	op boolean getsValueFrom(PortInstance p){
 		return false
 	}
+	
+	op String toString(){
+		unit.toString()+"."+identifier
+	}
 }
 
 class HierarchicalUnitPort extends InputPortInstance,OutputPortInstance{

+ 103 - 4
HintCO/src-gen/ua/ansymo/hintco/HintcoPackage.java

@@ -570,6 +570,15 @@ public interface HintcoPackage extends EPackage {
 	 */
 	int HIERARCHICAL_COSIM_UNIT___GET_INPUT_PORTS = SCENARIO_OPERATION_COUNT + 2;
 
+	/**
+	 * The operation id for the '<em>To String</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HIERARCHICAL_COSIM_UNIT___TO_STRING = SCENARIO_OPERATION_COUNT + 3;
+
 	/**
 	 * The operation id for the '<em>Valid</em>' operation.
 	 * <!-- begin-user-doc -->
@@ -577,7 +586,7 @@ public interface HintcoPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int HIERARCHICAL_COSIM_UNIT___VALID = SCENARIO_OPERATION_COUNT + 3;
+	int HIERARCHICAL_COSIM_UNIT___VALID = SCENARIO_OPERATION_COUNT + 4;
 
 	/**
 	 * The number of operations of the '<em>Hierarchical Cosim Unit</em>' class.
@@ -586,7 +595,7 @@ public interface HintcoPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int HIERARCHICAL_COSIM_UNIT_OPERATION_COUNT = SCENARIO_OPERATION_COUNT + 4;
+	int HIERARCHICAL_COSIM_UNIT_OPERATION_COUNT = SCENARIO_OPERATION_COUNT + 5;
 
 	/**
 	 * The meta object id for the '{@link ua.ansymo.hintco.impl.CosimUnitDeclarationImpl <em>Cosim Unit Declaration</em>}' class.
@@ -761,6 +770,15 @@ public interface HintcoPackage extends EPackage {
 	 */
 	int UNIT_INSTANCE___GET_INPUT_PORTS = IDED_OPERATION_COUNT + 2;
 
+	/**
+	 * The operation id for the '<em>To String</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNIT_INSTANCE___TO_STRING = IDED_OPERATION_COUNT + 3;
+
 	/**
 	 * The number of operations of the '<em>Unit Instance</em>' class.
 	 * <!-- begin-user-doc -->
@@ -768,7 +786,7 @@ public interface HintcoPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int UNIT_INSTANCE_OPERATION_COUNT = IDED_OPERATION_COUNT + 3;
+	int UNIT_INSTANCE_OPERATION_COUNT = IDED_OPERATION_COUNT + 4;
 
 	/**
 	 * The meta object id for the '{@link ua.ansymo.hintco.impl.CosimUnitInstanceImpl <em>Cosim Unit Instance</em>}' class.
@@ -897,6 +915,15 @@ public interface HintcoPackage extends EPackage {
 	 */
 	int COSIM_UNIT_INSTANCE___GET_INPUT_PORTS = UNIT_INSTANCE___GET_INPUT_PORTS;
 
+	/**
+	 * The operation id for the '<em>To String</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSIM_UNIT_INSTANCE___TO_STRING = UNIT_INSTANCE___TO_STRING;
+
 	/**
 	 * The number of operations of the '<em>Cosim Unit Instance</em>' class.
 	 * <!-- begin-user-doc -->
@@ -1015,6 +1042,15 @@ public interface HintcoPackage extends EPackage {
 	 */
 	int PORT_INSTANCE___GETS_VALUE_FROM__PORTINSTANCE = PRECENDENCE_NODE_OPERATION_COUNT + 2;
 
+	/**
+	 * The operation id for the '<em>To String</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PORT_INSTANCE___TO_STRING = PRECENDENCE_NODE_OPERATION_COUNT + 3;
+
 	/**
 	 * The number of operations of the '<em>Port Instance</em>' class.
 	 * <!-- begin-user-doc -->
@@ -1022,7 +1058,7 @@ public interface HintcoPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int PORT_INSTANCE_OPERATION_COUNT = PRECENDENCE_NODE_OPERATION_COUNT + 3;
+	int PORT_INSTANCE_OPERATION_COUNT = PRECENDENCE_NODE_OPERATION_COUNT + 4;
 
 	/**
 	 * The meta object id for the '{@link ua.ansymo.hintco.impl.InputPortInstanceImpl <em>Input Port Instance</em>}' class.
@@ -1124,6 +1160,15 @@ public interface HintcoPackage extends EPackage {
 	 */
 	int INPUT_PORT_INSTANCE___SELECTED_ADAPTATIONS = PORT_INSTANCE___SELECTED_ADAPTATIONS;
 
+	/**
+	 * The operation id for the '<em>To String</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INPUT_PORT_INSTANCE___TO_STRING = PORT_INSTANCE___TO_STRING;
+
 	/**
 	 * The operation id for the '<em>Get Real Value From</em>' operation.
 	 * <!-- begin-user-doc -->
@@ -1269,6 +1314,15 @@ public interface HintcoPackage extends EPackage {
 	 */
 	int HIERARCHICAL_UNIT_PORT___SELECTED_ADAPTATIONS = INPUT_PORT_INSTANCE___SELECTED_ADAPTATIONS;
 
+	/**
+	 * The operation id for the '<em>To String</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HIERARCHICAL_UNIT_PORT___TO_STRING = INPUT_PORT_INSTANCE___TO_STRING;
+
 	/**
 	 * The operation id for the '<em>Get Real Value From</em>' operation.
 	 * <!-- begin-user-doc -->
@@ -1423,6 +1477,15 @@ public interface HintcoPackage extends EPackage {
 	 */
 	int OUTPUT_PORT_INSTANCE___GETS_VALUE_FROM__PORTINSTANCE = PORT_INSTANCE___GETS_VALUE_FROM__PORTINSTANCE;
 
+	/**
+	 * The operation id for the '<em>To String</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OUTPUT_PORT_INSTANCE___TO_STRING = PORT_INSTANCE___TO_STRING;
+
 	/**
 	 * The operation id for the '<em>Is Input</em>' operation.
 	 * <!-- begin-user-doc -->
@@ -3169,6 +3232,16 @@ public interface HintcoPackage extends EPackage {
 	 */
 	EOperation getUnitInstance__GetInputPorts();
 
+	/**
+	 * Returns the meta object for the '{@link ua.ansymo.hintco.UnitInstance#toString() <em>To String</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>To String</em>' operation.
+	 * @see ua.ansymo.hintco.UnitInstance#toString()
+	 * @generated
+	 */
+	EOperation getUnitInstance__ToString();
+
 	/**
 	 * Returns the meta object for class '{@link ua.ansymo.hintco.CosimUnitInstance <em>Cosim Unit Instance</em>}'.
 	 * <!-- begin-user-doc -->
@@ -3252,6 +3325,16 @@ public interface HintcoPackage extends EPackage {
 	 */
 	EOperation getPortInstance__GetsValueFrom__PortInstance();
 
+	/**
+	 * Returns the meta object for the '{@link ua.ansymo.hintco.PortInstance#toString() <em>To String</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>To String</em>' operation.
+	 * @see ua.ansymo.hintco.PortInstance#toString()
+	 * @generated
+	 */
+	EOperation getPortInstance__ToString();
+
 	/**
 	 * Returns the meta object for class '{@link ua.ansymo.hintco.HierarchicalUnitPort <em>Hierarchical Unit Port</em>}'.
 	 * <!-- begin-user-doc -->
@@ -4116,6 +4199,14 @@ public interface HintcoPackage extends EPackage {
 		 */
 		EOperation UNIT_INSTANCE___GET_INPUT_PORTS = eINSTANCE.getUnitInstance__GetInputPorts();
 
+		/**
+		 * The meta object literal for the '<em><b>To String</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation UNIT_INSTANCE___TO_STRING = eINSTANCE.getUnitInstance__ToString();
+
 		/**
 		 * The meta object literal for the '{@link ua.ansymo.hintco.impl.CosimUnitInstanceImpl <em>Cosim Unit Instance</em>}' class.
 		 * <!-- begin-user-doc -->
@@ -4184,6 +4275,14 @@ public interface HintcoPackage extends EPackage {
 		 */
 		EOperation PORT_INSTANCE___GETS_VALUE_FROM__PORTINSTANCE = eINSTANCE.getPortInstance__GetsValueFrom__PortInstance();
 
+		/**
+		 * The meta object literal for the '<em><b>To String</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation PORT_INSTANCE___TO_STRING = eINSTANCE.getPortInstance__ToString();
+
 		/**
 		 * The meta object literal for the '{@link ua.ansymo.hintco.impl.HierarchicalUnitPortImpl <em>Hierarchical Unit Port</em>}' class.
 		 * <!-- begin-user-doc -->

+ 9 - 0
HintCO/src-gen/ua/ansymo/hintco/PortInstance.java

@@ -105,4 +105,13 @@ public interface PortInstance extends PrecendenceNode, IDed {
 	 */
 	boolean getsValueFrom(PortInstance p);
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model unique="false"
+	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='&lt;%java.lang.String%&gt; _string = this.getUnit().toString();\n&lt;%java.lang.String%&gt; _plus = (_string + \".\");\n&lt;%java.lang.String%&gt; _identifier = this.getIdentifier();\nreturn (_plus + _identifier);'"
+	 * @generated
+	 */
+	String toString();
+
 } // PortInstance

+ 9 - 0
HintCO/src-gen/ua/ansymo/hintco/UnitInstance.java

@@ -124,4 +124,13 @@ public interface UnitInstance extends IDed, PrecendenceNode {
 	 */
 	EList<InputPortInstance> getInputPorts();
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model unique="false"
+	 *        annotation="http://www.eclipse.org/emf/2002/GenModel body='return this.getIdentifier();'"
+	 * @generated
+	 */
+	String toString();
+
 } // UnitInstance

+ 12 - 0
HintCO/src-gen/ua/ansymo/hintco/impl/HierarchicalCosimUnitImpl.java

@@ -457,6 +457,15 @@ public class HierarchicalCosimUnitImpl extends ScenarioImpl implements Hierarchi
 		return ECollections.<InputPortInstance>toEList(IterableExtensions.<InputPortInstance>filter(Iterables.<InputPortInstance>filter(this.getPorts(), InputPortInstance.class), _function));
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String toString() {
+		return this.getIdentifier();
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -728,6 +737,7 @@ public class HierarchicalCosimUnitImpl extends ScenarioImpl implements Hierarchi
 				case HintcoPackage.UNIT_INSTANCE___SELECTED_ADAPTATIONS: return HintcoPackage.HIERARCHICAL_COSIM_UNIT___SELECTED_ADAPTATIONS;
 				case HintcoPackage.UNIT_INSTANCE___GET_OUTPUT_PORTS: return HintcoPackage.HIERARCHICAL_COSIM_UNIT___GET_OUTPUT_PORTS;
 				case HintcoPackage.UNIT_INSTANCE___GET_INPUT_PORTS: return HintcoPackage.HIERARCHICAL_COSIM_UNIT___GET_INPUT_PORTS;
+				case HintcoPackage.UNIT_INSTANCE___TO_STRING: return HintcoPackage.HIERARCHICAL_COSIM_UNIT___TO_STRING;
 				default: return -1;
 			}
 		}
@@ -750,6 +760,8 @@ public class HierarchicalCosimUnitImpl extends ScenarioImpl implements Hierarchi
 				return getOutputPorts();
 			case HintcoPackage.HIERARCHICAL_COSIM_UNIT___GET_INPUT_PORTS:
 				return getInputPorts();
+			case HintcoPackage.HIERARCHICAL_COSIM_UNIT___TO_STRING:
+				return toString();
 		}
 		return super.eInvoke(operationID, arguments);
 	}

+ 1 - 1
HintCO/src-gen/ua/ansymo/hintco/impl/HierarchicalUnitPortImpl.java

@@ -105,7 +105,7 @@ public class HierarchicalUnitPortImpl extends InputPortInstanceImpl implements H
 			final boolean auxIsInput = (!_exists);
 			final boolean auxAltIsInput = this.altIsInput();
 			if (((auxIsInput && (!auxAltIsInput)) || ((!auxIsInput) && auxAltIsInput))) {
-				throw new RuntimeException("Something wrong with the implementation of isInput, or the model is invalid.");
+				throw new RuntimeException("Something wrong with the implementation of isInput");
 			}
 			_xblockexpression = auxIsInput;
 		}

+ 24 - 0
HintCO/src-gen/ua/ansymo/hintco/impl/HintcoPackageImpl.java

@@ -632,6 +632,15 @@ public class HintcoPackageImpl extends EPackageImpl implements HintcoPackage {
 		return unitInstanceEClass.getEOperations().get(2);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getUnitInstance__ToString() {
+		return unitInstanceEClass.getEOperations().get(3);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -704,6 +713,15 @@ public class HintcoPackageImpl extends EPackageImpl implements HintcoPackage {
 		return portInstanceEClass.getEOperations().get(2);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getPortInstance__ToString() {
+		return portInstanceEClass.getEOperations().get(3);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1243,6 +1261,7 @@ public class HintcoPackageImpl extends EPackageImpl implements HintcoPackage {
 		createEOperation(unitInstanceEClass, UNIT_INSTANCE___SELECTED_ADAPTATIONS);
 		createEOperation(unitInstanceEClass, UNIT_INSTANCE___GET_OUTPUT_PORTS);
 		createEOperation(unitInstanceEClass, UNIT_INSTANCE___GET_INPUT_PORTS);
+		createEOperation(unitInstanceEClass, UNIT_INSTANCE___TO_STRING);
 
 		cosimUnitInstanceEClass = createEClass(COSIM_UNIT_INSTANCE);
 		createEReference(cosimUnitInstanceEClass, COSIM_UNIT_INSTANCE__DECLARATION);
@@ -1253,6 +1272,7 @@ public class HintcoPackageImpl extends EPackageImpl implements HintcoPackage {
 		createEOperation(portInstanceEClass, PORT_INSTANCE___SELECTED_ADAPTATIONS);
 		createEOperation(portInstanceEClass, PORT_INSTANCE___IS_INPUT);
 		createEOperation(portInstanceEClass, PORT_INSTANCE___GETS_VALUE_FROM__PORTINSTANCE);
+		createEOperation(portInstanceEClass, PORT_INSTANCE___TO_STRING);
 
 		hierarchicalUnitPortEClass = createEClass(HIERARCHICAL_UNIT_PORT);
 		createEOperation(hierarchicalUnitPortEClass, HIERARCHICAL_UNIT_PORT___IS_INPUT);
@@ -1437,6 +1457,8 @@ public class HintcoPackageImpl extends EPackageImpl implements HintcoPackage {
 
 		initEOperation(getUnitInstance__GetInputPorts(), this.getInputPortInstance(), "getInputPorts", 0, -1, !IS_UNIQUE, IS_ORDERED);
 
+		initEOperation(getUnitInstance__ToString(), theEcorePackage.getEString(), "toString", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
 		initEClass(cosimUnitInstanceEClass, CosimUnitInstance.class, "CosimUnitInstance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getCosimUnitInstance_Declaration(), this.getCosimUnitDeclaration(), null, "declaration", null, 1, 1, CosimUnitInstance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
@@ -1451,6 +1473,8 @@ public class HintcoPackageImpl extends EPackageImpl implements HintcoPackage {
 		EOperation op = initEOperation(getPortInstance__GetsValueFrom__PortInstance(), theEcorePackage.getEBoolean(), "getsValueFrom", 0, 1, !IS_UNIQUE, IS_ORDERED);
 		addEParameter(op, this.getPortInstance(), "p", 0, 1, !IS_UNIQUE, IS_ORDERED);
 
+		initEOperation(getPortInstance__ToString(), theEcorePackage.getEString(), "toString", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
 		initEClass(hierarchicalUnitPortEClass, HierarchicalUnitPort.class, "HierarchicalUnitPort", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
 		initEOperation(getHierarchicalUnitPort__IsInput(), theEcorePackage.getEBoolean(), "isInput", 0, 1, !IS_UNIQUE, IS_ORDERED);

+ 14 - 16
HintCO/src-gen/ua/ansymo/hintco/impl/PortInstanceImpl.java

@@ -246,6 +246,18 @@ public abstract class PortInstanceImpl extends PrecendenceNodeImpl implements Po
 		return false;
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String toString() {
+		String _string = this.getUnit().toString();
+		String _plus = (_string + ".");
+		String _identifier = this.getIdentifier();
+		return (_plus + _identifier);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -421,24 +433,10 @@ public abstract class PortInstanceImpl extends PrecendenceNodeImpl implements Po
 				return isInput();
 			case HintcoPackage.PORT_INSTANCE___GETS_VALUE_FROM__PORTINSTANCE:
 				return getsValueFrom((PortInstance)arguments.get(0));
+			case HintcoPackage.PORT_INSTANCE___TO_STRING:
+				return toString();
 		}
 		return super.eInvoke(operationID, arguments);
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String toString() {
-		if (eIsProxy()) return super.toString();
-
-		StringBuilder result = new StringBuilder(super.toString());
-		result.append(" (identifier: ");
-		result.append(identifier);
-		result.append(')');
-		return result.toString();
-	}
-
 } //PortInstanceImpl

+ 11 - 0
HintCO/src-gen/ua/ansymo/hintco/impl/UnitInstanceImpl.java

@@ -441,6 +441,15 @@ public abstract class UnitInstanceImpl extends IDedImpl implements UnitInstance
 		return ECollections.<InputPortInstance>toEList(IterableExtensions.<InputPortInstance>filter(Iterables.<InputPortInstance>filter(this.getPorts(), InputPortInstance.class), _function));
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String toString() {
+		return this.getIdentifier();
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -693,6 +702,8 @@ public abstract class UnitInstanceImpl extends IDedImpl implements UnitInstance
 				return getOutputPorts();
 			case HintcoPackage.UNIT_INSTANCE___GET_INPUT_PORTS:
 				return getInputPorts();
+			case HintcoPackage.UNIT_INSTANCE___TO_STRING:
+				return toString();
 		}
 		return super.eInvoke(operationID, arguments);
 	}

+ 1 - 1
HintCO/src/ua/ansymo/hintco/CandidatesGenerator.xtend

@@ -148,7 +148,7 @@ class CandidatesGenerator {
 							logger.debug("Attempting to add constraint {}.{}->{}.{}.", outP.unit.identifier, outP.identifier, inP.unit.identifier, inP.identifier)
 							val success = addConstraint(outP, inP, constraints, n, cs)
 							logger.debug("Success: {}", success)
-						}
+						}	
 					}
 					
 					// Create I/DoStep constraints: inputs should be set before doStep.

+ 3 - 3
HintCO/src/ua/ansymo/hintco/CosimRunUtils.xtend

@@ -108,8 +108,8 @@ class CosimRunUtils {
 		return outVals
 	}
 	
-	def static executeStep(double time, double stepSize, List<PrecendenceNode> nodes, List<UnitInstance> units, Set<InputPortInstance> inPorts, Map<UnitInstance, IFmuInstance> fmuInstanceMap) {
-		logger.debug("Co-simulation step start at time {} -> {}.", time, time + stepSize)
+	def static executeStep(Scenario scenario,  double time, double stepSize, List<PrecendenceNode> nodes, List<UnitInstance> units, Set<InputPortInstance> inPorts, Map<UnitInstance, IFmuInstance> fmuInstanceMap) {
+		logger.debug("Co-simulation step of {} start at time {} -> {}.", scenario.identifier, time, time + stepSize)
 		
 		// Let units know that a cosim step is starting.
 		for (u : units){
@@ -145,6 +145,6 @@ class CosimRunUtils {
 			fmuInstanceMap.get(u).endCosimStep(time, stepSize)
 		}
 		
-		logger.debug("Co-simulation step end at time {} -> {}.", time, time + stepSize)
+		logger.debug("Co-simulation step of {} end at time {} -> {}.", scenario.identifier, time, time + stepSize)
 	}
 }

+ 2 - 2
HintCO/src/ua/ansymo/hintco/CosimRunner.xtend

@@ -69,7 +69,7 @@ class CosimRunner implements ICosimRunner, Closeable {
 		var i = 0
 		while (time < stopTime || MathUtils.isApproximatelyEqual(time, stopTime, stepSize*1e-3)){
 			
-			executeStep(time, stepSize, nodes, units, childInputPorts, fmuInstanceMap)
+			executeStep(rootScenario, time, stepSize, nodes, units, childInputPorts, fmuInstanceMap)
 			
 			// Advance time
 			logger.debug("Time advance: {} -> {}", time, time + stepSize)
@@ -85,7 +85,7 @@ class CosimRunner implements ICosimRunner, Closeable {
 			// Refresh outputs
 			outVals.clear()
 			outProcessor.setOutputs(i, time, getOutputSnapshot(units, fmuInstanceMap, outVals))
-			logger.debug("Output line recorded for time {}.", 0.0)
+			logger.debug("Output line recorded for time {} and step {}.", time, i)
 		}
 		
 		// Cleanup

+ 1 - 1
HintCO/src/ua/ansymo/hintco/HierarchicalInstance.xtend

@@ -113,7 +113,7 @@ class HierarchicalInstance extends AdaptedFMUInstance {
 		 * The input values have been propagated.
 		 * All we have to do now is step the inner units, and propagate their values in order.
 		 */
-		 executeStep(inner_time, micro_step, nodes, units, inPorts, fmuInstanceMap)
+		 executeStep(unit, inner_time, micro_step, nodes, units, inPorts, fmuInstanceMap)
 		 return Fmi2Status.OK
 	}
 	

+ 15 - 3
HintCO/src/ua/ansymo/hintco/Main.xtend

@@ -1,5 +1,6 @@
 package ua.ansymo.hintco
 
+import java.io.File
 import java.io.FileWriter
 import org.apache.commons.cli.CommandLine
 import org.apache.commons.cli.DefaultParser
@@ -11,7 +12,6 @@ import org.eclipse.core.runtime.Assert
 import org.eclipse.equinox.app.IApplication
 import org.eclipse.equinox.app.IApplicationContext
 import org.intocps.fmi.jnifmuapi.Factory
-import java.io.File
 
 class Main implements IApplication {
 	
@@ -26,6 +26,7 @@ class Main implements IApplication {
 		val scenarioOpt = Option.builder("s").longOpt("scenario").desc("Path to scenario file").hasArg().numberOfArgs(1).argName("path").build();
 		val contractOpt = Option.builder("c").longOpt("contract").desc("Path to contracts file").hasArg().numberOfArgs(1).argName("path").build();
 		val genDefAdaptations = Option.builder("d").longOpt("default").desc("Generate default adaptations").build();
+		val genTrace = Option.builder("t").longOpt("trace").desc("Generate debug trace.").hasArg().numberOfArgs(1).build();
 		val outDirOpt = Option.builder("o").longOpt("output").desc("Path to output directory").hasArg().numberOfArgs(1).argName("path").build();
 		val nVarsOpt = Option.builder("n").longOpt("variants").desc("Number of variants to run").hasArg().numberOfArgs(1).argName("int").build();
 		
@@ -34,6 +35,7 @@ class Main implements IApplication {
 		options.addOption(scenarioOpt)
 		options.addOption(contractOpt)
 		options.addOption(genDefAdaptations)
+		options.addOption(genTrace)
 		options.addOption(outDirOpt)
 		options.addOption(nVarsOpt)
 		
@@ -48,15 +50,25 @@ class Main implements IApplication {
 			showHelp(options);
 			return
 		}
-
+		
 		if(cmd.hasOption(helpOpt.getOpt()))
 		{
 			showHelp(options);
 			return
 		}
 		
+		if (cmd.hasOption(genTrace.getOpt())) {
+			System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "debug")
+			val logFile = getOptString(genTrace, cmd, null);
+			if (logFile === null){
+				System.setProperty("org.slf4j.simpleLogger.logFile", "trace.log")				
+			} else {
+				System.setProperty("org.slf4j.simpleLogger.logFile", logFile)
+			}
+		}
+		
 		run_diagnostics()
-
+		
 		val scenarioFile = getString(scenarioOpt, cmd);
 		var outDir = getOptString(outDirOpt, cmd, "output");
 		

+ 0 - 1
HintCO/test/ua/ansymo/hintco/test/CosimRunnerTest.xtend

@@ -217,7 +217,6 @@ class CosimRunnerTest {
 	@Test
 	def void executeCosimulationTestDoubleLoopApprox(){
 		Assume.assumeTrue(SystemUtils.IS_OS_WINDOWS) // Because it only works on windows.
-
 //		System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "debug")
 //		System.setProperty("org.slf4j.simpleLogger.logFile", "dloopbetter.log")
 		val resultsDirPath = "results-gen/cosimTestDLoopApprox"