R/PSFlib.R

GMetalLoss <- R6::R6Class("GMetalLoss",
                          inherit=LimitState::Lbase,
                          public = list(
                            gcalc = function(){
                              ttime <- self$ttime
                              Cv <- private$X[1]
                              Papplied <- private$X[2]
                              tr <- private$X[3]
                              no <- private$X[4]
                              D <- private$X[5]
                              sigmmau <- private$X[6]
                              s <- private$X[7]
                              tmm <- private$X[8]
                              tc <- tr - Cv * ttime
                              lambda <- 1.2850 * s / sqrt(D * tc)
                              Mt <- 1.0010 - 0.014195 * lambda + 0.29090 * lambda**2 - 0.096420 * lambda**3 + 0.020890 * lambda**4 - 0.0030540 * lambda**5 + 2.9570e-4 * lambda**6 - 1.8462e-5 * lambda**7 + 7.1553e-7 * lambda**8 - 1.531e-8 * lambda**9 + 1.4656e-10 * lambda**10
                              Rt <- max(0, (tmm - Cv * ttime) / tc)
                              RSF <- Rt / (1.0 - (1.0 - Rt) / Mt)
                              Pbi <- (exp(no)/no**no) * (0.25 / (no + 0.227)) * log(1.0 + 2.0 * tc / D) * sigmmau
                              private$g <- RSF * Pbi -Papplied
                            },
                            Setttime = function(t){
                              self$ttime <- t
                            },
                            dGdXcalc = function(){
                              ttime <- self$ttime
                              Cv <- private$X[1]
                              Papplied <- private$X[2]
                              tr <- private$X[3]
                              no <- private$X[4]
                              D <- private$X[5]
                              sigmmau <- private$X[6]
                              s <- private$X[7]
                              tmm <- private$X[8]
                              private$dGdX[1] <- -0.5*exp(no)*sigmmau*ttime*(tmm-Cv*ttime)/(no**no*(no+0.227)*(tr-Cv*ttime)*(2.0*(tr-Cv*ttime)/D+1.0)*D*(1.0-(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)))-0.25*exp(no)*sigmmau*ttime*log(2.0*(tr-Cv*ttime)/D+1.0)/(no**no*(no+0.227)*(tr-Cv*ttime)*(1.0-(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)))+0.25*exp(no)*sigmmau*ttime*(tmm-Cv*ttime)*log(2.0*(tr-Cv*ttime)/D+1.0)/(no**no*(no+0.227)*(tr-Cv*ttime)**2*(1.0-(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)))-0.25*exp(no)*sigmmau*(tmm-Cv*ttime)*log(2.0*(tr-Cv*ttime)/D+1.0)*((1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))*(-0.0091202875*s*ttime*D*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.30687942319875*s**3*ttime*D*((tr-Cv*ttime)*D)**((-5.0)/2.0)-0.0267500550265318*s**5*ttime*D*((tr-Cv*ttime)*D)**((-7.0)/2.0)-3.738252949569017E-4*s**7*ttime*D*((tr-Cv*ttime)*D)**((-9.0)/2.0)-6.581363123987437E-7*s**9*ttime*D*((tr-Cv*ttime)*D)**((-11.0)/2.0)+0.4803413525*s**2*ttime/((tr-Cv*ttime)**2*D)+0.113915008346112*s**4*ttime/((tr-Cv*ttime)**3*D**2)+0.00399384628042394*s**6*ttime/((tr-Cv*ttime)**4*D**3)+2.1277120825241515E-5*s**8*ttime/((tr-Cv*ttime)**5*D**4)+8.995322480552324E-9*s**10*ttime/((tr-Cv*ttime)**6*D**5))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)**2-(ttime/(tr-Cv*ttime)-ttime*(tmm-Cv*ttime)/(tr-Cv*ttime)**2)/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001))/(no**no*(no+0.227)*(tr-Cv*ttime)*(1.0-(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001))**2)

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   private$dGdX[2] <- -1.0
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   private$dGdX[3] <- 0.5*exp(no)*sigmmau*(tmm-Cv*ttime)/(no**no*(no+0.227)*(tr-Cv*ttime)*(2.0*(tr-Cv*ttime)/D+1.0)*D*(1.0-(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)))-0.25*exp(no)*sigmmau*(tmm-Cv*ttime)*log(2.0*(tr-Cv*ttime)/D+1.0)/(no**no*(no+0.227)*(tr-Cv*ttime)**2*(1.0-(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)))-0.25*exp(no)*sigmmau*(tmm-Cv*ttime)*log(2.0*(tr-Cv*ttime)/D+1.0)*((1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))*(0.0091202875*s*D*((tr-Cv*ttime)*D)**((-3.0)/2.0)+0.30687942319875*s**3*D*((tr-Cv*ttime)*D)**((-5.0)/2.0)+0.0267500550265318*s**5*D*((tr-Cv*ttime)*D)**((-7.0)/2.0)+3.738252949569017E-4*s**7*D*((tr-Cv*ttime)*D)**((-9.0)/2.0)+6.581363123987437E-7*s**9*D*((tr-Cv*ttime)*D)**((-11.0)/2.0)-0.4803413525*s**2/((tr-Cv*ttime)**2*D)-0.113915008346112*s**4/((tr-Cv*ttime)**3*D**2)-0.00399384628042394*s**6/((tr-Cv*ttime)**4*D**3)-2.1277120825241515E-5*s**8/((tr-Cv*ttime)**5*D**4)-8.995322480552324E-9*s**10/((tr-Cv*ttime)**6*D**5))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)**2-(tmm-Cv*ttime)/((tr-Cv*ttime)**2*(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)))/(no**no*(no+0.227)*(tr-Cv*ttime)*(1.0-(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001))**2)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   private$dGdX[4] <- 0.25*exp(no)*(-log(no)-1)*sigmmau*(tmm-Cv*ttime)*log(2.0*(tr-Cv*ttime)/D+1.0)/(no**no*(no+0.227)*(tr-Cv*ttime)*(1.0-(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)))+0.25*exp(no)*sigmmau*(tmm-Cv*ttime)*log(2.0*(tr-Cv*ttime)/D+1.0)/(no**no*(no+0.227)*(tr-Cv*ttime)*(1.0-(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)))-0.25*exp(no)*sigmmau*(tmm-Cv*ttime)*log(2.0*(tr-Cv*ttime)/D+1.0)/(no**no*(no+0.227)**2*(tr-Cv*ttime)*(1.0-(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   private$dGdX[5] <- -0.5*exp(no)*sigmmau*(tmm-Cv*ttime)/(no**no*(no+0.227)*(2.0*(tr-Cv*ttime)/D+1.0)*D**2*(1.0-(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)))-0.25*exp(no)*sigmmau*(tmm-Cv*ttime)*(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))*log(2.0*(tr-Cv*ttime)/D+1.0)*(0.0091202875*s*(tr-Cv*ttime)*((tr-Cv*ttime)*D)**((-3.0)/2.0)+0.30687942319875*s**3*(tr-Cv*ttime)*((tr-Cv*ttime)*D)**((-5.0)/2.0)+0.0267500550265318*s**5*(tr-Cv*ttime)*((tr-Cv*ttime)*D)**((-7.0)/2.0)+3.738252949569017E-4*s**7*(tr-Cv*ttime)*((tr-Cv*ttime)*D)**((-9.0)/2.0)+6.581363123987437E-7*s**9*(tr-Cv*ttime)*((tr-Cv*ttime)*D)**((-11.0)/2.0)-0.4803413525*s**2/((tr-Cv*ttime)*D**2)-0.113915008346112*s**4/((tr-Cv*ttime)**2*D**3)-0.00399384628042394*s**6/((tr-Cv*ttime)**3*D**4)-2.1277120825241515E-5*s**8/((tr-Cv*ttime)**4*D**5)-8.995322480552324E-9*s**10/((tr-Cv*ttime)**5*D**6))/(no**no*(no+0.227)*(tr-Cv*ttime)*(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)**2*(1.0-(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001))**2)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   private$dGdX[6] <- 0.25*exp(no)*(tmm-Cv*ttime)*log(2.0*(tr-Cv*ttime)/D+1.0)/(no**no*(no+0.227)*(tr-Cv*ttime)*(1.0-(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.0107000220106127*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.0569575041730562*s**4/((tr-Cv*ttime)**2*D**2)+0.00133128209347465*s**6/((tr-Cv*ttime)**3*D**3)+5.319280206310379E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)))
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   private$dGdX[7] <- -0.25*exp(no)*sigmmau*(tmm-Cv*ttime)*(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))*log(2.0*(tr-Cv*ttime)/D+1.0)*(-0.018240575/sqrt((tr-Cv*ttime)*D)-0.6137588463975*s**2*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.053500110053064*s**4*((tr-Cv*ttime)*D)**((-5.0)/2.0)-7.4765058991380345E-4*s**6*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.3162726247974875E-6*s**8*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.960682705*s/((tr-Cv*ttime)*D)+0.22783001669222*s**3/((tr-Cv*ttime)**2*D**2)+0.0079876925608479*s**5/((tr-Cv*ttime)**3*D**3)+4.255424165048303E-5*s**7/((tr-Cv*ttime)**4*D**4)+1.7990644961104649E-8*s**9/((tr-Cv*ttime)**5*D**5))/(no**no*(no+0.227)*(tr-Cv*ttime)*(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.010700022010613*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.056957504173056*s**4/((tr-Cv*ttime)**2*D**2)+0.0013312820934746*s**6/((tr-Cv*ttime)**3*D**3)+5.3192802063103787E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)**2*(1.0-(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.010700022010613*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.056957504173056*s**4/((tr-Cv*ttime)**2*D**2)+0.0013312820934746*s**6/((tr-Cv*ttime)**3*D**3)+5.3192802063103787E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001))**2)
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   private$dGdX[8] <- 0.25*exp(no)*sigmmau*log(2.0*(tr-Cv*ttime)/D+1.0)/(no**no*(no+0.227)*(tr-Cv*ttime)*(1.0-(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.010700022010613*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.056957504173056*s**4/((tr-Cv*ttime)**2*D**2)+0.0013312820934746*s**6/((tr-Cv*ttime)**3*D**3)+5.3192802063103787E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)))-0.25*exp(no)*sigmmau*(tmm-Cv*ttime)*log(2.0*(tr-Cv*ttime)/D+1.0)/(no**no*(no+0.227)*(tr-Cv*ttime)**2*(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.010700022010613*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.056957504173056*s**4/((tr-Cv*ttime)**2*D**2)+0.0013312820934746*s**6/((tr-Cv*ttime)**3*D**3)+5.3192802063103787E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001)*(1.0-(1.0-(tmm-Cv*ttime)/(tr-Cv*ttime))/(-0.018240575*s/sqrt((tr-Cv*ttime)*D)-0.2045862821325*s**3*((tr-Cv*ttime)*D)**((-3.0)/2.0)-0.010700022010613*s**5*((tr-Cv*ttime)*D)**((-5.0)/2.0)-1.0680722713054335E-4*s**7*((tr-Cv*ttime)*D)**((-7.0)/2.0)-1.462525138663875E-7*s**9*((tr-Cv*ttime)*D)**((-9.0)/2.0)+0.4803413525*s**2/((tr-Cv*ttime)*D)+0.056957504173056*s**4/((tr-Cv*ttime)**2*D**2)+0.0013312820934746*s**6/((tr-Cv*ttime)**3*D**3)+5.3192802063103787E-6*s**8/((tr-Cv*ttime)**4*D**4)+1.7990644961104648E-9*s**10/((tr-Cv*ttime)**5*D**5)+1.001))**2)
                            },
                            ttime = 0
                              )
                              )

