diff --git a/example_case_folders/06_amr_wind_standin_and_battery/README.md b/example_case_folders/06_amr_wind_standin_and_battery/README.md index b82c2f98..bcc89870 100644 --- a/example_case_folders/06_amr_wind_standin_and_battery/README.md +++ b/example_case_folders/06_amr_wind_standin_and_battery/README.md @@ -16,4 +16,8 @@ bash run_script.sh ## Checking outputs -#TODO: Add instructions on how to check the outputs \ No newline at end of file +To check the outputs, execute the following command in the terminal: + +```bash +python plot_outputs.py +``` diff --git a/example_case_folders/06_amr_wind_standin_and_battery/plot_outputs.py b/example_case_folders/06_amr_wind_standin_and_battery/plot_outputs.py new file mode 100644 index 00000000..c8d0c13e --- /dev/null +++ b/example_case_folders/06_amr_wind_standin_and_battery/plot_outputs.py @@ -0,0 +1,33 @@ +# Plot the outputs of the simulation + +import matplotlib.pyplot as plt +import pandas as pd + +# Read the Hercules output file +df = pd.read_csv("outputs/hercules_output.csv", index_col=False) + +# Plot the turbine powers +fig, ax = plt.subplots() +time = df["hercules_comms.amr_wind.wind_farm_0.sim_time_s_amr_wind"] +ax.plot(time, df["hercules_comms.amr_wind.wind_farm_0.turbine_powers.000"], label="WT000",lw=3) +ax.plot(time, df["hercules_comms.amr_wind.wind_farm_0.turbine_powers.001"], label="WT001") +ax.plot(time, df["py_sims.inputs.available_power"], label="available power") +ax.set_ylabel("Power [kW]") +ax.set_xlabel("Time") +ax.legend() +ax.grid() + + + +fig, ax = plt.subplots() +ax.plot(time, df["py_sims.battery_0.outputs.power"], label="Battery Power") +ax.set_ylabel("Power") +ax.set_xlabel("Time") +ax.legend() + +fig, ax = plt.subplots() +ax.plot(time, df["py_sims.battery_0.outputs.soc"], label="Battery SOC") +ax.set_ylabel("SOC") +ax.set_xlabel("Time") +ax.legend() +plt.show() \ No newline at end of file diff --git a/example_case_folders/06_amr_wind_standin_and_battery/test_read_output.ipynb b/example_case_folders/06_amr_wind_standin_and_battery/test_read_output.ipynb deleted file mode 100644 index 8a3b2f0c..00000000 --- a/example_case_folders/06_amr_wind_standin_and_battery/test_read_output.ipynb +++ /dev/null @@ -1,468 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import pandas as pd" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
dthercules_comms.amr_wind.wind_farm_0.num_turbineshercules_comms.amr_wind.wind_farm_0.rotor_diameterhercules_comms.amr_wind.wind_farm_0.turbine_powers.000hercules_comms.amr_wind.wind_farm_0.turbine_powers.001hercules_comms.amr_wind.wind_farm_0.turbine_wind_directions.000hercules_comms.amr_wind.wind_farm_0.turbine_wind_directions.001hercules_comms.amr_wind.wind_farm_0.wind_directionhercules_comms.amr_wind.wind_farm_0.sim_time_s_amr_windhercules_comms.helics.config.use_dash_frontend...py_sims.battery_0.outputs.rejectpy_sims.battery_0.outputs.socpy_sims.inputs.available_powerpy_sims.inputs.battery_signalpy_sims.inputs.sim_time_scontroller.num_turbinescontroller.initial_conditions.yawtimesetpoints.battery.signalclock_time
00.52126.00.0000000.000000000.0000000.0False...00.1020.0000000.00.02270.00.50.0000002024-03-26 16:17:31.984420
10.52126.015.92540318.69260200200.0222350.5False...00.10234.6180050.00.52270.01.034.6180052024-03-26 16:17:31.993016
20.52126.025.71700925.67700500200.0444691.0False...00.10251.3940140.01.02270.01.551.3940142024-03-26 16:17:31.996600
30.52126.028.5271867.88189300200.0667041.5False...00.10236.4090790.01.52270.02.036.4090792024-03-26 16:17:32.000433
40.52126.012.28946835.25591500200.0889382.0False...00.10247.5453830.02.02270.02.547.5453832024-03-26 16:17:32.002101
\n", - "

5 rows × 35 columns

