From 8df475de881ad89210fde0ce521822470d710213 Mon Sep 17 00:00:00 2001 From: misi9170 <39596329+misi9170@users.noreply.github.com> Date: Tue, 27 Feb 2024 17:38:36 -0500 Subject: [PATCH] Wind farm power setpoint tracking controller (#29) * rename actuator disk interface for generality with passing power setpoints and enable interface functionality. * Initial skeleton for power tracking controller. * first tests added. * ruff, typos. * Passing through yaw angles as well (at null value). * Open-loop setpoint distribution. * Rename to distributing for this version.' * References pass through interface; tested." * placeholder for feedback-based power tracking controller. * Tracking control loop runs; not yet tested. * Test proportional control operation. * Slightly more thorough test. * Running simulations back to back. * plotting; use output_file option in input_dict. * ruff. * Follow externally-provided reference. * Upload data files for examples. * Update tests to reflect external_signals key on hercules_dict. * Better tuning (after transients. * Allow proportional gain to be set externally and test that expected behavior results. * Update documentation. * Update plots, trajectory. * Update documentation of example. * More consistent tracking of hercules time in plot output. * Update readme. * Clarify setpoint default unit; comment out code for integral action to avoid confusion. --- .gitignore | 11 +- docs/controllers.md | 32 ++- docs/examples.md | 18 +- docs/graphics/wf-power-tracking-plot.png | Bin 0 -> 179190 bytes docs/interfaces.md | 5 +- .../amr_standin_data.csv | 201 ++++++++++++++++++ .../hercules_runscript.py | 4 +- .../amr_input.inp | 163 ++++++++++++++ .../amr_standin_data.csv | 201 ++++++++++++++++++ .../bash_script.sh | 26 +++ .../floris_runscript.py | 19 ++ .../hercules_input_000.yaml | 67 ++++++ .../hercules_runscript_CLcontrol.py | 37 ++++ .../hercules_runscript_OLcontrol.py | 37 ++++ .../plot_output_data.py | 55 +++++ .../readme.txt | 4 + .../wind_power_reference_data.csv | 12 ++ tests/controller_library_test.py | 89 +++++++- tests/interface_library_test.py | 19 +- whoc/controllers/__init__.py | 4 + .../lookup_based_wake_steering_controller.py | 2 +- .../wind_farm_power_tracking_controller.py | 143 +++++++++++++ whoc/interfaces/__init__.py | 2 +- ...py => hercules_actuator_disk_interface.py} | 24 ++- 24 files changed, 1145 insertions(+), 30 deletions(-) create mode 100644 docs/graphics/wf-power-tracking-plot.png create mode 100644 examples/lookup-based_wake_steering_florisstandin/amr_standin_data.csv create mode 100644 examples/wind_farm_power_tracking_florisstandin/amr_input.inp create mode 100644 examples/wind_farm_power_tracking_florisstandin/amr_standin_data.csv create mode 100755 examples/wind_farm_power_tracking_florisstandin/bash_script.sh create mode 100644 examples/wind_farm_power_tracking_florisstandin/floris_runscript.py create mode 100644 examples/wind_farm_power_tracking_florisstandin/hercules_input_000.yaml create mode 100644 examples/wind_farm_power_tracking_florisstandin/hercules_runscript_CLcontrol.py create mode 100644 examples/wind_farm_power_tracking_florisstandin/hercules_runscript_OLcontrol.py create mode 100644 examples/wind_farm_power_tracking_florisstandin/plot_output_data.py create mode 100644 examples/wind_farm_power_tracking_florisstandin/readme.txt create mode 100644 examples/wind_farm_power_tracking_florisstandin/wind_power_reference_data.csv create mode 100644 whoc/controllers/wind_farm_power_tracking_controller.py rename whoc/interfaces/{hercules_actuator_disk_yaw_interface.py => hercules_actuator_disk_interface.py} (70%) diff --git a/.gitignore b/.gitignore index 89ca8c7e..a6f401e1 100644 --- a/.gitignore +++ b/.gitignore @@ -10,9 +10,14 @@ slices # Data files *.csv *.log -examples/*/logstandin -examples/*/loghercules -examples/*/logfloris +examples/*/logstandin* +examples/*/loghercules* +examples/*/logfloris* + +# Exceptions +!examples/lookup-based_wake_steering_florisstandin/amr_standin_data.csv +!examples/wind_farm_power_tracking_florisstandin/amr_standin_data.csv +!examples/wind_farm_power_tracking_florisstandin/wind_power_reference_data.csv # macOS files .DS_Store diff --git a/docs/controllers.md b/docs/controllers.md index 9bbc4f33..5996b2ab 100644 --- a/docs/controllers.md +++ b/docs/controllers.md @@ -12,7 +12,7 @@ method of `ControllerBase`. ### LookupBasedWakeSteeringController Yaw controller that implements wake steering based on a lookup table. -Requires a df_opt object produced by a FLORIS yaw optimization routine. See example +Requires a `df_opt` object produced by a FLORIS yaw optimization routine. See example lookup-based_wake_steering_florisstandin for example usage. Currently, yaw angles are set based purely on the (local turbine) wind direction. The lookup table @@ -20,7 +20,31 @@ is sampled at a hardcoded wind speed of 8 m/s. This will be updated in future wh developed for a simulator that provides wind turbine wind speeds also. ### WakeSteeringROSCOStandin -May be combined into a universal simple wake steeringcontroller. +Not yet developed. May be combined into a universal simple LookupBasedWakeSteeringController. -### HerculesWindBatteryController -TO WRITE +### WindBatteryController +Placeholder for a controller that manages both a wind power plant and colocated +battery. + +### WindFarmPowerDistributingController + +Wind farm-level power controller that simply distributes a farm-level power +reference between wind turbines evenly, without checking whether turbines are +able to produce power at the requested level. Not expected to perform well when +wind turbines are waked or cannot produce the desired power for other reasons. +However, is a useful comparison case for the WindFarmPowerTrackingController +(described below). + +### WindFarmPowerTrackingController + +Closed-loop wind farm-level power controller that distributes a farm-level +power reference among the wind turbines in a farm and adjusts the requests made +from each turbine depending on whether the power reference has been met. +Developed under the [A2e2g project](https://github.com/NREL/a2e2g), with +further details provided in +[Sinner et al.](https://pubs.aip.org/aip/jrse/article/15/5/053304/2913100). + +Integral action, as well as gain scheduling based on turbine saturation, has been disabled as +simple proportional control appears sufficient currently. However, these may be enabled at a +later date if needed. The `proportional_gain` for the controller may be provided on instantiation, +and defaults to `proportional_gain = 1`. diff --git a/docs/examples.md b/docs/examples.md index 119217a4..1124ea06 100644 --- a/docs/examples.md +++ b/docs/examples.md @@ -6,7 +6,7 @@ of certain controllers and interfaces. ### lookup-based_wake_steering_florisstandin 2-turbine example of lookup-based wake steering control, run using Hercules with the FLORIS standin in place of AMR-Wind for exposition purposes. To run this example, navigate to the -examples/lookup-based_wake_steering_florisstandin and then run the following. +examples/lookup-based_wake_steering_florisstandin folder and then run the following. ``` python construct_yaw_offsets.py ``` @@ -32,4 +32,20 @@ python plot_output_data.py This should produce the following plot. ![Results of lookup-based_wake_steering_florisstandin example]( graphics/lookup-table-example-plot.png +) + +## wind_farm_power_tracking_florisstandin +2-turbine example of wind-farm-level power reference tracking, run using Hercules with the FLORIS +standin in place of AMR-Wind for exposition purposes. To run this example, navigate to the +examples/wind_farm_power_tracking_florisstandin folder and run the following: +``` +./bash_script.sh +``` + +This will run both a closed-loop controller, which compensates for underproduction at individual +turbines, and an open-loop controller, which simply distributes the farm-wide reference evenly +amongst the turbines of the farm without feedback. The resulting trajectories are plotted, +producing: +![Results of wind_farm_power_tracking_florisstandin example]( + graphics/wf-power-tracking-plot.png ) \ No newline at end of file diff --git a/docs/graphics/wf-power-tracking-plot.png b/docs/graphics/wf-power-tracking-plot.png new file mode 100644 index 0000000000000000000000000000000000000000..fb75bc81c44c07fe562f4826b43e764f921428b4 GIT binary patch literal 179190 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 0 +time.cfl = 0.95 # CFL factor + +#¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨# +# INPUT AND OUTPUT # +#.......................................# +time.plot_interval = 3600 # Steps between plot files +time.checkpoint_interval = 3600 # Steps between checkpoint files +io.restart_file = "/projects/ssc/amr_precursors/b_abl_neutral_lowTI_redo/chk14400" + +#¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨# +# PHYSICS # +#.......................................# +incflo.gravity = 0. 0. -9.81 # Gravitational force (3D) +incflo.density = 1.0 # Reference density + +incflo.use_godunov = 1 +incflo.godunov_type = weno_z +incflo.diffusion_type = 1 +transport.viscosity = 1.0e-5 +transport.laminar_prandtl = 0.7 +transport.turbulent_prandtl = 0.3333 +turbulence.model = OneEqKsgsM84 + +incflo.physics = ABL Actuator +ICNS.source_terms = BoussinesqBuoyancy CoriolisForcing ABLMeanBoussinesq ActuatorForcing +TKE.source_terms = KsgsM84Src +BoussinesqBuoyancy.reference_temperature = 300.0 +CoriolisForcing.latitude = 41.3 +ABLForcing.abl_forcing_height = 90 +incflo.velocity = 6.928203230275509 4.0 0.0 + + +# Atmospheric boundary layer +ABL.temperature_heights = 0.0 700.0 800.0 1280.0 +ABL.temperature_values = 300.0 300.0 308.0 309.44 +ABL.reference_temperature = 300.0 +ABL.kappa = .40 +ABL.surface_roughness_z0 = 1.0E-4 +ABL.Uperiods = 25.0 +ABL.Vperiods = 25.0 +ABL.cutoff_height = 50.0 +ABL.deltaU = 1.0 +ABL.deltaV = 1.0 +ABL.normal_direction = 2 +ABL.perturb_ref_height = 50.0 +ABL.perturb_temperature = false +ABL.perturb_velocity = true +ABL.stats_output_format = netcdf +ABL.stats_output_frequency = 1 +ABL.surface_temp_flux = 0.00 +ABL.wall_shear_stress_type = "Moeng" + +ABL.bndry_file = "/projects/ssc/amr_precursors/b_abl_neutral_lowTI_redo/bndry_files" +ABL.bndry_io_mode = 1 +ABL.bndry_planes = ylo xlo # I'm (Paul) adding this but not sure if I have to +ABL.bndry_var_names = velocity temperature tke + + +# Output boundary files +ABL.bndry_planes = ylo xlo +ABL.bndry_output_start_time = 7200.0 +ABL.bndry_var_names = velocity temperature tke +ABL.bndry_output_format = native +ABL.stats_output_frequency = 1 +ABL.stats_output_format = netcdf + +# Whether to use helics +helics.activated = true +helics.broker_port = 32000 + +#¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨# +# ADAPTIVE MESH REFINEMENT # +#.......................................# +amr.n_cell = 512 512 128 # Grid cells at coarsest AMRlevel +amr.max_level = 0 # Max AMR level in hierarchy + +#¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨# +# GEOMETRY # +#.......................................# +geometry.prob_lo = 0. 0. 0. # Lo corner coordinates +geometry.prob_hi = 5120. 5120. 1280. # Hi corner coordinates +geometry.is_periodic = 0 0 0 +xlo.type = "mass_inflow" +xlo.density = 1.0 +xlo.temperature = 0.0 # value required but ignored +xlo.tke = 0.0 +xhi.type = "pressure_outflow" + +ylo.type = "mass_inflow" +ylo.density = 1.0 +ylo.temperature = 0.0 +ylo.tke = 0.0 +yhi.type = "pressure_outflow" + +# Boundary conditions +zlo.type = "wall_model" +zlo.tke_type = "zero_gradient" + +zhi.type = "slip_wall" +zhi.temperature_type = "fixed_gradient" +zhi.temperature = 0.003 # tracer is used to specify potential temperature gradient + +#¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨# +# VERBOSITY # +#.......................................# +incflo.verbose = 0 # incflo_level + + + +#¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨# +# SAMPLING # +#.......................................# +incflo.post_processing = samplingPlane samplingLine + +samplingPlane.output_frequency = 600 +samplingPlane.labels = z_plane +samplingPlane.fields = velocity temperature +samplingPlane.z_plane.type = PlaneSampler +samplingPlane.z_plane.axis1 = 5110 0.0 0.0 +samplingPlane.z_plane.axis2 = 0.0 5110 0.0 +samplingPlane.z_plane.origin = 5.0 5.0 0.0 +samplingPlane.z_plane.num_points = 512 512 +samplingPlane.z_plane.normal = 0.0 0.0 1.0 +samplingPlane.z_plane.offsets = 5.0 85.0 155.0 255.0 + + +samplingLine.output_frequency = 1 +samplingLine.labels = z_line +samplingLine.fields = velocity temperature +samplingLine.z_line.type = LineSampler +samplingLine.z_line.num_points = 128 +samplingLine.z_line.start = 5.0 5.0 5.0 +samplingLine.z_line.end = 5.0 5.0 1275.0 + +#¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨# +# TURBINES # +#.......................................# + +Actuator.type = UniformCtDisk +Actuator.UniformCtDisk.rotor_diameter = 126.0 +Actuator.UniformCtDisk.hub_height = 90.0 +Actuator.UniformCtDisk.thrust_coeff = 0.0 0.0 1.132034888 0.999470963 0.917697381 0.860849503 0.815371198 0.811614904 0.807939328 0.80443352 0.800993851 0.79768116 0.794529244 0.791495834 0.788560434 0.787217182 0.787127977 0.785839257 0.783812219 0.783568108 0.783328285 0.781194418 0.777292539 0.773464375 0.769690236 0.766001924 0.762348072 0.758760824 0.755242872 0.751792927 0.748434131 0.745113997 0.717806682 0.672204789 0.63831272 0.610176496 0.585456847 0.563222111 0.542912273 0.399312061 0.310517829 0.248633226 0.203543725 0.169616419 0.143478955 0.122938861 0.106515296 0.093026095 0.081648606 0.072197368 0.064388275 0.057782745 0.0 0.0 +Actuator.UniformCtDisk.wind_speed = 0.0 2.9 3.0 4.0 5.0 6.0 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 9.0 10.0 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 11.0 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 25.1 50.0 +Actuator.UniformCtDisk.epsilon = 10.0 +Actuator.UniformCtDisk.density = 1.225 +Actuator.UniformCtDisk.diameters_to_sample = 1.0 +Actuator.UniformCtDisk.num_points_r = 20 +Actuator.UniformCtDisk.num_points_t = 5 + + +Actuator.labels = T00 T01 +Actuator.T00.base_position = 0.0 0.0 0.0 +Actuator.T01.base_position = 1000.0 0.0 0.0 diff --git a/examples/wind_farm_power_tracking_florisstandin/amr_standin_data.csv b/examples/wind_farm_power_tracking_florisstandin/amr_standin_data.csv new file mode 100644 index 00000000..20c2bd53 --- /dev/null +++ b/examples/wind_farm_power_tracking_florisstandin/amr_standin_data.csv @@ -0,0 +1,201 @@ +,time,amr_wind_speed,amr_wind_direction +0,0.0,8.0,270.0 +1,0.5,8.0,270.0 +2,1.0,8.0,270.0 +3,1.5,8.0,270.0 +4,2.0,8.0,270.0 +5,2.5,8.0,270.0 +6,3.0,8.0,270.0 +7,3.5,8.0,270.0 +8,4.0,8.0,270.0 +9,4.5,8.0,270.0 +10,5.0,8.0,270.0 +11,5.5,8.0,270.0 +12,6.0,8.0,270.0 +13,6.5,8.0,270.0 +14,7.0,8.0,270.0 +15,7.5,8.0,270.0 +16,8.0,8.0,270.0 +17,8.5,8.0,270.0 +18,9.0,8.0,270.0 +19,9.5,8.0,270.0 +20,10.0,8.0,270.0 +21,10.5,8.0,270.0 +22,11.0,8.0,270.0 +23,11.5,8.0,270.0 +24,12.0,8.0,270.0 +25,12.5,8.0,270.0 +26,13.0,8.0,270.0 +27,13.5,8.0,270.0 +28,14.0,8.0,270.0 +29,14.5,8.0,270.0 +30,15.0,8.0,270.0 +31,15.5,8.0,270.0 +32,16.0,8.0,270.0 +33,16.5,8.0,270.0 +34,17.0,8.0,270.0 +35,17.5,8.0,270.0 +36,18.0,8.0,270.0 +37,18.5,8.0,270.0 +38,19.0,8.0,270.0 +39,19.5,8.0,270.0 +40,20.0,8.0,270.0 +41,20.5,8.0,270.0 +42,21.0,8.0,270.0 +43,21.5,8.0,270.0 +44,22.0,8.0,270.0 +45,22.5,8.0,270.0 +46,23.0,8.0,270.0 +47,23.5,8.0,270.0 +48,24.0,8.0,270.0 +49,24.5,8.0,270.0 +50,25.0,8.0,270.0 +51,25.5,8.0,270.0 +52,26.0,8.0,270.0 +53,26.5,8.0,270.0 +54,27.0,8.0,270.0 +55,27.5,8.0,270.0 +56,28.0,8.0,270.0 +57,28.5,8.0,270.0 +58,29.0,8.0,270.0 +59,29.5,8.0,270.0 +60,30.0,8.0,270.0 +61,30.5,8.0,270.0 +62,31.0,8.0,270.0 +63,31.5,8.0,270.0 +64,32.0,8.0,270.0 +65,32.5,8.0,270.0 +66,33.0,8.0,270.0 +67,33.5,8.0,270.0 +68,34.0,8.0,270.0 +69,34.5,8.0,270.0 +70,35.0,8.0,270.0 +71,35.5,8.0,270.0 +72,36.0,8.0,270.0 +73,36.5,8.0,270.0 +74,37.0,8.0,270.0 +75,37.5,8.0,270.0 +76,38.0,8.0,270.0 +77,38.5,8.0,270.0 +78,39.0,8.0,270.0 +79,39.5,8.0,270.0 +80,40.0,8.0,270.0 +81,40.5,8.0,270.0 +82,41.0,8.0,270.0 +83,41.5,8.0,270.0 +84,42.0,8.0,270.0 +85,42.5,8.0,270.0 +86,43.0,8.0,270.0 +87,43.5,8.0,270.0 +88,44.0,8.0,270.0 +89,44.5,8.0,270.0 +90,45.0,8.0,270.0 +91,45.5,8.0,270.0 +92,46.0,8.0,270.0 +93,46.5,8.0,270.0 +94,47.0,8.0,270.0 +95,47.5,8.0,270.0 +96,48.0,8.0,270.0 +97,48.5,8.0,270.0 +98,49.0,8.0,270.0 +99,49.5,8.0,270.0 +100,50.0,8.0,270.0 +101,50.5,8.0,270.0 +102,51.0,8.0,270.0 +103,51.5,8.0,270.0 +104,52.0,8.0,270.0 +105,52.5,8.0,270.0 +106,53.0,8.0,270.0 +107,53.5,8.0,270.0 +108,54.0,8.0,270.0 +109,54.5,8.0,270.0 +110,55.0,8.0,270.0 +111,55.5,8.0,270.0 +112,56.0,8.0,270.0 +113,56.5,8.0,270.0 +114,57.0,8.0,270.0 +115,57.5,8.0,270.0 +116,58.0,8.0,270.0 +117,58.5,8.0,270.0 +118,59.0,8.0,270.0 +119,59.5,8.0,270.0 +120,60.0,8.0,270.0 +121,60.5,8.0,270.0 +122,61.0,8.0,270.0 +123,61.5,8.0,270.0 +124,62.0,8.0,270.0 +125,62.5,8.0,270.0 +126,63.0,8.0,270.0 +127,63.5,8.0,270.0 +128,64.0,8.0,270.0 +129,64.5,8.0,270.0 +130,65.0,8.0,270.0 +131,65.5,8.0,270.0 +132,66.0,8.0,270.0 +133,66.5,8.0,270.0 +134,67.0,8.0,270.0 +135,67.5,8.0,270.0 +136,68.0,8.0,270.0 +137,68.5,8.0,270.0 +138,69.0,8.0,270.0 +139,69.5,8.0,270.0 +140,70.0,8.0,270.0 +141,70.5,8.0,270.0 +142,71.0,8.0,270.0 +143,71.5,8.0,270.0 +144,72.0,8.0,270.0 +145,72.5,8.0,270.0 +146,73.0,8.0,270.0 +147,73.5,8.0,270.0 +148,74.0,8.0,270.0 +149,74.5,8.0,270.0 +150,75.0,8.0,270.0 +151,75.5,8.0,270.0 +152,76.0,8.0,270.0 +153,76.5,8.0,270.0 +154,77.0,8.0,270.0 +155,77.5,8.0,270.0 +156,78.0,8.0,270.0 +157,78.5,8.0,270.0 +158,79.0,8.0,270.0 +159,79.5,8.0,270.0 +160,80.0,8.0,270.0 +161,80.5,8.0,270.0 +162,81.0,8.0,270.0 +163,81.5,8.0,270.0 +164,82.0,8.0,270.0 +165,82.5,8.0,270.0 +166,83.0,8.0,270.0 +167,83.5,8.0,270.0 +168,84.0,8.0,270.0 +169,84.5,8.0,270.0 +170,85.0,8.0,270.0 +171,85.5,8.0,270.0 +172,86.0,8.0,270.0 +173,86.5,8.0,270.0 +174,87.0,8.0,270.0 +175,87.5,8.0,270.0 +176,88.0,8.0,270.0 +177,88.5,8.0,270.0 +178,89.0,8.0,270.0 +179,89.5,8.0,270.0 +180,90.0,8.0,270.0 +181,90.5,8.0,270.0 +182,91.0,8.0,270.0 +183,91.5,8.0,270.0 +184,92.0,8.0,270.0 +185,92.5,8.0,270.0 +186,93.0,8.0,270.0 +187,93.5,8.0,270.0 +188,94.0,8.0,270.0 +189,94.5,8.0,270.0 +190,95.0,8.0,270.0 +191,95.5,8.0,270.0 +192,96.0,8.0,270.0 +193,96.5,8.0,270.0 +194,97.0,8.0,270.0 +195,97.5,8.0,270.0 +196,98.0,8.0,270.0 +197,98.5,8.0,270.0 +198,99.0,8.0,270.0 +199,99.5,8.0,270.0 diff --git a/examples/wind_farm_power_tracking_florisstandin/bash_script.sh b/examples/wind_farm_power_tracking_florisstandin/bash_script.sh new file mode 100755 index 00000000..89211499 --- /dev/null +++ b/examples/wind_farm_power_tracking_florisstandin/bash_script.sh @@ -0,0 +1,26 @@ +# Example bash for running things locally +# I just run these one at a t time + +# A lot of modules and conda stuff +conda activate hercules + +# Set the helics port to use: +export HELICS_PORT=32000 + +#make sure you use the same port number in the amr_input.inp and hercules_input_000.yaml files. + +# Clear old log files for clarity +rm loghercules_ol logfloris_ol loghercules_cl logfloris_cl + +# Set up the helics broker and run the open-loop control simulation +helics_broker -t zmq -f 2 --loglevel="debug" --local_port=$HELICS_PORT & +python3 hercules_runscript_OLcontrol.py hercules_input_000.yaml >> loghercules_ol 2>&1 & +python3 floris_runscript.py amr_input.inp amr_standin_data.csv >> logfloris_ol 2>&1 + +# Wait for the open-loop control simulation to finish and then run the closed-loop simulation +helics_broker -t zmq -f 2 --loglevel="debug" --local_port=$HELICS_PORT & +python3 hercules_runscript_CLcontrol.py hercules_input_000.yaml >> loghercules_cl 2>&1 & +python3 floris_runscript.py amr_input.inp amr_standin_data.csv >> logfloris_cl 2>&1 + +# Plot the outputs +python3 plot_output_data.py diff --git a/examples/wind_farm_power_tracking_florisstandin/floris_runscript.py b/examples/wind_farm_power_tracking_florisstandin/floris_runscript.py new file mode 100644 index 00000000..5a43afb5 --- /dev/null +++ b/examples/wind_farm_power_tracking_florisstandin/floris_runscript.py @@ -0,0 +1,19 @@ +import sys + +from hercules.floris_standin import launch_floris + +# Check that one command line argument was given +if len(sys.argv) < 2: + raise Exception("Usage: python floris_runscript.py ") + +# # Get the first command line argument +# This is the name of the file to read +amr_input_file = sys.argv[1] +print(f"Running FLORIS standin with input file: {amr_input_file}") +if len(sys.argv) > 2: + amr_standin_data_file = sys.argv[2] + print(f"Using standin data for AMR-Wind from file: {amr_standin_data_file}") +else: + amr_standin_data_file = None + +launch_floris(amr_input_file, amr_standin_data_file) diff --git a/examples/wind_farm_power_tracking_florisstandin/hercules_input_000.yaml b/examples/wind_farm_power_tracking_florisstandin/hercules_input_000.yaml new file mode 100644 index 00000000..a1ce7c67 --- /dev/null +++ b/examples/wind_farm_power_tracking_florisstandin/hercules_input_000.yaml @@ -0,0 +1,67 @@ +# Input YAML for emy_python + +# Name +name: example_000 + +### +# Describe this emulator setup +description: Just a solar plant + +dt: 0.5 + +hercules_comms: + + amr_wind: + + wind_farm_0: + type: amr_wind_local #options are amr_wind or amr_wind_local + amr_wind_input_file: amr_input.inp + yaw_simulator_name: yaw_system_0 # can also use "none" (without quotes) + + helics: + + config: + name: hercules # What is the purpose of this name + use_dash_frontend: False + KAFKA: False + KAFKA_topics: EMUV1py + helics: + # deltat: 1 # This will be assigned in software + subscription_topics: [status] + publication_topics: [control] + endpoints: [] + helicsport : 32000 + publication_interval: 1 + endpoint_interval: 1 + starttime: 0 + stoptime: 100 + + Agent: ControlCenter + +py_sims: + + solar_farm_0: # The name of py_sim object 1 + + py_sim_type: SimpleSolar + capacity: 50 # MW + efficiency: 0.5 #Fraction + + initial_conditions: + + power: 25 # MW + irradiance: 1000 + +controller: + + controller_type: SimpleYawController # This may not be needed + num_turbines: 2 # Should match AMR-Wind! Ideally, would come from AMR-wind + initial_conditions: + yaw: 270. # degrees (same for all turbines) (will this work?) + +external_data_file: wind_power_reference_data.csv + + + + + + diff --git a/examples/wind_farm_power_tracking_florisstandin/hercules_runscript_CLcontrol.py b/examples/wind_farm_power_tracking_florisstandin/hercules_runscript_CLcontrol.py new file mode 100644 index 00000000..c5586e93 --- /dev/null +++ b/examples/wind_farm_power_tracking_florisstandin/hercules_runscript_CLcontrol.py @@ -0,0 +1,37 @@ +# Copyright 2021 NREL + +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. + +# See https://nrel.github.io/wind-hybrid-open-controller for documentation + +import sys + +from hercules.emulator import Emulator +from hercules.py_sims import PySims +from hercules.utilities import load_yaml +from whoc.controllers.wind_farm_power_tracking_controller import WindFarmPowerTrackingController +from whoc.interfaces.hercules_actuator_disk_interface import HerculesADInterface + +input_dict = load_yaml(sys.argv[1]) +input_dict["output_file"] = "hercules_output_cl.csv" + +interface = HerculesADInterface(input_dict) + +print("Running closed-loop controller...") +controller = WindFarmPowerTrackingController(interface, input_dict) + +py_sims = PySims(input_dict) + +emulator = Emulator(controller, py_sims, input_dict) +emulator.run_helics_setup() +emulator.enter_execution(function_targets=[], function_arguments=[[]]) + +print("Finished running closed-loop controller.") \ No newline at end of file diff --git a/examples/wind_farm_power_tracking_florisstandin/hercules_runscript_OLcontrol.py b/examples/wind_farm_power_tracking_florisstandin/hercules_runscript_OLcontrol.py new file mode 100644 index 00000000..99658fe0 --- /dev/null +++ b/examples/wind_farm_power_tracking_florisstandin/hercules_runscript_OLcontrol.py @@ -0,0 +1,37 @@ +# Copyright 2021 NREL + +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. + +# See https://nrel.github.io/wind-hybrid-open-controller for documentation + +import sys + +from hercules.emulator import Emulator +from hercules.py_sims import PySims +from hercules.utilities import load_yaml +from whoc.controllers.wind_farm_power_tracking_controller import WindFarmPowerDistributingController +from whoc.interfaces.hercules_actuator_disk_interface import HerculesADInterface + +input_dict = load_yaml(sys.argv[1]) +input_dict["output_file"] = "hercules_output_ol.csv" + +interface = HerculesADInterface(input_dict) + +print("Running open-loop controller...") +controller = WindFarmPowerDistributingController(interface, input_dict) + +py_sims = PySims(input_dict) + +emulator = Emulator(controller, py_sims, input_dict) +emulator.run_helics_setup() +emulator.enter_execution(function_targets=[], function_arguments=[[]]) + +print("Finished running open-loop controller.") diff --git a/examples/wind_farm_power_tracking_florisstandin/plot_output_data.py b/examples/wind_farm_power_tracking_florisstandin/plot_output_data.py new file mode 100644 index 00000000..740b57fc --- /dev/null +++ b/examples/wind_farm_power_tracking_florisstandin/plot_output_data.py @@ -0,0 +1,55 @@ +import matplotlib.pyplot as plt +import pandas as pd + +dfs = [pd.read_csv("hercules_output_ol.csv"), pd.read_csv("hercules_output_cl.csv")] +labels = ["Open-loop control", "Closed-loop control"] + +n_turbines = 2 +wf_str = "hercules_comms.amr_wind.wind_farm_0." +pow_cols = [wf_str+"turbine_powers.{0:03d}".format(t) for t in range(n_turbines)] +wd_cols = [wf_str+"turbine_wind_directions.{0:03d}".format(t) for t in range(n_turbines)] +yaw_cols = [wf_str+"turbine_yaw_angles.{0:03d}".format(t) for t in range(n_turbines)] +ref_col = "external_signals.wind_power_reference" + +# Create plots +fig, ax = plt.subplots(2, 1, sharex=True, sharey=True) +fig.set_size_inches(10, 5) + +for case, (df, label) in enumerate(zip(dfs, labels)): + # Extract data from larger array + time = df['time'].to_numpy() + powers = df[pow_cols].to_numpy() + wds = df[wd_cols].to_numpy() + yaws = df[yaw_cols].to_numpy() + ref = df[ref_col].to_numpy() + + # Direction + for t in range(n_turbines): + if t == 0: + line = ax[case].fill_between(time, powers[:,t], label="T{0:03d} power".format(t)) + else: + ax[case].fill_between(time, powers[:,:t+1].sum(axis=1), powers[:,:t].sum(axis=1), + label="T{0:03d} power".format(t)) + ax[case].plot(time, powers.sum(axis=1), color="black", label="Farm power") + ax[case].plot(time, ref, color="gray", linestyle="dashed", label="Ref. power") + + # Plot aesthetics + ax[case].grid() + ax[case].set_title(label) + ax[case].set_ylabel("Power [kW]") +ax[0].set_xlim([time[0], time[-1]]) +ax[0].legend(loc="lower left") +ax[1].set_xlabel("Time [s]") + +# fig.savefig("../../docs/graphics/wf-power-tracking-plot.png", dpi=300, format="png") + +# In this example, the wind turbines are aligned with the oncoming wind, so T000 wakes T001. +# The farm power setpoint more than available to begin, so both +# turbines are at max power. Between 10s and 20s, the setpoint ramps down to 3000kW; the open-loop +# controller asks each turbine for 1500kW, but only the upstream turbine is able to meet the demand, +# so the total farm power is below the setpoint. The closed-loop controller is able to adjust the +# power of T000 to compensate for T001's underperformance, and the farm power tracks the setpoint. +# When the setpoint shifts to 2000kW, there is sufficient resource for T001 to produce 1000kW, and +# both controllers meet the setpoint. + +plt.show() \ No newline at end of file diff --git a/examples/wind_farm_power_tracking_florisstandin/readme.txt b/examples/wind_farm_power_tracking_florisstandin/readme.txt new file mode 100644 index 00000000..3e2cc742 --- /dev/null +++ b/examples/wind_farm_power_tracking_florisstandin/readme.txt @@ -0,0 +1,4 @@ +This example runs a wind farm level power tracking controller, using FLORIS as a simulation +testbed rather than AMR-Wind. The control algorithm is based on the A2e2g project. +To run the example, run bash_script.sh. This will run both an open loop and closed loop power +tracking controller, and generate a comparison of their outputs as a plot. diff --git a/examples/wind_farm_power_tracking_florisstandin/wind_power_reference_data.csv b/examples/wind_farm_power_tracking_florisstandin/wind_power_reference_data.csv new file mode 100644 index 00000000..5472901a --- /dev/null +++ b/examples/wind_farm_power_tracking_florisstandin/wind_power_reference_data.csv @@ -0,0 +1,12 @@ +time,wind_power_reference +0.0,4000.0 +10.0,4000.0 +20.0,3000.0 +30.0,3000.0 +39.0,3000.0 +40.0,2000.0 +50.0,2000.0 +59.0,2000.0 +60.0,3000.0 +70.0,3000.0 +80.0,4000.0 \ No newline at end of file diff --git a/tests/controller_library_test.py b/tests/controller_library_test.py index 4235f2ae..ccdb712d 100644 --- a/tests/controller_library_test.py +++ b/tests/controller_library_test.py @@ -16,8 +16,11 @@ from whoc.controllers import ( LookupBasedWakeSteeringController, WindBatteryController, + WindFarmPowerDistributingController, + WindFarmPowerTrackingController, ) -from whoc.interfaces import HerculesADYawInterface, HerculesWindBatteryInterface +from whoc.controllers.wind_farm_power_tracking_controller import POWER_SETPOINT_DEFAULT +from whoc.interfaces import HerculesADInterface, HerculesWindBatteryInterface from whoc.interfaces.interface_base import InterfaceBase @@ -52,6 +55,7 @@ def send_controls(self): } }, "py_sims": {"test_battery": {"outputs": 10.0}}, + "external_signals": {"wind_power_reference": 1000.0}, } @@ -64,10 +68,12 @@ def test_controller_instantiation(): _ = LookupBasedWakeSteeringController(interface=test_interface, input_dict=test_hercules_dict) _ = WindBatteryController(interface=test_interface, input_dict=test_hercules_dict) + _ = WindFarmPowerDistributingController(interface=test_interface, input_dict=test_hercules_dict) + _ = WindFarmPowerTrackingController(interface=test_interface, input_dict=test_hercules_dict) def test_LookupBasedWakeSteeringController(): - test_interface = HerculesADYawInterface(test_hercules_dict) + test_interface = HerculesADInterface(test_hercules_dict) # No lookup table passed; simply passes through wind direction to yaw angles test_controller = LookupBasedWakeSteeringController( @@ -112,7 +118,6 @@ def test_LookupBasedWakeSteeringController(): assert np.allclose(test_angles, wind_directions - test_offsets) def test_WindBatteryController(): - # TODO: possibly clean up HerculesWindBatteryController class test_interface = HerculesWindBatteryInterface(test_hercules_dict) test_controller = WindBatteryController(test_interface, test_hercules_dict) @@ -140,6 +145,82 @@ def test_WindBatteryController(): hercules_dict_out = test_controller.step(test_hercules_dict) assert hercules_dict_out["setpoints"]["battery"]["signal"] == -500 +def test_WindFarmPowerDistributingController(): + test_interface = HerculesADInterface(test_hercules_dict) - + test_controller = WindFarmPowerDistributingController( + interface=test_interface, + input_dict=test_hercules_dict + ) + + # Default behavior when no power reference is given + test_hercules_dict["time"] = 20 + test_hercules_dict["external_signals"] = {} + test_hercules_dict_out = test_controller.step(hercules_dict=test_hercules_dict) + test_power_setpoints = np.array( + test_hercules_dict_out["hercules_comms"]["amr_wind"]["test_farm"]["turbine_power_setpoints"] + ) + assert np.allclose( + test_power_setpoints, + POWER_SETPOINT_DEFAULT/test_hercules_dict["controller"]["num_turbines"] + ) + + # Test with power reference + test_hercules_dict["external_signals"]["wind_power_reference"] = 1000 + test_hercules_dict_out = test_controller.step(hercules_dict=test_hercules_dict) + test_power_setpoints = np.array( + test_hercules_dict_out["hercules_comms"]["amr_wind"]["test_farm"]["turbine_power_setpoints"] + ) + assert np.allclose(test_power_setpoints, 500) +def test_WindFarmPowerTrackingController(): + test_interface = HerculesADInterface(test_hercules_dict) + + test_controller = WindFarmPowerTrackingController( + interface=test_interface, + input_dict=test_hercules_dict + ) + + # Test no change to power setpoints if producing desired power + test_hercules_dict["external_signals"]["wind_power_reference"] = 1000 + test_hercules_dict["hercules_comms"]["amr_wind"]["test_farm"]["turbine_powers"] = [500, 500] + test_hercules_dict_out = test_controller.step(hercules_dict=test_hercules_dict) + test_power_setpoints = np.array( + test_hercules_dict_out["hercules_comms"]["amr_wind"]["test_farm"]["turbine_power_setpoints"] + ) + assert np.allclose(test_power_setpoints, 500) + + # Test if power exceeds farm reference, power setpoints are reduced + test_hercules_dict["hercules_comms"]["amr_wind"]["test_farm"]["turbine_powers"] = [600, 600] + test_hercules_dict_out = test_controller.step(hercules_dict=test_hercules_dict) + test_power_setpoints = np.array( + test_hercules_dict_out["hercules_comms"]["amr_wind"]["test_farm"]["turbine_power_setpoints"] + ) + assert ( + test_power_setpoints + <= test_hercules_dict["hercules_comms"]["amr_wind"]["test_farm"]["turbine_powers"] + ).all() + + # Test if power is less than farm reference, power setpoints are increased + test_hercules_dict["hercules_comms"]["amr_wind"]["test_farm"]["turbine_powers"] = [550, 400] + test_hercules_dict_out = test_controller.step(hercules_dict=test_hercules_dict) + test_power_setpoints = np.array( + test_hercules_dict_out["hercules_comms"]["amr_wind"]["test_farm"]["turbine_power_setpoints"] + ) + assert ( + test_power_setpoints + >= test_hercules_dict["hercules_comms"]["amr_wind"]["test_farm"]["turbine_powers"] + ).all() + + # Test that more aggressive control leads to faster response + test_controller = WindFarmPowerTrackingController( + interface=test_interface, + input_dict=test_hercules_dict, + proportional_gain=2 + ) + test_hercules_dict["hercules_comms"]["amr_wind"]["test_farm"]["turbine_powers"] = [600, 600] + test_hercules_dict_out = test_controller.step(hercules_dict=test_hercules_dict) + test_power_setpoints_a = np.array( + test_hercules_dict_out["hercules_comms"]["amr_wind"]["test_farm"]["turbine_power_setpoints"] + ) + assert (test_power_setpoints_a < test_power_setpoints).all() diff --git a/tests/interface_library_test.py b/tests/interface_library_test.py index b5622019..a0bdf860 100644 --- a/tests/interface_library_test.py +++ b/tests/interface_library_test.py @@ -14,7 +14,7 @@ import pytest from whoc.interfaces import ( - HerculesADYawInterface, + HerculesADInterface, HerculesWindBatteryInterface, ) @@ -31,6 +31,7 @@ } }, "py_sims": {"test_battery": {"outputs": 10.0}}, + "external_signals": {"wind_power_reference": 1000.0}, } @@ -40,13 +41,13 @@ def test_interface_instantiation(): each implement the required methods specified by InterfaceBase. """ - _ = HerculesADYawInterface(hercules_dict=test_hercules_dict) + _ = HerculesADInterface(hercules_dict=test_hercules_dict) _ = HerculesWindBatteryInterface(hercules_dict=test_hercules_dict) # _ = ROSCO_ZMQInterface() -def test_HerculesADYawInterface(): - interface = HerculesADYawInterface(hercules_dict=test_hercules_dict) +def test_HerculesADInterface(): + interface = HerculesADInterface(hercules_dict=test_hercules_dict) # Test get_measurements() measurements = interface.get_measurements(hercules_dict=test_hercules_dict) @@ -63,13 +64,19 @@ def test_HerculesADYawInterface(): # Test check_controls() controls_dict = {"yaw_angles": [270.0, 278.9]} - interface.check_controls(controls_dict) # Should not raise an error + controls_dict2 = { + "yaw_angles": [270.0, 268.9], + "power_setpoints": [3000.0, 3000.0], + } + interface.check_controls(controls_dict) + interface.check_controls(controls_dict2) bad_controls_dict1 = {"yaw_angels": [270.0, 268.9]} # Misspelling bad_controls_dict2 = { "yaw_angles": [270.0, 268.9], "power_setpoints": [3000.0, 3000.0], - } # Unavailable control + "unavailable_control": [0.0, 0.0], + } bad_controls_dict3 = {"yaw_angles": [270.0, 268.9, 270.0]} # Mismatched number of turbines with pytest.raises(ValueError): diff --git a/whoc/controllers/__init__.py b/whoc/controllers/__init__.py index 584c73cd..600a43ef 100644 --- a/whoc/controllers/__init__.py +++ b/whoc/controllers/__init__.py @@ -1,3 +1,7 @@ from whoc.controllers.lookup_based_wake_steering_controller import LookupBasedWakeSteeringController from whoc.controllers.wake_steering_rosco_standin import WakeSteeringROSCOStandin from whoc.controllers.wind_battery_controller import WindBatteryController +from whoc.controllers.wind_farm_power_tracking_controller import ( + WindFarmPowerDistributingController, + WindFarmPowerTrackingController, +) diff --git a/whoc/controllers/lookup_based_wake_steering_controller.py b/whoc/controllers/lookup_based_wake_steering_controller.py index d504f2d0..28aec81a 100644 --- a/whoc/controllers/lookup_based_wake_steering_controller.py +++ b/whoc/controllers/lookup_based_wake_steering_controller.py @@ -59,7 +59,7 @@ def wake_steering_angles(self): # Handle possible bad data wind_directions = self.measurements_dict["wind_directions"] wind_speeds = [8.0]*self.n_turbines # TODO: enable extraction of wind speed in Hercules - if not wind_directions: # Recieved empty or None + if not wind_directions: # Received empty or None if self.verbose: print("Bad wind direction measurement received, reverting to previous measurement.") wind_directions = self.wd_store diff --git a/whoc/controllers/wind_farm_power_tracking_controller.py b/whoc/controllers/wind_farm_power_tracking_controller.py new file mode 100644 index 00000000..bd2f00b8 --- /dev/null +++ b/whoc/controllers/wind_farm_power_tracking_controller.py @@ -0,0 +1,143 @@ +# Copyright 2021 NREL + +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. + +# See https://nrel.github.io/wind-hybrid-open-controller for documentation + +import numpy as np + +from whoc.controllers.controller_base import ControllerBase + +# Default power setpoint in kW (meant to ensure power maximization) +POWER_SETPOINT_DEFAULT = 1e9 + +class WindFarmPowerDistributingController(ControllerBase): + """ + Evenly distributes wind farm power reference between turbines without + feedback on current power generation. + """ + def __init__(self, interface, input_dict, verbose=False): + super().__init__(interface, verbose=verbose) + + self.dt = input_dict["dt"] # Won't be needed here, but generally good to have + self.n_turbines = input_dict["controller"]["num_turbines"] + self.turbines = range(self.n_turbines) + + # Set initial conditions + self.controls_dict = {"power_setpoints": [POWER_SETPOINT_DEFAULT] * self.n_turbines} + + # For startup + + + def compute_controls(self): + if "wind_power_reference" in self.measurements_dict: + farm_power_reference = self.measurements_dict["wind_power_reference"] + else: + farm_power_reference = POWER_SETPOINT_DEFAULT + + self.turbine_power_references(farm_power_reference=farm_power_reference) + + def turbine_power_references(self, farm_power_reference=POWER_SETPOINT_DEFAULT): + """ + Compute turbine-level power setpoints based on farm-level power + reference signal. + Inputs: + - farm_power_reference: float, farm-level power reference signal + Outputs: + - None (sets self.controls_dict) + """ + + # Split farm power reference among turbines and set "no value" for yaw angles (Floris not + # compatible with both power_setpoints and yaw_angles). + self.controls_dict = { + "power_setpoints": [farm_power_reference/self.n_turbines]*self.n_turbines, + "yaw_angles": [-1000]*self.n_turbines + } + + return None + +class WindFarmPowerTrackingController(WindFarmPowerDistributingController): + """ + Based on controller developed under A2e2g project. Proportional control only--- + all integral action is disabled. + + Inherits from WindFarmPowerDistributingController. + """ + + def __init__(self, interface, input_dict, proportional_gain=1, verbose=False): + super().__init__(interface, input_dict, verbose=verbose) + + # No integral action for now. beta and omega_n not used. + # beta=0.7 + # omega_n=0.01 + # integral_gain=0 + + self.K_p = proportional_gain * 1/self.n_turbines + # self.K_i = integral_gain *(4*beta*omega_n) + + # Initialize controller (only used for integral action) + # self.e_prev = 0 + # self.u_prev = 0 + # self.u_i_prev = 0 + # self.ai_prev = [0.33]*self.n_turbines # TODO: different method for anti-windup? + # self.n_saturated = 0 + + def turbine_power_references(self, farm_power_reference=POWER_SETPOINT_DEFAULT): + """ + Compute turbine-level power setpoints based on farm-level power + reference signal. + Inputs: + - farm_power_reference: float, farm-level power reference signal + Outputs: + - None (sets self.controls_dict) + """ + + turbine_current_powers = self.measurements_dict["turbine_powers"] + farm_current_power = np.sum(turbine_current_powers) + farm_current_error = farm_power_reference - farm_current_power + + self.n_saturated = 0 # TODO: determine whether to use gain scheduling + if self.n_saturated < self.n_turbines: + # with self.n_saturated = 0, gain_adjustment = 1 + gain_adjustment = self.n_turbines/(self.n_turbines-self.n_saturated) + else: + gain_adjustment = self.n_turbines + K_p_gs = gain_adjustment*self.K_p + #K_i_gs = gain_adjustment*self.K_i + + # Discretize and apply difference equation (trapezoid rule) + u_p = K_p_gs*farm_current_error + #u_i = self.dt/2*K_i_gs * (farm_current_error + self.e_prev) + self.u_i_prev + + # Apply integral anti-windup + #eps = 0.0001 # Threshold for anti-windup + #if (np.array(self.ai_prev) > 1/3-eps).all() or \ + # (np.array(self.ai_prev) < 0+eps).all(): + # u_i = 0 + + u = u_p #+ u_i + delta_P_ref = u + + turbine_power_setpoints = np.array(turbine_current_powers) + delta_P_ref + + # set "no value" for yaw angles (Floris not compatible with both + # power_setpoints and yaw_angles) + self.controls_dict = { + "power_setpoints": list(turbine_power_setpoints), + "yaw_angles": [-1000]*self.n_turbines + } + + # Store error, control (only needed for integral action, which is disabled) + # self.e_prev = farm_current_error + # self.u_prev = u + # self.u_i_prev = u_i + + return None diff --git a/whoc/interfaces/__init__.py b/whoc/interfaces/__init__.py index 8c80dc38..0d7c2f70 100644 --- a/whoc/interfaces/__init__.py +++ b/whoc/interfaces/__init__.py @@ -1,3 +1,3 @@ -from whoc.interfaces.hercules_actuator_disk_yaw_interface import HerculesADYawInterface +from whoc.interfaces.hercules_actuator_disk_interface import HerculesADInterface from whoc.interfaces.hercules_wind_battery_interface import HerculesWindBatteryInterface from whoc.interfaces.rosco_zmq_interface import ROSCO_ZMQInterface diff --git a/whoc/interfaces/hercules_actuator_disk_yaw_interface.py b/whoc/interfaces/hercules_actuator_disk_interface.py similarity index 70% rename from whoc/interfaces/hercules_actuator_disk_yaw_interface.py rename to whoc/interfaces/hercules_actuator_disk_interface.py index 5dd76806..342ff0aa 100644 --- a/whoc/interfaces/hercules_actuator_disk_yaw_interface.py +++ b/whoc/interfaces/hercules_actuator_disk_interface.py @@ -14,10 +14,11 @@ # How will we handle other things here? May need to have a wind farm # version, an electrolyzer version, etc... +from whoc.controllers.wind_farm_power_tracking_controller import POWER_SETPOINT_DEFAULT from whoc.interfaces.interface_base import InterfaceBase -class HerculesADYawInterface(InterfaceBase): +class HerculesADInterface(InterfaceBase): def __init__(self, hercules_dict): super().__init__() @@ -38,20 +39,26 @@ def get_measurements(self, hercules_dict): # ["amr_wind"]\ # [self.wf_name]\ # ["turbine_wind_speeds"] - powers = hercules_dict["hercules_comms"]["amr_wind"][self.wf_name]["turbine_powers"] + turbine_powers = hercules_dict["hercules_comms"]["amr_wind"][self.wf_name]["turbine_powers"] time = hercules_dict["time"] + if "wind_power_reference" in hercules_dict["external_signals"]: + wind_power_reference = hercules_dict["external_signals"]["wind_power_reference"] + else: + wind_power_reference = POWER_SETPOINT_DEFAULT + measurements = { "time": time, "wind_directions": wind_directions, # "wind_speeds":wind_speeds, - "turbine_powers": powers, + "turbine_powers": turbine_powers, + "wind_power_reference": wind_power_reference, } return measurements def check_controls(self, controls_dict): - available_controls = ["yaw_angles"] + available_controls = ["yaw_angles", "power_setpoints"] for k in controls_dict.keys(): if k not in available_controls: @@ -61,10 +68,15 @@ def check_controls(self, controls_dict): "Length of setpoint " + k + " does not match the number of turbines." ) - def send_controls(self, hercules_dict, yaw_angles=None): + def send_controls(self, hercules_dict, yaw_angles=None, power_setpoints=None): if yaw_angles is None: - yaw_angles = [0.0] * self.n_turbines + yaw_angles = [-1000] * self.n_turbines + if power_setpoints is None: + power_setpoints = [POWER_SETPOINT_DEFAULT] * self.n_turbines hercules_dict["hercules_comms"]["amr_wind"][self.wf_name]["turbine_yaw_angles"] = yaw_angles + hercules_dict["hercules_comms"]["amr_wind"][self.wf_name][ + "turbine_power_setpoints" + ] = power_setpoints return hercules_dict