Definition of element properties in pyframe3dd

Dear all,

I am confusing with the definitions of the input element properties for pyframe3dd.ElementData() in WISDEM. For some I can locate with those we generally used, for example, for a blade, “r” as the radius of the rotor, “theta” as the structural twist, .etc., but what is “A”? It seems like A is defined as “area” of cross section. However, when I print A in the “nrel5mw_test.npz” locating in “wisdem\test\test_rotorse”, the first value in the array is around 17m^2, where the location is blade root. For the blade root cross section, the airfoil used there is Cylinder with chord length of 3.542m, which means the area of this cross section would be pi * (0.5 * 3.542)**2 = 9.853m^2, since the section is a circle. Obviously it is far away to 17. So I was confused. How could I understand the definition of “area of cross section”? Or “airfoil cross section material area” as it is commented in rotor_structure.py? How can I understand “material area”? Similar problems to other properties. I cannot build connection with their values shown in the definition document of NREL 5MW. Anyone can help? Thanks!

Kind regards,
Puyi

Hello Puyi,

Thank you for the thoughtful interrogation of the model and the quantities. It looks like this is a bug originating in a semi-recent modification to the PreComp.f90 code. It will take us a bit to sort it out and code up a better area calculation.

Cheers,
Garrett

Hello Puyi,
FYI we’ve been working on a fix of the C.S. area in this branch of WISDEM GitHub - WISDEM/WISDEM at precomp_area
BR,
Pietro

This is being merged into WISDEM:

Hi @Pietro.Bortolotti and @Garrett.Barter

Thank you for letting me know! I’ll check it out and try the code later.

Kind regards,
Puyi

Dear @Garrett.Barter ,

By reading the newest code that you updated into rotor_elasticity.py for calculating the area of C.S., I learned the physical meaning of this variable is the total thickness of layup layers and webs of C.S. Please correct me if it was a misunderstanding. However, confusions are not fully eliminated, that why other variables in nrel5mw_test.npz are also differ to those in the definition document of NREL5MW-RWT at https://www.nrel.gov/docs/fy09osti/38060.pdf? For instance, the GJ as torsional stiffness at r=1.5 is 1.39522432e+10 in nrel5mw_test.npz but is 5564.40E+6 in the report. Similar to EA, EIxx and other variables about stiffness. Are there some functions or reasons lead to these discrepancies on numerical quantities? Thanks!

Kind regards,
Puyi

Hello Puyi,
Let me try to help. To start, a warning. The WISDEM tests are made for the developers of WISDEM (us) to keep developing the code without breaking existing functionalities, they are not made for users to understand the code. Please refer to the examples of WISDEM (WISDEM/examples at master · WISDEM/WISDEM · GitHub) and their documentation (Examples — WISDEM 2.0 documentation), not to the tests.
This example uses the NREL5MW and that’s where you might want to start WISDEM/examples/02_reference_turbines/nrel5mw_driver.py at master · WISDEM/WISDEM · GitHub
Next let’s talk about the blade properties of the NREL5MW. The NREL5MW was initially developed as an aeroelastic model, without blade design details such as material properties and cross sectional geometries. The latter were designed by Brian Resor at Sandia and documented here Definition of a 5MW/61.5m wind turbine blade reference model. (Technical Report) | OSTI.GOV. The figures at page 29 show the comparison between the initial NREL properties and the new Sandia properties. Talking about GJ at blade root, there is a clear jump there.
WISDEM is a design tool, not an aeroelastic solver, and so uses the blade geometry and material properties to run the cross sectional solver PreComp (PreComp | Wind Research | NREL). That is a second source of inconsistency between the data from the report led by Jason Jonkman at NREL and the outputs of WISDEM.
I hope this helps.

Dear @Pietro.Bortolotti ,

It looks like I went astray, and your explanations are really helpful for me on redirecting promptly. Thank you!

Kind regards,
Puyi

Dear @Pietro.Bortolotti ,

In fact, I already have a set of data w.r.t structural properties of a specific blade that obtained by another tool functionally similar to PreComp. And these properties were successfully used to generate OF’s BeamDyn input files. I can also have the information of layup thickness and web thickness for getting the area of blade cross-section which is needed by pyframe3dd. So, in your opinion, could I directly feed pyframe3dd with the structural properties used in BeamDyn plus the area of C.S. to do the blade modal analysis? Thanks a lot!

Kind regards,
Puyi

Yes, you can definitely feed pyframe3dd with your elastic properties and run the modal analysis. You might want to follow this script WISDEM/wisdem/rotorse/rotor_structure.py at 26da3dc1871f45027ff58ce2907480bc41286b25 · WISDEM/WISDEM · GitHub, which does exactly that
I will add that you can also run the modal analysis with BeamDyn in OpenFAST. It’s a little complicated to do, but it can be done by first linearizing the model from the .fst file and by running the MBC3 code, which is available here openfast_toolbox/openfast_toolbox/linearization at main · OpenFAST/openfast_toolbox · GitHub or here GitHub - deslaughter/acdc-app at v0.1.0-alpha
FYI we have publications about this coming up at Torque 2024

Dear @Pietro.Bortolotti ,

That sounds so good and motivated. Thanks for your quick reply! The reason that I want to use pyframe3dd is to fill out the ElastoDyn input file for my WT model. Garrett mentioned that you have switched from Bmodes to pyframe3dd for getting the modal shapes many times in this forum. Then I just want to do the same. I’ll follow up the conference and keep an eye on the publications. Thanks again.

Kind regards,
Puyi