MetalLoss <- R6::R6Class("MetalLoss",
                                                     inherit=LimitState::LSFM,
                                                     public = list(
                                                       initialize = function(name,n,Mu,sigmmaX,dist,ttime){
                                                         super$initialize(name,n,Mu,sigmmaX,dist)
                                                         private$lim <- GMetalLoss$new(private$n)
                                                         private$lim$Setttime(ttime)
                                                       },
                                                       Calc = function(){
                                                         super$RF()
                                                       },
                                                       PSFCalc = function(){
                                                         psf <- private$muX/super$GetDP()
                                                         psf[1] <- 1/psf[1]
                                                         psf[2] <- 1/psf[2]
                                                         psf
                                                       },
                                                       G=function(){
                                                         super$GetG()
                                                       }
                                                     )
)
Check <- R6::R6Class("Check",
                                                 inherit=LSFM,
                                                 public = list(
                                                   Calc = function(aa){
                                                     #super$initialize(name,n,Mu,sigmmaX,dist)
                                                     private$lim <- GMetalLoss$new(private$n)
                                                     private$lim$SetX(private$muX)
                                                     private$lim$gcalc()
                                                     cat("g=",private$lim$GetG())
                                                     private$lim$dGdXcalc()
                                                     cat("dgdX=",private$lim$GetdGdX())
                                                   }
                                                 )
)
PSFControl <- R6::R6Class("PSFControl",
                          public = list(
                            initialize = function(aa){
                              private$SetData(aa)
                            },
                            PSF = function(){
                              #private$metal$Calc()
                              #private$metal$PSFCalc()
                              private$PfCalc1(private$aa_data)
                            },
                            lambda_Rt2s_tmm = function(lambda,Rt){
                              trmu <- private$aa_data$trmu
                              Di <- private$aa_data$Dimu
                              Cvmu <- private$aa_data$Cvmu
                              ttime <- private$aa_data$ttime
                              tFCA <- Cvmu*ttime
                              tc <- trmu-tFCA
                              s <- private$InvShell(lambda,Di,tc)
                              tmm <- Rt*tc+tFCA
                              c(s,tmm)
                            },
                            s_tmm2lambda_Rt = function(s,tmm){
                              Cvmu <- private$aa_data$Cvmu
                              ttime <- private$aa_data$ttime
                              Di <- private$aa_data$Dimu
                              trmu <- private$aa_data$trmu
                              tFCA <- Cvmu*ttime
                              tc <- trmu-tFCA
                              lambda <- 1.285*s/sqrt(Di*tc)
                              Rt <- (tmm-tFCA)/tc
                              c(lambda,Rt)
                            },
                            ShellRt = function(lambda,Rt){
                              #aa_dataは変更しない
                              bb <- private$aa_data
                              trmu <- private$aa_data$trmu
                              Di <- private$aa_data$Dimu
                              Cvmu <- private$aa_data$Cvmu
                              ttime <- private$aa_data$ttime
                              tFCA <- Cvmu*ttime
                              tc <- trmu-tFCA
                              s <- private$InvShell(lambda,Di,tc)
                              tmm <- Rt*tc+tFCA
                              bb$smu <- s
                              bb$tmmmu <- tmm
                              private$PfCalc1(bb)
                            },
                            MAWP = function(){
                              Di <- private$aa_data$Dimu
                              tr <- private$aa_data$trmu
                              Cv <- private$aa_data$Cvmu
                              Ti <- private$aa_data$ttime
                              tc <- tr-Cv*Ti
                              Sa <- private$Sa
                              2*tc*Sa/(Di+1.2*tc)
                            },
                            SetPa = function(xval){
                              private$aa_data$Pamu <- xval
                            },
                            SetDi_tr = function(Di,tr){
                              private$aa_data$trmu <- tr
                              private$aa_data$Dimu <- Di
                            },
                            CalcSu = function(gamma){
                              private$Sa*gamma+69
                            },
                            SetSu = function(){
                              gamma <- 4
                              xval <- self$CalcSu(gamma)
                              #mu <- private$metal$GetMu()
                              #mu[6] <- xval
                              #private$metal$SetMu(mu)
                              private$aa_data$Sumu <- xval
                            },
                            GetSu = function(){
                              #mu <- private$metal$GetMu()
                              #mu[6]
                              private$aa_data$Sumu
                            },
                            SetSa = function(x){
                              #許容引張応力の設定
                              private$Sa <- x
                            },
                            GetMu = function(){
                              private$metal$GetMu()
                            },
                            Shell = function(){
                              Di <- private$aa_data$Dimu
                              tr <- private$aa_data$trmu
                              s <- private$aa_data$smu
                              Cv <- private$aa_data$Cvmu
                              Ti <- private$aa_data$ttime
                              tc <- tr-Cv*Ti
                              private$ShellP(Di,tc,s)
                            },
                            Rt = function(){
                              tmm <- private$aa_data$tmmmu
                              tr <- private$aa_data$trmu
                              Cv <- private$aa_data$Cvmu
                              Ti <- private$aa_data$ttime
                              tc <- tr-Cv*Ti
                              (tmm-Cv*Ti)/tc
                            },
                            Pf = function(){
                              private$metal$GetPOF()
                            },
                            Adjust = function(Sa=100){
                              self$SetSa(Sa)
                              self$SetPa(self$MAWP())
                              self$SetSu()
                            },
                            Out = function(outfile){
                              psfa <- self$Pf()
                              psfa <- rbind(psfa,self$Shell())
                              psfa <- rbind(psfa,self$Rt())
                              psfa <- rbind(psfa,self$MAWP())
                              psfa <- rbind(psfa,self$GetSu())
                              psf <- self$PSF()
                              psfa <-   data.frame(Pf=self$Pf(),lambda=self$Shell(),Rt=self$Rt(),Pa=self$MAWP(),Su=self$GetSu(),psfCV=psf[1],psfPa=psf[2],psftr=psf[3],psfno=psf[4],psfDi=psf[5],psfSu=psf[6],psfs=psf[7],psftmm=psf[8])
                              #psfa <- c("Pf","Shell P.","Rt","Pa","Su","PSF-Cv", "PSF-Pa", "PSF-tr", "PSF-no", "PSF-Di", "PSF-Su", "PSF-s", "PSF-tmm")
                              #colnames(psfa) <- c("Pf","λ","Rt","Pa","Su","PSF-Cv", "PSF-Pa", "PSF-tr", "PSF-no", "PSF-Di", "PSF-Su", "PSF-s", "PSF-tmm")
                              write.table(psfa,outfile,sep=",",quote=F,row.names=F,append=F)
                            },
                            Contour = function(nn,clevel){
                              private$z <- c(0)
                              #nn <-10  #格子点の分割数
                              lmin <- 0.1; lmax <-15  #シェルパラメータ
                              dl <- (lmax-lmin)/nn
                              private$x <- seq(lmin,lmax,dl) #Diとtrについて,aa内の値を使い,sを従属変数とする
                              Rmin <- 0.1; Rmax <- 0.99 #Rt
                              dR <- (Rmax-Rmin)/nn
                              private$y <- seq(Rmin,Rmax,dR) # trとRtに対して,tmmを従属変数とする
                              private$z <- outer(private$x,private$y,private$PfCalc2,private$aa_data)
                              self$DrawContour(clevel)
                            },
                            DrawContour = function(clevel){
                              contour(private$x,private$y,private$z,labcex=1.5,levels=clevel,xlab="Shell parameter",ylab="Rt")
                              title(paste("Di=",as.character(private$aa_data$Dimu),",tr=",as.character(private$aa_data$trmu)))
                            },
                            Target = function(lambda,Pft){
                              min <- 0.01; max <- 0.99  #Rtの探索,下限,上限
                              GA <- GA::ga(type="real-valued", fitness=private$PfTarget,maxiter=10, monitor=NULL, min=min,max=max,Pft,lambda,private$aa_data)
                              GA@solution[1]
                            },
                            G=function(){
                              private$metal$G()
                            },
                            SetCv_mu_cov = function(mu,cov){
                              private$aa_data$Cvmu <- mu
                              private$aa_data$Cvcov <- cov
                            },
                            PSFEval = function(Di=2400,tr=13,Pft=1e-4,Cvmu=0.1,Cvcov=0.5,Sa=100){
                              lambda <- c(1,2,4,6,8,10,13,15)
                              n <- length(lambda)
                              Rt <- numeric(n)
                              self$SetDi_tr(Di,tr)
                              self$Adjust(Sa)  #Pa=MAWP, SuのSaからの計算
                              PMAWP  <- private$aa_data$Pamu
                              self$SetCv_mu_cov(Cvmu,Cvcov)
                              for(i in 1:n){
                                Rt[i] <- self$Target(lambda[i],Pft)
                              }
                              i <- 1
                              dd <- c(Di,tr,lambda[i],Rt[i],PMAWP,private$aa_data$ttime,Cvmu,Cvcov,Pft,self$ShellRt(lambda[i],Rt[i]))
                              for(i in 2:n){
                                da <- c(Di,tr,lambda[i],Rt[i],PMAWP,private$aa_data$ttime,Cvmu,Cvcov,Pft,self$ShellRt(lambda[i],Rt[i]))
                                dd <- rbind(dd,da)
                              }
                              colnames(dd) <- c("Di","tr","Shell P.","Rt","MAWP","Ti","Cv","Cvcov","Pft","Pf","PSFCv", "PSFPa", "PSFtr", "PSFno", "PSFDi", "PSFSu", "PSFs", "PSFtmm")
                              dd
                            }
                          ),
                          private = list(
                            SetData = function(aa){
                              private$aa_data <- aa
                              Cvmu <- aa$Cvmu ; Cvcov <- aa$Cvcov   #Cv, 減肉速度, mm/year
                              Pamu <- aa$Pamu; Pacov <- aa$Pacov   #Pa, 運転圧力, MPa
                              trmu <- aa$trmu; trcov <- aa$trcov  #tr, 健全部厚さ, mm
                              nomu <- aa$nomu; nocov <- aa$nocov  #no, 加工硬化指数
                              Dimu <- aa$Dimu; Dicov <- aa$Dicov  #Di, 内径, mm
                              Sumu <- aa$Sumu; Sucov <- aa$Sucov  #Su, 引張強さ, MPa
                              smu <- aa$smu; scov <- aa$scov   #s, 軸方向減肉長さ, mm
                              tmmmu <- aa$tmmmu; tmmcov <- aa$tmmcov     #tmm, 減肉部厚さ, mm

                              ttime <- aa$ttime                   #次回検査までの期間, year

                              ## 各確率変数の平均
                              muX <-  c(Cvmu, Pamu, trmu, nomu, Dimu, Sumu, smu, tmmmu)
                              ## 各確率変数の変動係数
                              COVX <- c(Cvcov,Pacov,trcov,nocov,Dicov,Sucov,scov,tmmcov)
                              sigmmaX <- muX * COVX
                              ## 各確率変数の分布
                              dist <- c("gumbel", "gumbel", "normal", "normal" ,"normal" ,"normal" ,"normal" ,"normal")
                              private$metal <- PSFCalc::MetalLoss$new("MetalLoss",8,muX,sigmmaX,dist,ttime)
                            },
                            PfCalc2 = function(x,y,aa){
                              #xにシェルパラメータ,yにRtが入力されている場合の計算
                              #outer用に,xとyの外積点のPfベクトルを計算する
                              mu <- private$metal$GetMu()
                              Cvmu <- aa$Cvmu; Cvcov <- aa$Cvcov   #Cv, 減肉速度, mm/year
                              Pamu <- aa$Pamu; Pacov <- aa$Pacov   #Pa, 運転圧力, MPa
                              trmu <- aa$trmu; trcov <- aa$trcov  #tr, 健全部厚さ, mm
                              nomu <- aa$nomu; nocov <- aa$nocov  #no, 加工硬化指数
                              Dimu <- aa$Dimu; Dicov <- aa$Dicov  #Di, 内径, mm
                              Sumu <- aa$Sumu; Sucov <- aa$Sucov  #Su, 引張強さ, MPa
                              scov <- aa$scov   #s, 軸方向減肉長さ, mm
                              tmmcov <- aa$tmmcov     #tmm, 減肉部厚さ, mm

                              ttime <- aa$ttime                   #次回検査までの期間, year
                              tFCA <- Cvmu*ttime
                              tc <- trmu-tFCA

                              n <- length(x)
                              pf <- numeric(n)
                              for(i in 1:n){
                                lambda <- x[i]; Rt <- y[i]
                                smu <- private$InvShell(lambda,Dimu,tc)
                                tmmmu <- Rt*tc+tFCA
                                ## 各確率変数の平均
                                muX <-  c(Cvmu, Pamu, trmu, nomu, Dimu, Sumu, smu, tmmmu)
                                ## 各確率変数の変動係数
                                COVX <- c(Cvcov,Pacov,trcov,nocov,Dicov,Sucov,scov,tmmcov)
                                sigmmaX <- muX * COVX
                                ## 各確率変数の分布
                                dist <- c("gumbel", "gumbel", "normal", "normal" ,"normal" ,"normal" ,"normal" ,"normal")

                                metal <- MetalLoss$new("MetalLoss",8,muX,sigmmaX,dist,ttime)
                                #cat("i,smu,tmmmu=",i,smu,tmmmu)
                                metal$Calc()
                                pf[i] <- metal$GetPOF()
                                #cat("Pf-",pf[i])
                                if(metal$GetG()<0)pf[i]<-1.0  #平均点が破損領域にあるときには,Pf<- 1
                              }
                              pf
                            },
                            PfCalc1 = function(aa){
                              Cvmu <- aa$Cvmu; Cvcov <- aa$Cvcov   #Cv, 減肉速度, mm/year
                              Pamu <- aa$Pamu; Pacov <- aa$Pacov   #Pa, 運転圧力, MPa
                              trmu <- aa$trmu; trcov <- aa$trcov  #tr, 健全部厚さ, mm
                              nomu <- aa$nomu; nocov <- aa$nocov  #no, 加工硬化指数
                              Dimu <- aa$Dimu; Dicov <- aa$Dicov  #Di, 内径, mm
                              Sumu <- aa$Sumu; Sucov <- aa$Sucov  #Su, 引張強さ, MPa
                              smu <- aa$smu; scov <- aa$scov   #s, 軸方向減肉長さ, mm
                              tmmmu <- aa$tmmmu; tmmcov <- aa$tmmcov     #tmm, 減肉部厚さ, mm

                              ttime <- aa$ttime                   #次回検査までの期間, year
                              ## 各確率変数の平均
                              muX <-  c(Cvmu, Pamu, trmu, nomu, Dimu, Sumu, smu, tmmmu)
                              ## 各確率変数の変動係数
                              COVX <- c(Cvcov,Pacov,trcov,nocov,Dicov,Sucov,scov,tmmcov)
                              sigmmaX <- muX * COVX
                              ## 各確率変数の分布
                              dist <- c("gumbel", "gumbel", "normal", "normal" ,"normal" ,"normal" ,"normal" ,"normal")

                              metal <- MetalLoss$new("MetalLoss",8,muX,sigmmaX,dist,ttime)
                              metal$Calc()
                              pf <- metal$GetPOF()
                              if(metal$GetG()<0)pf<-1.0 #破損領域は全てPf=1
                              c(pf,metal$PSFCalc())
                            },
                            PfCalc3 = function(lambda,Rt,aa){
                              Cvmu <- aa$Cvmu; Cvcov <- aa$Cvcov   #Cv, 減肉速度, mm/year
                              Pamu <- aa$Pamu; Pacov <- aa$Pacov   #Pa, 運転圧力, MPa
                              trmu <- aa$trmu; trcov <- aa$trcov  #tr, 健全部厚さ, mm
                              nomu <- aa$nomu; nocov <- aa$nocov  #no, 加工硬化指数
                              Dimu <- aa$Dimu; Dicov <- aa$Dicov  #Di, 内径, mm
                              Sumu <- aa$Sumu; Sucov <- aa$Sucov  #Su, 引張強さ, MPa
                              scov <- aa$scov   #s, 軸方向減肉長さ, mm
                              tmmcov <- aa$tmmcov     #tmm, 減肉部厚さ, mm

                              ttime <- aa$ttime                   #次回検査までの期間, year
                              cc <- self$lambda_Rt2s_tmm(lambda,Rt)
                              #tFCA <- Cvmu*ttime
                              #tc <- trmu-tFCA
                              smu <- cc[1]
                              tmmmu <- cc[2]
                              ## 各確率変数の平均
                              muX <-  c(Cvmu, Pamu, trmu, nomu, Dimu, Sumu, smu, tmmmu)
                              ## 各確率変数の変動係数
                              COVX <- c(Cvcov,Pacov,trcov,nocov,Dicov,Sucov,scov,tmmcov)
                              sigmmaX <- muX * COVX
                              ## 各確率変数の分布
                              dist <- c("gumbel", "gumbel", "normal", "normal" ,"normal" ,"normal" ,"normal" ,"normal")

                              metal <- MetalLoss$new("MetalLoss",8,muX,sigmmaX,dist,ttime)
                              metal$Calc()
                              pf <- metal$GetPOF()
                              if(metal$GetG()<0)pf<-1.0 #破損領域は全てPf=1
                              pf

                            },
                            PfTarget = function(Rt,Pft,lambda,aa){
                              pof <- private$PfCalc3(lambda,Rt,aa)
                              -abs(Pft-pof)
                            },
                            ShellP = function(D,tc,s){
                              1.285*s/sqrt(D*tc)
                            },
                            InvShell = function(lambda,D,tc){
                              #シェルパラメータを満足する軸方向減肉長さ

                              lambda*sqrt(D*tc)/1.285
                            },
                            metal= MetalLoss,   #Object for Metal Loss
                            Sa = 0.0,  #許容引張応力
                            aa_data = data.frame(test=0),
                            x = c(0),
                            y = c(0),
                            z = c(0)
                          )
)
ShinsukeSakai0321/PSFCalc documentation built on May 20, 2019, 2:24 p.m.