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.

Log in via your institution

Log in to Taylor & Francis Online

PDF download + Online access

  • 48 hours access to article PDF & online version
  • Article PDF can be downloaded
  • Article PDF can be printed
USD 61.00 Add to cart

Issue Purchase

  • 30 days online access to complete issue
  • Article PDFs can be downloaded
  • Article PDFs can be printed
USD 202.00 Add to cart

* Local tax will be added as applicable

Related Research

People also read lists articles that other readers of this article have read.

Recommended articles lists articles that we recommend and is powered by our AI driven recommendation engine.

Cited by lists all citing articles based on Crossref citations.
Articles with the Crossref icon will open in a new tab.