OpenFAST / openfast

Main repository for the NREL-supported OpenFAST whole-turbine and FAST.Farm wind farm simulation codes.
http://openfast.readthedocs.io
Apache License 2.0
648 stars 448 forks source link

Can structural stress be calculated in FAST #1966

Open Xiexianping99 opened 5 months ago

Xiexianping99 commented 5 months ago

hello, I want to use fast to calculate the stress of the tower structure, what can I do ? How to modify the source code, this method is feasible, hope to get your help

Best regard!

jjonkman commented 5 months ago

Dear @Xiexianping99,

OpenFAST does not directly calculate stress; instead, OpenFAST calculates loads. For the blades and tower, OpenFAST will calculate the reaction loads at various cross sections along the beam e.g. axial force, transverse shear forces, transverse bending moments, and torsion moment. These loads can be used to calculate local stresses using cross-sectional analysis. For simple circular cross sections such as often used in a tower, the cross-sectional analysis could be analytical. This topic has been discussed several times on our forum, e.g.: https://forums.nrel.gov/t/mlife-user-defined-distribution/1970 https://forums.nrel.gov/t/difference-between-fast-and-openfast-results/4665/58

Best regards,

Xiexianping99 commented 5 months ago

hello, Thank you for your answer. Yes, I also saw the discussion in the forum. I am now using the fast7 seismic version to study the dynamic characteristics of single pile wind turbines. Considering that the tower may yield locally under large load conditions, I want to carry out plastic analysis of the supporting structure. First of all, we want to modify the fast7 code to make it realize the output of the normal stress time history, and calculate the normal stress of the ring section according to the formula in the forum. Do you know that this method is feasible and difficult ? Secondly, a yield condition is set to judge the yield degree of the tower, and then the yield part is iterated to solve the stiffness matrix of the tower. This is a simple idea,I do not know in the fast7 version can be achieved ? Best regards,

jjonkman commented 5 months ago

Dear @Xiexianping99,

I'm sure you could implement the equations on the forum to compute the normal stress within the FAST v7 source code, but normally I would expect the sectional analysis would be done in a post-processing step.

It sounds like you want to use the stress to update the tower stiffness matrix at run time. This would likely be difficult, as discussed in a similar question on our forum about the modeling of blade stiffness changes as a result of delamination: https://forums.nrel.gov/t/making-fault/1260.

Best regards,

Xiexianping99 commented 5 months ago

Dear Sir Thank you very much for your answer. I saw the post you pushed me. I learned that to modify and update the stiffness matrix and mass matrix is to add a scale factor in front of the corresponding code. This way is feasible. I now want to add an if statement. For example, when the load condition reaches a certain value, such as the stress reaches the yield strength of the tower, the tower will fail. I consider this problem by modifying the stiffness and mass to affect the motion equation. How do I add the if statement as the beginning of judging the tower failure.

Based on v7, I learned that the stiffness, mass and modal shape of the tower are defined in the subroutine Coeff, and the calculated motion equation is defined in RTHS ( ). I want to add a conditional judgment statement again. Where to modify ? Could you give me some advice ? Give some reference to modify the code ?

The second problem is that I want to consider the initial defects of the tower, such as the initial displacement defects, how can I modify it ? I see the .fst file has two parameters TTDspFA, TTDspSS, I consider the words only need to change the two parameter values or also need to modify the source code ? Best regards,

jjonkman commented 5 months ago

Dear @Xiexianping99,

It sounds like you have a good understanding of what needs to be changed. The big challenge mentioned in the forum post is that, while you can change the tower stiffness, it is not straightforward to change the tower mode shape during the simulation. And changing the stiffness without the corresponding mode shape is not physically consistent, so, the solution may not be fully correct (small changes to stiffness are probably OK, but not large stiffness changes).

The IF condition you are proposing would be best implemented where the tower stiffness (KTFA, KTSS) is used within SUBROUTINE RtHS() of FAST v7.

Best regards,

Xiexianping99 commented 5 months ago

