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)
)
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.