Making fault

Discuss acquisition, use, and manipulation of airfoil data.

Moderator: Bonnie.Jonkman

Yichau.Liu
Posts: 18
Joined: Sun Nov 27, 2016 6:07 pm
Organization: Tsinghua University
Location: China

Re: Making fault

Postby Yichau.Liu » Sat Feb 16, 2019 6:03 am

Dear Jason,

It's very kind of you. Thank you for helping check the results. In my case, the OWT starts to generate wind power only after 50s since the rotor speed and generator speed have a set-up process and increase from 0 at the beginning (0s) and reach rated value at around 50s. I think this is the reason that the tower side-to-side don't deflect until ~50s. Anyway, good to know that such a steady tower top acceleration seems reasonable and I will try to include some turbulence if large tower acceleration is expected. Thanks again.

Best

Yichau.Liu
Posts: 18
Joined: Sun Nov 27, 2016 6:07 pm
Organization: Tsinghua University
Location: China

Re: Making fault

Postby Yichau.Liu » Wed Mar 13, 2019 4:36 pm

Dear Matt.Hall,

Thank you for your help last time and I also hope to realize the same mooring line failure (fairlead and anchor failures) in the MoorDyn C, namely the C lib. that I downloaded on your website (http://www.matt-hall.ca/moordyn.html). It also would be connect to the MATLAB in my case. The fairlead failure is zeroing the tension at the fairlead while the anchor failure is realized by a large length of the line segment attached to the seabed, as you suggested. But it seems that the source code in MoorDyn C is a much different with the MoorDyn in FASY v8 that I asked before. I have no idea which source code (Connection.cpp, Line.cpp, NoorDyn.cpp), which variable and which sub-function I can revise. Can you give me some clues? Many thanks to you and look forward to hearing from you.

Best

Matt.Hall wrote:Hi Yichau.Liu,

Simulating mooring line failures would be an interesting capability. I've thought of the idea itself, but never how to go about realizing it in MoorDyn. Here are a few initial thoughts in case they are of help.

Most of MoorDyn's information about the mooring system is stored in "m" (the MiscVar structure), so you would probably want to add variables within it to specify the details of the failure, unless you chose to hardcode in the specifics of each failure.

I can think of two general approaches for implementing the failure:
(1) Modifying the data in m once the failure occurs to represent the disconnection without changing MoorDyn's calculation process, or
(2) Modifying the calculations within MD_CalcContStateDeriv (specifically within DoLineRHS) to get the same effect as a failed line.

Your ideas are in the second category, which is I think a good place to start. For the fairlead failure, I agree that zeroing the tension seems reasonable. You could simply set FairFtot to zero in DoLineRHS for the failed line. For the anchor failure, you could change the anchor node position (Line%r(J,0) in DoLineRHS), but abrupt position changes might cause some problematic damping forces. An option that I think would be just as effective and potentially simpler would be to set the length of the line segment that attaches to the anchor to be very large (i.e. set Line%l(1) in DoLinesRHS to a large number).

Hope that helps, and I look forward to hearing how it goes!

Best,
Matt

Sebastian.Hippel
Posts: 9
Joined: Mon Nov 16, 2015 10:00 am
Organization: Flensburg University of Applied Sciences
Location: Germany

Re: Making fault

Postby Sebastian.Hippel » Fri May 10, 2019 1:42 am

Dear Jason,

I'm intending to do similar thing what Yichau.Li already tried to do. I'm trying to change the blade mass properties dynamically within a given simulation. I know such changes is not possible without changing the source code. But I'm just wondering which source code must be changed, to consider such changes, is that the ElstoDyn.f90 or the BeamDyn.f90. Because both of this modules are dealing with blade input file to calculate blade motion and reaction loads. I started to read the BeamDyn.f90 source code to understand where and how the mass matrix are calculated, but till now I did not make any progress. Do you have any advice how this should be implemented

Best regards,
Sebastian

Jason.Jonkman
Posts: 4056
Joined: Thu Nov 03, 2005 4:38 pm
Location: Boulder, CO
Contact:

Re: Making fault

Postby Jason.Jonkman » Fri May 10, 2019 7:09 am

Dear Sebastian,

While both ElastoDyn and BeamDyn can be used in FAST / OpenFAST to model blade structural dynamics, the choice of which module is used is selected in the primary input file (CompElast = 1 is for ElastoDyn; CompElast = 2 is for BeamDyn).

I provided some guidance above about how to go about implementing this feature in ElastoDyn in the forum posts in this topic above.

Best regards,
Jason Jonkman, Ph.D.
Senior Engineer | National Wind Technology Center (NWTC)

National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway | Golden, CO 80401
+1 (303) 384 – 7026 | Fax: +1 (303) 384 – 6901
nwtc.nrel.gov

Sebastian.Hippel
Posts: 9
Joined: Mon Nov 16, 2015 10:00 am
Organization: Flensburg University of Applied Sciences
Location: Germany

Re: Making fault

Postby Sebastian.Hippel » Fri May 24, 2019 3:33 am

Dear Jason,

I tried to modify the Blade element mass during the simulation by adding a time condition in the SOUBROUTINE Coeff() as below:

Code: Select all

IF (t > 5) THEN ! Add mass to blade Element at simulation time 5 [s]
               p%BElmntMass(J,K) = 1.5*p%MassB(K,J)*p%DRNodes(J)                    ! Mass of blade element J Multiples by 1.5
         ELSE
            ! Calculate the mass of the current element
               p%BElmntMass(J,K) = p%MassB(K,J)*p%DRNodes(J)                        ! Mass of blade element J
         ENDIF   

Therefore I added a time variable (t) to the SUBROUTINE Coeff() and to all Subroutines, where this Subroutine is called.
But the compiling of OpenFAST after this modification didn’t succeed. I think the problem is that by adding the time variable (t) to the Subroutines, which are only one time called at the beginning of the simulation.
I’m trying now to add a separate Subroutine, where I can add some mass to blade element, but I think I’ll have same problem as above, because I need this parameters to be displayed in the SUBROUTINE SetOtherParameters ()
Do you any advice how this should be implemented? Any help will be really appreciated!

Best regards
Sebastian

Jason.Jonkman
Posts: 4056
Joined: Thu Nov 03, 2005 4:38 pm
Location: Boulder, CO
Contact:

Re: Making fault

Postby Jason.Jonkman » Fri May 24, 2019 8:05 am

Dear Sebastian,

SUBROUTINE ElastoDyn.f90/COEFF() is only called once by ElastoDyn at initialization. Moreover, FAST does not allow parameter data types (p) to be changed after initialization.

Instead of changing p%BElmntMass(J,K) directly, I would search where this parameter is used in the time-domain part of the simulation and multiply it by a time-dependent scaling factor (e.g., 1.5).

Best regards,
Jason Jonkman, Ph.D.
Senior Engineer | National Wind Technology Center (NWTC)

National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway | Golden, CO 80401
+1 (303) 384 – 7026 | Fax: +1 (303) 384 – 6901
nwtc.nrel.gov


Return to “Airfoils”

Who is online

Users browsing this forum: No registered users and 1 guest