• Aucun résultat trouvé

The MATLAB code title is in bold and everything following is the actual code that can be used in a MATLAB environment. Each specific code is broken up by these bold titles.

“STPQUAD3.m”:

%% Begin input clear all

global F_0 F Finv alphaF betaF gammaF n T_c G alphaG betaG gammaG R tau alphaR betaR gammaR

n=3; % number of safety trains;

F=cell(1,n);

Finv=cell(1,n);

R=cell(1,n);

T=24; % mission time, in hours T_c=1; % critical time, in hours

G=@logncdf; % cdf in time (hours) for recovery of offsite power, here taken as lognormal cdf

% per Word document "Verification 2"

alphaG=0.300; betaG=1.064; gammaG=0; % parameters for G, here respectively mean time to

% recovery (hours) and standard deviation for the associated normal distribution, as in

% the Word document "Verification 2"

F_0(1)=.014; % probability of initial failure to start of train i, per

"Verification 2".

F{1}=@FTR6890; % cdf for failure of train 1 to start and load; here a piecewise

% exponential cdf, per "Verification 2"

Finv{1}=@FTR6890inv; % the corresponding inverse cdf for failure of train 1 to start and load; here

% the inverse of the piecewise exponential function coded into FTR6890, per

% "Verification 2"

alphaF(1)=400; betaF(1)=1; gammaF(1)=1250; % parameters for cdf for failure to run, here

% alphaF = mu1 = exponential mean up to time betaF = cutoff time, and gammaF = subsequent

% exponential mean conditional on reaching the cutoff time, numerical

% values per "Verification 2"

R{1}=@wblcdf; % cdf in time (hours) for recovery (repair) of train 1.

Here the Weibull

% cdf, per "Verification 2"

alphaR(1)=15.5; betaR(1)=0.739; gammaR(1)=0; % parameters for recovery cdf for train 1, here

% the respective values of the scale and shape parameters for a Weibull

% distribution, as detailed in "Verification 2" (alphaR in hours)

F_0(2)=.014; % probability of initial failure to start of train 2, per

"Verification 2".

F{2}=@FTR6890; % cdf for failure of train 2 to start and load; here a piecewise

% exponential cdf, per "Verification 2"

Finv{2}=@FTR6890inv; % the corresponding inverse cdf for failure of train 2 to start and load; here

% the inverse of the piecewise exponential function coded into FTR6890, per

% "Verification 2"

alphaF(2)=400; betaF(2)=1; gammaF(2)=1250; % parameters for cdf for failure to run, here

% alphaF = mu1 = exponential mean up to time betaF = cutoff time, and gammaF = subsequent

% exponential mean conditional on reaching the cutoff time, numerical

% values per "Verification 2"

R{2}=@wblcdf; % cdf in time (hours) for recovery (repair) of train 2.

Here the Weibull

% cdf, per "Verification 2"

alphaR(2)=15.5; betaR(2)=0.739; gammaR(2)=0; % parameters for recovery cdf for train 2, here

% the respective values of the scale and shape parameters for a Weibull

% distribution, as detailed in "Verification 2" (alphaR in hours)

F_0(3)=.014; % probability of initial failure to start of train 3, per

"Verification 2".

F{3}=@FTR6890; % cdf for failure of train 3 to start and load; here a piecewise

% exponential cdf, per "Verification 2"

Finv{3}=@FTR6890inv; % the corresponding inverse cdf for failure of train 3 to start and load; here

% the inverse of the piecewise exponential function coded into FTR6890, per

% "Verification 2"

alphaF(3)=400; betaF(3)=1; gammaF(3)=1250; % parameters for cdf for failure to run, here

% alphaF = mu1 = exponential mean up to time betaF = cutoff time, and gammaF = subsequent

% exponential mean conditional on reaching the cutoff time, numerical

% values per "Verification 2"

R{3}=@wblcdf; % cdf in time (hours) for recovery (repair) of train 3.

%%

%

%% Computation of nonrecovery integral

% Convert Riemann-Stieltjes triple nonrecovery integral to ordinary Riemann

% is 1.0e-10. See "Verification 2" for the basis for this recommendation.

“Lloyd3.m”:

%% Begin input clear all

global f F_0 F alphaF betaF gammaF n T_c G alphaG betaG gammaG Rhat n=2; % number of safety trains;

f=cell(1,n);

F=cell(1,n);

R=cell(1,n);

T=24; % mission time, in hours T_c=1; % critical time, in hours

%G=@Gzero; % Set G=0; no credit for offsite recovery; aid in debugging G=@logncdf; % cdf in time (hours) for recovery of offsite power

alphaG=0.300; betaG=1.064; gammaG=0; % parameters for G, here mean and standard deviation

% (natural log hours) of associated normal distribution

%

F_0(1)=.014; % probability of initial failure to start of train i, from

% Table 4.2 (p. 24) of Vol. 2 of NUREG/CR-6890

%%

f{1}=@FTR6890pdf; % pdf for failure of train 1; here the two-regime

% exponential pdf, per "Verification 2"

