diff --git a/.gitignore b/.gitignore
index 4134a9a79186077eea4c33ab4730084a222e45b2..392e0a2bc34b47eeb40a69818685ec64a7d327a3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+*.zip
 *.csv
 *.mat
 .metadata
diff --git a/BuildingSim/.idea/workspace.xml b/BuildingSim/.idea/workspace.xml
index 4c1bb9704056afc62ac9e1f883bebd49ec0b68f9..97491f481dcebaac64a2d125d57556c8a942fc15 100644
--- a/BuildingSim/.idea/workspace.xml
+++ b/BuildingSim/.idea/workspace.xml
@@ -5,6 +5,7 @@
   </component>
   <component name="ChangeListManager">
     <list default="true" id="2bc32c04-dd44-4e01-9ff9-c09263eca269" name="Changes" comment="">
+      <change beforePath="$PROJECT_DIR$/../.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/../.gitignore" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/BESMod/installed_dependencies/IBPSA/.github/workflows/formatting.yml" beforeDir="false" />
       <change beforePath="$PROJECT_DIR$/BESMod/installed_dependencies/IBPSA/.gitignore" beforeDir="false" />
@@ -5440,6 +5441,12 @@
       <change beforePath="$PROJECT_DIR$/BESMod/installed_dependencies/IBPSA/bin/convertBuildingsToAnnex60.py" beforeDir="false" />
       <change beforePath="$PROJECT_DIR$/BESMod/installed_dependencies/IBPSA/bin/runUnitTests.py" beforeDir="false" />
       <change beforePath="$PROJECT_DIR$/BESMod/installed_dependencies/IBPSA/bin/verifyFiles.py" beforeDir="false" />
+      <change beforePath="$PROJECT_DIR$/working_dir/DymolaAPI.log" beforeDir="false" afterPath="$PROJECT_DIR$/working_dir/DymolaAPI.log" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/working_dir/Modelica_RollOut/RollOut.mo" beforeDir="false" afterPath="$PROJECT_DIR$/working_dir/Modelica_RollOut/RollOut.mo" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/working_dir/dslog.txt" beforeDir="false" afterPath="$PROJECT_DIR$/working_dir/dslog.txt" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/working_dir/dsmodel.c" beforeDir="false" afterPath="$PROJECT_DIR$/working_dir/dsmodel.c" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/working_dir/dymosim.exe" beforeDir="false" afterPath="$PROJECT_DIR$/working_dir/dymosim.exe" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/working_dir/simulate_with_dymola_api.py" beforeDir="false" afterPath="$PROJECT_DIR$/working_dir/simulate_with_dymola_api.py" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -5605,33 +5612,18 @@
         </line-breakpoint>
         <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
           <url>file://$PROJECT_DIR$/working_dir/simulate_with_dymola_api.py</url>
-          <line>416</line>
+          <line>496</line>
           <option name="timeStamp" value="31" />
         </line-breakpoint>
         <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
           <url>file://$PROJECT_DIR$/working_dir/simulate_with_dymola_api.py</url>
-          <line>342</line>
-          <option name="timeStamp" value="42" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
-          <url>file://$PROJECT_DIR$/working_dir/simulate_with_dymola_api.py</url>
-          <line>340</line>
-          <option name="timeStamp" value="43" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
-          <url>file://$PROJECT_DIR$/working_dir/simulate_with_dymola_api.py</url>
-          <line>399</line>
+          <line>472</line>
           <option name="timeStamp" value="44" />
         </line-breakpoint>
         <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
           <url>file://$PROJECT_DIR$/working_dir/simulate_with_dymola_api.py</url>
-          <line>97</line>
-          <option name="timeStamp" value="46" />
-        </line-breakpoint>
-        <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
-          <url>file://$PROJECT_DIR$/working_dir/simulate_with_dymola_api.py</url>
-          <line>123</line>
-          <option name="timeStamp" value="47" />
+          <line>142</line>
+          <option name="timeStamp" value="48" />
         </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>
@@ -5641,6 +5633,6 @@
     <SUITE FILE_PATH="coverage/createBuildings_py$simulate_with_different_heatpump.coverage" NAME="simulate_with_different_heatpump Coverage Results" MODIFIED="1743519044431" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/working_dir" />
     <SUITE FILE_PATH="coverage/createBuildings_py$.coverage" NAME=" Coverage Results" MODIFIED="1743084204374" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/working_dir" />
     <SUITE FILE_PATH="coverage/createBuildings_py$list_parameters.coverage" NAME="list_parameters Coverage Results" MODIFIED="1743089291565" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/working_dir" />
-    <SUITE FILE_PATH="coverage/createBuildings_py$simulate_with_dymola_api.coverage" NAME="simulate_with_dymola_api Coverage Results" MODIFIED="1743524785065" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/working_dir" />
+    <SUITE FILE_PATH="coverage/createBuildings_py$simulate_with_dymola_api.coverage" NAME="simulate_with_dymola_api Coverage Results" MODIFIED="1743586692680" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$/working_dir" />
   </component>
 </project>
\ No newline at end of file
diff --git a/BuildingSim/working_dir/DymolaAPI.log b/BuildingSim/working_dir/DymolaAPI.log
index b211af76adf06119b2f6b99ef4bce67e4bd0a0d2..3b18767b31d9ae1840c159975374fcd075b80c7a 100644
--- a/BuildingSim/working_dir/DymolaAPI.log
+++ b/BuildingSim/working_dir/DymolaAPI.log
@@ -928,3 +928,462 @@ Error: ERRORS have been issued.
 01.04.2025-18:29:00 INFO DymolaAPI: Finished 3 simulations on 1 processes in 0:02:03
 01.04.2025-18:29:32 INFO DymolaAPI: Closing Dymola
 01.04.2025-18:29:33 INFO DymolaAPI: Successfully closed Dymola
