# MLife-Fatigue-Number of cycles to failure

In Theory Manual we can find the following formulation for Ni (number of cycles to failure) calculation (picture)

I tried to find out from my research where this formulation comes from because I can’t understand the 1/2 and i could not find it.(There is only reference to Annex G but that does not contain this formulation) From what I understood this formula only takes into account one slope unlike in the Eurocode.

Thank you for your help.

Dear Maryana,

The 1/2 is there because the S-N curve is typically given in terms of load amplitudes (peak-to-mean) rather than load ranges (peak-to-trough) and the variable L^RF_i is a range, not an amplitude.

Best regards,

Dear Jason,

Thank you very much for your quick answer.
Best regards,

Dear Jason,

In the meantime, other doubts have arisen regarding the programme:

1. In the CertTest folder I checked the fatigue channels that were chosen in different tests. I noticed that there are axial force, shear force and moment channels. That is, they have different units.
But there is no step where the units are checked and transformed into a single one.
So I can’t understand the formula used for the number of cycles to failure. How does one formula fit different types of input? And shouldn’t all the channels for fatigue calculations be in MPa ?

2. Another uncertainty I have is about the input file. If I want to analyze a thousand files, do I have to name them one by one in Settings File ? And I already have to know what type of file has a specific operation status (normal oper, idling, discrete event)?

Excerpt from Setting File:
"----- Input Files ------------------------------------------------------------
1 FileFormat Format of input files. 1 = FAST ascii, 2 = FAST binary
9 1.1 1.3 1.5 1.7 (Weibull-Weighted Normal Operation: NumNormFiles, PSF1, PSF2, PSF3, PSF4)
“DLC1.1_01_small.out”
“DLC1.1_07_small.out”
“DLC1.1_13_small.out”
“DLC1.1_19_small.out”
“DLC1.1_25_small.out”
“DLC1.1_31_small.out”
“DLC1.1_37_small.out”
“DLC1.1_43_small.out”
“DLC1.1_49_small.out”
0 1.1 1.3 1.5 1.7 (Weibull-Weighted Idling: NumIdleFiles, PSF1, PSF2, PSF3, PSF4)
0 1.2 1.3 1.4 1.6 (Discrete Events: NumDiscFiles, PSF1, PSF2, PSF3, PSF4)
==EOF== DO NOT REMOVE OR CHANGE. MUST COME JUST AFTER LAST LINE OF VALID INPUT.
"

Thank you very much !!

Dear Maryana,

Here are my answers to your questions:

1. In the MLife CertTest examples, loads from FAST are processed directly for fatigue rather than first using the loads to calculate stress; calculating stress is likely the preferred approach, but requires tools (e.g., FEA) to be used as a post-process to FAST before using MLife. (MLife can process loads directly from FAST or post-process stress time series.) When processing loads directly, the S-N curve is treated in terms of load, i.e., “S” is a load with the appropriate load units (e.g., N for force and Nm for moment). My Mar 25, 2020 post in the following forum topic provides some guidance on how to calculate the associated load-based ultimate load (LUlt) used to define the S-N curve for thin-walled circular cross sections: http://forums.nrel.gov/t/mlife-user-defined-distribution/1970/15.

2. Yes.

Best regards,

Dear Jason ,
Thank you very much for your help. Your advice has helped a lot.

Dear Jason,
I have another question)). I was trying to understand how it is possible to change direction of wind in MLife, and did’t find some good explanation. In some reply you wrote :"And for offshore loads analysis, it is often important to consider a multi-dimensional probability distribution of wind and waves. "
Is it what i am looking for? Can you suggest something to read.

Thank you very much for your work !

Dear Maryana,

MLife supports a user-specified multi-dimensional probability distribution (in place of the simple Weibull wind-speed distribution) through the UserDistrib, nDistribVars, and DistribName inputs in the MLife input file. This is documented a bit in the User_Probability_Distributions.pdf file provided in the Documentation directory of the MLife archive and Test28 in the MLife CertTest shows a simple example of how to use it.

Best regards,

Thank you Jason, you are the best !

I am trying now to do some fatigue calculations using load roses. But it stops always with the same error (before adding load rose everything works):

[b]Matrix dimensions must agree.

Error in compute_brief_aggregate_statistics (line 34)
Statistics.AggMinInds = Statistics.MinInds(uint32(Statistics.AggMinFileNum) + offset);

Error in mlife (line 466)
Statistics = compute_brief_aggregate_statistics( FileInfo.nChannels, FileInfo.nFiles,
Statistics );[/b]