F{1}=@FTR6890; % cdf for failure of train 1; here the two-regime

% exponential pdf, per "Verification 2"

alphaF(1)=1/2.5e-3; betaF(1)=1; gammaF(1)=1/8.0e-4; % parameters for failure pdf, cdf and its inverse, for

% train 1, here mean time to failure prior to cutoff, cutoff (hours) and mean time to failure

% after cutoff, as in "Verification 2," all times in hours

%%

%Rhat(1)=1.0; % nonrecovery factor for train 1; here no credit taken for onsite recovery

R{1}=@wblcdf; % cdf in time (hours) for recovery (repair) of train 1.

Here the Weibull

% cdf, per "Verification 2"

alphaR(1)=15.5; betaR(1)=0.739; gammaR(1)=0;

% parameters for recovery cdf for train 1, here

% the respective values of the scale and shape parameters for a Weibull

% distribution, as detailed in "Verification 2" (alphaR in hours) Rhat(1)=1-feval(R{1},T_c,alphaR(1),betaR(1),gammaR(1)); %nonrecovery factor for train 1;

% here as appropriate to Weibull cdf in the Read-Fleming version of the

% Lloyd-Anoba approach

%%

F_0(2)=.014; % probability of initial failure to start of train i, from

% Table 4.2 (p. 24) of Vol. 2 of NUREG/CR-6890

f{2}=@FTR6890pdf; % pdf for failure of train 1; here the two-regime

% exponential pdf, per "Verification 2"

F{2}=@FTR6890; % cdf for failure of train 1; here the two-regime

% exponential pdf, per "Verification 2"

alphaF(2)=1/2.5e-3; betaF(2)=1; gammaF(2)=1/8.0e-4; % parameters for failure pdf, cdf and its inverse, for

% train 1, here mean time to failure prior to cutoff, cutoff (hours) and mean time to failure

% after cutoff, as in "Verification 2," all times in hours

%%

%Rhat(2)=1.0; % nonrecovery factor for train 1; here no credit taken for onsite recovery

R{2}=@wblcdf; % cdf in time (hours) for recovery (repair) of train 1.

Here the Weibull

% cdf, per "Verification 2"

alphaR(2)=15.5; betaR(2)=0.739; gammaR(2)=0;

% parameters for recovery cdf for train 2, here

% the respective values of the scale and shape parameters for a Weibull

% distribution, as detailed in "Verification 2" (alphaR in hours) Rhat(2)=1-feval(R{2},T_c,alphaR(2),betaR(2),gammaR(2)); %nonrecovery factor for train 1;

% here as appropriate to Weibull cdf in the Read-Fleming version of the

% Lloyd-Anoba approach

%%

F_0(3)=.014; % probability of initial failure to start of train i, from

% Table 4.2 (p. 24) of Vol. 2 of NUREG/CR-6890

f{3}=@FTR6890pdf; % pdf for failure of train 1; here the two-regime

% exponential pdf, per "Verification 2"

F{3}=@FTR6890; % cdf for failure of train 1; here the two-regime

% exponential pdf, per "Verification 2"

alphaF(3)=1/2.5e-3; betaF(3)=1; gammaF(3)=1/8.0e-4; % parameters for failure pdf, cdf and its inverse, for

% train 1, here mean time to failure prior to cutoff, cutoff (hours) and mean time to failure

% after cutoff, as in "Verification 2," all times in hours

% HERE; must change Rhat as below but with new recovery in order to take

% full credit for on-site recovery

%Rhat(3)=1.0; % nonrecovery factor for train 3; here no credit taken for onsite recovery

R{3}=@wblcdf; % cdf in time (hours) for recovery (repair) of train 1.

Rhat(3)=1-feval(R{3},T_c,alphaR(3),betaR(3),gammaR(3)); %nonrecovery factor for train 1;

% here as appropriate to Weibull cdf in the Read-Fleming version of the

% Lloyd-Anoba approach

%%

% Computation of Lloyd approximation to nonrecovery integral startpart=(1-G(T_c,alphaG,betaG,gammaG))*F_0(1)*F_0(2)*F_0(3);

%runpart=quadl(@INTEGRAND3,0,T);

runpart=quadl(@INTEGRAND3,0,T,1.0e-10); % tolerance of 1.0e-10

%recommended

%runpart=quad(@INTEGRAND3,0,T,1.0e-14);

%runpart=quad(@INTEGRAND3,0,T);

% Following assumes identical EDGs ??Why

P_CSBO=Rhat(1)*Rhat(2)*Rhat(3)*(startpart+runpart)

“INTEGRANDv1pt0.m”:

function H=INTEGRANDv1pt0(F1,F2,F3)

global F_0 F Finv alphaF betaF gammaF n G T_c G alphaG betaG gammaG R tau alphaR betaR gammaR

tau=cell(1,n);

%%

% Identify corresponding times, tau1, tau2, tau3 C1=F1<F_0(1);

tau{3}(i,j)=feval(Finv{1,3},((F3(i,j)-F_0(2))./(1-F_0(3))),alphaF(2),betaF(2),gammaF(2));