Dear Sir Thank you for your answer. I want to consider the initial defects of the tower, such as the initial displacement defects, how can I modify it ? I see the .fst file has two parameters TTDspFA, TTDspSS, I consider the words only need to change the two parameter values or also need to modify the source code ? Besides,I am building a 10MW offshore monopile wind turbine with a water depth of 30 m and a pile length of 45 m below the mud line, considering the SSI effect. To build a linear py spring, I encountered difficulties at this time. I do not know how to modify the normalization coefficient of the tower. Seeing how the spring stiffness in the OC3 project is for 5MW, how should I select the spring stiffness of 10MW ? Best regards,

jjonkman commented 5 months ago

Dear @Xiexianping99,

I'm not sure what you mean by "initial displacement defects". TTDspFA and TTDspSS in FAST v7 are the initial conditions of the tower-top displacements, which can be set nonzero to reduce the simulation start-up transients.

You can read how the soil-pile model used in OC3 Phase II was derived in the corresponding documentation, available from: https://drive.google.com/drive/folders/0B0KGNSHvXXgCazJDZmRuWVQzaDA?resourcekey=0-0SIeHrGx-WiOnSKsNsikRA&usp=drive_link.

I'm not sure if you are trying to match specific soil-pile conditions for a specific 10-MW turbine or not, but OC6 Phase II considered soil-pile interaction for the DTU 10-MW turbine atop monopile. You can find the corresponding model specifications for this model here: https://sharea2e.atlassian.net/wiki/spaces/OC6/pages/532283453/Model+Information+2.

Best regards,

Xiexianping99 commented 5 months ago

Dear Sir Thank you for your answer. First of all, the first question I mean is to add a boundary condition in the dynamic equation, similar to the initial tower displacement conditions. Furthermore, in the process of solving the motion equation, considering this initial condition, similar to the traditional structural dynamics, a y is added to the term k.x. It is not known whether this can be considered in multi-body dynamics ? You sent me OC6 second link I can not open, no access. But I can open the net. Can you send it to me again ?

jjonkman commented 5 months ago

Dear @Xiexianping99,

I'm still not sure I really understand what you mean by "initial displacement defects", e.g., I don't know what you mean when you say, "a y is added to the term k.x".

