We have recently identified an issue with the L02 OC4 semi-sub example, where incorrect linear damping coefficients were used as input to the semi-submersible model.
To explain the problem, the original damping coefficients were referenced from a comparison study against tank test results, documented as part of the Offshore Code Collaboration study OC6 project – Phase I. The coefficients were then calibrated in OrcaFlex, through a series of free-decay tests. Those tests used damping coefficients with force units of newtons (N), however, the example models uses units of kilonewtons (kN). This difference in units was not accounted for as part of the model building process, which led to the transfer of incorrect coefficients to the ‘Other damping’ page of the OrcaFlex vessel type data form.
In light of this mistake, the supporting OrcaWave and OrcaFlex models have been corrected, and the latest version of the example is now available for download from the usual L Diffraction examples page of the Orcina website. For clarity, the correct coefficients are shown below:
This serves as an important reminder that the available published Orcina examples are intended for illustrative purposes, meaning they should be checked for accuracy and modified appropriately to suit the individual needs of an application or project.
We apologise to anyone who might have been inconvenienced by this oversight. Should you need any further clarification, then please do contact us for further details.
We have recently made some updates to our set of wind turbine controller examples, which is now available to download from the new Orcina GitHub page.
The main change is the addition of a native controller wrapper example. This takes the form of a C++ DLL, having the same functionality as the existing Python wrapper. The reason for creating this example is to avoid restrictions imposed by the Global Interpreter Lock (GIL). The GIL is an inherent part of the Python process, and it can be restrictive if using Python (e.g. external functions) whilst using multi-threading to run simulations in parallel.
For example, the OrcaFlex batch processing tool uses multi-threading to run a batch of simulations, but there is only one GIL which acts as a gatekeeper for that process. For any models using Python, this can cause performance bottlenecks when running many simulations in parallel.
As the GIL is inherent to Python, running the simulations using the native (C++) wrapper avoids this restriction altogether. In turn, this has the potential to lead to improved efficiency when running large multi-threaded batches of simulations.
Although the native variant has the benefit of avoiding the GIL, the Python variant still has value. It’s easy to modify if adjustments need to be made, for example if you need to adjust what is passed to and from the swap array. This can still be done for the native variant, but the process is more difficult because it requires modification of the C++ source code and then recompilation of the DLL.
For this reason the C++ source code – used as a basis for the native DLL – can be downloaded from the same GitHub page mentioned above: see the folder Bladed controller wrapper\Native controller\src. The build folder contains both a Microsoft Visual Studio project and a MSYS2 makefile, either of which can be used to compile the DLL. This caters for two common C++ toolchains.
We have also made a couple of other minor adjustments to make the Python and native variants have feature parity. The notable changes are:
Minor changes to how the Python controller wrapper models are set up. Instead of having separate classes named PitchController and TorqueController, there is now a single class named BladedController.
The yaw controller example – offered in earlier revisions of this resource – has been removed for now. We hope to replace this with a new example in the future. In the meantime, the old example can be supplied upon request. Please contact us for further details.
For further details about the latest updates, please see the Bladed controller wrapper section of the accompanying PDF document. Note, the Code drop-down box, at the top of the GitHub page, provides the option to download this entire resource as a zip file.
Wind turbine examples
Lastly, to reflect the latest set of controller examples, the K02 and K03 examples now demonstrate the implementation of the Python wrapper and native wrapper respectively. A summary of the model setup is provided in the Controller modelling section of the PDF description included with each example.
We hope that you will find the latest updates helpful. We always welcome any questions or feedback, so please do contact us for any further enquiries.
We have recently made some updates to the wind turbine resources available on our website.
Firstly, one of our most popular OrcaFlex modelling examples – K03 15MW semi-sub FOWT – has been revised to reflect the latest IEA 15MW reference wind turbine (RWT) design: version 1.1.3. The rotor, nacelle and tower updates have been made possible by the design/model information made available through the IEA-15-240-RWT GitHub repository.
Modelling of the semi-submersible foundation has again been supported by OrcaWave, which we have used to perform a diffraction analysis for the UMaine VolturnUS-S semi-submersible. The platform design basis is documented here and the same report details the mooring specification considered for this example.
As with all of our modelling examples, the accompanying description PDF document provides a summary of the important details, including some discussion about the model build and some important results of interest.
Unsteady aerodynamics (UA)
Since introducing the turbine object, back in 2018, we have been continually working to enhance its capability and the K03 model now supports the latest functionality.
More recently, as part of our OrcaFlex 11.3 release, we introduced two unsteady aerodynamic models: González and Minnema Pierce. Both models are able to account for a range of important unsteady flow phenomena: attached flow, trailing-edge flow separation, dynamic stall, and flow reattachment. These phenomena can be characterised by rapid change, delay, and hysteresis of the aerodynamic load.
The K03 example includes the model input data and settings required to implement either of the UA models. Here, we have chosen to implement the González model to remain consistent with the approach considered as part of our validation study (discussed below).
The K03 example implements the latest version of NREL’s Reference Open Source Controller (ROSCO, v2.6.0), available at the time of writing. Included amongst the K03 example files is the 64-bit version of the ROSCO DLL (libdiscon.dll), downloaded from the ROSCO GitHub repository. Also included is a copy of our controller wrapper, which is available from https://github.com/Orcina-Ltd/turbine-controllers.
ROSCO is configured to call a parameter input file (DISCON-UMaineSemi.IN), listing the required controller parameters, along with a rotor performance file (Cp_Ct_Cq.IEA15MW.txt); both of which have been downloaded from the IEA-15-240-RWT GitHub repository.
Lastly, to support the K03 example development, we have carried out a validation study which compares the aeroelastic response of the 15MW turbine, calculated by OrcaFlex, against that predicted by OpenFAST running BeamDyn.
A report summarising a full comparison of results can be downloaded from the validation page of our website. The study considers the structural dynamics of the turbine blade oscillating freely under gravity and the aeroelastic response of the rotor-nacelle assembly (RNA) and tower to steady, stepped, skewed & turbulent wind.
Overall, we have found the results to be in very close agreement, supporting both the validity of the updated OrcaFlex RWT model and consistency across the two aeroelastic codes. Below are some select results from the validation report.
We hope that the above resources will be helpful to anyone modelling wind turbines in OrcaFlex. We always welcome any questions or feedback, so please do contact us for any further enquiries.