Forum
Important Notice for New User Registrations
To combat an increasing number of spam and bot registrations, we now manually approve all new user registrations. While this may cause a delay until your account is approved, this step is essential to ensure the quality and security of this forum.
To help us verify your registration as legitimate, please use a clear name as user name or an official email address (such as a work, university, or similar address). If you’re concerned that we may not recognize your registration as non-spam, feel free to email us at with a request to approve your username.
The structural model diverged when a bladed-type controller was added
Quote from hsaf38 on 19. June 2024, 09:42Hello,
I’m writing to you today because I’m facing a problem that I can’t explain. I’m working on a wind turbine and I’m trying to add the controller to the model. This controller is in bladed format and includes a text file defining the parameters and a .dll. When I created the structural model the simulation ran perfectly well before adding the controller, when I added the controller the simulation crashed with the message ‘The structural model diverged’ at the end of the ramp-up. I’ve tried running the calculation with/without waves and with non-turbulent/turbulent wind, but it makes no difference.
Do you have any idea what the problem might be?
Thanks in advance!
Hello,
I’m writing to you today because I’m facing a problem that I can’t explain. I’m working on a wind turbine and I’m trying to add the controller to the model. This controller is in bladed format and includes a text file defining the parameters and a .dll. When I created the structural model the simulation ran perfectly well before adding the controller, when I added the controller the simulation crashed with the message ‘The structural model diverged’ at the end of the ramp-up. I’ve tried running the calculation with/without waves and with non-turbulent/turbulent wind, but it makes no difference.
Do you have any idea what the problem might be?
Thanks in advance!
Quote from David on 19. June 2024, 10:44Hello,
after the ramp-up time is finished the turbine controller kicks in. So the issue you are seeing is most probably coming from the controller library. Its hard to say whats causing this without any further information. You can try to change the ramp-up rpm, or try to reduce the timestep size.
If possible you can also upload your project file here and I could have a look at the issue.
BR,
David
Hello,
after the ramp-up time is finished the turbine controller kicks in. So the issue you are seeing is most probably coming from the controller library. Its hard to say whats causing this without any further information. You can try to change the ramp-up rpm, or try to reduce the timestep size.
If possible you can also upload your project file here and I could have a look at the issue.
BR,
David
Quote from hsaf38 on 1. July 2024, 13:53Hello David,
Thank you very much for your reply. Unfortunately, I can’t give any more details about the work in progress. I’m going to try the proposed solutions. Is there an example of a turbine file including a bladed controller and input parameters? Does swaparray via the DISCON function work or is there a specific format?
Thank you in advance for your reply,
Best regards
Hello David,
Thank you very much for your reply. Unfortunately, I can’t give any more details about the work in progress. I’m going to try the proposed solutions. Is there an example of a turbine file including a bladed controller and input parameters? Does swaparray via the DISCON function work or is there a specific format?
Thank you in advance for your reply,
Best regards
Quote from David on 1. July 2024, 17:28Hi,
you can try out the IEA 15MW VolturnUS-S model from the Downloads page.
This turbine runs with NREL’s ROSCO controller which is based on the BLADED interface.
The BLADED interface uses the swap array via the DISCON call.
BR,
David
Hi,
you can try out the IEA 15MW VolturnUS-S model from the Downloads page.
This turbine runs with NREL’s ROSCO controller which is based on the BLADED interface.
The BLADED interface uses the swap array via the DISCON call.
BR,
David
Quote from hsaf38 on 2. July 2024, 14:36Hello,
Thank you for your reply. I have fixed the problem, which concerned the conventions adopted for the input file,
Best regards
Hello,
Thank you for your reply. I have fixed the problem, which concerned the conventions adopted for the input file,
Best regards
Quote from GuoT on 19. July 2024, 05:24Hello,
I encountered the same issue. Could you please provide some suggestions? Thank you very much.
Best regards
Hello,
I encountered the same issue. Could you please provide some suggestions? Thank you very much.
Best regards
Quote from David on 19. July 2024, 14:26Hello,
to identify the issue a bit more information would be helpful:
- Which version of QBlade are you using?
- Are you using the ROSCO controller? If so, which parameter file are you using?
- Can you share you project file to help us reproduce the issue?
BR,
David
Hello,
to identify the issue a bit more information would be helpful:
- Which version of QBlade are you using?
- Are you using the ROSCO controller? If so, which parameter file are you using?
- Can you share you project file to help us reproduce the issue?
BR,
David
Quote from hsaf38 on 24. July 2024, 13:51Hello David,
I thought I solved the problem but it is not the case. I tried several things, changing the ramping-up, the parameters of the controller, encoding in ASCII instead of UTF-8 for the .in file nothing worked. It seems like the call to the DISCON function makes the structural model diverge for some reasons. Is there any mandatory structural parameters for a simulation with a controller that are not needed for non-servo simulation ?
I can answer the questions concerning my case if that helps.
- I am using the v2.0.7, I can try another version
- I am not using the ROSCO controller but an homemade one.
- I can’t give you the project file
Thank you in advance for your answer,
Best regards,
Hugo
Hello David,
I thought I solved the problem but it is not the case. I tried several things, changing the ramping-up, the parameters of the controller, encoding in ASCII instead of UTF-8 for the .in file nothing worked. It seems like the call to the DISCON function makes the structural model diverge for some reasons. Is there any mandatory structural parameters for a simulation with a controller that are not needed for non-servo simulation ?
I can answer the questions concerning my case if that helps.
- I am using the v2.0.7, I can try another version
- I am not using the ROSCO controller but an homemade one.
- I can’t give you the project file
Thank you in advance for your answer,
Best regards,
Hugo
Quote from hsaf38 on 24. July 2024, 14:22Hello again,
I just tried with the Linux version of the software and this time I get an error message when I am trying to create a simulation with the controller saying that the .dll file is not in the ControllerFiles directory whereas it is. I upload a screen of the message. I also checked that the controller is in 64-bits.
Thank you in advance,
Best regards,
Hugo
Hello again,
I just tried with the Linux version of the software and this time I get an error message when I am trying to create a simulation with the controller saying that the .dll file is not in the ControllerFiles directory whereas it is. I upload a screen of the message. I also checked that the controller is in 64-bits.
Thank you in advance,
Best regards,
Hugo
Uploaded files:- You need to login to have access to uploads.
Quote from David on 25. July 2024, 10:49Hi Hugo,
thanks for clarifying that you are using your own custom controller.
In this case I would suspect that the divergence of the structural model could be caused by the signals that are send by your controller to the turbine.
The controller is called the first time during the first timestep after the ramp-up part of the simulation has concluded. If the simulation instantly diverges this could be caused by the signals that are returned by the controller. If the simulation diverges immediately, this could be due to the nature of the signals returned by the controller. For instance, applying the generator torque to the turbine model without a gradual increase from zero torque leads to an impulsive load applied on the model, causing the structural model to diverge. It is important to ensure that the values passed back to the turbine are ramped up smoothly to prevent impulsive loads (torque) or abrupt motions (pitch, yaw) from destabilizing the simulation.
You can check what your controller is passing to the turbine in the SIL interface. Calling the function “advanceController_at_num(double *vars, int num)” returns the controller exchange array in the vars variable. This also allows you to modify (e.g. smooth) the values before they are passed back to the turbine (by calling “setControlVars_at_num(double *vars, int num = 0)” .
Regarding the error message about the missing library: Did you recompile the controller library to an .so shared object file for Linux and still get this message? If so, and you are still encountering this issue, please provide more details so we can troubleshoot further.
BR,
David
Hi Hugo,
thanks for clarifying that you are using your own custom controller.
In this case I would suspect that the divergence of the structural model could be caused by the signals that are send by your controller to the turbine.
The controller is called the first time during the first timestep after the ramp-up part of the simulation has concluded. If the simulation instantly diverges this could be caused by the signals that are returned by the controller. If the simulation diverges immediately, this could be due to the nature of the signals returned by the controller. For instance, applying the generator torque to the turbine model without a gradual increase from zero torque leads to an impulsive load applied on the model, causing the structural model to diverge. It is important to ensure that the values passed back to the turbine are ramped up smoothly to prevent impulsive loads (torque) or abrupt motions (pitch, yaw) from destabilizing the simulation.
You can check what your controller is passing to the turbine in the SIL interface. Calling the function “advanceController_at_num(double *vars, int num)” returns the controller exchange array in the vars variable. This also allows you to modify (e.g. smooth) the values before they are passed back to the turbine (by calling “setControlVars_at_num(double *vars, int num = 0)” .
Regarding the error message about the missing library: Did you recompile the controller library to an .so shared object file for Linux and still get this message? If so, and you are still encountering this issue, please provide more details so we can troubleshoot further.
BR,
David