Regarding the Confluence site for OC6 Phase II, you must create an account to access that data. The corresponding NREL technical report is available in the NREL publication database (https://www.nrel.gov/docs/fy21osti/79938.pdf), but if you want to access the full model rather than just the publication, you'll need to create an account on the Confluence site.

Best regards,

Xiexianping99 commented 5 months ago

Dear Sir I am very sorry I didn 't express my thoughts clearly.The following attachments are my preliminary ideas. Do you see if it is feasible to do so in FAST ? For FASTV7 I change, which part of the FAST code should I modify ?

Thank you for the link, I registered the account is still no access. But I look at NREL 's report on the OC6 project. I am also using FAST 7 to build a 10 MW single pile wind turbine with a water depth of 30 m. When building the DS model, I modeled the linear DS and nonlinear DS models mentioned in the OC3 project. It just happens that the file you sent above provides a series of nonlinear py curves. Can I use this directly ? Can you send me a linear DS model and a nonlinear DS model of FAST7 version of the case for my reference ?

Best regards, xie.docx

jjonkman commented 5 months ago

Dear @Xiexianping99,

Regarding your proposal for "initial displacement defects", this sounds equivalent to applying a constant force on the right-hand equal to -K u_0. You could add this force in the FAST v7 source code at the same location where K x is added to the equations of motion.

I don't have a FAST v7 example that implements nonlinear p-y curves, but I'm sure that would be possible to add. We do have an example of FAST v7 SUBROUTINE UserTwrLd() that implements linear distributed springs, which is available in the following topic on our forum: https://forums.nrel.gov/t/turbine-soil-interaction-influence-on-the-mode-shapes/481/13. I'm sure this example could be modified to include nonlinear p-y curves.

Best regards,

Xiexianping99 commented 5 months ago

Dear Sir I read your advice on the first question and I think it ' s quite right. I will try to move in that direction next. But I now look at the linear py curve :https://forums.nrel.gov/t/turbine-soil-interaction-influence-on-the-mode-shapes/481/13, in the forum to understand that he is based on the API specification, I do not understand how its stiffness is calculated ?As the link shows. Best regards, API Rules.docx

jjonkman commented 5 months ago

Dear @Xiexianping99,

In your API Rules questions, tanh() refers to the hyperbolic tangent. I was not the one to compute the linear springs for the OC3 Phase II project, but these could be found by linearizing the nonlinear p-y curve about a given operating point displacement (y).

Best regards,

Xiexianping99 commented 4 months ago

Dear Sir I want to use fast v7 to simulate the soil structure interaction. I saw the linear DS model and the nonlinear DS model in the forum. I want to simulate the three nonlinear curves of tz, qz and py on this basis. How can I modify the code ? Which step to start ?

jjonkman commented 4 months ago

Dear @Xiexianping99,

Can you clarify which forum post you are referring to?

I'm not aware of a FAST v7 model that NREL has shared with nonlinear distributed springs, but I've certainly seen that implemented in custom models before. I would suggest starting with the _UserTwrLdDS.f90 source file shared on the forum (https://forums.nrel.gov/t/turbine-soil-interaction-influence-on-the-mode-shapes/481) and change the existing linear formulation in the lateral (p-y) direction to a nonlinear function, and add forces in the vertical direction (t-z, and q-z).

Best regards,

Xiexianping99 commented 3 months ago

Dear Sir Thank you for your answer.I use LPILE software to calculate the load displacement curve of 10 MW single pile wind turbine pile. The soil conditions used are still provided according to the second stage of OC3. In the process of calculation, it is necessary to set the load of pile head. I do not know how to take this specific value. Could you give me some advice ?

jjonkman commented 3 months ago

Dear @Xiexianping99,

Normally to derive equivalent linear springs of the foundation, you'd apply loads to the pile at the mudline that are equivalent to the mean loads from the wind turbine. Of course, such loads depend on the mean wind speed, such that you'd obtain different linear springs for different operating conditions of the wind turbine.

Best regards,

Xiexianping99 commented 3 months ago

Dear Sir Thank you for your answer.How to determine the load of equal average load of wind turbine Is this value an empirical value?

jjonkman commented 3 months ago

Dear @Xiexianping99.

You can use OpenFAST to compute these values (assuming a rigid foundation). Simply take the mean value of the mudline reaction loads (forces, moments) once the solution reaches steady state for a given mean wind speed.

Best regards,

Xiexianping99 commented 3 months ago

Dear Sir Thank you for your answer.For the 10 MW offshore wind turbine model used in the second stage of OC6, can I use fastV7 to calculate the tower foundation load of fixed ( rigid ) offshore wind turbine under the condition of Vhub = 9.06 m / s, Hs = 1.25 m and Tp = 5.5 s ? How to select my simulation time if you can ?

jjonkman commented 3 months ago

Dear @Xiexianping99,

Yes, you can use FAST v7 as well, although the results may be a bit different from OpenFAST (improvements have been made over time, as has been discussed in other topics). You should run the simulation long enough to ensure you've reached (or can reasonably estimate) the steady-state condition, but a hundred seconds is likely sufficient.

Best regards,

Xiexianping99 commented 3 months ago

Dear Sir Thank you for your answer.Can you tell me the natural frequency of the support structure of a 10 MW offshore wind turbine considering the interaction of soil structure ?My model reference is as follows. [Uploading Doc1.docx…]()

jjonkman commented 3 months ago

Dear @Xiexianping99,

The DTU 10-MW reference wind turbine top the a monopile considered in OC6 Phase II is documented in the following reports: https://www.nrel.gov/docs/fy21osti/79938.pdf https://onlinelibrary.wiley.com/doi/full/10.1002/we.2698

From Figure 5 of the later, it looks like the first fore-aft bending frequency of the support structure with soil-structure interaction is around 0.25 Hz.

Best regards,

Xiexianping99 commented 3 months ago

Dear Sir Thank you for your answer.I currently want to add a column of tower cross-sectional area in the tower input file. For FASTV7, I declared the variable area for the FAST Mods tower module, and made FAST IO corrections to the read part of the tower input file, but there were many errors reported during compilation. How can I correct it ? Best regards,

jjonkman commented 3 months ago

Dear @Xiexianping99,

Well, you haven't shared what the errors are.

I would suggest reviewing how other distributed tower properties are read in from the tower file (including variable declarations and uses) and repeat likewise for your new properties.

Best regards,

Xiexianping99 commented 3 months ago

Dear Sir Thank you for your answer. I defined the area variable in the FAST Mods.f90 tower module ; the GetTower subroutine of FAST IO.f90 defines the reading of tower area parameters ; in the InterpTwr subroutine, the tower area attribute is interpolated and the memory is released. The FAST Terminate subroutine in FAST .f90 has also made similar changes. The change code and related errors are written in the following links. I do not know how to modify it. I hope you can give me valuable advice. Best regards, [Uploading Doc1.docx…]()

Xiexianping99 commented 3 months ago

Dear Sir When I run fast, I prompt for error.Can you give some suggestions?

Microsoft Windows [版本 10.0.19045.4046] (c) Microsoft Corporation。保留所有权利。

E:\FAST-S\DTU10MW\DTU10MW_Monopile_Non_Linear_DS_30m - 副本>FAST_Stress.exe DTU_10MW_RWT_Monopile_NLDS.fst

Running NWTC Subroutine Library (v1.07.00b-mlb, 10-Jan-2013).

Running FAST (v7.02.00d-bjj, 20-Feb-2013).

forrtl: severe (157): Program Exception - access violationurbine for Use in Offshore Analysis. Image PC Routine Line Source FAST_Stress.exe 00007FF6C12E568A Unknown Unknown Unknown FAST_Stress.exe 00007FF6C12BFD36 Unknown Unknown Unknown FAST_Stress.exe 00007FF6C1464C31 Unknown Unknown Unknown FAST_Stress.exe 00007FF6C1472B0E Unknown Unknown Unknown FAST_Stress.exe 00007FF6C1473090 Unknown Unknown Unknown KERNEL32.DLL 00007FF888567344 Unknown Unknown Unknown ntdll.dll 00007FF88A5626B1 Unknown Unknown Unknown

E:\FAST-S\DTU10MW\DTU10MW_Monopile_Non_Linear_DS_30m - 副本>

Best regards,

jjonkman commented 3 months ago

Dear @Xiexianping99 -- I would guess the error you are reporting is related to the source code change you've made, but it if difficult to pin-point the issue without knowing exactly what you changed. I would also verify that you are able to compile the original (unmodified) source code and run simulations without issue with your compiled version.

Dear @zxh804159854 -- It looks like you asked the same question in the following Discussion: https://github.com/OpenFAST/openfast/discussions/1166; I've now responded there.

Best regards,

Xiexianping99 commented 3 months ago

Dear Sir Thank you for your answer.Recently, I compiled the extended version of FASTv7, so that he has the function of calculating stress. But when I run, it prompts me that TwH2Stres is an invalid variable. I defined nine tower stress parameters in the output module, as shown below. In FAST _ IO.f90, the ChckOutLst subroutine ValidParamAry ( ) array and ParamIndxAry ( ) array are filled with the corresponding calculation variables, but the following error is reported. Can you give me some suggestions ? I learned that ValidParamAry ( ) is filled with valid output parameter variables, which are arranged in alphabetical order, but I 'm not sure what order the ParamIndxAry ( ) index array is filled in, it seems to see a one-to-one correspondence, ? Whether my error is related to my array filling. Output module.docx

jjonkman commented 3 months ago

Dear @Xiexianping99,

MaxOutPts in FAST v7 is the number of unique output parameters. ValidParamAry and ParamIndxAry are arrays larger than MaxOutPts because some outputs can have multiple names when referring to the same output. This section of code is not meant be edited by hand, but rather, auto-generated via the MATLAB script _WriteChckOutLst.m. It would be better to change the OutListParameter.xlsx Excel file and rerun _WriteChckOutLst.m to auto-generate this code if you want to add new outputs.

Best regards,

Xiexianping99 commented 3 months ago

Dear Sir Thank you for your answer. Could you please provide me with the output matlab script?

Best regards,

jjonkman commented 3 months ago

Dear @Xiexianping99,

The MATLAB script _WriteChckOutLst.m is provided in the archive of FAST v7, i.e., in the Source/UtilityCodes/MatlabGeneratedOutput directory.

Best regards,

Xiexianping99 commented 3 months ago

Dear Sir I 'm sorry, I didn 't find the FASTv7 version of the matlab output script, only found the Openfast, can you send me a matlab script for V7 output. Best regards,

jjonkman commented 3 months ago

Dear @Xiexianping99,

You can find the MATLAB script _WriteChckOutLst.m for FAST v7 in the Source/UtilityCodes/MatlabGeneratedOutput directory of the FAST v7.02.00d-bjj archive, available from here: https://www.nrel.gov/wind/nwtc/assets/downloads/FAST/FASTv7.02/FAST_v7.02.00d-bjj.exe.

Best regards,

Xiexianping99 commented 3 months ago

Dear Sir Thank you for your answer.I reported the following error when running FAST 7, may I ask what caused this prompt.

image

image

jjonkman commented 3 months ago

Dear @Xiexianping99,

You are showing two messages from the command prompt. Are these from the same simulation or different?

Best regards,

Xiexianping99 commented 2 months ago

Dear Sir I added Radius and Area.... to the SUBROUTINE GetTower in FAST v7, as shown below. However, these interpolated values are not present in the output fsm. file, although I did interpolate these values in the InterpTwr subroutine.

image image

jjonkman commented 2 months ago

Dear @Xiexianping99,

Have you added your new tower variables within SUBROUTINE PrintSum() of _FASTIO.f90 in FAST v7, which is used to generate the FAST summary (.fsm) file?

Best regards,

Xiexianping99 commented 2 months ago

Dear Sir Thank you for your answer.When I use the following formula to calculate the stress of the support structure, the stress value is negative. What is this because of? According to reason, the stress value should be a positive number!

image

jjonkman commented 2 months ago

Dear @Xiexianping99,

Using your formula, stress can be both positive (in tension) and negative (in compression).

Best regards

Xiexianping99 commented 2 months ago

Dear Sir Thank you for your answer.When I use the linear DS model, I get an error after input py curve damping value, but I don't get an error when damping is 0.0. What is the reason for this? image

jjonkman commented 2 months ago

Dear @Xiexianping99,

You haven't said how you implemented the py damping curve in your model, but I would guess the problem is with your implementation.

Best regards,

Xiexianping99 commented 2 months ago

Dear Sir Thank you for your answer.I calculated the damping according to the following formula. image image

jjonkman commented 2 months ago

And how is Dashpot implemented in the source code?

Xiexianping99 commented 2 months ago

image image

Xiexianping99 commented 2 months ago

Dear Sir Thank you for your answer.This is my code for linear ds modeling, damping reading, and calculating pile loads

jjonkman commented 2 months ago

Dear @Xiexianping99,

Your code looks OK to me. Does your simulation run as expected if you set the Dashpot values to zero or to small values? Does reducing the time step help resolve the instability?

Best regards,

Xiexianping99 commented 2 months ago

Dear Sir Thank you for your answer.Yes, when the damping value is set to 0, the simulation can proceed normally. If I want to add the effect of spring damping, how do I solve this?

jjonkman commented 2 months ago

If the solution runs with Dashpot - 0, presumably it will run when you set Dashpot slightly greater than zero, and thus there is likely a threshold where the model will go unstable. If that is the case, I would guess reducing the time step would help.

Xiexianping99 commented 2 months ago

Dear Sir Thank you for your answer.Yes, when I reduced the simulation step size, the simulation was running successfully. There is another question for you, how should I verify whether the results are correct or not? Best regards,