Dear experts.
Hello
I am trying to make fault affecting blades such as crack, torsion, or bending.
I know for continual deformation I can do it changing input files. Now, I wonder if and how I am able to make such changes
during simulation as an abrupt fault; I think it is possible through changing Subroutine Codes provided in FORTRAN, but, actually,
I am not sure, or I think maybe there are some other alternative.
I would be very much obliged if you can help me.
Best Regards
Making fault
Moderator: Bonnie.Jonkman

 Posts: 21
 Joined: Sat Mar 14, 2015 12:54 am
 Organization: KNTU
 Location: IranTehran

 Posts: 3857
 Joined: Thu Nov 03, 2005 4:38 pm
 Location: Boulder, CO
 Contact:
Re: Making fault
Dear Amirhossein Hosseinpour,
Without changes to the source code, FAST cannot model a sudden blade failure through cracking, delamination, etc., which I presume you'd want to model as a sudden change in blade stiffness. I have not attempted this myself, but one challenge I foresee will be that such blade properties are defined as parameters (constants) at the beginning of the simulation that are not meant to be changed. You can probably get around this by adding a scale factor that changes the stiffness at a given time in the simulation. Perhaps a bigger problem is that the blade mode shapes are derived from the stiffness (among other factors), so, changing the stiffness should also impact the mode shape, which will be more difficult to adjust in the middle of a simulation.
Best regards,
Without changes to the source code, FAST cannot model a sudden blade failure through cracking, delamination, etc., which I presume you'd want to model as a sudden change in blade stiffness. I have not attempted this myself, but one challenge I foresee will be that such blade properties are defined as parameters (constants) at the beginning of the simulation that are not meant to be changed. You can probably get around this by adding a scale factor that changes the stiffness at a given time in the simulation. Perhaps a bigger problem is that the blade mode shapes are derived from the stiffness (among other factors), so, changing the stiffness should also impact the mode shape, which will be more difficult to adjust in the middle of a simulation.
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
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

 Posts: 14
 Joined: Sun Nov 27, 2016 6:07 pm
 Organization: Tsinghua University
 Location: China
Re: Making fault
Dear Jason,
I also want to realize the sudden blade failure, such as changes of the blade stiffness, and the corresponding mode shape of the blade in the middle of the FAST simulation, as you have mentioned before. Now I found the variables in the elastoDyn.f90., i.e. FlpStff,EdgStff, GJStff,(these variables are input by "NRELOffshrBsline5MW_Blade.dat" for linear interpolation, if my understanding is right) The first thing is to change the values of blade properties and blade mode shapes in "NRELOffshrBsline5MW_Blade.dat". I have four questions.
(1) You mentioned the mode shape is influenced by the stiffness, so how to calculate/determine the values of the mode shape and modify the original values in the "NRELOffshrBsline5MW_Blade.dat" according to the stiffness of blades. I also don't know what's the meaning of "BldFl1Sh(2)", "coeff of x^2"... The original mode shapes are presented as follows.
 BLADE MODE SHAPES 
0.0622 BldFl1Sh(2)  Flap mode 1, coeff of x^2
1.7254 BldFl1Sh(3)  , coeff of x^3
3.2452 BldFl1Sh(4)  , coeff of x^4
4.7131 BldFl1Sh(5)  , coeff of x^5
2.2555 BldFl1Sh(6)  , coeff of x^6
...
(2) How to consider the stiffness changes appear in the middle of simultion (for example, the blade fails at 10s simulation time)? Can we only modify the source code (elastoDyn.f90)? for instance, add an ifstatement to judge the simulation time when stiffness changes appear？Do you have any suggestions?
(3) You mentioned that it is challenging to adjust the mode shape in the middle of simulation because it would be influenced by the stiffness. Likewise, can we also modify the elastoDyn.f90 and add an ifstatement to determine the changed mode shape? If it is not possible, could you give me some advice?
(4) If it is difficult to consider the changed mode shape in the middle simulation, I am also wondering if it is possible to divide the one simulation case into two cases, instead of directly consider the stiffness changes in one simulation case? The first case only simulates the normal operation of wind turbine and end up with a fault (such as end up at 10s simulation time). Then the initial boundary condition of the second case is derived from the end of the first case (at 10s simulation time) and begin with the same fault as the first case.
Many thanks to you.
Best regards,
I also want to realize the sudden blade failure, such as changes of the blade stiffness, and the corresponding mode shape of the blade in the middle of the FAST simulation, as you have mentioned before. Now I found the variables in the elastoDyn.f90., i.e. FlpStff,EdgStff, GJStff,(these variables are input by "NRELOffshrBsline5MW_Blade.dat" for linear interpolation, if my understanding is right) The first thing is to change the values of blade properties and blade mode shapes in "NRELOffshrBsline5MW_Blade.dat". I have four questions.
(1) You mentioned the mode shape is influenced by the stiffness, so how to calculate/determine the values of the mode shape and modify the original values in the "NRELOffshrBsline5MW_Blade.dat" according to the stiffness of blades. I also don't know what's the meaning of "BldFl1Sh(2)", "coeff of x^2"... The original mode shapes are presented as follows.
 BLADE MODE SHAPES 
