190
Views
3
CrossRef citations to date
0
Altmetric
Original Articles

Assessing the reliability of a nanocomponent by using copulas

&
Pages 1196-1208 | Received 01 Mar 2013, Accepted 01 Oct 2013, Published online: 28 Jul 2014
 

Abstract

A nanocomponent is a collection of atoms arranged in a definite pattern in order to achieve a desired function with an acceptable performance and reliability. Types of atoms, the manner in which they are arranged within the nanocomponent, and their inter-relationships have a direct effect on the nanocomponent’s reliability and its failure. This article, proposed a general method using the notion of a copula to model the inter-relationships between the atoms of a nanocomponent and then assess the reliability or probability of failure of the nanocomponent under different structures. This approach is refered to as a “zoom-out” approach. The proposed method is very flexible and it is very easy to implement. This article considers a nanocomponent at a fixed moment of time, say the present moment, and assumes that the present status of a nanocomponent depends on the present status of its atoms.

Appendix

R codes for calculating the probability of failure

################# Parallel structures #################

 

## probability of failure for a parallel structure

## p0: common probability of failure for each atom

## th0: dependence parameter between each atom and its hidden factor

## d: number of atoms

pd = function(p0, th0, d)

{

 (1-p0)*(th0^d)*(p0^d) + p0*((th0*p0+1-th0)^d)

} # end of the function

## probability of failure of a parallel structure

## u: a vector of probabilities of failure; these probabilities can be different

## th0: dependence parameter between each atom/nano-subcomponent

##      and its hidden factor

pd_diffp0 = function(u, th0)

{

 d = length(u)

 neg = which(u<0)

 if( length(neg) > 0 ) {u = u[-neg]}

 d = length(u)

 if(d < 1){stop(''No avaliable u!!,   =====> d = '', d, ''\n'')}

 uu = c(1, sort(u, T), 0)

 uth = th0*uu + 1 - th0

 add = NULL

 for(i in 1:(d+1))

 {

  tem1 = uu[i] - uu[i+1]

  tem2 = th0^(d-i+1)

  tem3 = prod(uth[1:i])

  tem4 = prod(u) / prod(uu[1:i])

  add[i] = tem1 * tem2 * tem3 * tem4

 }

 sum(add)

} # end of the function

 

################# Series structures #################

 

## probability of failure for a series structure

## p0: common probability of failure for each atom

## th0: dependence parameter between each atom and its hidden factor

## d: number of atoms

## If d = 0, return -1

ppd = function(p0, th0, d)

{

 dd = 1:d

 tem1 = sapply(dd, function(x){  (1-p0)*((th0*p0)^x) + p0*((th0*p0+1-th0)^x)  } )

 tem2 = sapply(dd, function(x){   choose(d, x)*( (-1)^{x+1} )  }  )

 out = sum( tem1*tem2 )

 out

} # end of the function

 

## probability of failure for a series structure

## u: a vector of probabilities of failure; these probabilities can be different

## th0: dependence parameter between each atom/nano-subcomponent

##      and its hidden factor

ppd_diffp0 = function(u, th0)

{

 neg = which(u<0)

 if( length(neg) > 0 ) {u = u[-neg]}

 d = length(u)

 if(d < 1){ return(-1)}

 add = sum(u)

 if(d >= 2)

  {

   for(i in 2:d)

    {

     com = combn(1:d, i)

     ncom = length(com[1,])

     for(j in 1:ncom)

     {

      uu_temp = u[com[,j]]

      add = add + pd_diffp0(uu_temp, th0)*( (-1)^{i+1} )

     }

    }

  }

 add

} # end of the function

 

################# Sample a nanocomponent with 50 atoms #################

set.seed(1221)

nm = 4  # nanometers

nanox = runif(50)*nm

nanoy = runif(50)*nm

 

Ngrid = 4

xinx = as.integer( (nanox/nm) / (1/Ngrid))+1

