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.
Graphic (3D) replay and sensor outputs
Quote from sergeelasmar on 24. March 2025, 17:44Good evening,
I am running a simulation for a H-type VAWT where pitch control will soon be implemented. I had 2 questions regarding the SIL interface.
1. After running a simulation and storing the results, when I go into QBlade to replay the simulation, it only replays the progression of the graphs. However, I am interested in visualizing the 3D render. Is there a way to do this?
2. I extract some information from the simulation at each timestep. However, when extacting blade pitch and TSR I get comnstant values of -1 which seem to be default values when the true ones cannot be found. Am I doing something wrong?
I have attached below my QBlade input project file (VAWT_v1_sim1_small.qpr), my python SIL code (run_sim1.py) and the output results file (my_sim1_completed.qpr).
Thank you very much for your help.
Best Regards,
Serge
Good evening,
I am running a simulation for a H-type VAWT where pitch control will soon be implemented. I had 2 questions regarding the SIL interface.
1. After running a simulation and storing the results, when I go into QBlade to replay the simulation, it only replays the progression of the graphs. However, I am interested in visualizing the 3D render. Is there a way to do this?
2. I extract some information from the simulation at each timestep. However, when extacting blade pitch and TSR I get comnstant values of -1 which seem to be default values when the true ones cannot be found. Am I doing something wrong?
I have attached below my QBlade input project file (VAWT_v1_sim1_small.qpr), my python SIL code (run_sim1.py) and the output results file (my_sim1_completed.qpr).
Thank you very much for your help.
Best Regards,
Serge
Uploaded files:- You need to login to have access to uploads.

Quote from David on 24. March 2025, 21:28Hi Serge,
- To store the “replay,” ensure that the “Store Replay” option is enabled in the simulation setup dialog. This option is located directly below the “Simulation Length” field.
- When using the function
getCustomData_at_num
, the variable name must match exactly. You are using underscores instead of spaces in your variable names. For example, instead of “Tip_Speed_Ratio_[-]
”, you should use use “Tip Speed Ratio [-]
”.BR,
David
Hi Serge,
- To store the “replay,” ensure that the “Store Replay” option is enabled in the simulation setup dialog. This option is located directly below the “Simulation Length” field.
- When using the function
getCustomData_at_num
, the variable name must match exactly. You are using underscores instead of spaces in your variable names. For example, instead of “Tip_Speed_Ratio_[-]
”, you should use use “Tip Speed Ratio [-]
”.
BR,
David
Quote from sergeelasmar on 26. March 2025, 16:44Hello,
Thank you very much for your reply.
I am setting the pitch of my blades to be 35 degrees using “setControlVars_at_num(ctr_vars,-1)”, and reading the pitch values with “getCustomData_at_num(b”Pitch Angle Blade 1 [deg]”,0,0)”. When I run the simulation from my python script and print the pitch values, they indeed match the 35 degrees set by the controller. However, when visualizing the simulation, the blades can be seen moving freely as if no control input was set (I have a pivot joint between the struts and the blade).
I have attached below the QBlade project input file as well as the python script used to run the simulation. I could not upload the compressed output file as it remains too large to upload.
Thank you very much for all your help.
Best regards,
Serge El Asmar
Hello,
Thank you very much for your reply.
I am setting the pitch of my blades to be 35 degrees using “setControlVars_at_num(ctr_vars,-1)”, and reading the pitch values with “getCustomData_at_num(b”Pitch Angle Blade 1 [deg]”,0,0)”. When I run the simulation from my python script and print the pitch values, they indeed match the 35 degrees set by the controller. However, when visualizing the simulation, the blades can be seen moving freely as if no control input was set (I have a pivot joint between the struts and the blade).
I have attached below the QBlade project input file as well as the python script used to run the simulation. I could not upload the compressed output file as it remains too large to upload.
Thank you very much for all your help.
Best regards,
Serge El Asmar
Uploaded files:- You need to login to have access to uploads.

Quote from David on 26. March 2025, 19:39Hi Serge,
you dont need to manually create the pivot joint in your simulation, as “pitch drives” are automatically created between the struts and the blades in a structural VAWT model.
The purpose of the Strut Constraint Table is not to generate the pitch drives but rather to model specific joints between struts, blades and the torquetube.
The reason that you blades are spinning freely is the STRUT_BLADE_CONSTRAINTS table, that you dont require.
In your python script you need to make sure that you dont “impulsively” start pitching the blades, as this can cause th estructural simulation to diverge, e.g. pithcing from 0° to 45° in a single time step. Also, when calling:
QBLADE.setControlVars_at_num(ctr_vars,-1)
the script will crash when using QBladeEE, as the turbine index starts at 0 and -1 will cause an access violation.This isnt an issue if you are using QBladeCE, since only individual turbines can be simulated.
BR,
David
Hi Serge,
you dont need to manually create the pivot joint in your simulation, as “pitch drives” are automatically created between the struts and the blades in a structural VAWT model.
The purpose of the Strut Constraint Table is not to generate the pitch drives but rather to model specific joints between struts, blades and the torquetube.
The reason that you blades are spinning freely is the STRUT_BLADE_CONSTRAINTS table, that you dont require.
In your python script you need to make sure that you dont “impulsively” start pitching the blades, as this can cause th estructural simulation to diverge, e.g. pithcing from 0° to 45° in a single time step. Also, when calling:
QBLADE.setControlVars_at_num(ctr_vars,-1)
the script will crash when using QBladeEE, as the turbine index starts at 0 and -1 will cause an access violation.This isnt an issue if you are using QBladeCE, since only individual turbines can be simulated.
BR,
David
