| Title: | Fatigue Crack Growth in Reliability |
|---|---|
| Description: | Fatigue Crack Growth in Reliability estimates the distribution of material lifetime due to mechanical fatigue efforts. The 'FCGR' package provides simultaneous crack growth curves fitting to different specimens in materials under mechanical stress efforts. Linear mixed-effects models with smoothing B-Splines and the linearized Paris-Erdogan law are applied. Once defined the fail for a determined crack length, the distribution function of failure times to fatigue is obtained. The density function is estimated by applying nonparametric binned kernel density estimate ('bkde') and the kernel estimator of the distribution function ('kde'). The results of Pinheiro and Bates method based on nonlinear mixed-effects regression ('nlme') can be also retrieved. The package contains the crack.growth(), PLOT.cg(), IB.F(), and Alea.A (database) functions. |
| Authors: | Antonio Meneses [aut, cre], Salvador Naya [ctb], Javier Tarrio-Saavedra [ctb], Ignacio Lopez-Ullibarri [ctb] |
| Maintainer: | Antonio Meneses <[email protected]> |
| License: | GPL (>= 2) |
| Version: | 1.2-0 |
| Built: | 2026-10-08 12:10:18 UTC |
| Source: | https://github.com/cran/FCGR |
Crack growth of aluminum A-alloy due mechanical fatigue efforts. Alea.A is a data frame composed of 262 rows y 3 columns.
data(Alea.A)data(Alea.A)
This data frame is composed of the following columns:
cycles21 vectors with times or cycles corresponding to each specimen (overall 262 cycles).
cracks21 vectors with the crack lengths corresponding to each specimen.
sample21 different specimens, each one repeated the number of elements of "cycles" or "cracks".
Alea.A is composed of the crack length growth and number of cycles of 21 different specimens. It is detailed in Hudak et al. (1978) and referred by Meeker and Escobar (1998) in table C.14.
Meeker, W., Escobar, L. (1998) Statistical Methods for Reliability Data. John Wiley & Sons, Inc. New York.
It provides the lifetime distribution of metallic materials that fail due to the crack growth produced by mechanical fatigue efforts. The crack growth trends are fitted by linear or nonlinear mixed effects regression models in order to make predictions about the material lifetime. The lifetime is defined as the time passed before the material does not meet the specification requirements and it is conditioned by a critical crack length that induces the material failure. Three different methods can be applied to estimate the fatigue lifetime distribution: "SEP-lme_bkde" and "SEP-lme_kde" are nonparametric while "PB-nlme" corresponds to the parametric approach proposed by Pinheiro and Bates (2000).
cracks.growth( x, aF, T_c, method = c("SEP-lme_bkde", "SEP-lme_kde", "PB-nlme"), nMC = 5000, nBKDE = 1000, nKDE = 1000, seed = NULL )cracks.growth( x, aF, T_c, method = c("SEP-lme_bkde", "SEP-lme_kde", "PB-nlme"), nMC = 5000, nBKDE = 1000, nKDE = 1000, seed = NULL )
x |
Matrix or data frame composed of three columns: times or number of cycles, crack lengths and specimen number. |
aF |
Critical crack length for which the material failure is produced. |
T_c |
Censoring time or frequency. |
method |
A string of characters: "SEP-lme_bkde" (default methodology) indicates that a mixed effects linear regression model is applied to crack growth data and the lifetime density is estimated by bkde method. "SEP-lme_kde" indicates that a mixed effects linear regression model is applied to crack growth data and the lifetime distribution is estimated by kde method. "PB-nlme" indicates that a mixed effects nonlinear regression model is applied to crack growth data and the lifetime the parameters are estimated maximum likelihood methodologies, and the lifetime distribution by Monte Carlo. |
nMC |
Number of Monte Carlo estimates, by default 5000. |
nBKDE |
Number of bkde estimates, by default 5000. |
nKDE |
Number of kde estimates, by default 5000. |
seed |
Seed for reproducibility. |
This function provides a simultaneous fitting of crack growth data corresponding to different specimens when these are subjected to mechanical fatigue efforts. For this purpose, mixed effects linear models (lme) with B-spline smoothing are applied. Since the failure is defined at a specific critical crack length, predictions of material lifetime are obtained assuming the linearized Paris-Erdogan law and the material lifetime distribution is estimated. There are available three different techniques to estimate the lifetime distribution: the binned kernel density estimate (bkde), the kernel estimator for the distribution function (kde) computed by Quintela del Rio and Estevez-Perez (2012), and in addition the parametric method proposed by Pinheiro and Bates (2000) based on mixed effects nonlinear regression (nlme), maximum likelihood and Monte Carlo simulation.
dataData frame with the data corresponding to number of cycles, crack length, and sample.
a.FCritical crack length.
TcCensoring time.
paramData frame with the estimates of Paris law parameters: C and m
crack.estData frame with time, crack growth estimates, and corresponding sample or specimen.
sigmaResidual standard deviation.
residualsResiduals resulting from the crack length fitting.
crack.predData frame with time, crack growth predictions out of the experimental time interval, and corresponding sample or specimen.
F.empData frame with the empirical lifetime distribution and the corresponding time: time, Fe.
bwBandwidth used in bkde and kde methods.
F.estData frame with the estimated lifetime distribution and the corresponding time: time, F.
nBKDENumber of bkde estimates.
nKDENumber of kde estimates.
nMCNumber of Monte Carlo estimates.
Antonio Meneses [email protected], Salvador Naya [email protected], Javier Tarrio-Saavedra [email protected], Ignacio Lopez-Ullibarri [email protected]
Meeker, W., Escobar, L. (1998) Statistical Methods for Reliability Data. John Wiley & Sons, Inc. New York.
Pinheiro JC., Bates DM. (2000) Mixed-effects models in S ans S-plus. Statistics and Computing. Springer-Verlang. New York.
## Using the Alea.A dataset data(Alea.A) x <- Alea.A ## Critical crack length aF <- 1.6 ## Censoring time T_c <- 0.12 ## cracks.growth function applied to Alea.A data cg <- cracks.growth (x, aF, T_c, method = c("SEP-lme_bkde", "SEP-lme_kde", "PB-nlme"), nBKDE = 1000, nKDE = 1000, nMC = 5000) ## cracks.growth values using the "SEP-lme_bkde" by default method. names(cg) # [1] "data" "a.F" "Tc" "param" "crack.est" # [6] "sigma" "residuals" "crack.pred" "F.emp" "bw" #[11] "F.est" "nBKDE"## Using the Alea.A dataset data(Alea.A) x <- Alea.A ## Critical crack length aF <- 1.6 ## Censoring time T_c <- 0.12 ## cracks.growth function applied to Alea.A data cg <- cracks.growth (x, aF, T_c, method = c("SEP-lme_bkde", "SEP-lme_kde", "PB-nlme"), nBKDE = 1000, nKDE = 1000, nMC = 5000) ## cracks.growth values using the "SEP-lme_bkde" by default method. names(cg) # [1] "data" "a.F" "Tc" "param" "crack.est" # [6] "sigma" "residuals" "crack.pred" "F.emp" "bw" #[11] "F.est" "nBKDE"
It performs bootstrap confidence bands for fatigue lifetime. The lifetime matrix is calculated by bootstrap resampling by means the above mentioned methodologies (see craks.growth). The confidence bands are estimated by the quantile based method.
IB.F( z, nB, alpha = 0.05, method = c("SEP-lme_bkde", "SEP-lme_kde", "PB-nlme"), seed = NULL, ncores = min(2L, max(1L, parallel::detectCores() - 1L)) )IB.F( z, nB, alpha = 0.05, method = c("SEP-lme_bkde", "SEP-lme_kde", "PB-nlme"), seed = NULL, ncores = min(2L, max(1L, parallel::detectCores() - 1L)) )
z |
cracks.growth object. |
nB |
Number of bootstrap resampling. |
alpha |
Confidence level. |
method |
Character string showing the distribution estimates method: "SEP-lme_bkde", "SEP-lme_kde" or "PB-nlme. |
seed |
Seed for reproducibility. |
ncores |
Controls how many R processes are launched in parallel. |
IB.F is performed from the output of cracks.growth function.
Return the following values:
Mat.F.BMatrix that contents the fatigue lifetimes corresponding to each bootstrap resampling.
I.BootstrapData frame that contents the bootstrap confidence bands for lifetime distribution, at a confidence level of 95 percent (by default). It is composed by two columns corresponding to the bands limits: low, up.
Antonio Meneses [email protected], Salvador Naya [email protected], Javier Tarrio-Saavedra [email protected], Ignacio Lopez-Ullibarri [email protected]
Meeker, W., Escobar, L. (1998) Statistical Methods for Reliability Data. John Wiley & Sons, Inc. New York.
Pinheiro JC., Bates DM. (2000) Mixed-effects models in S ans S-plus. Statistics and Computing. Springer-Verlang. New York.
Paris, P.C. and Erdogan, F. (1963) A critical analysis of crack propagation laws. J. Basic Eng., 85, 528.
## Using the Alea.A dataset data(Alea.A) x <- Alea.A ## Critical crack length aF <- 1.6 ## Censoring time T_c <- 0.12 ## cracks.growth function applied to Alea.A data cg <- cracks.growth (x, aF, T_c, method = c("SEP-lme_bkde", "SEP-lme_kde", "PB-nlme"), nBKDE = 1000, nKDE = 1000, nMC = 5000) ## z is a cracks.growth object z <- cg ## Number of bootstrap resamplings nB <- 100 ## Application of IB.F function to cg object ic.b <- IB.F(z, nB, alpha = 0.05, method = c("SEP-lme_bkde", "SEP-lme_kde", "PB-nlme")) ## ic.b values obtainde by the "SEP-lme_bkde" model names(ic.b) # [1] "Mat.F.B" "I.Bootstrap" ## Chart with the empirical and estimated distribution functions, ## with bootstrap confidence bands at 95 # Observations from which the distribution function is estimated F1.F <- z$F.est[,2] plot( ic.b$I.Bootstrap$low,F1.F, col=2, type="l", lty=2, lwd=2, xlim=c(0.05,0.18), main="Plot: distributions of failure times\n confidence intervals", xlab="million cycles", ylab="probability", cex.lab=1.7, cex.main=2, las=1) lines(ic.b$I.Bootstrap$up, F1.F, col=2, lty=2, lwd=2) points(z$F.est, pch=20) points(z$F.emp, col=4, pch=20, cex=1.5) legend("topleft", c("Empirical", "Estimated","Bootstrap (95 percent)"), col=c("blue","black","red"), lty=c(1,1,1), pch=c(20,20,20), cex=1.5, bty="n") ## Graph with confidence bands matplot(ic.b$Mat.F.B, F1.F, main="Bootstrap resampling lines", type="l", lwd=2, xlim=c(0.05,0.18), xlab="million cycles", ylab="probability", cex.lab=1.7, cex.main=2, las=1)## Using the Alea.A dataset data(Alea.A) x <- Alea.A ## Critical crack length aF <- 1.6 ## Censoring time T_c <- 0.12 ## cracks.growth function applied to Alea.A data cg <- cracks.growth (x, aF, T_c, method = c("SEP-lme_bkde", "SEP-lme_kde", "PB-nlme"), nBKDE = 1000, nKDE = 1000, nMC = 5000) ## z is a cracks.growth object z <- cg ## Number of bootstrap resamplings nB <- 100 ## Application of IB.F function to cg object ic.b <- IB.F(z, nB, alpha = 0.05, method = c("SEP-lme_bkde", "SEP-lme_kde", "PB-nlme")) ## ic.b values obtainde by the "SEP-lme_bkde" model names(ic.b) # [1] "Mat.F.B" "I.Bootstrap" ## Chart with the empirical and estimated distribution functions, ## with bootstrap confidence bands at 95 # Observations from which the distribution function is estimated F1.F <- z$F.est[,2] plot( ic.b$I.Bootstrap$low,F1.F, col=2, type="l", lty=2, lwd=2, xlim=c(0.05,0.18), main="Plot: distributions of failure times\n confidence intervals", xlab="million cycles", ylab="probability", cex.lab=1.7, cex.main=2, las=1) lines(ic.b$I.Bootstrap$up, F1.F, col=2, lty=2, lwd=2) points(z$F.est, pch=20) points(z$F.emp, col=4, pch=20, cex=1.5) legend("topleft", c("Empirical", "Estimated","Bootstrap (95 percent)"), col=c("blue","black","red"), lty=c(1,1,1), pch=c(20,20,20), cex=1.5, bty="n") ## Graph with confidence bands matplot(ic.b$Mat.F.B, F1.F, main="Bootstrap resampling lines", type="l", lwd=2, xlim=c(0.05,0.18), xlab="million cycles", ylab="probability", cex.lab=1.7, cex.main=2, las=1)
It provides graphical outputs composed of the trends corresponding to the crack length growth due to mechanical fatigue, the crack length estimates by the models, crack length predictions, and lifetime distribution estimates.
PLOT.cg(x)PLOT.cg(x)
x |
cracks.growth object. |
Specifically, the following graphs are provided: exploratory dataset graph, plot with the crack length estimates and predictions, residuals graph, empirical and estimated lifetime distribution plot obtained by SEP-lme_bkde, SEP-lme_kde or PB-nlme methods.
Return the following values:
plot.dataExploratory chart.
plot.predPlot for fatigue lifetimes estimates and predictions.
plot.FPlot for the empirical distribution and lifetimes distribution estimates of fatigue lifetimes.
plot.residResiduals chart.
Antonio Meneses [email protected], Salvador Naya [email protected], Javier Tarrio-Saavedra [email protected], Ignacio Lopez-Ullibarri [email protected]
Meeker, W., Escobar, L. (1998) Statistical Methods for Reliability Data. John Wiley & Sons, Inc. New York.
Pinheiro JC., Bates DM. (2000) Mixed-effects models in S ans S-plus. Statistics and Computing. Springer-Verlang. New York.
Paris, P.C. and Erdogan, F. (1963) A critical analysis of crack propagation laws. J. Basic Eng., 85, 528.
## Using the Alea.A dataset data(Alea.A) x <- Alea.A ## Critical crack length aF <- 1.6 ## Censoring time T_c <- 0.12 ## cracks.growth function applied to Alea.A data cg <- cracks.growth(x, aF, T_c, method = c("SEP-lme_bkde", "SEP-lme_kde", "PB-nlme"), nBKDE = 1000, nKDE = 1000, nMC = 5000) ## PLOT.cg applied to cg object. PLOT <- PLOT.cg(cg) names(PLOT) ## [1] "plot.data" "plot.pred" "plot.F" "plot.resid" ## Exploratory chart for the Alea.A dataset PLOT$plot.data(main = "Plot: crack growth", xlab = "million cycles", ylab = "cracks(inches)", cex.lab=1.8, cex.main = 2) text(0.02, aF + 0.05, "Failure", cex = 1.8) text(0.095, 0.95, "Censoring time->", cex = 1.5) ## Plot for fatigue lifetimes estimates and predictions. PLOT$plot.pred(xlab = "million cycles", ylab = "cracks(inches)", main = "Plot: crack growth, estimation and prediction\n failure times (red)", cex.lab = 1.8, cex.main = 1.5) text(0.02,aF+0.05, "Failure", cex = 1.8) text(0.085,0.95, "Censoring time->", cex = 1.5) ## Plot for the empirical distribution and lifetimes distribution estimates ## of fatigue lifetimes PLOT$plot.F(main = "Plot: distributions of failure times", xlab = "million cycles", ylab = "probability", cex.lab = 1.7, cex.main=2) text(0.14, 0.1, "<-Censoring time", cex = 1.5) legend("topleft", c("Empirical", "Estimated"), col = c("blue","black"), pch=c(20,20), cex=1.5, bty="n") ## Residuals chart. PLOT$plot.resid(main = "Plot: residual", xlab = "fitted", ylab = "residuals", cex = 1.5, col = "blue", cex.lab = 1.7, cex.main = 2)## Using the Alea.A dataset data(Alea.A) x <- Alea.A ## Critical crack length aF <- 1.6 ## Censoring time T_c <- 0.12 ## cracks.growth function applied to Alea.A data cg <- cracks.growth(x, aF, T_c, method = c("SEP-lme_bkde", "SEP-lme_kde", "PB-nlme"), nBKDE = 1000, nKDE = 1000, nMC = 5000) ## PLOT.cg applied to cg object. PLOT <- PLOT.cg(cg) names(PLOT) ## [1] "plot.data" "plot.pred" "plot.F" "plot.resid" ## Exploratory chart for the Alea.A dataset PLOT$plot.data(main = "Plot: crack growth", xlab = "million cycles", ylab = "cracks(inches)", cex.lab=1.8, cex.main = 2) text(0.02, aF + 0.05, "Failure", cex = 1.8) text(0.095, 0.95, "Censoring time->", cex = 1.5) ## Plot for fatigue lifetimes estimates and predictions. PLOT$plot.pred(xlab = "million cycles", ylab = "cracks(inches)", main = "Plot: crack growth, estimation and prediction\n failure times (red)", cex.lab = 1.8, cex.main = 1.5) text(0.02,aF+0.05, "Failure", cex = 1.8) text(0.085,0.95, "Censoring time->", cex = 1.5) ## Plot for the empirical distribution and lifetimes distribution estimates ## of fatigue lifetimes PLOT$plot.F(main = "Plot: distributions of failure times", xlab = "million cycles", ylab = "probability", cex.lab = 1.7, cex.main=2) text(0.14, 0.1, "<-Censoring time", cex = 1.5) legend("topleft", c("Empirical", "Estimated"), col = c("blue","black"), pch=c(20,20), cex=1.5, bty="n") ## Residuals chart. PLOT$plot.resid(main = "Plot: residual", xlab = "fitted", ylab = "residuals", cex = 1.5, col = "blue", cex.lab = 1.7, cex.main = 2)