yinx = as.integer((nanoy/nm) / (1/Ngrid))+1

 

grp = (yinx-1)*Ngrid + xinx

 

## number of atoms in each 1st stage nano-subcomponent

n1 = NULL

for(i in 1:Ngrid^2)

{

  n1[i] = length(which(grp == i))

}

 

## assign group numbers for each 4 1st stage nano-subcomponents

grp1 = NULL

for(i in 1:Ngrid^2)

{

  grp1[i] = (as.integer(as.integer((i-1)/Ngrid)/2))*(Ngrid/2)

             + (as.integer((i-1)/2))%%(Ngrid/2)+1

}

 

## calculate probability of failure for three different structures

## 1. parallel; 2. series; 3. series-parallel

## p0: common probability of failure for each atom

## th0, th1, th2: dependence parameters for the three steps

prob.failure = function(p0, th0, th1, th2)

{

 probcell1 = sapply(n1, function(x){  pd(p0, th0, x)  }   )

 probcell1_series = sapply(n1, function(x){  ppd(p0, th0, x)  }   )

 

 od = order(grp1, 1:(Ngrid^2)) # reorder to construct

                               # the 2nd stage nano-subcomponent

 pgrid = probcell1[od]

 pgrid_series = probcell1_series[od]

 

 NNN = ((Ngrid^2)/4)

 uu1_series = uu1 = matrix(0, NNN, 4)

 

 for(i in 1:NNN)

 {

  uu1[i,] = pgrid[((i-1)*4+1):(i*4)]

  uu1_series[i,] = pgrid_series[((i-1)*4+1):(i*4)]

 }

 

 probcell2 = probcell2_series = probcell2_series_parallel = NULL

 for(i in 1:NNN)

 {

  probcell2[i] = pd_diffp0(uu1[i,], th1)

  probcell2_series[i] = ppd_diffp0(uu1_series[i,], th1)

  probcell2_series_parallel[i] = pd_diffp0(uu1_series[i,], th1)

 }

 

 prob.parallel = pd_diffp0(probcell2, th2)

 prob.series = ppd_diffp0(probcell2_series, th2)

 prob.series.parallel = pd_diffp0(probcell2_series_parallel, th2)

 return(list(prob.parallel = prob.parallel, prob.series = prob.series,

            prob.series.parallel = prob.series.parallel ))

} # end of the function

 

################# Do the calculation #################

 

> prob.failure(0.01, 0.3, 0.7, 0.99)

$prob.parallel

[1] 2.058032e-13

$prob.series

[1] 0.2336215

$prob.series.parallel

[1] 1.077729e-12

Additional information

Notes on contributors

Nader Ebrahimi

Nader Ebrahimi received his Ph.D. degree from Iowa State University, Ames, Iowa. He is a Professor of statistics in the Division of Statistics at Northern Illinois University, DeKalb. He works in the areas of reliability theory and survival analysis, information theoretic statistics and modeling and applications in Hardware, nano, and software engineering, and medical sciences.

Lei Hua

Lei Hua is currently Assistant Professor at the Division of Statistics at the Northern Illinois University. Dr. Hua received his PhD degree in Statistics in 2012 from the University of British Columbia, and he does research in multivariate non-Gaussian theory and applications, which include dependence modeling, extreme value theory, and quantitative risk management. Dr. Hua is also Associate of the Society of Actuaries.

Reprints and Corporate Permissions

Please note: Selecting permissions does not provide access to the full text of the article, please see our help page How do I view content?

To request a reprint or corporate permissions for this article, please click on the relevant link below:

Academic Permissions

Please note: Selecting permissions does not provide access to the full text of the article, please see our help page How do I view content?

Obtain permissions instantly via Rightslink by clicking on the button below:

If you are unable to obtain permissions via Rightslink, please complete and submit this Permissions form. For more information, please visit our Permissions help page.