Major Updates:
- Optional inputs: users do not have to set all inputs to ROSCO. Whether an input is optional is determined by the [control flags](https://github.com/NREL/ROSCO/blob/e3b7db779ad9e7bea5dea692e92f52b10116cf02/Test_Cases/IEA-15-240-RWT-UMaineSemi/DISCON-UMaineSemi.IN#L8).
- Cable control: users can control OpenFAST cables in MoorDyn and SubDyn using ROSCO. Open loop and [user-defined control](https://github.com/NREL/ROSCO/blob/e3b7db779ad9e7bea5dea692e92f52b10116cf02/ROSCO/src/Controllers.f90#L695) schemes are available. [`Examples/22_cable_control.py`](https://github.com/NREL/ROSCO/blob/main/Examples/22_cable_control.py) sets up a floating turbine with cable control and applies an open loop mooring control to move the turbine near the (0,0) (surge, sway) location. In the [DISCON](https://github.com/NREL/ROSCO/blob/e3b7db779ad9e7bea5dea692e92f52b10116cf02/Test_Cases/IEA-15-240-RWT-UMaineSemi/DISCON-UMaineSemi.IN#L168) or [tuning yaml](https://github.com/NREL/ROSCO/blob/e3b7db779ad9e7bea5dea692e92f52b10116cf02/Tune_Cases/IEA15MW_cable.yaml#L58), users specify the indices of the cable length control in the avrSWAP; these indices can be found in the ServoDyn summary file.
- Structural control: users can control OpenFAST structural controllers (tuned mass dampers and added forces) via ROSCO. Open loop and [user-defined control](https://github.com/NREL/ROSCO/blob/e3b7db779ad9e7bea5dea692e92f52b10116cf02/ROSCO/src/Controllers.f90#L770) schemes are available. [`Examples/23_structural_control`](https://github.com/NREL/ROSCO/blob/main/Examples/23_structural_control.py) sets up the IEA-15MW semi-submersible floating platform with structural controls as added forces to emulate ballast control for even keel; it relies on the current develop branch of OpenFAST (to be released in v3.5.0) to apply the added force. Users specify the indices to the avrSWAP in the [DISCON](https://github.com/NREL/ROSCO/blob/e3b7db779ad9e7bea5dea692e92f52b10116cf02/Test_Cases/IEA-15-240-RWT-UMaineSemi/DISCON-UMaineSemi.IN#L173) or [tuning yaml](https://github.com/NREL/ROSCO/blob/e3b7db779ad9e7bea5dea692e92f52b10116cf02/Tune_Cases/IEA15MW_ballast.yaml#L58), as specified by the ServoDyn summary file.
- Active wake control: users have two methods, [detailed here](https://github.com/NREL/ROSCO/blob/e3b7db779ad9e7bea5dea692e92f52b10116cf02/Examples/20_active_wake_control.py#L9), for adding pitch offsets, e.g., the helix method, to the collective pitch angle for better wake dissipation. [`Examples/20_active_wake_control.py`](https://github.com/NREL/ROSCO/blob/main/Examples/20_active_wake_control.py) runs several different active wake control modes.
Minor Updates:
- [The NREL 2.8 MW reference turbine](https://github.com/NREL/ROSCO/tree/main/Test_Cases/NREL_2p8_127) has been added to the set of tuned turbine inputs. Pitch control gains were determined using [WEIS control optimization](https://github.com/WISDEM/WEIS/tree/main/examples/02_control_opt) to minimize tower DELs with a constraint on the maximum generator speed in DLC 1.2. IPC is also tuned for this model. [`Examples/12_tune_ipc.py`](https://github.com/NREL/ROSCO/blob/main/Examples/12_tune_ipc.py) was updated to test all the IPC saturation modes.
- File I/O and plotting: an updated [plotting notebook](https://github.com/NREL/ROSCO/blob/main/ROSCO_toolbox/ofTools/fast_io/plot_FAST.ipynb) is available to users. The [`output_processing.py`](https://github.com/NREL/ROSCO/blob/main/ROSCO_toolbox/ofTools/fast_io/output_processing.py) script was parallelized.