0.0622 BldFl1Sh(2)  Flap mode 1, coeff of x^2
1.7254 BldFl1Sh(3)  , coeff of x^3
3.2452 BldFl1Sh(4)  , coeff of x^4
4.7131 BldFl1Sh(5)  , coeff of x^5
2.2555 BldFl1Sh(6)  , coeff of x^6
...
(2) How to consider the stiffness changes appear in the middle of simultion (for example, the blade fails at 10s simulation time)? Can we only modify the source code (elastoDyn.f90)? for instance, add an ifstatement to judge the simulation time when stiffness changes appear？Do you have any suggestions?
(3) You mentioned that it is challenging to adjust the mode shape in the middle of simulation because it would be influenced by the stiffness. Likewise, can we also modify the elastoDyn.f90 and add an ifstatement to determine the changed mode shape? If it is not possible, could you give me some advice?
(4) If it is difficult to consider the changed mode shape in the middle simulation, I am also wondering if it is possible to divide the one simulation case into two cases, instead of directly consider the stiffness changes in one simulation case? The first case only simulates the normal operation of wind turbine and end up with a fault (such as end up at 10s simulation time). Then the initial boundary condition of the second case is derived from the end of the first case (at 10s simulation time) and begin with the same fault as the first case.
Many thanks to you.
Best regards,

 Posts: 3857
 Joined: Thu Nov 03, 2005 4:38 pm
 Location: Boulder, CO
 Contact:
Re: Making fault
Dear Yichau.Liu,
Here are my answers to your questions:
1) Yes, the mode shapes depend on the distributed mass and stiffness and the appropriate boundary conditions. To derive the blade mode shapes, we normally consider the blade cantilevered to a hub with rigid support structure and derive the mode shapes for a specific rotor speed and bladepitch angle. BldFl1Sh(25) (etc. for each flapwise and edgewise mode) are coefficients of a 6thorder polynomial (without the offset and linear term) that define the mode shape. The NREL preprocessor Modes can calculate the polynomial coefficients directly. The NREL preprocessor BModes can calculate the mode shapes, but you must fit a polynomial to the mode shape to derive the polynomial coefficients (e.g. using the ModeShapePolyFitting.xls spreadsheet). These topics have been discussed many times on this forum.
2/3) Yes, you would have to change the ElastoDyn source code if you want the stiffness and/or mode shapes to change within a given simulation. The input values are used to define variables that are currently stored as timeinvariant parameters in the source code. You would have to change these so that the variables are timedependent parameters. I would start be seeing how the stiffness and mode shapes specified in the ElastoDyn input file are processed by the source code. That said, I'm not really sure why you'd want to to model the actual transient event of a stiffness change. Normally a tool like FAST is used to calculate structural loads that could help you predict the onset of failure (or to design the blade so that it does not fail), but not to directly model an actual blade failure event.
4) Yes, you could always change the blade stiffness and mode shapes between separate FAST simulations, as long as you don't want to model the actual transient event associated with the stiffness change.
Best regards,
Here are my answers to your questions:
1) Yes, the mode shapes depend on the distributed mass and stiffness and the appropriate boundary conditions. To derive the blade mode shapes, we normally consider the blade cantilevered to a hub with rigid support structure and derive the mode shapes for a specific rotor speed and bladepitch angle. BldFl1Sh(25) (etc. for each flapwise and edgewise mode) are coefficients of a 6thorder polynomial (without the offset and linear term) that define the mode shape. The NREL preprocessor Modes can calculate the polynomial coefficients directly. The NREL preprocessor BModes can calculate the mode shapes, but you must fit a polynomial to the mode shape to derive the polynomial coefficients (e.g. using the ModeShapePolyFitting.xls spreadsheet). These topics have been discussed many times on this forum.
2/3) Yes, you would have to change the ElastoDyn source code if you want the stiffness and/or mode shapes to change within a given simulation. The input values are used to define variables that are currently stored as timeinvariant parameters in the source code. You would have to change these so that the variables are timedependent parameters. I would start be seeing how the stiffness and mode shapes specified in the ElastoDyn input file are processed by the source code. That said, I'm not really sure why you'd want to to model the actual transient event of a stiffness change. Normally a tool like FAST is used to calculate structural loads that could help you predict the onset of failure (or to design the blade so that it does not fail), but not to directly model an actual blade failure event.
4) Yes, you could always change the blade stiffness and mode shapes between separate FAST simulations, as long as you don't want to model the actual transient event associated with the stiffness change.
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
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

 Posts: 14
 Joined: Sun Nov 27, 2016 6:07 pm
 Organization: Tsinghua University
 Location: China