\n", - "
" - ], - "text/plain": [ - " dt hercules_comms.amr_wind.wind_farm_0.num_turbines \\\n", - "0 0.5 2 \n", - "1 0.5 2 \n", - "2 0.5 2 \n", - "3 0.5 2 \n", - "4 0.5 2 \n", - "\n", - " hercules_comms.amr_wind.wind_farm_0.rotor_diameter \\\n", - "0 126.0 \n", - "1 126.0 \n", - "2 126.0 \n", - "3 126.0 \n", - "4 126.0 \n", - "\n", - " hercules_comms.amr_wind.wind_farm_0.turbine_powers.000 \\\n", - "0 0.000000 \n", - "1 15.925403 \n", - "2 25.717009 \n", - "3 28.527186 \n", - "4 12.289468 \n", - "\n", - " hercules_comms.amr_wind.wind_farm_0.turbine_powers.001 \\\n", - "0 0.000000 \n", - "1 18.692602 \n", - "2 25.677005 \n", - "3 7.881893 \n", - "4 35.255915 \n", - "\n", - " hercules_comms.amr_wind.wind_farm_0.turbine_wind_directions.000 \\\n", - "0 0 \n", - "1 0 \n", - "2 0 \n", - "3 0 \n", - "4 0 \n", - "\n", - " hercules_comms.amr_wind.wind_farm_0.turbine_wind_directions.001 \\\n", - "0 0 \n", - "1 0 \n", - "2 0 \n", - "3 0 \n", - "4 0 \n", - "\n", - " hercules_comms.amr_wind.wind_farm_0.wind_direction \\\n", - "0 0.000000 \n", - "1 200.022235 \n", - "2 200.044469 \n", - "3 200.066704 \n", - "4 200.088938 \n", - "\n", - " hercules_comms.amr_wind.wind_farm_0.sim_time_s_amr_wind \\\n", - "0 0.0 \n", - "1 0.5 \n", - "2 1.0 \n", - "3 1.5 \n", - "4 2.0 \n", - "\n", - " hercules_comms.helics.config.use_dash_frontend ... \\\n", - "0 False ... \n", - "1 False ... \n", - "2 False ... \n", - "3 False ... \n", - "4 False ... \n", - "\n", - " py_sims.battery_0.outputs.reject py_sims.battery_0.outputs.soc \\\n", - "0 0 0.102 \n", - "1 0 0.102 \n", - "2 0 0.102 \n", - "3 0 0.102 \n", - "4 0 0.102 \n", - "\n", - " py_sims.inputs.available_power py_sims.inputs.battery_signal \\\n", - "0 0.000000 0.0 \n", - "1 34.618005 0.0 \n", - "2 51.394014 0.0 \n", - "3 36.409079 0.0 \n", - "4 47.545383 0.0 \n", - "\n", - " py_sims.inputs.sim_time_s controller.num_turbines \\\n", - "0 0.0 2 \n", - "1 0.5 2 \n", - "2 1.0 2 \n", - "3 1.5 2 \n", - "4 2.0 2 \n", - "\n", - " controller.initial_conditions.yaw time setpoints.battery.signal \\\n", - "0 270.0 0.5 0.000000 \n", - "1 270.0 1.0 34.618005 \n", - "2 270.0 1.5 51.394014 \n", - "3 270.0 2.0 36.409079 \n", - "4 270.0 2.5 47.545383 \n", - "\n", - " clock_time \n", - "0 2024-03-26 16:17:31.984420 \n", - "1 2024-03-26 16:17:31.993016 \n", - "2 2024-03-26 16:17:31.996600 \n", - "3 2024-03-26 16:17:32.000433 \n", - "4 2024-03-26 16:17:32.002101 \n", - "\n", - "[5 rows x 35 columns]" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Read the output file\n", - "df = pd.read_csv(\"outputs/hercules_output.csv\", index_col=False)\n", - "df.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Index(['dt', 'hercules_comms.amr_wind.wind_farm_0.num_turbines',\n", - " 'hercules_comms.amr_wind.wind_farm_0.rotor_diameter',\n", - " 'hercules_comms.amr_wind.wind_farm_0.turbine_powers.000',\n", - " 'hercules_comms.amr_wind.wind_farm_0.turbine_powers.001',\n", - " 'hercules_comms.amr_wind.wind_farm_0.turbine_wind_directions.000',\n", - " 'hercules_comms.amr_wind.wind_farm_0.turbine_wind_directions.001',\n", - " 'hercules_comms.amr_wind.wind_farm_0.wind_direction',\n", - " 'hercules_comms.amr_wind.wind_farm_0.sim_time_s_amr_wind',\n", - " 'hercules_comms.helics.config.use_dash_frontend',\n", - " 'hercules_comms.helics.config.KAFKA',\n", - " 'hercules_comms.helics.config.helics.helicsport',\n", - " 'hercules_comms.helics.config.helics.deltat',\n", - " 'hercules_comms.helics.config.publication_interval',\n", - " 'hercules_comms.helics.config.endpoint_interval',\n", - " 'hercules_comms.helics.config.starttime',\n", - " 'hercules_comms.helics.config.stoptime', 'py_sims.battery_0.size',\n", - " 'py_sims.battery_0.energy_capacity', 'py_sims.battery_0.charge_rate',\n", - " 'py_sims.battery_0.discharge_rate', 'py_sims.battery_0.max_SOC',\n", - " 'py_sims.battery_0.min_SOC', 'py_sims.battery_0.initial_conditions.SOC',\n", - " 'py_sims.battery_0.outputs.power', 'py_sims.battery_0.outputs.reject',\n", - " 'py_sims.battery_0.outputs.soc', 'py_sims.inputs.available_power',\n", - " 'py_sims.inputs.battery_signal', 'py_sims.inputs.sim_time_s',\n", - " 'controller.num_turbines', 'controller.initial_conditions.yaw', 'time',\n", - " 'setpoints.battery.signal', 'clock_time'],\n", - " dtype='object')" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df.columns" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure()\n", - "time = df[\"hercules_comms.amr_wind.wind_farm_0.sim_time_s_amr_wind\"]\n", - "plt.plot(time, df[\"hercules_comms.amr_wind.wind_farm_0.turbine_powers.000\"], label=\"WT000\")\n", - "plt.plot(time, df[\"hercules_comms.amr_wind.wind_farm_0.turbine_powers.001\"], label=\"WT001\")\n", - "plt.plot(time, df[\"py_sims.inputs.available_power\"], label=\"available power\")\n", - "plt.ylabel(\"Power\")\n", - "plt.xlabel(\"Time\")\n", - "plt.legend()" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEGCAYAAABy53LJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAXZklEQVR4nO3de5RdZZnn8e9DJTGIBOgkKOZCpSF0LG5FPJ2GZnUbQW4qBFAWODpGbEV6AUlUVk/AmZ7GJZC2WTP22AgT22icVhmlxaZZDheFIL1EkgoETIK5EIIUBKigkCCQC3nmj3MIlaKSnJfUyamkvp+1atXZ737fXc9+oeqXfTn7RGYiSVK99ml2AZKkPYvBIUkqYnBIkooYHJKkIgaHJKnIoGYXsDuMGDEiW1tbm12GJO1RFi5cuDYzR/ZsHxDB0draSkdHR7PLkKQ9SkQ80Vu7p6okSUUMDklSEYNDklRkQFzjkNS/bdq0ic7OTl599dVmlzIgDR06lNGjRzN48OC6+hsckpqus7OT/fffn9bWViKi2eUMKJnJ888/T2dnJ+PGjatrjKeqJDXdq6++yvDhww2NJogIhg8fXnS0Z3BI6hcMjeYpnXuDQ5JUxOCQJKClpYX29naOPfZYJk6cyC9/+csd9n/hhRf4xje+sXV59erVfP/7329YfVdffTVHHnkkxxxzDO3t7TzwwAMAbNy4kRkzZnDYYYcxfvx4pkyZQmdn59ZxzzzzDBdccAGHHXYYbW1tfPCDH2T58uW7VIvBIUnAvvvuy6JFi3j44Ye59tprueKKK3bYvy+C47XXXqur3/33389tt93Ggw8+yCOPPMLPfvYzxowZA8CVV17J+vXrWb58OStWrODss8/m3HPPJTPJTM455xwmT57MY489xtKlS7nmmmt49tlni+rsybuqJKmHdevWcdBBBwHw0ksvMWXKFH7/+9+zadMmvvKVrzBlyhRmzpzJY489Rnt7O6eccgr33Xcfjz76KO3t7UydOpVp06Yxc+ZM5s2bx4YNG7jkkkv43Oc+x7x587jqqqs45JBDWLRoER/5yEcYMWIE06dPB+BLX/oS73znO5k2bdrWetasWcOIESN429veBsCIESMAePnll/n2t7/N448/TktLCwAXXnghc+bM4e677yYiGDx4MBdffPHWbbW3t+/y/BgckvqVq/59CUufXten22x79zD++5lH7rDPK6+8Qnt7O6+++ipr1qzh7rvvBqrvcbjlllsYNmwYa9eu5fjjj+ess85i1qxZLF68mEWLFgEwb948rrvuOm677TYAZs+ezQEHHMCCBQvYsGEDJ554IqeeeioA8+fPZ/HixYwbN47Vq1dz7rnnMn36dLZs2cJNN93E/Pnzt6nt1FNP5ctf/jJHHHEEH/jABzj//PN53/vex8qVKxk7dizDhg3bpn+lUmHJkiUAvPe9793l+evJ4JAk3jhVBdVTQ5/85CdZvHgxmcmVV17JL37xC/bZZx+eeuqpuk713HnnnTzyyCPcfPPNALz44ousWLGCIUOGMGnSpK3vmWhtbWX48OE89NBDPPvssxx33HEMHz58m2294x3vYOHChdx3333cc889nH/++cyaNYvjjjuu1zuiMpOIIDN3cVZ6Z3BI6ld2dmSwO5xwwgmsXbuWrq4ufvrTn9LV1cXChQsZPHgwra2tdb3nITP5+te/zmmnnbZN+7x589hvv/22afvMZz7Dd77zHZ555hk+/elP97q9lpYWJk+ezOTJkzn66KOZO3cu5513Hk888QTr169n//3339r3wQcf5MwzzwTYGlx9yYvjktTDb37zG1577TWGDx/Oiy++yMEHH8zgwYO55557eOKJ6pPG999/f9avX791TM/l0047jRtuuIFNmzYBsHz5cv7whz/0+vPOOeccbr/9dhYsWPCmoAFYtmwZK1as2Lq8aNEiDj30UPbbbz+mTp3KF77wha0X2r/73e/y8ssvc9JJJ3HSSSexYcMGvvnNb24du2DBAu69995dmB2POCQJeOMaB1SPFubOnUtLSwsf//jHOfPMM6lUKrS3tzNhwgQAhg8fzoknnshRRx3FGWecwTXXXMOgQYM49thj+dSnPsX06dNZvXo1EydOJDMZOXIkP/nJT3r92UOGDOH9738/Bx544NaL3N299NJLXHbZZbzwwgsMGjSIww8/nNmzZwNw7bXXcvnll3PEEUewzz77MGHCBG655Zatp7BuueUWZsyYwaxZsxg6dCitra187Wtf26W5ikadA+tPKpVK+kFOUv/16KOP8p73vKfZZTTNli1bmDhxIj/60Y8YP358U2ro7b9BRCzMzErPvp6qkqQmWrp0KYcffjgnn3xy00KjlKeqJKmJ2traWLVqVbPLKOIRh6R+YSCcNu+vSufe4JDUdEOHDuX55583PJrg9c/jGDp0aN1jPFUlqelGjx5NZ2cnXV1dzS5lQHr9EwDrZXBIarrBgwfX/elzaj5PVUmSihgckqQiBockqUhDgyMiTo+IZRGxMiJm9rJ+QkTcHxEbIuLyesdGxGW1dUsi4quN3AdJ0rYadnE8IlqA64FTgE5gQUTcmplLu3X7HTANOLvesRHxfmAKcExmboiIgxu1D5KkN2vkEcckYGVmrsrMjcBNVP/gb5WZz2XmAmBTwdi/BmZl5obXt9HAfZAk9dDI4BgFPNltubPWtqtjjwD+IiIeiIh7I+JPd7lSSVLdGvk+jjd/LBXU+7bQHY0dBBwEHA/8KfDDiPjj7PGW04i4CLgIYOzYsXX+WEnSzjTyiKMTGNNteTTwdB+M7QR+nFXzgS3AiJ4byMzZmVnJzMrIkSOLi5ck9a6RwbEAGB8R4yJiCHABcGsfjP0JcBJARBwBDAHW9mXhkqTta9ipqszcHBGXAncALcCczFwSERfX1t8YEe8COoBhwJaImAG0Zea63sbWNj0HmBMRi4GNwNSep6kkSY3jJwBKknrlJwBKkvqEwSFJKmJwSJKKGBySpCIGhySpiMEhSSpicEiSihgckqQiBockqYjBIUkqYnBIkooYHJKkIgaHJKmIwSFJKmJwSJKKGBySpCIGhySpiMEhSSpicEiSihgckqQiBockqYjBIUkqYnBIkooYHJKkIgaHJKmIwSFJKmJwSJKKGBySpCIGhySpiMEhSSrS0OCIiNMjYllErIyImb2snxAR90fEhoi4vHDs5RGRETGikfsgSdpWw4IjIlqA64EzgDbgYxHR1qPb74BpwHUlYyNiDHAK8NtG1S9J6l0jjzgmASszc1VmbgRuAqZ075CZz2XmAmBT4dj/CfwNkA2rXpLUq0YGxyjgyW7LnbW2XRobEWcBT2XmwzvaQERcFBEdEdHR1dVVf9WSpB1qZHBEL231HiH0OjYi3g58CfjbnW0gM2dnZiUzKyNHjqzzx0qSdqaRwdEJjOm2PBp4ehfHHgaMAx6OiNW19gcj4l27XK0kqS6DGrjtBcD4iBgHPAVcAPynXRmbmUuAg1/vVAuPSmau7cvCJUnb17DgyMzNEXEpcAfQAszJzCURcXFt/Y21I4UOYBiwJSJmAG2Zua63sY2qVZJUv8jc+29MqlQq2dHR0ewyJGmPEhELM7PSs913jkuSihgckqQiBockqYjBIUkqYnBIkooYHJKkIgaHJKmIwSFJKmJwSJKKGBySpCIGhySpiMEhSSpicEiSihgckqQiBockqYjBIUkqYnBIkooYHJKkIgaHJKmIwSFJKmJwSJKK7DQ4ImKfiFi8O4qRJPV/Ow2OzNwCPBwRY3dDPZKkfm5Qnf0OAZZExHzgD683ZuZZDalKktRv1RscVzW0CknSHqOu4MjMeyPiUGB8Zv4sIt4OtDS2NElSf1TXXVUR8VngZuB/15pGAT9pUE2SpH6s3ttxLwFOBNYBZOYK4OBGFSVJ6r/qDY4Nmbnx9YWIGARkY0qSJPVn9QbHvRFxJbBvRJwC/Aj498aVJUnqr+oNjplAF/Br4HPAT4H/urNBEXF6RCyLiJURMbOX9RMi4v6I2BARl9czNiL+ISJ+ExGPRMQtEXFgnfsgSeoD9QbHZOB7mXleZn40M7+ZmTs8VRURLcD1wBlAG/CxiGjr0e13wDTguoKxdwFHZeYxwHLgijr3QZLUB+p9H8engBsj4nngvtrXf2Tm73cwZhKwMjNXAUTETcAUYOnrHTLzOeC5iPhQvWMz885u/X4FfLTOfSj2g/m/5RfLuxq1eUlquEvefzhHjTqgT7dZ7/s4PgkQEe+m+of6euDdOxk/Cniy23In8Gd11lXv2E8D/7e3DUTERcBFAGPHvrWnpaxdv4HHul56S2MlqT94ZdNrfb7NuoIjIj4B/AVwNLAW+CeqRx07HNZLW713Yu10bER8CdgMfK+3DWTmbGA2QKVSeUt3gF128nguO3n8WxkqSXutek9VfQ14DLgRuCczV9cxphMY0215NPB0nT9vh2MjYirwYeDknV1rkST1rboujmfmCKqnhYYCV0fE/Ij4PzsZtgAYHxHjImIIcAFwa511bXdsRJwO/BfgrMx8uc7tSZL6SL2nqoYBY4FDgVbgAGDLjsZk5uaIuBS4g+pzreZk5pKIuLi2/saIeBfQAQwDtkTEDKAtM9f1Nra26X8C3gbcFREAv8rMi+vfZUnSroh6zvRExCPAf9S+fpGZnY0urC9VKpXs6OhodhmStEeJiIWZWenZXu9dVcfUNrI/PmpEkga0ep+Oe1REPAQsBpZGxMKIOKqxpUmS+qN63zk+G/hCZh6amWOBL9baJEkDTL3BsV9m3vP6QmbOA/ZrSEWSpH6t3vdxrIqI/wa8fgvuJ4DHG1OSJKk/q/eI49PASODHta8RwIWNKkqS1H/t8IgjIoYCFwOHU32k+hczc9PuKEyS1D/t7IhjLlChGhpnAP/Q8IokSf3azq5xtGXm0QAR8S1gfuNLkiT1Zzs74th6WiozNze4FknSHmBnRxzHRsS62uug+pnj62qvMzOHNbQ6SVK/s8PgyMyW3VWIJGnPUO/tuJIkAQaHJKmQwSFJKmJwSJKKGBySpCIGhySpiMEhSSpicEiSihgckqQiBockqYjBIUkqYnBIkooYHJKkIgaHJKmIwSFJKmJwSJKKGBySpCIGhySpSEODIyJOj4hlEbEyImb2sn5CRNwfERsi4vJ6xkbEH0XEXRGxovb9oEbugyRpWw0LjohoAa4HzgDagI9FRFuPbr8DpgHXFYydCfw8M8cDP68tS5J2k0YecUwCVmbmqszcCNwETOneITOfy8wFwKaCsVOAubXXc4GzG1S/JKkXjQyOUcCT3ZY7a227OvadmbkGoPb94N42EBEXRURHRHR0dXUVFS5J2r5GBkf00pa7YWy1c+bszKxkZmXkyJElQyVJO9DI4OgExnRbHg083Qdjn42IQwBq35/bxTolSQUaGRwLgPERMS4ihgAXALf2wdhbgam111OBf+vDmiVJOzGoURvOzM0RcSlwB9ACzMnMJRFxcW39jRHxLqADGAZsiYgZQFtmruttbG3Ts4AfRsRfAb8FzmvUPkiS3iwyiy4d7JEqlUp2dHQ0uwxJ2qNExMLMrPRs953jkqQiBockqYjBIUkqYnBIkooYHJKkIgaHJKmIwSFJKmJwSJKKGBySpCIGhySpiMEhSSpicEiSihgckqQiBockqYjBIUkqYnBIkooYHJKkIgaHJKmIwSFJKmJwSJKKGBySpCIGhySpiMEhSSpicEiSihgckqQiBockqYjBIUkqYnBIkooYHJKkIg0Njog4PSKWRcTKiJjZy/qIiP9VW/9IREzstm56RCyOiCURMaNbe3tE/CoiFkVER0RMauQ+SJK21bDgiIgW4HrgDKAN+FhEtPXodgYwvvZ1EXBDbexRwGeBScCxwIcjYnxtzFeBqzKzHfjb2rIkaTdp5BHHJGBlZq7KzI3ATcCUHn2mAN/Nql8BB0bEIcB7gF9l5suZuRm4FzinNiaBYbXXBwBPN3AfJEk9DGrgtkcBT3Zb7gT+rI4+o4DFwNURMRx4Bfgg0FHrMwO4IyKuoxp8f97nlUuStquRRxzRS1vW0yczHwX+HrgLuB14GNhcW//XwOczcwzweeBbvf7wiItq10A6urq63kr9kqReNDI4OoEx3ZZH8+bTStvtk5nfysyJmfmXwO+AFbU+U4Ef117/iOopsTfJzNmZWcnMysiRI3dpRyRJb2hkcCwAxkfEuIgYAlwA3Nqjz63AJ2t3Vx0PvJiZawAi4uDa97HAucAPamOeBt5Xe30SbwSKJGk3aNg1jszcHBGXAncALcCczFwSERfX1t8I/JTq9YuVwMvAhd028a+1axybgEsy8/e19s8C/xgRg4BXqd6NJUnaTSKz52WHvU+lUsmOjo6dd5QkbRURCzOz0rPdd45LkooYHJKkIgaHJKmIwSFJKmJwSJKKGBySpCIGhySpiMEhSSpicEiSihgckqQiBockqYjBIUkqYnBIkooYHJKkIgaHJKmIwSFJKmJwSJKKGBySpCIGhySpiMEhSSpicEiSihgckqQiBockqYjBIUkqYnBIkooYHJKkIpGZza6h4SKiC3jiLQ4fAaztw3L2dM7HG5yLbTkf29ob5uPQzBzZs3FABMeuiIiOzKw0u47+wvl4g3OxLedjW3vzfHiqSpJUxOCQJBUxOHZudrML6Gecjzc4F9tyPra1186H1zgkSUU84pAkFTE4JElFDI4diIjTI2JZRKyMiJnNrqfRImJMRNwTEY9GxJKImF5r/6OIuCsiVtS+H9RtzBW1+VkWEac1r/rGiIiWiHgoIm6rLQ/kuTgwIm6OiN/U/h85YYDPx+drvyeLI+IHETF0oMyHwbEdEdECXA+cAbQBH4uItuZW1XCbgS9m5nuA44FLavs8E/h5Zo4Hfl5bprbuAuBI4HTgG7V525tMBx7ttjyQ5+IfgdszcwJwLNV5GZDzERGjgGlAJTOPAlqo7u+AmA+DY/smASszc1VmbgRuAqY0uaaGysw1mflg7fV6qn8YRlHd77m1bnOBs2uvpwA3ZeaGzHwcWEl13vYKETEa+BDwz92aB+pcDAP+EvgWQGZuzMwXGKDzUTMI2DciBgFvB55mgMyHwbF9o4Anuy131toGhIhoBY4DHgDemZlroBouwMG1bnv7HH0N+BtgS7e2gToXfwx0Ad+unbr754jYjwE6H5n5FHAd8FtgDfBiZt7JAJkPg2P7ope2AXHvckS8A/hXYEZmrttR117a9oo5iogPA89l5sJ6h/TStlfMRc0gYCJwQ2YeB/yB2mmY7dir56N27WIKMA54N7BfRHxiR0N6adtj58Pg2L5OYEy35dFUD0X3ahExmGpofC8zf1xrfjYiDqmtPwR4rta+N8/RicBZEbGa6mnKkyLiXxiYcwHV/evMzAdqyzdTDZKBOh8fAB7PzK7M3AT8GPhzBsh8GBzbtwAYHxHjImII1Qtbtza5poaKiKB6DvvRzPwf3VbdCkytvZ4K/Fu39gsi4m0RMQ4YD8zfXfU2UmZekZmjM7OV6n/7uzPzEwzAuQDIzGeAJyPiT2pNJwNLGaDzQfUU1fER8fba783JVK8JDoj5GNTsAvqrzNwcEZcCd1C9Y2JOZi5pclmNdiLwn4FfR8SiWtuVwCzghxHxV1R/Yc4DyMwlEfFDqn9ANgOXZOZru73q3Wsgz8VlwPdq/5BaBVxI9R+fA24+MvOBiLgZeJDq/j1E9REj72AAzIePHJEkFfFUlSSpiMEhSSpicEiSihgckqQiBockqYjBIfWhiBgeEYtqX89ExFO11y9FxDeaXZ/UF7wdV2qQiPg74KXMvK7ZtUh9ySMOaTeIiMndPtPj7yJibkTcGRGrI+LciPhqRPw6Im6vPfaFiHhvRNwbEQsj4o7XH2UhNZvBITXHYVQf2T4F+Bfgnsw8GngF+FAtPL4OfDQz3wvMAa5uVrFSdz5yRGqO/5eZmyLi11QfaXN7rf3XQCvwJ8BRwF3VRyHRQvXx3VLTGRxSc2wAyMwtEbEp37jYuIXq72UASzLzhGYVKG2Pp6qk/mkZMDIiToDq4+4j4sgm1yQBBofUL9U+rvijwN9HxMPAIqqf9yA1nbfjSpKKeMQhSSpicEiSihgckqQiBockqYjBIUkqYnBIkooYHJKkIv8fD3OTlFalW2sAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.figure()\n", - "time = df[\"hercules_comms.amr_wind.wind_farm_0.sim_time_s_amr_wind\"]\n", - "plt.plot(time, df[\"py_sims.battery_0.outputs.power\"], label=\"Battery Power\")\n", - "plt.ylabel(\"Power\")\n", - "plt.xlabel(\"Time\")\n", - "plt.legend()\n", - "\n", - "plt.figure()\n", - "time = df[\"hercules_comms.amr_wind.wind_farm_0.sim_time_s_amr_wind\"]\n", - "plt.plot(time, df[\"py_sims.battery_0.outputs.soc\"], label=\"Battery SOC\")\n", - "plt.ylabel(\"SOC\")\n", - "plt.xlabel(\"Time\")\n", - "plt.legend()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.9.7 ('base')", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.7" - }, - "orig_nbformat": 4, - "vscode": { - "interpreter": { - "hash": "ad2bdc8ecc057115af97d19610ffacc2b4e99fae6737bb82f5d7fb13d2f2c186" - } - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}