+02.04.2025-11:05:07 INFO DymolaAPI: -------------------------Initializing class DymolaAPI-------------------------
+02.04.2025-11:05:07 INFO DymolaAPI: Using dymola installation at C:\Program Files\Dymola 2023x
+02.04.2025-11:05:07 INFO DymolaAPI: Using dymola.exe: C:\Program Files\Dymola 2023x\bin64\Dymola.exe
+02.04.2025-11:05:07 INFO DymolaAPI: Using dymola interface: C:\Program Files\Dymola 2023x\Modelica\Library\python_interface\dymola.egg
+02.04.2025-11:05:12 INFO DymolaAPI: Executing given mos_script_pre prior to loading packages.
+02.04.2025-11:05:34 INFO DymolaAPI: Output of mos_script_pre: C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/working_dir/Modelica_RollOut
+
+02.04.2025-11:05:34 INFO DymolaAPI: Loaded modules
+02.04.2025-11:05:34 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding' to extract model variables 
+02.04.2025-11:06:30 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding(hydraulic(generation(heatPump(refCyc(refCycHeaPumHea(redeclare AixLib.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN255.Vitocal350AWI114 datTab))))))' to extract model variables 
+02.04.2025-11:06:45 INFO DymolaAPI: Result names changed due to setting the new model. If you do not expect custom result names, ignore this warning.If you do expect them, please raise an issue to add the option when using the model_names keyword.
+02.04.2025-11:06:45 INFO DymolaAPI: Difference: hydraulic.generation.heatPump.refCyc.refCycHeaPumHea.iceFacCal.iceFac
+02.04.2025-11:07:22 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding(hydraulic(generation(heatPump(refCyc(refCycHeaPumHea(redeclare AixLib.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN255.NibeFighter1140_15 datTab))))))' to extract model variables 
+02.04.2025-11:08:11 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding(hydraulic(generation(heatPump(refCyc(refCycHeaPumHea(redeclare AixLib.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN255.AlphaInnotec_SW170I datTab))))))' to extract model variables 
+02.04.2025-11:08:54 ERROR DymolaAPI: Simulation failed!
+02.04.2025-11:08:54 ERROR DymolaAPI: The last error log from Dymola:
+02.04.2025-11:08:54 ERROR DymolaAPI: Process Simulating: Initialization
+ stopped without any error indication.
+Simulating: Initialization
+Error: ERRORS have been issued.
+Incorrect data-length for file "multOut.csv" should be 10081 * 45=453645, but was 161595.
+ = false, {
+[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
+  0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
+   0.0, 0.0, 0.0, 0.0, 0
+02.04.2025-11:08:54 ERROR DymolaAPI: Log-file of program ./dymosim
+(generated: Wed Apr  2 11:08:26 2025)
+
+dymosim started
+... "RollOut.HeatPumpMonoenergeticResidentialBuilding" simulating
+... "dsin.txt" loading (dymosim input file)
+Files opened
+... loading "Internals" from "C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/BESMod/Resources/InternalGains.txt"
+results will NOT be written to file "dsres.mat", because "lres=0".
+
+02.04.2025-11:08:54 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding(hydraulic(generation(heatPump(refCyc(refCycHeaPumHea(redeclare AixLib.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN255.Vitocal350AWI114 datTab))))))' to extract model variables 
+02.04.2025-11:09:45 INFO DymolaAPI: Finished 1 simulations on 1 processes in 0:00:51
+02.04.2025-11:09:45 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding(hydraulic(generation(heatPump(refCyc(refCycHeaPumHea(redeclare AixLib.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN255.NibeFighter1140_15 datTab))))))' to extract model variables 
+02.04.2025-11:10:37 INFO DymolaAPI: Finished 1 simulations on 1 processes in 0:00:51
+02.04.2025-11:10:37 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding(hydraulic(generation(heatPump(refCyc(refCycHeaPumHea(redeclare AixLib.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN255.AlphaInnotec_SW170I datTab))))))' to extract model variables 
+02.04.2025-11:11:07 ERROR DymolaAPI: Translation failed!
+02.04.2025-11:11:07 ERROR DymolaAPI: The last error log from Dymola:
+02.04.2025-11:11:07 ERROR DymolaAPI: Translation of <a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding">RollOut.HeatPumpMonoenergeticResidentialBuilding</a>:
+Warning: Failed to evaluate and check the size declaration of building.thermalZone[1].ROM.AIze.
+The definition equation or start value requires a certain size.
+Warning: For dimension 1 the size declaration is building.thermalZone[1].ROM.nIze, and the required size is 1.
+Warning: Non-literal value.
+In nominal attribute for hydraulic.generation.heatPump.con.preDro.m_flow.
+Ignoring nominal attribute.
+In class <a href="Modelica://Modelica.Units.SI">Modelica.Units.SI</a>.
+  Near file: C:/Program Files/Dymola 2023x/Modelica/Library/Modelica 4.0.0/Units.mo, line 237
+Used in base-class hydraulic.generation.heatPump.con.preDro.PartialTwoPortInterface.
+  Near file: C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/AixLib/AixLib/Fluid/BaseClasses/PartialResistance.mo, line 3
+Warning: Non-literal value.
+In nominal attribute for hydraulic.generation.heatPump.eva.preDro.m_flow.
+Ignoring nominal attribute.
+In class <a href="Modelica://Modelica.Units.SI">Modelica.Units.SI</a>.
+  Near file: C:/Program Files/Dymola 2023x/Modelica/Library/Modelica 4.0.0/Units.mo, line 237
+Used in base-class hydraulic.generation.heatPump.eva.preDro.PartialTwoPortInterface.
+  Near file: C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/AixLib/AixLib/Fluid/BaseClasses/PartialResistance.mo, line 3
+Warning: Non-literal value.
+In nominal attribute for hydraulic.generation.eleHea.preDro.m_flow.
+Ignoring nominal attribute.
+In class <a href="Modelica://Modelica.Units.SI">Modelica.Units.SI</a>.
+  Near file: C:/Program Files/Dymola 2023x/Modelica/Library/Modelica 4.0.0/Units.mo, line 237
+Used in base-class hydraulic.generation.eleHea.preDro.PartialTwoPortInterface.
+  Near file: C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/AixLib/AixLib/Fluid/BaseClasses/PartialResistance.mo, line 3
+Warning: Non-literal value.
+In nominal attribute for hydraulic.distribution.threeWayValveWithFlowReturn.threWayValFlow.res1.m_flow.
+Ignoring nominal attribute.
+In class <a href="Modelica://Modelica.Units.SI">Modelica.Units.SI</a>.
+  Near file: C:/Program Files/Dymola 2023x/Modelica/Library/Modelica 4.0.0/Units.mo, line 237
+Used in base-class hydraulic.distribution.threeWayValveWithFlowReturn.threWayValFlow.res1.PartialTwoPortInterface.
+  Near file: C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/IBPSA/IBPSA/Fluid/BaseClasses/PartialResistance.mo, line 3
+Warning: Non-literal value.
+In nominal attribute for hydraulic.distribution.threeWayValveWithFlowReturn.threWayValFlow.res3.m_flow.
+Ignoring nominal attribute.
+In class <a href="Modelica://Modelica.Units.SI">Modelica.Units.SI</a>.
+  Near file: C:/Program Files/Dymola 2023x/Modelica/Library/Modelica 4.0.0/Units.mo, line 237
+Used in base-class hydraulic.distribution.threeWayValveWithFlowReturn.threWayValFlow.res3.PartialTwoPortInterface.
+  Near file: C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/IBPSA/IBPSA/Fluid/BaseClasses/PartialResistance.mo, line 3
+Warning: Non-literal value.
+In nominal attribute for hydraulic.distribution.resBui.m_flow.
+Ignoring nominal attribute.
+In class <a href="Modelica://Modelica.Units.SI">Modelica.Units.SI</a>.
+  Near file: C:/Program Files/Dymola 2023x/Modelica/Library/Modelica 4.0.0/Units.mo, line 237
+Used in base-class hydraulic.distribution.resBui.PartialTwoPortInterface.
+  Near file: C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/IBPSA/IBPSA/Fluid/BaseClasses/PartialResistance.mo, line 3
+Warning: Non-literal value.
+In nominal attribute for hydraulic.distribution.resDHW.m_flow.
+Ignoring nominal attribute.
+In class <a href="Modelica://Modelica.Units.SI">Modelica.Units.SI</a>.
+  Near file: C:/Program Files/Dymola 2023x/Modelica/Library/Modelica 4.0.0/Units.mo, line 237
+Used in base-class hydraulic.distribution.resDHW.PartialTwoPortInterface.
+  Near file: C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/IBPSA/IBPSA/Fluid/BaseClasses/PartialResistance.mo, line 3
+Warning: Non-literal value.
+In nominal attribute for hydraulic.transfer.rad[1].res.m_flow.
+Ignoring nominal attribute.
+In class <a href="Modelica://Modelica.Units.SI">Modelica.Units.SI</a>.
+  Near file: C:/Program Files/Dymola 2023x/Modelica/Library/Modelica 4.0.0/Units.mo, line 237
+Used in base-class hydraulic.transfer.rad.res.PartialTwoPortInterface.
+  Near file: C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/IBPSA/IBPSA/Fluid/BaseClasses/PartialResistance.mo, line 3
+Warning: Non-literal value.
+In nominal attribute for hydraulic.transfer.res[1].m_flow.
+Ignoring nominal attribute.
+In class <a href="Modelica://Modelica.Units.SI">Modelica.Units.SI</a>.
+  Near file: C:/Program Files/Dymola 2023x/Modelica/Library/Modelica 4.0.0/Units.mo, line 237
+Used in base-class hydraulic.transfer.res.PartialTwoPortInterface.
+  Near file: C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/IBPSA/IBPSA/Fluid/BaseClasses/PartialResistance.mo, line 3
+Warning: Non-literal value.
+In nominal attribute for hydraulic.transfer.pumFixMFlo[1].m_flow_in.
+Ignoring nominal attribute.
+In class <a href="Modelica://Modelica.Blocks.Interfaces">Modelica.Blocks.Interfaces</a>.
+  Near file: C:/Program Files/Dymola 2023x/Modelica/Library/Modelica 4.0.0/Blocks/Interfaces.mo, line 2
+Used in base-class hydraulic.transfer.pumFixMFlo.FlowControlled_m_flow.
+  Near file: C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/IBPSA/IBPSA/Fluid/Movers/Preconfigured/FlowControlled_m_flow.mo, line 3
+Warning: Non-literal value.
+In nominal attribute for hydraulic.transfer.pumFixMFlo[1].m_flow_actual.
+Ignoring nominal attribute.
+In class <a href="Modelica://Modelica.Blocks.Interfaces">Modelica.Blocks.Interfaces</a>.
+  Near file: C:/Program Files/Dymola 2023x/Modelica/Library/Modelica 4.0.0/Blocks/Interfaces.mo, line 2
+Used in base-class hydraulic.transfer.pumFixMFlo.FlowControlled_m_flow.
+  Near file: C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/IBPSA/IBPSA/Fluid/Movers/Preconfigured/FlowControlled_m_flow.mo, line 3
+Warning: The quantity of electrical.generation.pVSystem[1].weaBus.TDryBul is "ThermodynamicTemperature" and the quantity of electrical.generation.pVSystem[1].cellTemperature.T_a is "Temp_C".
+In <a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$electrical.generation.pVSystem[1]:Bus.TDryBul,lTemperature.T_a">connect(electrical.generation.pVSystem[1].weaBus.TDryBul, electrical.generation.pVSystem[1].cellTemperature.T_a);
+</a>Found in class <a href="Modelica://AixLib.Electrical.PVSystem.PVSystem">AixLib.Electrical.PVSystem.PVSystem</a>, C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/AixLib/AixLib/Electrical/PVSystem/PVSystem.mo at line <a href="Modelica://AixLib.Electrical.PVSystem.PVSystem#text:131">132</a>, and used in component <a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#$electrical.generation:pVSystem">electrical.generation.pVSystem[1]</a>.
+Variable <a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$electrical.generation:pVSystem[1].weaBus">electrical.generation.pVSystem[1].weaBus.TDryBul</a> was declared in class <a href="Modelica://Modelica.Units.SI">Modelica.Units.SI</a>, C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/AixLib/AixLib/BoundaryConditions/WeatherData/Bus.mo at line 5, and used in component <a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#$electrical.generation.pVSystem:weaBus">electrical.generation.pVSystem[1].weaBus</a>.
+Variable <a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$electrical.generation.pVSystem[1]:cellTemperature.T_a">electrical.generation.pVSystem[1].cellTemperature.T_a</a> was declared in class <a href="Modelica://Modelica.Blocks.Interfaces">Modelica.Blocks.Interfaces</a>, C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/AixLib/AixLib/Electrical/PVSystem/BaseClasses/PartialCellTemperature.mo at line 21, and used in component <a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#$electrical.generation.pVSystem.cellTemperature:PartialCellTemperature">electrical.generation.pVSystem.cellTemperature.PartialCellTemperature</a>.
+Warning: The quantity of electrical.generation.pVSystem[2].weaBus.TDryBul is "ThermodynamicTemperature" and the quantity of electrical.generation.pVSystem[2].cellTemperature.T_a is "Temp_C".
+In <a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$electrical.generation.pVSystem[2]:Bus.TDryBul,lTemperature.T_a">connect(electrical.generation.pVSystem[2].weaBus.TDryBul, electrical.generation.pVSystem[2].cellTemperature.T_a);
+</a>Found in class <a href="Modelica://AixLib.Electrical.PVSystem.PVSystem">AixLib.Electrical.PVSystem.PVSystem</a>, C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/AixLib/AixLib/Electrical/PVSystem/PVSystem.mo at line <a href="Modelica://AixLib.Electrical.PVSystem.PVSystem#text:131">132</a>, and used in component <a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#$electrical.generation:pVSystem">electrical.generation.pVSystem[2]</a>.
+Variable <a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$electrical.generation:pVSystem[2].weaBus">electrical.generation.pVSystem[2].weaBus.TDryBul</a> was declared in class <a href="Modelica://Modelica.Units.SI">Modelica.Units.SI</a>, C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/AixLib/AixLib/BoundaryConditions/WeatherData/Bus.mo at line 5, and used in component <a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#$electrical.generation.pVSystem:weaBus">electrical.generation.pVSystem[2].weaBus</a>.
+Variable <a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$electrical.generation.pVSystem[2]:cellTemperature.T_a">electrical.generation.pVSystem[2].cellTemperature.T_a</a> was declared in class <a href="Modelica://Modelica.Blocks.Interfaces">Modelica.Blocks.Interfaces</a>, C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/BESMod/installed_dependencies/AixLib/AixLib/Electrical/PVSystem/BaseClasses/PartialCellTemperature.mo at line 21, and used in component <a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#$electrical.generation.pVSystem.cellTemperature:PartialCellTemperature">electrical.generation.pVSystem.cellTemperature.PartialCellTemperature</a>.
+The DAE has 7142 scalar unknowns and 7142 scalar equations.
+Warning: The initial conditions are not fully specified.
+Dymola has selected default initial conditions.
+Warning: Assuming fixed start value for the continuous states:
+    hydraulic.generation.heatPump.refCyc.refCycHeaPumHea.iceFacCal.iceMassIntegrator.mIce      (start = 0)
+
+Redundant consistent initial conditions.
+Removed the following equations which are redundant and consistent: 
+  ventilation.generation.p_start = ventilation.p_start;
+  if (hydraulic.generation.heatPump.eva.vol.dynBal.massDynamics ==     Modelica.Fluid.Types.Dynamics.FixedInitial) then 
+    if (hydraulic.generation.heatPump.eva.vol.dynBal.initialize_p) then 
+      hydraulic.generation.heatPump.eva.vol.dynBal.medium.p = hydraulic.generation.heatPump.eva.vol.dynBal.p_start;
+    end if;
+  else
+    if (hydraulic.generation.heatPump.eva.vol.dynBal.massDynamics ==       Modelica.Fluid.Types.Dynamics.SteadyStateInitial) then 
+      if (hydraulic.generation.heatPump.eva.vol.dynBal.initialize_p) then 
+        der(hydraulic.generation.heatPump.eva.vol.dynBal.medium.p) = 0;
+      end if;
+    end if;
+  end if;
+
+This required evaluation of 
+the interactive parameters 
+    hydraulic.generation.bou_sinkAir.p(start = 101325)
+    ventilation.generation.bouExh.p(start = 101325)
+    ventilation.p_start(start = 101325)
+
+The redundancies involve
+initial equations: 
+  hydraulic.generation.heatPump.eva.vol.dynBal.medium.p = 101325.0;
+  ventilation.generation.threeWayValve_b.res1.port_b.p = ventilation.generation.threeWayValve_b.vol.dynBal.p_start;
+
+
+Statistics
+
+Original Model
+  Number of components: 1447
+  Variables: 14315
+  Constants: 270 (270 scalars)
+  Parameters: 6509 (8345 scalars)
+  Unknowns: 7536 (7369 scalars)
+  Differentiated variables: 108 scalars
+  Equations: 6028
+  Nontrivial: 4994
+Translated Model
+  Constants: 5113 scalars
+  Free parameters: 1425 scalars
+  Parameter depending: 3004 scalars
+  Outputs: 44 scalars
+  Continuous time states: 79 scalars
+  Time-varying variables: 1807 scalars
+  Alias variables: 4635 scalars
+  Assumed default initial conditions: 1
+  Number of mixed real/discrete systems of equations: 0
+  Sizes of linear systems of equations: {2, 2, 2, 2, 2, 4, 4}
+  Sizes after manipulation of the linear systems: {0, 0, 0, 0, 0, 0, 0}
+  Sizes of nonlinear systems of equations: {14, 5, 1, 59, 1, 1, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1}
+  Sizes after manipulation of the nonlinear systems: {2, 1, 1, 6, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1}
+  Number of numerical Jacobians: 0
+  Initialization problem
+    Sizes of nonlinear systems of equations: {11, 70, 14, 5, 1, 1, 3, 1, 4, 1, 1}
+    Sizes after manipulation of the nonlinear systems: {5, 7, 3, 1, 0, 1, 1, 0, 1, 1, 1}
+    Sizes of simplified homotopy nonlinear systems of equations: {5, 1, 3, 1}
+    Sizes after manipulation of the simplified homotopy nonlinear systems: {1, 0, 1, 0}
+    Number of numerical Jacobians: 0
+
+Selected continuous time states
+Statically selected continuous time states
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$building.thermalZone.ROM.extWallRC.thermCapExt:T">building.thermalZone[1].ROM.extWallRC.thermCapExt[1].T</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$building.thermalZone.ROM.floorRC.thermCapExt:T">building.thermalZone[1].ROM.floorRC.thermCapExt[1].T</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$building.thermalZone.ROM.intWallRC.thermCapInt:T">building.thermalZone[1].ROM.intWallRC.thermCapInt[1].T</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$building.thermalZone.ROM.roofRC.thermCapExt:T">building.thermalZone[1].ROM.roofRC.thermCapExt[1].T</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$building.thermalZone.ROM.volAir.dynBal:m">building.thermalZone[1].ROM.volAir.dynBal.m</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$building.thermalZone[1].ROM.volAir.dynBal:medium.Xi[1]">building.thermalZone[1].ROM.volAir.dynBal.medium.Xi[1]</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$building.thermalZone.ROM.volAir.dynBal:U">building.thermalZone[1].ROM.volAir.dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$building.thermalZone.ventCont.dEMA.ExpAVG:x">building.thermalZone[1].ventCont.dEMA.ExpAVG.x[1]</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$building.thermalZone.ventCont.dEMA.ExpAVG1:x">building.thermalZone[1].ventCont.dEMA.ExpAVG1.x[1]</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$building.zonTem[1].calCtrl:intDisCom.y">building.zonTem[1].calCtrl.intDisCom.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$building.zonTem[1].comCool:intDisCom.y">building.zonTem[1].comCool.intDisCom.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$building.zonTem[1].comHea:intDisCom.y">building.zonTem[1].comHea.intDisCom.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$building.zonTemOpe[1].calCtrl:intDisCom.y">building.zonTemOpe[1].calCtrl.intDisCom.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$building.zonTemOpe[1].comCool:intDisCom.y">building.zonTemOpe[1].comCool.intDisCom.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$building.zonTemOpe[1].comHea:intDisCom.y">building.zonTemOpe[1].comHea.intDisCom.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$DHW.integralKPICalculator:integrator2.y">DHW.integralKPICalculator.integrator2.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$DHW.pump.vol.dynBal:U">DHW.pump.vol.dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$electrical.distribution.eneKPIGen:integrator2.y">electrical.distribution.eneKPIGen.integrator2.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$electrical.distribution.eneKPILoa:integrator2.y">electrical.distribution.eneKPILoa.integrator2.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$electrical.generation.intKPICalPElePV:integrator2.y">electrical.generation.intKPICalPElePV.integrator2.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.control.priGenPIDCtrl:intAbs.y">hydraulic.control.priGenPIDCtrl.intAbs.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.control.priGenPIDCtrl:intSqu.y">hydraulic.control.priGenPIDCtrl.intSqu.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.control.priGenPIDCtrl.PID.D:x">hydraulic.control.priGenPIDCtrl.PID.D.x</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.control.priGenPIDCtrl.PID:I.y">hydraulic.control.priGenPIDCtrl.PID.I.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.control.valCtrl.PI[1]:I.y">hydraulic.control.valCtrl.PI[1].I.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.distribution.eneKPICalBuf:integrator2.y">hydraulic.distribution.eneKPICalBuf.integrator2.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.distribution.eneKPICalDHW:integrator2.y">hydraulic.distribution.eneKPICalDHW.integrator2.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.stoBuf.layer.dynBal:U">hydraulic.distribution.stoBuf.layer[1].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.stoBuf.layer.dynBal:U">hydraulic.distribution.stoBuf.layer[2].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.stoBuf.layer.dynBal:U">hydraulic.distribution.stoBuf.layer[3].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.stoBuf.layer.dynBal:U">hydraulic.distribution.stoBuf.layer[4].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.stoBuf.layer_HE.dynBal:U">hydraulic.distribution.stoBuf.layer_HE[1].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.stoBuf.layer_HE.dynBal:U">hydraulic.distribution.stoBuf.layer_HE[2].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.stoBuf.layer_HE.dynBal:U">hydraulic.distribution.stoBuf.layer_HE[3].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.stoBuf.layer_HE.dynBal:U">hydraulic.distribution.stoBuf.layer_HE[4].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.stoDHW.layer.dynBal:U">hydraulic.distribution.stoDHW.layer[1].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.stoDHW.layer.dynBal:U">hydraulic.distribution.stoDHW.layer[2].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.stoDHW.layer.dynBal:U">hydraulic.distribution.stoDHW.layer[3].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.stoDHW.layer.dynBal:U">hydraulic.distribution.stoDHW.layer[4].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.stoDHW.layer_HE.dynBal:U">hydraulic.distribution.stoDHW.layer_HE[1].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.stoDHW.layer_HE.dynBal:U">hydraulic.distribution.stoDHW.layer_HE[2].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.stoDHW.layer_HE.dynBal:U">hydraulic.distribution.stoDHW.layer_HE[3].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.stoDHW.layer_HE.dynBal:U">hydraulic.distribution.stoDHW.layer_HE[4].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.distribution.threeWayValveWithFlowReturn.threWayValFlow.vol.dynBal:U">hydraulic.distribution.threeWayValveWithFlowReturn.threWayValFlow.vol.dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.generation.eleHea.vol.dynBal:U">hydraulic.generation.eleHea.vol.dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.generation.heatPump.con.vol.dynBal:U">hydraulic.generation.heatPump.con.vol.dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.generation.heatPump.eva.vol.dynBal:medium.Xi[1]">hydraulic.generation.heatPump.eva.vol.dynBal.medium.Xi[1]</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.generation.heatPump.eva.vol.dynBal:U">hydraulic.generation.heatPump.eva.vol.dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.generation.heatPump.refCyc.refCycHeaPumHea.iceFacCal:iceMassIntegrator.mIce">hydraulic.generation.heatPump.refCyc.refCycHeaPumHea.iceFacCal.iceMassIntegrator.mIce</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.generation.KPIEleHea:integrator1.y">hydraulic.generation.KPIEleHea.integrator1.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.generation.KPIEleHea:integrator3.y">hydraulic.generation.KPIEleHea.integrator3.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.generation.KPIHeaPum:integrator1.y">hydraulic.generation.KPIHeaPum.integrator1.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.generation.KPIHeaPum:integrator3.y">hydraulic.generation.KPIHeaPum.integrator3.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.generation.KPIPEleEleHea:integrator2.y">hydraulic.generation.KPIPEleEleHea.integrator2.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.generation.KPIQEleHea_flow:integrator2.y">hydraulic.generation.KPIQEleHea_flow.integrator2.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.generation.KPIQHP:integrator2.y">hydraulic.generation.KPIQHP.integrator2.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.generation.KPIWel:integrator2.y">hydraulic.generation.KPIWel.integrator2.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.generation.pump.vol.dynBal:U">hydraulic.generation.pump.vol.dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.generation:senTGenOut.T">hydraulic.generation.senTGenOut.T</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$hydraulic.transfer.intKPICalHeaFlo:integrator2.y">hydraulic.transfer.intKPICalHeaFlo.integrator2.y</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.transfer.pumFixMFlo.vol.dynBal:U">hydraulic.transfer.pumFixMFlo[1].vol.dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.transfer.rad.vol.dynBal:U">hydraulic.transfer.rad[1].vol[1].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.transfer.rad.vol.dynBal:U">hydraulic.transfer.rad[1].vol[2].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.transfer.rad.vol.dynBal:U">hydraulic.transfer.rad[1].vol[3].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.transfer.rad.vol.dynBal:U">hydraulic.transfer.rad[1].vol[4].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$hydraulic.transfer.rad.vol.dynBal:U">hydraulic.transfer.rad[1].vol[5].dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$ventilation.generation.fanFlow.vol.dynBal:m">ventilation.generation.fanFlow.vol.dynBal.m</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$ventilation.generation.fanFlow.vol.dynBal:medium.Xi[1]">ventilation.generation.fanFlow.vol.dynBal.medium.Xi[1]</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$ventilation.generation.fanFlow.vol.dynBal:U">ventilation.generation.fanFlow.vol.dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$ventilation.generation.fanRet.vol.dynBal:m">ventilation.generation.fanRet.vol.dynBal.m</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$ventilation.generation.fanRet.vol.dynBal:medium.Xi[1]">ventilation.generation.fanRet.vol.dynBal.medium.Xi[1]</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$ventilation.generation.fanRet.vol.dynBal:U">ventilation.generation.fanRet.vol.dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$ventilation.generation:TExhIn.T">ventilation.generation.TExhIn.T</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$ventilation.generation.threeWayValve_a.vol.dynBal:m">ventilation.generation.threeWayValve_a.vol.dynBal.m</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$ventilation.generation.threeWayValve_a.vol.dynBal:medium.Xi[1]">ventilation.generation.threeWayValve_a.vol.dynBal.medium.Xi[1]</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$ventilation.generation.threeWayValve_a.vol.dynBal:U">ventilation.generation.threeWayValve_a.vol.dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$ventilation.generation.threeWayValve_b.vol.dynBal:medium.Xi[1]">ventilation.generation.threeWayValve_b.vol.dynBal.medium.Xi[1]</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#text$ventilation.generation.threeWayValve_b.vol.dynBal:U">ventilation.generation.threeWayValve_b.vol.dynBal.U</a>
+<a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding#diagram$ventilation.generation:TSup.T">ventilation.generation.TSup.T</a>
+The following parameters have enable=false and don't have any value, only a start value:
+    building.thermalZone[1].eqAirTempRoof.TGro(start = 288.15)
+    building.thermalZone[1].eqAirTempWall.TGro(start = 288.15)
+
+Failed to delete dymosim.exe, this may cause problems when compiling the model.
+Process Compiling
+ stopped without any error indication; ensure that current directory is not an UNC-path.
+Error: Compilation of <a href="Modelica://RollOut.HeatPumpMonoenergeticResidentialBuilding">RollOut.HeatPumpMonoenergeticResidentialBuilding</a> failed.
+
+Note: There were translation errors that might explain the problem.
+Compiler message:
+Simulating: Time= 1.433e+05 
+Warning: WARNINGS have been issued.
+Error: ERRORS have been issued.
+
+02.04.2025-11:12:28 INFO DymolaAPI: -------------------------Initializing class DymolaAPI-------------------------
+02.04.2025-11:12:28 INFO DymolaAPI: Using dymola installation at C:\Program Files\Dymola 2023x
+02.04.2025-11:12:28 INFO DymolaAPI: Using dymola.exe: C:\Program Files\Dymola 2023x\bin64\Dymola.exe
+02.04.2025-11:12:28 INFO DymolaAPI: Using dymola interface: C:\Program Files\Dymola 2023x\Modelica\Library\python_interface\dymola.egg
+02.04.2025-11:12:32 INFO DymolaAPI: Executing given mos_script_pre prior to loading packages.
+02.04.2025-11:12:49 INFO DymolaAPI: Output of mos_script_pre: C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/working_dir/Modelica_RollOut
+
+02.04.2025-11:12:49 INFO DymolaAPI: Loaded modules
+02.04.2025-11:12:49 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding' to extract model variables 
+02.04.2025-11:13:22 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding(hydraulic(generation(heatPump(refCyc(refCycHeaPumHea(redeclare AixLib.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN255.Vitocal350AWI114 datTab))))))' to extract model variables 
+02.04.2025-11:13:35 INFO DymolaAPI: Result names changed due to setting the new model. If you do not expect custom result names, ignore this warning.If you do expect them, please raise an issue to add the option when using the model_names keyword.
+02.04.2025-11:13:35 INFO DymolaAPI: Difference: hydraulic.generation.heatPump.refCyc.refCycHeaPumHea.iceFacCal.iceFac
+02.04.2025-11:14:12 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding(hydraulic(generation(heatPump(refCyc(refCycHeaPumHea(redeclare AixLib.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN255.NibeFighter1140_15 datTab))))))' to extract model variables 
+02.04.2025-11:15:00 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding(hydraulic(generation(heatPump(refCyc(refCycHeaPumHea(redeclare AixLib.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN255.AlphaInnotec_SW170I datTab))))))' to extract model variables 
+02.04.2025-11:15:51 INFO DymolaAPI: Finished 3 simulations on 1 processes in 0:02:28
+02.04.2025-11:17:48 INFO DymolaAPI: -------------------------Initializing class DymolaAPI-------------------------
+02.04.2025-11:17:48 INFO DymolaAPI: Using dymola installation at C:\Program Files\Dymola 2023x
+02.04.2025-11:17:48 INFO DymolaAPI: Using dymola.exe: C:\Program Files\Dymola 2023x\bin64\Dymola.exe
+02.04.2025-11:17:48 INFO DymolaAPI: Using dymola interface: C:\Program Files\Dymola 2023x\Modelica\Library\python_interface\dymola.egg
+02.04.2025-11:17:52 INFO DymolaAPI: Executing given mos_script_pre prior to loading packages.
+02.04.2025-11:18:03 INFO DymolaAPI: Output of mos_script_pre: C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/working_dir/Modelica_RollOut
+
+02.04.2025-11:18:03 INFO DymolaAPI: Loaded modules
+02.04.2025-11:18:03 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding' to extract model variables 
+02.04.2025-11:18:21 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding(hydraulic(generation(heatPump(refCyc(refCycHeaPumHea(redeclare AixLib.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN255.Vitocal350AWI114 datTab))))))' to extract model variables 
+02.04.2025-11:18:37 INFO DymolaAPI: Result names changed due to setting the new model. If you do not expect custom result names, ignore this warning.If you do expect them, please raise an issue to add the option when using the model_names keyword.
+02.04.2025-11:18:37 INFO DymolaAPI: Difference: hydraulic.generation.heatPump.refCyc.refCycHeaPumHea.iceFacCal.iceFac
+02.04.2025-11:19:10 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding(hydraulic(generation(heatPump(refCyc(refCycHeaPumHea(redeclare AixLib.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN255.NibeFighter1140_15 datTab))))))' to extract model variables 
+02.04.2025-11:20:03 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding(hydraulic(generation(heatPump(refCyc(refCycHeaPumHea(redeclare AixLib.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN255.AlphaInnotec_SW170I datTab))))))' to extract model variables 
+02.04.2025-11:20:53 INFO DymolaAPI: Finished 3 simulations on 1 processes in 0:02:32
+02.04.2025-11:38:16 INFO DymolaAPI: -------------------------Initializing class DymolaAPI-------------------------
+02.04.2025-11:38:16 INFO DymolaAPI: Using dymola installation at C:\Program Files\Dymola 2023x
+02.04.2025-11:38:16 INFO DymolaAPI: Using dymola.exe: C:\Program Files\Dymola 2023x\bin64\Dymola.exe
+02.04.2025-11:38:16 INFO DymolaAPI: Using dymola interface: C:\Program Files\Dymola 2023x\Modelica\Library\python_interface\dymola.egg
+02.04.2025-11:38:19 INFO DymolaAPI: Executing given mos_script_pre prior to loading packages.
+02.04.2025-11:38:34 INFO DymolaAPI: Output of mos_script_pre: C:/Users/mbc/Documents/Git-Repos/RollOut/BuildingSim/working_dir/Modelica_RollOut
+
+02.04.2025-11:38:34 INFO DymolaAPI: Loaded modules
+02.04.2025-11:38:34 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding' to extract model variables 
+02.04.2025-11:39:03 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding(hydraulic(generation(heatPump(refCyc(refCycHeaPumHea(redeclare AixLib.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN255.Vitocal350AWI114 datTab))))))' to extract model variables 
+02.04.2025-11:39:16 INFO DymolaAPI: Result names changed due to setting the new model. If you do not expect custom result names, ignore this warning.If you do expect them, please raise an issue to add the option when using the model_names keyword.
+02.04.2025-11:39:16 INFO DymolaAPI: Difference: 
+02.04.2025-11:39:49 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding(hydraulic(generation(heatPump(refCyc(refCycHeaPumHea(redeclare AixLib.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN255.NibeFighter1140_15 datTab))))))' to extract model variables 
+02.04.2025-11:40:34 INFO DymolaAPI: Translating model 'RollOut.HeatPumpMonoenergeticResidentialBuilding(hydraulic(generation(heatPump(refCyc(refCycHeaPumHea(redeclare AixLib.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN255.AlphaInnotec_SW170I datTab))))))' to extract model variables 
+02.04.2025-11:41:20 INFO DymolaAPI: Finished 3 simulations on 1 processes in 0:02:16
diff --git a/BuildingSim/working_dir/Modelica_RollOut/RollOut.mo b/BuildingSim/working_dir/Modelica_RollOut/RollOut.mo
index 98797890a96c98ea8393b17be0688a954316b431..14e6bd58102c20331c5bf60de99815754e733d8a 100644
--- a/BuildingSim/working_dir/Modelica_RollOut/RollOut.mo
+++ b/BuildingSim/working_dir/Modelica_RollOut/RollOut.mo
@@ -2,7 +2,10 @@ within ;
 package RollOut
   model TopLevelModel "Model to do Parameter Sweeps"
     HeatPumpMonoenergeticResidentialBuilding
-      heatPumpMonoenergeticResidentialBuilding
+      heatPumpMonoenergeticResidentialBuilding(hydraulic(generation(heatPump(
+              refCyc(refCycHeaPumHea(redeclare
+                  AixLib.Fluid.HeatPumps.ModularReversible.Data.TableData2D.EN255.Vitocal350AWI114
+                  datTab))))))
       annotation (Placement(transformation(extent={{-28,-18},{28,16}})));
     annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram(
           coordinateSystem(preserveAspectRatio=false)));
diff --git a/BuildingSim/working_dir/dslog.txt b/BuildingSim/working_dir/dslog.txt
index 569cf71dd645aeddbd456e0ed8fc8cf0f06937cc..f9f8279f556b72e5b494bbe97aebf5aef0a44b4e 100644
--- a/BuildingSim/working_dir/dslog.txt
+++ b/BuildingSim/working_dir/dslog.txt
@@ -1,5 +1,5 @@
 Log-file of program ./dymosim
-(generated: Tue Apr  1 18:28:30 2025)
+(generated: Wed Apr  2 11:40:47 2025)
 
 dymosim started
 ... "RollOut.HeatPumpMonoenergeticResidentialBuilding" simulating
diff --git a/BuildingSim/working_dir/dsmodel.c b/BuildingSim/working_dir/dsmodel.c
index 61bc66eeb5fdf0525ddb93c5e12841ecb93e8374..9c4d17257c69ee04ae2755460005bd8e62920c7b 100644
--- a/BuildingSim/working_dir/dsmodel.c
+++ b/BuildingSim/working_dir/dsmodel.c
@@ -1,6 +1,6 @@
 #define DYNEventSpecial
 /* DSblock model generated by Dymola from Modelica model RollOut.HeatPumpMonoenergeticResidentialBuilding
- Dymola Version 2023x, 2022-10-07 translated this at Tue Apr  1 18:28:24 2025
+ Dymola Version 2023x, 2022-10-07 translated this at Wed Apr  2 11:40:40 2025
 
    */
 
@@ -4944,8 +4944,8 @@ BreakSectionFunctionDef(57)
 #define NInitial_   21
 #define MAXAuxStr_   31
 #define MAXAuxStrLen_   500
-#define NHash1_ -1046964823
-#define NHash2_ 745515682
+#define NHash1_ -1535973696
+#define NHash2_ -276676218
 #define NHash3_ 0
 #define NI_    0
 #define NRelF_ 155
diff --git a/BuildingSim/working_dir/dymosim.exe b/BuildingSim/working_dir/dymosim.exe
index e58889d74a9f54aefecfca44922c0a99155abcb0..ccfb51d51552d4c3b3628bf0b795b7a740bca1ea 100644
Binary files a/BuildingSim/working_dir/dymosim.exe and b/BuildingSim/working_dir/dymosim.exe differ
diff --git a/BuildingSim/working_dir/simulate_with_dymola_api.py b/BuildingSim/working_dir/simulate_with_dymola_api.py
index 26e5d9a6005888f54843c6da08540a5e1e226d4c..f1d2803aab88024476491114f3a1b6bf5edd0f03 100644
--- a/BuildingSim/working_dir/simulate_with_dymola_api.py
+++ b/BuildingSim/working_dir/simulate_with_dymola_api.py
@@ -1,36 +1,59 @@
-# simulate_with_dymaola_api.py
+# simulate_heatpump_comparison.py
 import os
 import pathlib
 import matplotlib.pyplot as plt
 import pandas as pd
 import numpy as np
 from ebcpy import DymolaAPI, TimeSeriesData
+from datetime import datetime
 
 
 def main():
     # Arbeitsverzeichnis
     working_directory = pathlib.Path.cwd()
 
+    # Erstelle Ordner für Logs, Plots und Ergebnisse
+    logs_dir = os.path.join(working_directory, "logs")
+    plots_dir = os.path.join(working_directory, "plots")
+
+    # Erstelle Ordner, falls sie nicht existieren
+    os.makedirs(logs_dir, exist_ok=True)
+    os.makedirs(plots_dir, exist_ok=True)
+
+    # Pfade für Ergebnisse
+    results_file = os.path.join(working_directory, "all_results.csv")
+
     # Exakte Pfade
     rollout_mo_path = "C:\\Users\\mbc\\Documents\\Git-Repos\\RollOut\\BuildingSim\\working_dir\\Modelica_RollOut\\RollOut.mo"
     mos_script_path = "C:\\Users\\mbc\\Documents\\Git-Repos\\RollOut\\BuildingSim\\startModelica_.mos"
 
-    print(f"RollOut.mo-Pfad: {rollout_mo_path}")
-    print(f".mos-Script-Pfad: {mos_script_path}")
+    # Log-Datei öffnen
+    log_file_path = os.path.join(logs_dir, f"simulation_log_{datetime.now().strftime('%Y%m%d_%H%M%S')}.txt")
+    log_file = open(log_file_path, "w")
+
+    def log_message(message):
+        """Funktion zum Protokollieren von Nachrichten sowohl in der Konsole als auch in der Log-Datei"""
+        print(message)
+        log_file.write(f"{message}\n")
+        log_file.flush()  # Sicherstellen, dass die Nachricht sofort geschrieben wird
+
+    log_message(f"Simulation gestartet am: {datetime.now()}")
+    log_message(f"RollOut.mo-Pfad: {rollout_mo_path}")
+    log_message(f".mos-Script-Pfad: {mos_script_path}")
 
     # Überprüfen, ob die Dateien existieren
     if not os.path.isfile(rollout_mo_path):
-        print(f"WARNUNG: Die Datei {rollout_mo_path} wurde nicht gefunden!")
+        log_message(f"WARNUNG: Die Datei {rollout_mo_path} wurde nicht gefunden!")
     if not os.path.isfile(mos_script_path):
-        print(f"WARNUNG: Die Datei {mos_script_path} wurde nicht gefunden!")
+        log_message(f"WARNUNG: Die Datei {mos_script_path} wurde nicht gefunden!")
 
     try:
         # Korrekter Modellpfad
         model_path = "RollOut.HeatPumpMonoenergeticResidentialBuilding"
 
-        print(f"Verwende Modellpfad: {model_path}")
+        log_message(f"Verwende Modellpfad: {model_path}")
 
-        print("Starte Dymola und lade Bibliotheken...")
+        log_message("Starte Dymola und lade Bibliotheken...")
 
         # Definiere Modelle mit verschiedenen Wärmepumpentypen
         model_info = [
@@ -61,14 +84,14 @@ def main():
         )
 
         # Zeige Modellstatistik
-        print(f"Anzahl der Variablen: {len(dym_api.variables)}")
-        print(f"Anzahl der Ausgänge: {len(dym_api.outputs)}")
-        print(f"Anzahl der Eingänge: {len(dym_api.inputs)}")
-        print(f"Anzahl der Parameter: {len(dym_api.parameters)}")
-        print(f"Anzahl der Zustände: {len(dym_api.states)}")
+        log_message(f"Anzahl der Variablen: {len(dym_api.variables)}")
+        log_message(f"Anzahl der Ausgänge: {len(dym_api.outputs)}")
+        log_message(f"Anzahl der Eingänge: {len(dym_api.inputs)}")
+        log_message(f"Anzahl der Parameter: {len(dym_api.parameters)}")
+        log_message(f"Anzahl der Zustände: {len(dym_api.states)}")
 
         # Simulationseinstellungen
-        print("\nKonfiguriere Simulationseinstellungen...")
+        log_message("\nKonfiguriere Simulationseinstellungen...")
         simulation_setup = {
             "start_time": 0,
             "stop_time": 7 * 24 * 3600,  # 1 Woche
@@ -78,85 +101,128 @@ def main():
         }
         dym_api.set_sim_setup(sim_setup=simulation_setup)
 
-        # Variable für den Eisfaktor
-        variable_name = "hydraulic.generation.heatPump.refCyc.refCycHeaPumHea.iceFacCal.iceFac"
+        # Neue Variablen für elektrische Leistung und Energieverbrauch
+        variable_power = "outputs.hydraulic.gen.PEleHeaPum.value"
+        variable_energy = "outputs.hydraulic.gen.PEleHeaPum.integral"
 
         # Zu speichernde Ergebnisse
-        dym_api.result_names = [variable_name]
+        dym_api.result_names = [variable_power, variable_energy]
 
         # Simuliere die Modelle
-        print("\nSimuliere Modelle mit verschiedenen Wärmepumpentypen...")
+        log_message("\nSimuliere Modelle mit verschiedenen Wärmepumpentypen...")
 
         try:
             # Simulieren und als TimeSeriesData abrufen
+            results_file_path = os.path.join(logs_dir, "result_heatpumps")
             results = dym_api.simulate(
                 return_option="time_series",
                 model_names=model_paths,
-                result_file_name="result_heatpumps"
+                result_file_name=results_file_path
             )
 
-            print("Simulationen erfolgreich abgeschlossen!")
-            print(f"Ergebnistyp: {type(results)}")
+            log_message("Simulationen erfolgreich abgeschlossen!")
+            log_message(f"Ergebnistyp: {type(results)}")
 
             # Stelle sicher, dass results eine Liste ist
             if not isinstance(results, list):
                 results = [results]
 
-            print(f"Anzahl der Ergebnisse: {len(results)}")
+            log_message(f"Anzahl der Ergebnisse: {len(results)}")
 
             # Liste für verarbeitete TimeSeriesData-Objekte
             processed_results = []
+            # DataFrame für alle Ergebnisse
+            all_results_df = pd.DataFrame()
 
             # Verarbeite jedes Ergebnis und stelle sicher, dass es ein TimeSeriesData-Objekt ist
             for i, result in enumerate(results):
-                print(f"\nVerarbeite Ergebnis für {model_info[i]['name']}:")
+                log_message(f"\nVerarbeite Ergebnis für {model_info[i]['name']}:")
 
                 # Prüfe, ob result direkt von TimeSeriesData erbt
                 if isinstance(result, TimeSeriesData):
-                    print("  Ergebnis ist bereits vom Typ TimeSeriesData")
+                    log_message("  Ergebnis ist bereits vom Typ TimeSeriesData")
                     tsd = result
                 else:
                     # Wenn nicht, konvertiere zu TimeSeriesData
-                    print("  Konvertiere Ergebnis zu TimeSeriesData")
+                    log_message("  Konvertiere Ergebnis zu TimeSeriesData")
                     tsd = TimeSeriesData(result)
 
-                # Überprüfe, ob die Variable im Ergebnis existiert
-                if variable_name in tsd.columns:
-                    print(f"  Variable {variable_name} gefunden!")
+                # Überprüfe, ob die Variablen im Ergebnis existieren
+                if variable_power in tsd.columns and variable_energy in tsd.columns:
+                    log_message(f"  Variablen {variable_power} und {variable_energy} gefunden!")
+
+                    # Füge Wärmepumpentyp als Spalte hinzu
+                    tsd["heat_pump_type"] = model_info[i]["name"]
+
+                    # Füge die Daten zum Gesamtergebnis hinzu
+                    if all_results_df.empty:
+                        all_results_df = tsd.copy()
+                    else:
+                        all_results_df = pd.concat([all_results_df, tsd], axis=0)
+
                     processed_results.append({
                         "name": model_info[i]["name"],
                         "data": tsd
                     })
                 else:
-                    print(f"  Warnung: Variable {variable_name} nicht in den Ergebnissen gefunden!")
-                    print("  Verfügbare Variablen (Beispiele):")
+                    missing_vars = []
+                    if variable_power not in tsd.columns:
+                        missing_vars.append(variable_power)
+                    if variable_energy not in tsd.columns:
+                        missing_vars.append(variable_energy)
+
+                    log_message(
+                        f"  Warnung: Folgende Variablen nicht in den Ergebnissen gefunden: {', '.join(missing_vars)}")
+                    log_message("  Verfügbare Variablen (Beispiele):")
                     for var in list(tsd.columns)[:5]:  # Zeige nur die ersten 5 Spalten
-                        print(f"    - {var}")
+                        log_message(f"    - {var}")
 
                     # Suche nach ähnlichen Variablen
-                    similar_vars = [v for v in tsd.columns if "ice" in str(v).lower() or "fac" in str(v).lower()]
+                    similar_vars = [v for v in tsd.columns if
+                                    "PEle" in str(v) or "power" in str(v).lower() or "energy" in str(v).lower()]
                     if similar_vars:
-                        print("\n  Ähnliche Variablen gefunden:")
+                        log_message("\n  Ähnliche Variablen gefunden:")
                         for var in similar_vars:
-                            print(f"    - {var}")
+                            log_message(f"    - {var}")
 
-                        # Verwende die erste ähnliche Variable als Fallback
-                        alt_var = similar_vars[0]
-                        print(f"\n  Verwende {alt_var} als Alternative...")
+                        # Versuche alternative Variablen zu verwenden
+                        alt_power = next((v for v in similar_vars if "value" in str(v).lower()), similar_vars[0])
+                        alt_energy = next((v for v in similar_vars if "integral" in str(v).lower()), similar_vars[-1])
 
-                        # Erstelle ein neues TimeSeriesData-Objekt mit umbenannter Spalte
+                        log_message(f"\n  Verwende {alt_power} als Alternative für Leistung...")
+                        log_message(f"  Verwende {alt_energy} als Alternative für Energie...")
+
+                        # Erstelle ein neues TimeSeriesData-Objekt mit umbenannten Spalten
                         alt_tsd = tsd.copy()
-                        alt_tsd[variable_name] = alt_tsd[alt_var]
+                        if variable_power not in alt_tsd.columns and alt_power in alt_tsd.columns:
+                            alt_tsd[variable_power] = alt_tsd[alt_power]
+                        if variable_energy not in alt_tsd.columns and alt_energy in alt_tsd.columns:
+                            alt_tsd[variable_energy] = alt_tsd[alt_energy]
+
+                        # Füge Wärmepumpentyp als Spalte hinzu
+                        alt_tsd["heat_pump_type"] = model_info[i]["name"]
+
+                        # Füge die Daten zum Gesamtergebnis hinzu
+                        if all_results_df.empty:
+                            all_results_df = alt_tsd.copy()
+                        else:
+                            all_results_df = pd.concat([all_results_df, alt_tsd], axis=0)
+
                         processed_results.append({
                             "name": model_info[i]["name"],
                             "data": alt_tsd
                         })
 
+            # Speichere alle Ergebnisse in einer Datei
+            log_message(f"\nSpeichere alle Ergebnisse in {results_file}...")
+            all_results_df.to_csv(results_file)
+            log_message(f"Ergebnisse gespeichert!")
+
             # Wenn wir Ergebnisse haben, vergleichen und visualisieren wir sie
             if processed_results:
-                print(f"\nVergleiche Eisfaktor für {len(processed_results)} Wärmepumpentypen...")
+                log_message(f"\nVergleiche elektrische Leistung für {len(processed_results)} Wärmepumpentypen...")
 
-                # Erstelle Diagramm für den Vergleich
+                # Erstelle Diagramm für den Leistungsvergleich
                 plt.figure(figsize=(14, 7))
 
                 # Farbpalette für den Plot
@@ -173,80 +239,91 @@ def main():
                     # Konvertiere Zeitachse von Sekunden in Stunden
                     time_hours = tsd.index / 3600
 
-                    # Extrahiere die Daten zur Analyse
-                    if isinstance(tsd[variable_name], pd.Series):
-                        var_data = tsd[variable_name]
+                    # Extrahiere die Leistungsdaten
+                    if isinstance(tsd[variable_power], pd.Series):
+                        power_data = tsd[variable_power]
                     else:
                         # Wenn MultiIndex mit Tags verwendet wird
-                        tags = tsd.get_tags(variable=variable_name)
+                        tags = tsd.get_tags(variable=variable_power) if hasattr(tsd, 'get_tags') else []
                         if tags and "raw" in tags:
-                            var_data = tsd.loc[:, (variable_name, "raw")]
+                            power_data = tsd.loc[:, (variable_power, "raw")]
                         else:
                             # Verwende das erste verfügbare Tag oder die Originaldaten
                             tag_to_use = tags[0] if tags else None
                             if tag_to_use:
-                                var_data = tsd.loc[:, (variable_name, tag_to_use)]
+                                power_data = tsd.loc[:, (variable_power, tag_to_use)]
                             else:
                                 # Fallback, wenn keine Tags vorhanden sind
-                                var_data = tsd[variable_name]
+                                power_data = tsd[variable_power]
 
-                    # Plotte die Daten
-                    plt.plot(time_hours, var_data,
+                    # Extrahiere die Energiedaten (letzter Wert)
+                    if isinstance(tsd[variable_energy], pd.Series):
+                        energy_data = tsd[variable_energy]
+                    else:
+                        # Wenn MultiIndex mit Tags verwendet wird
+                        tags = tsd.get_tags(variable=variable_energy) if hasattr(tsd, 'get_tags') else []
+                        if tags and "raw" in tags:
+                            energy_data = tsd.loc[:, (variable_energy, "raw")]
+                        else:
+                            # Verwende das erste verfügbare Tag oder die Originaldaten
+                            tag_to_use = tags[0] if tags else None
+                            if tag_to_use:
+                                energy_data = tsd.loc[:, (variable_energy, tag_to_use)]
+                            else:
+                                # Fallback, wenn keine Tags vorhanden sind
+                                energy_data = tsd[variable_energy]
+
+                    # Letzter Wert des Energieverbrauchs
+                    final_energy = energy_data.iloc[-1]
+
+                    # Plotte die Leistungsdaten
+                    plt.plot(time_hours, power_data,
                              color=colors[i % len(colors)],
                              linewidth=2,
-                             label=hp_name)
+                             label=f"{hp_name} (Gesamt: {final_energy:.2f} kWh)")
 
                     # Eckdaten für die Zusammenfassung
-                    min_val = var_data.min()
-                    max_val = var_data.max()
-                    mean_val = var_data.mean()
-                    median_val = var_data.median()
-                    std_val = var_data.std()
-
-                    # Zeit unter kritischem Wert (z.B. < 0.8)
-                    critical_value = 0.8
-                    time_under_critical = (var_data < critical_value).sum() * simulation_setup[
-                        "output_interval"] / 3600  # in Stunden
+                    min_val = power_data.min()
+                    max_val = power_data.max()
+                    mean_val = power_data.mean()
+                    median_val = power_data.median()
+                    std_val = power_data.std()
 
                     # Füge Daten zur Zusammenfassungstabelle hinzu
                     summary_data.append({
                         "Wärmepumpentyp": hp_name,
-                        "Minimum": min_val,
-                        "Maximum": max_val,
-                        "Mittelwert": mean_val,
-                        "Median": median_val,
-                        "Standardabweichung": std_val,
-                        f"Zeit unter {critical_value} [h]": time_under_critical
+                        "Min. Leistung [kW]": min_val,
+                        "Max. Leistung [kW]": max_val,
+                        "Mittlere Leistung [kW]": mean_val,
+                        "Median Leistung [kW]": median_val,
+                        "Standardabweichung [kW]": std_val,
+                        "Gesamtenergie [kWh]": final_energy
                     })
 
-                    # Speichere die Daten für diesen Wärmepumpentyp
-                    tsd.to_csv(f"eisfaktor_{hp_name.replace(' ', '_')}.csv")
-
-                    print(f"\nAnalyse für {hp_name}:")
-                    print(f"  Minimum: {min_val:.4f}")
-                    print(f"  Maximum: {max_val:.4f}")
-                    print(f"  Mittelwert: {mean_val:.4f}")
-                    print(f"  Median: {median_val:.4f}")
-                    print(f"  Standardabweichung: {std_val:.4f}")
-                    print(f"  Zeit unter {critical_value}: {time_under_critical:.2f} Stunden")
+                    log_message(f"\nAnalyse für {hp_name}:")
+                    log_message(f"  Min. Leistung: {min_val:.4f} kW")
+                    log_message(f"  Max. Leistung: {max_val:.4f} kW")
+                    log_message(f"  Mittlere Leistung: {mean_val:.4f} kW")
+                    log_message(f"  Median Leistung: {median_val:.4f} kW")
+                    log_message(f"  Standardabweichung: {std_val:.4f} kW")
+                    log_message(f"  Gesamtenergieverbrauch: {final_energy:.2f} kWh")
 
                 # Füge Diagrammelemente hinzu
-                plt.title("Vergleich des Eisfaktors für verschiedene Wärmepumpentypen", fontsize=14)
+                plt.title("Vergleich der elektrischen Leistung für verschiedene Wärmepumpentypen", fontsize=14)
                 plt.xlabel("Zeit [h]", fontsize=12)
-                plt.ylabel("Eisfaktor", fontsize=12)
+                plt.ylabel("Elektrische Leistung [kW]", fontsize=12)
                 plt.grid(True, alpha=0.3)
-                plt.legend(fontsize=12)
+                plt.legend(fontsize=10)
 
                 # Tagesgrenzen
                 for day in range(1, 8):
                     plt.axvline(x=day * 24, color='gray', linestyle='--', alpha=0.5)
 
-                # Kritischer Wert
-                plt.axhline(y=0.8, color='red', linestyle='--', alpha=0.7, label="Kritischer Wert")
-
                 plt.tight_layout()
-                plt.savefig("eisfaktor_vergleich.png", dpi=300)
-                plt.show()
+                leistungsvergleich_path = os.path.join(plots_dir, "leistungsvergleich.png")
+                plt.savefig(leistungsvergleich_path, dpi=300)
+                log_message(f"\nLeistungsvergleich gespeichert in: {leistungsvergleich_path}")
+                plt.close()  # Schließe die Figur, um Speicher freizugeben
 
                 # Erstelle ein zweites Diagramm für einen detaillierteren Vergleich (z.B. nur die ersten 48 Stunden)
                 plt.figure(figsize=(14, 7))
@@ -258,177 +335,182 @@ def main():
                     # Konvertiere Zeitachse von Sekunden in Stunden
                     time_hours = tsd.index / 3600
 
-                    # Extrahiere die Daten
-                    if isinstance(tsd[variable_name], pd.Series):
-                        var_data = tsd[variable_name]
+                    # Extrahiere die Leistungsdaten
+                    if isinstance(tsd[variable_power], pd.Series):
+                        power_data = tsd[variable_power]
                     else:
                         # Wenn MultiIndex mit Tags verwendet wird
-                        tags = tsd.get_tags(variable=variable_name)
+                        tags = tsd.get_tags(variable=variable_power) if hasattr(tsd, 'get_tags') else []
                         if tags and "raw" in tags:
-                            var_data = tsd.loc[:, (variable_name, "raw")]
+                            power_data = tsd.loc[:, (variable_power, "raw")]
                         else:
                             # Verwende das erste verfügbare Tag oder die Originaldaten
                             tag_to_use = tags[0] if tags else None
                             if tag_to_use:
-                                var_data = tsd.loc[:, (variable_name, tag_to_use)]
+                                power_data = tsd.loc[:, (variable_power, tag_to_use)]
                             else:
                                 # Fallback, wenn keine Tags vorhanden sind
-                                var_data = tsd[variable_name]
+                                power_data = tsd[variable_power]
 
                     # Filter für die ersten 48 Stunden
                     mask_48h = time_hours <= 48
 
                     # Plotte die Daten
-                    plt.plot(time_hours[mask_48h], var_data[mask_48h],
+                    plt.plot(time_hours[mask_48h], power_data[mask_48h],
                              color=colors[i % len(colors)],
                              linewidth=2,
                              label=hp_name)
 
-                plt.title("Vergleich des Eisfaktors für die ersten 48 Stunden", fontsize=14)
+                plt.title("Vergleich der elektrischen Leistung für die ersten 48 Stunden", fontsize=14)
                 plt.xlabel("Zeit [h]", fontsize=12)
-                plt.ylabel("Eisfaktor", fontsize=12)
+                plt.ylabel("Elektrische Leistung [kW]", fontsize=12)
                 plt.grid(True, alpha=0.3)
                 plt.legend(fontsize=12)
 
                 # Tagesgrenzen
                 plt.axvline(x=24, color='gray', linestyle='--', alpha=0.5)
 
-                # Kritischer Wert
-                plt.axhline(y=0.8, color='red', linestyle='--', alpha=0.7, label="Kritischer Wert")
+                plt.tight_layout()
+                leistungsvergleich_48h_path = os.path.join(plots_dir, "leistungsvergleich_48h.png")
+                plt.savefig(leistungsvergleich_48h_path, dpi=300)
+                log_message(f"Leistungsvergleich (48h) gespeichert in: {leistungsvergleich_48h_path}")
+                plt.close()
+
+                # Erstelle ein Balkendiagramm für den Gesamtenergieverbrauch
+                plt.figure(figsize=(10, 6))
+
+                # Extrahiere Wärmepumpentypen und Gesamtenergieverbrauch
+                hp_types = [data["Wärmepumpentyp"] for data in summary_data]
+                total_energy = [data["Gesamtenergie [kWh]"] for data in summary_data]
+
+                # Erstelle Balkendiagramm
+                bars = plt.bar(hp_types, total_energy, color=[colors[i % len(colors)] for i in range(len(hp_types))])
+
+                # Füge Werte über den Balken hinzu
+                for bar in bars:
+                    height = bar.get_height()
+                    plt.text(bar.get_x() + bar.get_width() / 2., height + 0.1,
+                             f'{height:.1f}',
+                             ha='center', va='bottom', fontsize=10)
+
+                plt.title("Gesamtenergieverbrauch der verschiedenen Wärmepumpentypen", fontsize=14)
+                plt.xlabel("Wärmepumpentyp", fontsize=12)
+                plt.ylabel("Gesamtenergieverbrauch [kWh]", fontsize=12)
+                plt.grid(axis='y', alpha=0.3)
+                plt.xticks(rotation=45, ha='right')
 
                 plt.tight_layout()
-                plt.savefig("eisfaktor_vergleich_48h.png", dpi=300)
-                plt.show()
+                energievergleich_path = os.path.join(plots_dir, "energievergleich.png")
+                plt.savefig(energievergleich_path, dpi=300)
+                log_message(f"Energievergleich gespeichert in: {energievergleich_path}")
+                plt.close()
 
                 # Erstelle eine Zusammenfassungstabelle
                 summary_df = pd.DataFrame(summary_data)
 
                 # Exportiere die Zusammenfassung
-                summary_df.to_csv("wärmepumpen_vergleich.csv", index=False)
-                print("\nZusammenfassende Statistik in 'wärmepumpen_vergleich.csv' gespeichert.")
+                summary_file = os.path.join(logs_dir, "wärmepumpen_vergleich.csv")
+                summary_df.to_csv(summary_file, index=False)
+                log_message(f"\nZusammenfassende Statistik in '{summary_file}' gespeichert.")
 
-                # Erstelle eine Heatmap der Unterschiede zwischen den Wärmepumpen
+                # Erstelle eine Heatmap der stündlichen Leistungsunterschiede
                 try:
-                    # Resampling auf gemeinsame Zeitachse
-                    common_data = {}
+                    # Resampling auf stündliche Werte
+                    hourly_power = {}
 
                     for result_dict in processed_results:
                         hp_name = result_dict["name"]
                         tsd = result_dict["data"]
 
-                        # Extrahiere die Daten
-                        if isinstance(tsd[variable_name], pd.Series):
-                            var_data = tsd[variable_name]
+                        # Extrahiere die Leistungsdaten
+                        if isinstance(tsd[variable_power], pd.Series):
+                            power_data = tsd[variable_power]
                         else:
                             # Wenn MultiIndex mit Tags verwendet wird
-                            tags = tsd.get_tags(variable=variable_name)
+                            tags = tsd.get_tags(variable=variable_power) if hasattr(tsd, 'get_tags') else []
                             if tags and "raw" in tags:
-                                var_data = tsd.loc[:, (variable_name, "raw")]
+                                power_data = tsd.loc[:, (variable_power, "raw")]
                             else:
                                 # Verwende das erste verfügbare Tag oder die Originaldaten
                                 tag_to_use = tags[0] if tags else None
                                 if tag_to_use:
-                                    var_data = tsd.loc[:, (variable_name, tag_to_use)]
+                                    power_data = tsd.loc[:, (variable_power, tag_to_use)]
                                 else:
                                     # Fallback, wenn keine Tags vorhanden sind
-                                    var_data = tsd[variable_name]
-
-                        common_data[hp_name] = var_data
+                                    power_data = tsd[variable_power]
 
-                    # Erstelle DataFrame mit allen Wärmepumpen
-                    comparison_df = pd.DataFrame(common_data)
-
-                    # Berechne Korrelationsmatrix
-                    corr_matrix = comparison_df.corr()
-
-                    # Erstelle Heatmap
-                    plt.figure(figsize=(10, 8))
-                    plt.imshow(corr_matrix, cmap='coolwarm', vmin=-1, vmax=1)
-
-                    # Füge Labels hinzu
-                    plt.colorbar(label='Korrelation')
-                    plt.title('Korrelation des Eisfaktors zwischen verschiedenen Wärmepumpentypen', fontsize=14)
-                    plt.xticks(range(len(corr_matrix)), corr_matrix.columns, rotation=45, ha='right')
-                    plt.yticks(range(len(corr_matrix)), corr_matrix.index)
-
-                    # Füge Werte hinzu
-                    for i in range(len(corr_matrix)):
-                        for j in range(len(corr_matrix)):
-                            text = plt.text(j, i, f'{corr_matrix.iloc[i, j]:.2f}',
-                                            ha='center', va='center', color='black')
-
-                    plt.tight_layout()
-                    plt.savefig('eisfaktor_korrelation.png', dpi=300)
-                    plt.show()
+                        # Gruppiere nach Stunden und berechne Durchschnitt
+                        time_hours = tsd.index / 3600
+                        hour_groups = pd.cut(time_hours, bins=range(0, int(time_hours.max()) + 1))
+                        hourly_avg = power_data.groupby(hour_groups).mean()
 
-                    # Berechne die relative Differenz zum Durchschnitt
-                    avg_values = comparison_df.mean(axis=1)
-                    rel_diff = comparison_df.div(avg_values, axis=0) - 1
+                        hourly_power[hp_name] = hourly_avg
 
-                    # Tagesgrenzen in Stunden
-                    day_boundaries = [i * 24 for i in range(8)]
+                    # Erstelle DataFrame mit stündlichen Werten für alle Wärmepumpen
+                    hourly_df = pd.DataFrame(hourly_power)
 
-                    # Erstelle ein gestapeltes Balkendiagramm mit den durchschnittlichen täglichen Abweichungen
-                    daily_avg_diff = []
+                    # Heatmap der stündlichen Leistung
+                    plt.figure(figsize=(15, 10))
 
-                    for i in range(len(day_boundaries) - 1):
-                        # Zeitindex in Stunden
-                        time_hours = comparison_df.index / 3600
+                    # Normalisiere die Daten für bessere Farbdarstellung
+                    normalized_data = (hourly_df - hourly_df.min().min()) / (
+                                hourly_df.max().max() - hourly_df.min().min())
 
-                        # Filter für den aktuellen Tag
-                        day_mask = (time_hours >= day_boundaries[i]) & (time_hours < day_boundaries[i + 1])
+                    plt.imshow(normalized_data.values.T, aspect='auto', cmap='hot')
 
-                        # Berechne den durchschnittlichen Unterschied für diesen Tag
-                        day_avg = rel_diff[day_mask].mean() * 100  # in Prozent
+                    plt.colorbar(label='Normalisierte Leistung')
+                    plt.title('Stündliche elektrische Leistung der verschiedenen Wärmepumpentypen', fontsize=14)
 
-                        daily_avg_diff.append(day_avg)
+                    # X-Achse (Stunden)
+                    hours_ticks = range(0, int(hourly_df.shape[0]), 24)
+                    plt.xticks(hours_ticks, [f"Tag {h // 24 + 1}" for h in hours_ticks])
 
-                    # Wandle in DataFrame um
-                    daily_diff_df = pd.DataFrame(daily_avg_diff,
-                                                 index=[f"Tag {i + 1}" for i in range(len(daily_avg_diff))])
+                    # Y-Achse (Wärmepumpentypen)
+                    plt.yticks(range(len(hourly_df.columns)), hourly_df.columns)
 
-                    # Erstelle gestapeltes Balkendiagramm
-                    daily_diff_df.plot(kind='bar', figsize=(14, 7))
-                    plt.title('Durchschnittliche tägliche Abweichung vom Mittelwert (%)', fontsize=14)
-                    plt.xlabel('Tag', fontsize=12)
-                    plt.ylabel('Abweichung (%)', fontsize=12)
-                    plt.axhline(y=0, color='black', linestyle='-', alpha=0.3)
-                    plt.grid(axis='y', alpha=0.3)
-                    plt.legend(title='Wärmepumpentyp')
                     plt.tight_layout()
-                    plt.savefig('tägliche_abweichung.png', dpi=300)
-                    plt.show()
+                    heatmap_path = os.path.join(plots_dir, "leistung_heatmap.png")
+                    plt.savefig(heatmap_path, dpi=300)
+                    log_message(f"Leistungs-Heatmap gespeichert in: {heatmap_path}")
+                    plt.close()
+
+                    # Speichere die stündlichen Daten
+                    hourly_file = os.path.join(logs_dir, "stündliche_leistung.csv")
+                    hourly_df.to_csv(hourly_file)
+                    log_message(f"Stündliche Leistungsdaten in '{hourly_file}' gespeichert.")
 
                 except Exception as e:
-                    print(f"Fehler bei der Erstellung der vergleichenden Visualisierungen: {e}")
+                    log_message(f"Fehler bei der Erstellung der stündlichen Analyse: {e}")
                     import traceback
                     traceback.print_exc()
 
             else:
-                print("Keine verarbeitbaren Ergebnisse verfügbar für die Analyse.")
+                log_message("Keine verarbeitbaren Ergebnisse verfügbar für die Analyse.")
 
         except Exception as e:
-            print(f"Fehler bei der Simulation: {e}")
+            log_message(f"Fehler bei der Simulation: {e}")
             error_log = dym_api.dymola.getLastError()
-            print("Dymola-Fehler:")
-            print(error_log)
+            log_message("Dymola-Fehler:")
+            log_message(str(error_log))
 
             # Versuche sequentielle Simulation als Fallback
-            print("\nVersuche sequentielle Simulation der Modelle...")
+            log_message("\nVersuche sequentielle Simulation der Modelle...")
 
             processed_results = []
+            all_results_df = pd.DataFrame()
 
             for i, model_info_item in enumerate(model_info):
                 hp_name = model_info_item["name"]
                 model_path = model_info_item["path"]
 
-                print(f"\nSimuliere {hp_name}...")
+                log_message(f"\nSimuliere {hp_name}...")
 
                 try:
+                    result_file_name = os.path.join(logs_dir, f"result_{hp_name.replace(' ', '_')}")
                     result = dym_api.simulate(
                         return_option="time_series",
                         model_names=[model_path],
-                        result_file_name=f"result_{hp_name.replace(' ', '_')}"
+                        result_file_name=result_file_name
                     )
 
                     if isinstance(result, list) and len(result) > 0:
@@ -436,77 +518,121 @@ def main():
 
                     # Prüfe, ob result direkt von TimeSeriesData erbt
                     if isinstance(result, TimeSeriesData):
-                        print(f"Ergebnis für {hp_name} ist bereits vom Typ TimeSeriesData")
+                        log_message(f"Ergebnis für {hp_name} ist bereits vom Typ TimeSeriesData")
                         tsd = result
                     else:
                         # Wenn nicht, konvertiere zu TimeSeriesData
-                        print(f"Konvertiere Ergebnis für {hp_name} zu TimeSeriesData")
+                        log_message(f"Konvertiere Ergebnis für {hp_name} zu TimeSeriesData")
                         tsd = TimeSeriesData(result)
 
-                    # Überprüfe, ob die Variable im Ergebnis existiert
-                    if variable_name in tsd.columns:
-                        print(f"Variable {variable_name} gefunden für {hp_name}!")
+                    # Überprüfe, ob die Variablen im Ergebnis existieren
+                    if variable_power in tsd.columns and variable_energy in tsd.columns:
+                        log_message(f"Variablen {variable_power} und {variable_energy} gefunden für {hp_name}!")
+
+                        # Füge Wärmepumpentyp als Spalte hinzu
+                        tsd["heat_pump_type"] = hp_name
+
+                        # Füge die Daten zum Gesamtergebnis hinzu
+                        if all_results_df.empty:
+                            all_results_df = tsd.copy()
+                        else:
+                            all_results_df = pd.concat([all_results_df, tsd], axis=0)
+
                         processed_results.append({
                             "name": hp_name,
                             "data": tsd
                         })
                     else:
-                        print(f"Warnung: Variable {variable_name} nicht in den Ergebnissen für {hp_name} gefunden!")
-                        # Suche nach ähnlichen Variablen
-                        similar_vars = [v for v in tsd.columns if "ice" in str(v).lower() or "fac" in str(v).lower()]
+                        missing_vars = []
+                        if variable_power not in tsd.columns:
+                            missing_vars.append(variable_power)
+                        if variable_energy not in tsd.columns:
+                            missing_vars.append(variable_energy)
+
+                        log_message(
+                            f"Warnung: Folgende Variablen nicht in den Ergebnissen für {hp_name} gefunden: {', '.join(missing_vars)}")
+
+                        # Suche nach ähnlichen Variablen als Fallback
+                        similar_vars = [v for v in tsd.columns if
+                                        "PEle" in str(v) or "power" in str(v).lower() or "energy" in str(v).lower()]
                         if similar_vars:
-                            print(f"Ähnliche Variablen für {hp_name} gefunden:")
+                            log_message(f"Ähnliche Variablen für {hp_name} gefunden:")
                             for var in similar_vars[:5]:  # Zeige nur die ersten 5
-                                print(f"  - {var}")
+                                log_message(f"  - {var}")
 
                             # Verwende die erste ähnliche Variable als Fallback
-                            alt_var = similar_vars[0]
-                            print(f"Verwende {alt_var} als Alternative für {hp_name}...")
+                            alt_power = next((v for v in similar_vars if "value" in str(v).lower()), similar_vars[0])
+                            alt_energy = next((v for v in similar_vars if "integral" in str(v).lower()),
+                                              similar_vars[-1])
+
+                            log_message(f"Verwende {alt_power} als Alternative für Leistung bei {hp_name}...")
+                            log_message(f"Verwende {alt_energy} als Alternative für Energie bei {hp_name}...")
 
-                            # Erstelle ein neues TimeSeriesData-Objekt mit umbenannter Spalte
+                            # Erstelle ein neues TimeSeriesData-Objekt mit umbenannten Spalten
                             alt_tsd = tsd.copy()
-                            alt_tsd[variable_name] = alt_tsd[alt_var]
+                            if variable_power not in alt_tsd.columns and alt_power in alt_tsd.columns:
+                                alt_tsd[variable_power] = alt_tsd[alt_power]
+                            if variable_energy not in alt_tsd.columns and alt_energy in alt_tsd.columns:
+                                alt_tsd[variable_energy] = alt_tsd[alt_energy]
+
+                            # Füge Wärmepumpentyp als Spalte hinzu
+                            alt_tsd["heat_pump_type"] = hp_name
+
+                            # Füge die Daten zum Gesamtergebnis hinzu
+                            if all_results_df.empty:
+                                all_results_df = alt_tsd.copy()
+                            else:
+                                all_results_df = pd.concat([all_results_df, alt_tsd], axis=0)
+
                             processed_results.append({
                                 "name": hp_name,
                                 "data": alt_tsd
                             })
 
                 except Exception as e:
-                    print(f"Fehler bei der Simulation von {hp_name}: {e}")
+                    log_message(f"Fehler bei der Simulation von {hp_name}: {e}")
                     error_log = dym_api.dymola.getLastError()
-                    print(f"Dymola-Fehler für {hp_name}:")
-                    print(error_log)
+                    log_message(f"Dymola-Fehler für {hp_name}:")
+                    log_message(str(error_log))
+
+            # Speichere alle Ergebnisse in einer Datei
+            if not all_results_df.empty:
+                log_message(f"\nSpeichere alle Ergebnisse aus sequentieller Simulation in {results_file}...")
+                all_results_df.to_csv(results_file)
+                log_message(f"Ergebnisse gespeichert!")
 
             # Wenn wir Ergebnisse aus der sequentiellen Simulation haben, analysieren wir sie
             if processed_results:
-                print("\nErstelle Vergleich aus sequentiellen Simulationen...")
-
-                # Ähnlicher Code wie oben, um die Ergebnisse zu analysieren und zu visualisieren
-                # (Code wurde hier aus Platzgründen ausgelassen, würde aber der Analyse oben entsprechen)
+                log_message("\nErstelle Vergleich aus sequentiellen Simulationen...")
+                # Die Analyse würde hier ähnlich wie oben fortgesetzt
 
         # Speichere die Simulation für spätere Reproduktion
         try:
             from ebcpy.utils import reproduction
-            reproduction.save_reproduction_archive(title="WärmepumpenVergleich")
-            print("\nSimulation wurde für spätere Reproduktion gespeichert.")
+            reproduction_archive = os.path.join(logs_dir, "wärmepumpen_vergleich_reproduction.zip")
+            reproduction.save_reproduction_archive(title="WärmepumpenVergleich", path=reproduction_archive)
+            log_message(f"\nSimulation wurde für spätere Reproduktion in {reproduction_archive} gespeichert.")
         except Exception as e:
-            print(f"Fehler beim Speichern für Reproduktion: {e}")
+            log_message(f"Fehler beim Speichern für Reproduktion: {e}")
 
             # Alternative Methode über DymolaAPI
             try:
                 zip_file = dym_api.save_for_reproduction(
                     title="WärmepumpenVergleich",
-                    log_message="Vergleich verschiedener Wärmepumpentypen"
+                    log_message="Vergleich verschiedener Wärmepumpentypen",
+                    path=os.path.join(logs_dir, "dymola_reproduction.zip")
                 )
-                print(f"Simulation wurde in {zip_file} für spätere Reproduktion gespeichert.")
+                log_message(f"Simulation wurde in {zip_file} für spätere Reproduktion gespeichert.")
             except Exception as e2:
-                print(f"Auch die alternative Methode zur Speicherung ist fehlgeschlagen: {e2}")
+                log_message(f"Auch die alternative Methode zur Speicherung ist fehlgeschlagen: {e2}")
 
         # Dymola-Instanz schließen
         dym_api.close()
+        log_message("\nDymola-Instanz geschlossen.")
+        log_message(f"Simulation beendet am: {datetime.now()}")
 
     except Exception as e:
-        print(f"Fehler bei der Simulation: {e}")
+        log_message(f"Fehler bei der Simulation: {e}")
         import traceback
         traceback.print_exc()
 
@@ -514,9 +640,15 @@ def main():
         try:
             if 'dym_api' in locals():
                 dym_api.close()
+                log_message("Dymola-Instanz geschlossen nach Fehler.")
         except:
             pass
 
+    finally:
+        # Schließe die Log-Datei
+        if log_file:
+            log_file.close()
+
 
 if __name__ == "__main__":
     main()
\ No newline at end of file