Re: Making fault
Dear Jason,
Thanks for your answers. I am still trying to understand the meaning of the source code in ElastoDyn.f90 and want to make the stiffness or/and mode shapes of the blades changing with time firstly. But now I still confused, I am not sure which part or which subroutine I should modify. Could you give me some suggestions about the specific subroutine and clues? Many thanks to you. Eclosed please find the public subroutines contained in the ElastoDyn.f90.
! ..... Public Subroutines ...................................................................................................
PUBLIC :: ED_Init ! Initialization routine
PUBLIC :: ED_End ! Ending routine (includes clean up)
PUBLIC :: ED_UpdateStates ! Loose coupling routine for solving for constraint states, integrating
! continuous states, and updating discrete states
PUBLIC :: ED_CalcOutput ! Routine for computing outputs
PUBLIC :: ED_CalcConstrStateResidual ! Tight coupling routine for returning the constraint state residual
PUBLIC :: ED_CalcContStateDeriv ! Tight coupling routine for computing derivatives of continuous states
PUBLIC :: ED_UpdateDiscState ! Tight coupling routine for updating discrete states
PUBLIC :: ED_JacobianPInput ! Routine to compute the Jacobians of the output (Y), continuous (X), discrete
! (Xd), and constraintstate (Z) equations all with respect to the inputs (u)
PUBLIC :: ED_JacobianPContState ! Routine to compute the Jacobians of the output (Y), continuous (X), discrete
! (Xd), and constraintstate (Z) equations all with respect to the continuous
! states (x)
PUBLIC :: ED_JacobianPDiscState ! Routine to compute the Jacobians of the output (Y), continuous (X), discrete
! (Xd), and constraintstate (Z) equations all with respect to the discrete
! states (xd)
PUBLIC :: ED_JacobianPConstrState ! Routine to compute the Jacobians of the output (Y), continuous (X), discrete
! (Xd), and constraintstate (Z) equations all with respect to the constraint
! states (z)
PUBLIC :: ED_GetOP ! Routine to pack the operating point values (for linearization) into arrays
Best regards,
Thanks for your answers. I am still trying to understand the meaning of the source code in ElastoDyn.f90 and want to make the stiffness or/and mode shapes of the blades changing with time firstly. But now I still confused, I am not sure which part or which subroutine I should modify. Could you give me some suggestions about the specific subroutine and clues? Many thanks to you. Eclosed please find the public subroutines contained in the ElastoDyn.f90.
! ..... Public Subroutines ...................................................................................................
PUBLIC :: ED_Init ! Initialization routine
PUBLIC :: ED_End ! Ending routine (includes clean up)
PUBLIC :: ED_UpdateStates ! Loose coupling routine for solving for constraint states, integrating
! continuous states, and updating discrete states
PUBLIC :: ED_CalcOutput ! Routine for computing outputs
PUBLIC :: ED_CalcConstrStateResidual ! Tight coupling routine for returning the constraint state residual
PUBLIC :: ED_CalcContStateDeriv ! Tight coupling routine for computing derivatives of continuous states
PUBLIC :: ED_UpdateDiscState ! Tight coupling routine for updating discrete states
PUBLIC :: ED_JacobianPInput ! Routine to compute the Jacobians of the output (Y), continuous (X), discrete
! (Xd), and constraintstate (Z) equations all with respect to the inputs (u)
PUBLIC :: ED_JacobianPContState ! Routine to compute the Jacobians of the output (Y), continuous (X), discrete
! (Xd), and constraintstate (Z) equations all with respect to the continuous
! states (x)
PUBLIC :: ED_JacobianPDiscState ! Routine to compute the Jacobians of the output (Y), continuous (X), discrete
! (Xd), and constraintstate (Z) equations all with respect to the discrete
! states (xd)
PUBLIC :: ED_JacobianPConstrState ! Routine to compute the Jacobians of the output (Y), continuous (X), discrete
! (Xd), and constraintstate (Z) equations all with respect to the constraint
! states (z)
PUBLIC :: ED_GetOP ! Routine to pack the operating point values (for linearization) into arrays
Best regards,

 Posts: 3857
 Joined: Thu Nov 03, 2005 4:38 pm
 Location: Boulder, CO
 Contact:
Re: Making fault
Dear Yichau.Liu,
SUBROUTINE Coeff() in ElastoDyn.f90 is used to set the generalized elastic stiffness matrices (p%KBF for flapwise and p%KBE for edgewise) based on the specified distributed stiffness and mode shapes. You'll want to change these stiffness parameters (and perhaps mode shapes) to be time dependent, so, you'll have to change how they are defined/stored (to add a dimension to the array indicating the time variation) and used (to make use of the extra dimension).
Best regards,
SUBROUTINE Coeff() in ElastoDyn.f90 is used to set the generalized elastic stiffness matrices (p%KBF for flapwise and p%KBE for edgewise) based on the specified distributed stiffness and mode shapes. You'll want to change these stiffness parameters (and perhaps mode shapes) to be time dependent, so, you'll have to change how they are defined/stored (to add a dimension to the array indicating the time variation) and used (to make use of the extra dimension).
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
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

 Posts: 14
 Joined: Sun Nov 27, 2016 6:07 pm
 Organization: Tsinghua University
 Location: China
Re: Making fault
Dear Jason,
With your help, I have added an additional dimension of the variable KBF, KBE and make it changed with time. I am trying to understand the infuence of the changed stiffness and mode shape. According to the ElastoDyn, the KBF and KBE are used to calculate the natural frequency of the blade FreqBE (Inv2Pi * sqrt (stiffness/mass)), and then to calculate the damping CBF. The variable CBF is finally employed in the subroutine FillAugMat to calculate the mass matrix AugMat (if it is right). My question is:
According to the source code, I am wondering whether such a failure (reduced stiffness and corresponding changed mode shape) will only influence the mass matrix and finally influence the motions of the wind turbine. (2) How would the turbine behave if the stiffness is changed? I am not sure how to know my modification of the source code is correct.
Actually, it is still not clear for me to understand the transfer process of the influence of the reduced stiffness, and ask for your help. Thanks for your kind help and timely responses all the time!
Best regards,
With your help, I have added an additional dimension of the variable KBF, KBE and make it changed with time. I am trying to understand the infuence of the changed stiffness and mode shape. According to the ElastoDyn, the KBF and KBE are used to calculate the natural frequency of the blade FreqBE (Inv2Pi * sqrt (stiffness/mass)), and then to calculate the damping CBF. The variable CBF is finally employed in the subroutine FillAugMat to calculate the mass matrix AugMat (if it is right). My question is:
According to the source code, I am wondering whether such a failure (reduced stiffness and corresponding changed mode shape) will only influence the mass matrix and finally influence the motions of the wind turbine. (2) How would the turbine behave if the stiffness is changed? I am not sure how to know my modification of the source code is correct.
Actually, it is still not clear for me to understand the transfer process of the influence of the reduced stiffness, and ask for your help. Thanks for your kind help and timely responses all the time!
Best regards,

 Posts: 3857
 Joined: Thu Nov 03, 2005 4:38 pm
 Location: Boulder, CO
 Contact:
Re: Making fault
Dear Yichau.Li,
KBF and CBF are the generalized elastic stiffness and structural damping matrices, respectively. They do not influence the mass matrix, but rather they influence the forces on the righthand side of generalized equations of motion, m*a=F (AugMat contains the generalized mass matrix and force vector concatenated into a single matrix, [m F]).
If you are changing KBF (which then changes CBF) during the course of a simulation, I would expect the natural frequencies and deflections for a given load to change. You could do a sanity check if this is working by:
(1) disabling all features of FAST except ElastoDyn,
(2) disable all DOFs of ElastoDyn except the blades,
(3) set the initial rotor speed to zero,
(4) set a nonzero initial blade displacement (nonzero OoPDefl), and
(5) simulate this freedecay motion.
I would expect a noticeable change in oscillation frequency and motion amplitude of the blade deflection outputs after changing KBF (likewise for KBE).
Best regards,
KBF and CBF are the generalized elastic stiffness and structural damping matrices, respectively. They do not influence the mass matrix, but rather they influence the forces on the righthand side of generalized equations of motion, m*a=F (AugMat contains the generalized mass matrix and force vector concatenated into a single matrix, [m F]).
If you are changing KBF (which then changes CBF) during the course of a simulation, I would expect the natural frequencies and deflections for a given load to change. You could do a sanity check if this is working by:
(1) disabling all features of FAST except ElastoDyn,
(2) disable all DOFs of ElastoDyn except the blades,
(3) set the initial rotor speed to zero,
(4) set a nonzero initial blade displacement (nonzero OoPDefl), and
(5) simulate this freedecay motion.
I would expect a noticeable change in oscillation frequency and motion amplitude of the blade deflection outputs after changing KBF (likewise for KBE).
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
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

 Posts: 14
 Joined: Sun Nov 27, 2016 6:07 pm
 Organization: Tsinghua University
 Location: China
Re: Making fault
Dear Jason,
Many thanks to you for your kind help all the time. In addition to the blade failure, I also want to make the mooring line failure. I am considering two outmost failures now. One is a failure in the top segment (fairlead), which is close to the floating platform (hence the mooring line will fall away and the tension will not pull anymore the floater if it happens), another one is a failure in the bottom segment of the line which is close to the anchor (the anchor will move and there is a larger part of the line resting on the seabed).
Similarly, I hope to revise the code of the MoorDyn to make the fault. In my idea, (1) I thinkg reducing the tension of the top segment of the line into a small value or zero, is enough to represent the first failure. But I am not sure. (2) As for the second failure, is it right if I directly change the position of the bottom node of the mooring line in the MoorDyn code?
Thank you a lot.
Best regards,
Many thanks to you for your kind help all the time. In addition to the blade failure, I also want to make the mooring line failure. I am considering two outmost failures now. One is a failure in the top segment (fairlead), which is close to the floating platform (hence the mooring line will fall away and the tension will not pull anymore the floater if it happens), another one is a failure in the bottom segment of the line which is close to the anchor (the anchor will move and there is a larger part of the line resting on the seabed).
Similarly, I hope to revise the code of the MoorDyn to make the fault. In my idea, (1) I thinkg reducing the tension of the top segment of the line into a small value or zero, is enough to represent the first failure. But I am not sure. (2) As for the second failure, is it right if I directly change the position of the bottom node of the mooring line in the MoorDyn code?
Thank you a lot.
Best regards,

 Posts: 12
 Joined: Tue Apr 05, 2011 2:41 pm
 Organization: University of Prince Edward Island
 Location: Charlottetown, PEI, Canada
 Contact:
Re: Making fault
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
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

 Posts: 14
 Joined: Sun Nov 27, 2016 6:07 pm
 Organization: Tsinghua University
 Location: China
Re: Making fault
Dear Matt.Hall,
Thanks for your kind suggestions, which really help me a lot. I am sorry for not response to you so quickly, because I am working on the problem of the mooring line failure these days. Following your advice, I set the m%LineList(1)%FairConnect)%Ftot to be zero and set the m%LineList(1)%l(1) to be a large value (e.g. 3000m) in the subroutine of MD_CalcContStateDeriv in front of the subroutine DoLineRHS (I guess modifying the code in the DoLineRHS is also fine, but I am not sure if it could consider the failure of one/two mooring line(s)..), which is the simplest method you mentioned. It seems it workes. Attached please find some preliminary results of the mooring line failure that I want to share with you. The failure time is 100s. Many thanks to you.
Best regards,
Thanks for your kind suggestions, which really help me a lot. I am sorry for not response to you so quickly, because I am working on the problem of the mooring line failure these days. Following your advice, I set the m%LineList(1)%FairConnect)%Ftot to be zero and set the m%LineList(1)%l(1) to be a large value (e.g. 3000m) in the subroutine of MD_CalcContStateDeriv in front of the subroutine DoLineRHS (I guess modifying the code in the DoLineRHS is also fine, but I am not sure if it could consider the failure of one/two mooring line(s)..), which is the simplest method you mentioned. It seems it workes. Attached please find some preliminary results of the mooring line failure that I want to share with you. The failure time is 100s. Many thanks to you.
Best regards,
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
 Attachments

 results.zip
 (247.23 KiB) Downloaded 26 times
Who is online
Users browsing this forum: No registered users and 0 guests