I can not understand what is wrong. Is it because the channel \$TwHt2MLxt\$ is negative?

Thank you very much,

Leaving here a part of my input file :
----- Load Roses -------------------------------------------------------------
1 NumRoses The number of load roses to generate.
Rose Name Units Channel1 Channel2 nSectors
“TwHt2MLxyt” “kN·m” \$TwHt2MLxt\$ \$TwHt2MLyt\$ 6
----- Time and Wind Speed ----------------------------------------------------
1 TimeChan The channel containing time.
2 WSChan The primary wind-speed channel (used for mean wind speed and turbulence intensity, 0 for none)
----- Statistics and Extreme Events ------------------------------------------
false DoStats Generate statistics of all the channels.
false WrStatsTxt Write the stats to a text file?
false WrStatsXLS Write the stats to an Excel file?
1 NumSFChans Number of channels that will have summary statistics generated for them.
\$TwHt2MLxyt_2\$ SFChans List of channels that will have summary statistics generated for them. Must number NumSFChans.
----- Distributions -----------------------------------------------------------
false UserDistrib User defined distribution? true = load user-specified distribution, false = only use Weibull wind distribution
2.00001 WeibullShape Weibull shape factor. If WeibullShape=2, enter the mean wind speed for WeibullScale.
8.462843 WeibullScale Weibull scale factor. If WeibullShape<>2. Otherwise, enter the mean wind speed.
4 WSin Cut-in wind speed for the turbine.
20 WSout Cut-out wind speed for the turbine.
31 WSmax Maximum wind speed value for the wind-speed bins.
1 WSMaxBinSize Maximum width of a wind-speed bin.
0 nDistribVars Number of independent variables in the user-specified distribution, ignored if UserDistrib = false
“” DistribName Filename of the user-supplied distribution table, ignored if UserDistrib = false
----- Fatigue ----------------------------------------------------------------
8 nFatigueChannels The number of fatigue channels. Next six lines ignored if zero.
0.0 FiltRatio The fraction of the maximum range of each channel used as a cutoff range for the racetrack filter. Use zero for no filter.
630720000 DesignLife Number of seconds in the design lifetime (20 years = 630720000 seconds).
1 Availability Fraction of the design life the turbine is operating when winds are between Vin and Vout
true BinCycles Bin the rainflow cycles?
0.5 UCMult Multiplier for binning unclosed cycles. (0 discards, 1 counts as a full cycle)
true DoShortTerm Compute simple (unweighted) damage-equivalent loads and damage rates.
true DoLife Do lifetime-related calculations?
false DoAggregate Compute a DELs and a damage result based on an aggregate of all the input files (does not use the wind spped distribution)
true WrShortTermTxt Write short-term results to plain-text files?
true WrShortTermXLS Write short-term resultsto an Excel workbook?
true WrLifeTxt Write lifetime results to plain-text files?
true WrLifeXLS Write lifetime results to an Excel workbook?
1 EquivalentFrequency The frequency of the damage equivalent load (Hz)
true DEL_AsRange true = report DELs as a range value, false = report as a one-sided amplitude
3 DEL_Type 1 = fixed mean, 2 = zero mean, 3 = both
0 GoodmanFlag 0 = no Goodman correction, 1 = use Goodman correction, 2 = compute results with and without Goodman correction
Channel# NSlopes SNslopeLst BinFlag BinWidth/Number TypeLMF LUlt BinWidth not used when BinCycles is false. nFatigueChannels rows of data follow. LUlt >> LMF
\$TwHt2MLyt\$ 1 5 BW 402 AM 266233.9842
\$TwHt2MLxt\$ 1 5 BW 402 AM 266233.9842
\$TwHt2MLxyt_1\$ 1 5 BW 402 AM 266233.9842
\$TwHt2MLxyt_2\$ 1 5 BW 402 AM 266233.9842
\$TwHt2MLxyt_3\$ 1 5 BW 402 AM 266233.9842
\$TwHt2MLxyt_4\$ 1 5 BW 402 AM 266233.9842
\$TwHt2MLxyt_5\$ 1 5 BW 402 AM 266233.9842
\$TwHt2MLxyt_6\$ 1 5 BW 402 AM 266233.9842
0 NumDELGroups Number of DEL groups. DEL tables are organized according to groups.
Name NChannels ChannelList

Dear Maryana,

I’m not sure. I would not expect a negative value in the channel value to cause a problem with load roases. Do the outputs TwHt2MLxt and TwHt2MLyt exist in your FAST/OpenFAST output file?

Many of the MLife CertTest test cases test roses; do these run for you?

Best regards,