Description Usage Arguments Details Value Author(s) References See Also Examples
Creates an object of class Sing, Mult, or CD from an appropriate list of parameters (using parameter analysis.type to determine the output class). The list of parameters may or may not be of class crackRparameters (the function will attempt to do its thing regardless). User calling of this function is optional since an object of crackRparameters (or simply an appropriate list) may be directly passed to analyze, which will run crackRinit if this was not previously done.
1 | crackRinit(parameters)
|
parameters |
Object of class crackRparameters |
Np
– integer – SIS/EMC – number of Monte Carlo samples to utilize
For SIS (e.g., using analyze
) this is the number of
particles in the set. In this case the complete set of particles is
carried through the analysis, so Np
> several million may use
up available memory. If many millions of particles are needed, the
runs can be split and re-combined later either by using
analyzeParallel
or by using the add=TRUE
option in analyze
.
For EMC run (using crackRmc
) this is the
number of trials. Detailed results of each trial are not maintained,
thus many millions is fine from a memory standpoint. crackRmc
is NOT fast, so testing a run with Np
around 1000 is
recommended (see system.time
).
analysis.type
– character – SIS/EMC – the type of
probabilistic damage tolerance analysis being performed, be it a
single-type at a single crack ('single'), multiple-type at a
single crack ('multiple'), or a continuing damage analysis
involving two cracks ('CD')
Must be either 'single', 'multiple', or 'CD'. For an SIS
run, this determines the class of the object created by
crackRinit
(either Sing
, Mult
, or
CD
). For an EMC run, the appropriate method of
crackRmc
is selected according to this parameter.
survival.updating
– character – SIS – whether to proceed
flight-by-flight ('fbf') or in intervals ('int')
Must be either 'fbf' or 'int' for an SIS run
(specifically, in calcInterval
). This
parameter is not used in an EMC run
(crackRmc
).
flt.calc.interval
– integer – SIS/EMC – frequency of output of SFPOF
calculations in number of flights for each sub-interval
Regardless of the value of
survival.updating
, SFPOF
is calculated and output at the beginning and end of sub-intervals of
length flt.calc.interval
. The actual sub-interval lengths
will often vary slightly since sub-intervals are forced to end at
a scheduled inspection. The sub-intervals within an inspection
interval are rounded to integers which minimize the variation from
flt.calc.interval
. A value of 1 may be used, but for long
service lives the results object may become large and calculation
speeds may suffer.
sfpof.threshold
– numeric – SIS/EMC – if specified, a horizontal line will appear
on results plots at this value.
This parameter is not currently used for anything important.
sfpof.min
– numeric – SIS/EMC – minimum value of SFPOF to include in results
If > 0, SFPOF calculated below sfpof.min
will be
recorded as sfpof.min
. If = 0, SFPOF will be allowed to be
zero in results. In
this case, when plotting SFPOF on the log scale, warnings will be
issued and the plot will not appear at the zero values.
bootstrap.sfpof
– logical – SIS – whether or not to
perform obtain bootstrap confidence intervals of SFPOF during a run
If bootstrap confidence intervals are desired, set this
parameter to TRUE
. The number of bootstrap samples to
generate at each calculation of SFPOF is set by
bootstrap.samples
and the desired quantiles to estimate by
bootstrap.quantiles
. Results will be in additional
column(s) with SFPOF in the SFPOF data.frame of the
crackRresults object. Note that there are many SFPOF calculations
and using a large number of bootstrap samples may significantly
increase the run time.
bootstrap.pcd
– logical – SIS – whether or not to
perform obtain bootstrap confidence intervals of PCD during a
scheduled inspection
If bootstrap confidence intervals are desired, set this
parameter to TRUE
. The number of bootstrap samples to
generate at each calculation of PCD is set by
bootstrap.samples
and the desired quantiles to estimate by
bootstrap.quantiles
. Results will be in additional
column(s) with PCD in the PCD data.frame of the
crackRresults object. Inspections occur less frequently than SFPOF
calculations, but large values of bootstrap.samples
may significantly
increase the run time.
bootstrap.samples
– integer – SIS – number of
bootstrap samples to take for either SFPOF or PCD
More samples = better bootstrap estimates of the quantiles
of the sampling distribution(s), with more samples taking longer
to run. Note the bootstrap run time is also a function of the
number of particles (Np
).
bootstrap.quantiles
– numeric – SIS – quantile(s)
at which to estimate the sampling distribution of either SFPOF or PCD
this is simply the probs
argument to the
quantile
function.
ms.gumbel
– numeric – SIS/EMC – vector of length
two specifying the location (loc) and scale parameters for the
Gumbel distribution which describes the maximum applied stress per flight
For example: cp4$ms.gumbel <- c(loc=31.079,
scale=0.832)
The names "loc" and "scale" are required!
crackR
is currently hard-coded to utilize the
Gumbel distribution for max stress per flight. Expanding to a
generic distribution is not difficult; it just hasn't been done
yet. Mostly this is because max stress per flight is almost always
Gumbel distributed in the literature, so I haven't bothered.
inspections
– data.frame – SIS/EMC – specification
of inspection intervals (in number of flights) and the inspection
type to occur at the end of the interval
For example: cp4$inspections <- data.frame(flt.interval = c(4615,2308,2308), type = c(1,2,1))
The names "flt.interval" and "type" are required!
The above example specifies three inspection intervals
over the 4615+2308+2308=9231
flights. The three inspections
are of types 1, 2, and 1, respectively, which refers to parameter pod.func
.
pod.func
– list – SIS/EMC – list of POD functions
For example: cp7ext$pod.func <- list(); cp7ext$pod.func[[1]] <- function(a)
lognormalPOD(a, 0.03, 1); cp7ext$pod.func[[2]] <-
function(a) lognormalPOD(a, 0.01, 1)
The above example specifies two POD curves. At inspection
time the parameter inspections
specifies which of these to
use. If the inspection type calls for a POD curve that is not
specified here, errors will occur. See lognormalPOD
and inspection
.
pod.threshold
– numeric – SIS/EMC – either a
matrix or a vector specifying the crack sizes at which different
severities of repair will occur (see below for details)
For a run of analysis.type=="single"
or
analysis.type=="CD"
, this is a weakly increasing vector of
thresholds at
which to partition the PCD results. For example, if = 0, then no
partitioning will occur; if = c(0.01, 0.05), then PCD will be
split into three: a < 0.01, 0.01 < 0.05, and a > 0.05.
For analysis.type=="multiple"
, there is more than
one type of repair that is possible and the behavior of each is
different. Because of this, pod.threshold
is an upper triangular matrix of
dimension c(dta.types, dta.types)
, where each row is the
POD threshold vector for that type. Note each row must be weakly
increasing from left to right. It is upper triangular since it is
assumed that a repair can only get more severe...unless the part
is replaced because the crack grew to exceed the largest threshold
value. This is admittedly confusing, so here's an example. Suppose there are two
DTA types describing the possible condition at a single fastener hole, where the first represents the as-manufactured
condition and the second represents an oversized fastener
installation. Suppose
pod.threshold==matrix(c(0.005,NA,0.25,0.005), nrow=2,
ncol=2)
. For a type 1 particle, the POD threshold values used are
taken from the first row of this matrix: c(0.005, 0.25). If a
crack is found smaller than 0.005, it can be repaired to
as-manufactured condition. If 0.005 < a < 0.25, the oversized
fastener is installed and the type switches to type 2 as a
result of the inspection being performed. If a >
0.25, the part is replaced (back to type 1). If instead when
heading into inspection the repair was of type 2, then
pod.threshold==0.005
. If the found crack is smaller than
0.005, it can be repaired back to the oversized fastener condition
(but not back to type 1, a smaller fastener). If a > 0.005, the
part must be replaced (since the oversized fastener repair has
already been utilized and no other repair is possible). Note that
zero and Inf values may be used. Also the NA values can optionally
be zero as they are not used by the code.
dta.types
– integer – SIS/EMC – number of Damage
Tolerance Analysis (DTA) data sets present in the analysis
This is used only for analysis.type=="multiple"
in
the methods corresponding to a crackR
object of class
Mult
.
ismc.bool
– logical – EMC – whether or not to
utilize importance sampling to set the initial state in an EMC run
If FALSE
standard Monte Carlo sampling is used and
the initial crack size will be generated using, for example,
ifs.ractual.
If TRUE
importance sampling is used and the initial
size will be generated using ifs.rsamp instead. Subsequently
ifs.dsamp and ifs.dactual are used to determine the importance
weights.
See parameter dta
for more information regarding
specification of initial flaw size distributions
cg.cc
– numeric – SIS/EMC – critical crack length
for a run of either analysis.type=="single"
or analysis.type=="multiple"
The crack length at which failure is assumed to occur with
certainty. Note that if cg.cc is larger than the largest values in
the DTA data item cg
, linear extrapolation will occur until
reaching cg.cc. If cg.cc is smaller than the largest values of
said table, failure will occur earlier.
Generally cg.cc should be set to the last value of crack
length in the DTA data item cg
.
cg.cc.pc/cg.cc.ph/cg.cc.sc/cg.cc.sh
– numeric – SIS/EMC – critical crack length
for a run of analysis.type=="CD"
For a continuing damage analysis, there are two cracks involved (primary and secondary), each of which can be in either a 'cold' state or a 'hot' state, depending on whether the other crack has previously reached critical size. Thus there are four sets of DTA data: primary cold (dta.pc), primary hot (dta.ph), secondary cold (dta.sc), and secondary hot (dta.sh). See below for more details.
The various critical crack sizes associated with a continuing damage analysis are as follows: cg.cc.pc, the length at which the primary crack goes critical (secondary goes hot); cg.cc.sc, the length at which the secondary crack goes critical (primary goes hot); cg.cc.ph, the length at which a primary hot crack fails; and cg.cc.sh, the length at which a secondary hot crack fails.
dta
– list – SIS/EMC – deterministic damage
tolerance analysis input data for analysis.type=="single"
or analysis.type=="multiple"
There are several components to this list, each discussed in turn below
For analysis.type=="single"
, this is a list of the
following parameters
For analysis.type=="multiple"
, dta is a
"list of lists", where each item of the list (e.g., dta[[1]]) is a
complete dta list with the components described below, each of
which corresponds to a repair type. The length of the list of
lists should equal the value of the parameter dta.types (this is
redundant at present).
cg
– data.frame – crack growth data with columns
flight
and crack
; note this differs from some other
probabilistic damage tolerance analysis codes which are indexed to
flight hours instead of flight numbers. Linear extrapolation will
occur using the last two rows of this table if cg.cc is larger
than the last crack size in the table.
geo
– data.frame – geometry data relating crack
length to normalized stress intensity K/sigma with columns
crack
and ksig
. The data in this table is not
extrapolated; if a K/sigma value is needed for a crack size beyone
the end of this table, the final value of K/sigma will be
used.
kc.rsamp
– function – generates values from
fracture toughness distribution
ifs.rsamp
– function – generates values from
initial flaw size sampling distribution
ifs.dsamp
– function – density function for
initial flaw size sampling distribution
ifs.ractual
– function – generates values from
initial flaw size actual distribution
ifs.dactual
– function – density function for
initial flaw size actual distribution
rfs.rsamp
– function – generates values from
repair flaw size sampling distribution
rfs.dsamp
– function – density function for
repair flaw size sampling distribution
rfs.ractual
– function – generates values from
repair flaw size actual distribution
rfs.dactual
– function – density function for
repair flaw size actual distribution
dta.pc/dta.ph/dta.sc/dta.sh
– list – SIS/EMC – deterministic damage
tolerance analysis input data for a continuing damage run
For a continuing damage run there are four distinct sets of DTA data, primary cold (dta.pc), primary hot (dta.ph), secondary cold (dta.sc), and secondary hot (dta.sh). The cracks become hot at cg.cc.pc or cg.cc.sc, and fail at cg.cc.ph or cg.cc.sh.
At manufacture and following a repair, cracks are always
'cold'. Hence dta.pc
and dta.sc
need to have the various
distributions for fracture toughness and initial flaw size, but
dta.ph
and dta.sh
don't require them.
state |
List containing vectors representing the initial state of each particle, consisting of several of the following (depending on the analysis type): the crack lengths (a), crack lengths of primary and secondary cracks (a.p and a.s), fracture toughnesses (kc), importance weights (w), and particle types (typ) |
parameters |
List of the analysis parameters |
results |
List of blank data frames as a placeholder for results |
Keith Halbert <keith.a.halbert@gmail.com>
Halbert, K. "Estimation of Probability of Failure for Damage-Tolerant Aerospace Structures" PhD Thesis, Temple University Department of Statistics, Philadelphia, PA, Apr 2014
1 2 3 |
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.