end end end

H=ones(m1,n1); % Correct if credit taken only for nonfailure of emergency

% trains, as in approach of the 'multiple trains, no recovery" section of

% the Rio paper. Looks o.k. for F = exponential integral, but need to

% compare to ICONE18 paper and to Rio paper

%%

% Determine taumax taumax=tau{1};

for i=2:n

taumax=max(taumax,tau{i});

end

% Now take credit for recovery of offsite power, as in Section 3.4 of Rio paper

H=H.*(1-feval(G,taumax+T_c,alphaG,betaG,gammaG));

% Now take credit for recovery of emergency power trains for i=1:n

H=H.*(1-feval(R{i},taumax+T_c-tau{i},alphaR(i),betaR(i),gammaR(i)));

% Alternately take only credit for recovery of emergency power trains that

% comes from repair work following full failure of onsite power (per

% Lloyd-Anoba, for the case coincident with Read-Fleming) %H=H.*(1-feval(R{i},T_c,alphaR(i),betaR(i),gammaR(i)));

end

“INTEGRAND3.m”:

function H=INTEGRAND3(taumax)

global f F_0 F alphaF betaF gammaF n G T_c G alphaG betaG gammaG Rhat

[m1 n1]=size(taumax);

H=ones(m1,n1); % Correct if credit taken only for nonfailure of emergency

% trains, as in approach of the "multiple trains, no recovery" section of

% the Rio paper.

% Credit for offsite recovery only following SBO

Hsum1=(1-F_0(1)).*feval(f{1},taumax,alphaF(1),betaF(1),gammaF(1)); % EDG 1 is last to fail (to run)

Hsum1=Hsum1.*(F_0(2).*ones(m1,n1)+(1-F_0(2)).*feval(F{2},taumax,alphaF(2),betaF(2),gammaF(2)));

% EDG 2 fails earlier, either to start or to run

Hsum1=Hsum1.*(F_0(3).*ones(m1,n1)+(1-F_0(3)).*feval(F{3},taumax,alphaF(3),betaF(3),gammaF(3)));

% EDG 3 fails earlier, either to start or to run

Hsum2=(1-F_0(2)).*feval(f{2},taumax,alphaF(2),betaF(2),gammaF(2)); % EDG 2 is last to fail (to run)

Hsum2=Hsum2.*(F_0(1).*ones(m1,n1)+(1-F_0(1)).*feval(F{1},taumax,alphaF(1),betaF(1),gammaF(1)));

% EDG 1 fails earlier, either to start or to run

Hsum2=Hsum2.*(F_0(3).*ones(m1,n1)+(1-F_0(3)).*feval(F{3},taumax,alphaF(3),betaF(3),gammaF(3)));

% EDG 3 fails earlier, either to start or to run

Hsum3=(1-F_0(3)).*feval(f{3},taumax,alphaF(3),betaF(3),gammaF(3)); % EDG 3 is last to fail (to run)

Hsum3=Hsum3.*(F_0(1).*ones(m1,n1)+(1-F_0(1)).*feval(F{1},taumax,alphaF(1),betaF(1),gammaF(1)));

% EDG 1 fails earlier, either to start or to run

Hsum3=Hsum3.*(F_0(2).*ones(m1,n1)+(1-F_0(2)).*feval(F{2},taumax,alphaF(2),betaF(2),gammaF(2)));

% EDG 2 fails earlier, either to start or to run Hsum=Hsum1+Hsum2+Hsum3;

H=H.*Hsum;

“FTR6890.m”:

function P=FTR6890(t,mu1,cutpoint,mu2)

%cdf for a rv distributed exponentially with mean mu1 for times t <=

%cutpoint, and distributed afterward, conditionally upon exceeding cutpoint,

%exponentially with mean mu2

if t<= cutpoint P=expcdf(t,mu1);

else

P1=expcdf(cutpoint,mu1);

P=P1+(1-P1)*expcdf(t-cutpoint,mu2);

end

“FTR6890inv.m”:

function t=FTR6890inv(P,mu1,cutpoint,mu2)

%CDF for a rv distributed exponentially with mean mu1 for times t <=

%cutpoint, and distributed afterward, conditioally upon exceeding cutpoint,

%exponentially with mean mu2

Pcut=expcdf(cutpoint,mu1);

if P<=Pcut

t=expinv(P,mu1);

else

Pcut=expcdf(cutpoint,mu1);

Pexcess=(P-Pcut)/(1-Pcut);

t=cutpoint+expinv(Pexcess,mu2);

end

“FTR6890pdf.m”:

function P=FTR6890pdf(t,mu1,cutpoint,mu2)

%pdf for a rv distributed exponentially with mean mu1 for times t <=

%cutpoint, and distributed afterward, conditionally upon exceeding cutpoint,

%exponentially with mean mu2

if t<= cutpoint P=exppdf(t,mu1);

else

P1=expcdf(cutpoint,mu1);

P=(1-P1)*exppdf(t-cutpoint,mu2);

end