diff --git a/doc/sqa/srs/requirements_list.xml b/doc/sqa/srs/requirements_list.xml index 51ab0bb406..1601463ff2 100644 --- a/doc/sqa/srs/requirements_list.xml +++ b/doc/sqa/srs/requirements_list.xml @@ -97,6 +97,9 @@ RAVEN shall be able to compute probability of failure based on generated data and goal functions + + RAVEN shall be able to estimate the maximum (bounding) error in the computation of the probability of failure based on generated data and goal functions + diff --git a/doc/user_manual/postprocessor.tex b/doc/user_manual/postprocessor.tex index 2c54b79552..9e2ad13d5e 100644 --- a/doc/user_manual/postprocessor.tex +++ b/doc/user_manual/postprocessor.tex @@ -809,6 +809,16 @@ \subsubsection{LimitSurfaceIntegral} \item \xmlNode{integralType}, \xmlDesc{string, optional field}, specifies the type of integrations that need to be used. Currently only MonteCarlo integration is available \default{MonteCarlo} + \item \xmlNode{computeBounds}, \xmlDesc{bool, optional field}, + activates the computation of the bounding error of the limit + surface integral ( maximum error in the identification of the + limit surface location). If True, the bounding error is stored + in a variable named as \xmlNode{outputName} appending the suffix + ``\_err''. For example, if \xmlNode{outputName} is + ``EventProbability'', the bounding error will be stored as + ``EventProbability\_err'' (this variable name must be listed as + variable in the output DataObject). + \default{False} \item \xmlNode{seed}, \xmlDesc{integer, optional field}, specifies the random number generator seed. \default{20021986} \item \xmlNode{target}, \xmlDesc{string, optional field}, specifies the target name that represents diff --git a/framework/CodeInterfaces/MooseBasedApp/MooseBasedAppInterface.py b/framework/CodeInterfaces/MooseBasedApp/MooseBasedAppInterface.py index d6f39e49c9..be23d0732c 100644 --- a/framework/CodeInterfaces/MooseBasedApp/MooseBasedAppInterface.py +++ b/framework/CodeInterfaces/MooseBasedApp/MooseBasedAppInterface.py @@ -190,4 +190,4 @@ def dynamicEventTreeForMooseBasedApp(self,**Kwargs): @ Out, listDict, list, list of dictionaries used by the parser to change the input file """ listDict = [] - raise IOError('dynamicEventTreeForMooseBasedApp not yet implemented') \ No newline at end of file + raise IOError('dynamicEventTreeForMooseBasedApp not yet implemented') diff --git a/framework/CodeInterfaces/MooseBasedApp/MooseInputParser.py b/framework/CodeInterfaces/MooseBasedApp/MooseInputParser.py index 29f427b290..f40136275f 100644 --- a/framework/CodeInterfaces/MooseBasedApp/MooseInputParser.py +++ b/framework/CodeInterfaces/MooseBasedApp/MooseInputParser.py @@ -265,4 +265,4 @@ def findInTree(searchNode, targetPath, heritage=None): found = findInTree(sub, targetPath[1:], heritage=heritage) if found: break - return found \ No newline at end of file + return found diff --git a/framework/DataObjects/DataSet.py b/framework/DataObjects/DataSet.py index 002d9df36c..930e739741 100644 --- a/framework/DataObjects/DataSet.py +++ b/framework/DataObjects/DataSet.py @@ -1244,8 +1244,6 @@ def _convertToXrDataset(self): self.addMeta('DataSet',{'Hierarchical':{'path':','.join(p)}}) # clear alignment tracking for indexes self._clearAlignment() - else: - self.raiseAWarning('No data in DataSet to construct!') return self._data def _formatRealization(self,rlz): diff --git a/framework/Databases.py b/framework/Databases.py index 882f6b17e7..37ad8cadef 100644 --- a/framework/Databases.py +++ b/framework/Databases.py @@ -92,8 +92,8 @@ def _handleInput(self, paramInput): self.raiseADebug('HDF5 Read Mode is "'+self.readMode+'".') if self.readMode == 'overwrite': # check if self.databaseDir exists or create in case not - if not os.path.exists(self.databaseDir): - os.mkdir(self.databaseDir) + if not os.path.isdir(self.databaseDir): + os.makedirs(self.databaseDir, exist_ok=True) # get full path fullpath = os.path.join(self.databaseDir,self.filename) if os.path.isfile(fullpath): diff --git a/framework/Optimizers/SimulatedAnnealing.py b/framework/Optimizers/SimulatedAnnealing.py index d7d5e3b547..0b40c66e3c 100644 --- a/framework/Optimizers/SimulatedAnnealing.py +++ b/framework/Optimizers/SimulatedAnnealing.py @@ -713,4 +713,4 @@ def __del__(self): @ In, None @ Out, None """ - return \ No newline at end of file + return diff --git a/framework/PostProcessors/LimitSurfaceIntegral.py b/framework/PostProcessors/LimitSurfaceIntegral.py index 11b1ad47d2..2f64d6790c 100644 --- a/framework/PostProcessors/LimitSurfaceIntegral.py +++ b/framework/PostProcessors/LimitSurfaceIntegral.py @@ -22,7 +22,8 @@ import numpy as np import xarray import math -import os +import sys +from copy import deepcopy #External Modules End-------------------------------------------------------------------------------- #Internal Modules------------------------------------------------------------------------------------ @@ -78,6 +79,9 @@ class cls. LSIOutputNameInput = InputData.parameterInputFactory("outputName", contentType=InputTypes.StringType) inputSpecification.addSub(LSIOutputNameInput) + LSIOutputNameInput = InputData.parameterInputFactory("computeBounds", contentType=InputTypes.BoolType) + inputSpecification.addSub(LSIOutputNameInput) + return inputSpecification def __init__(self, messageHandler): @@ -93,13 +97,15 @@ def __init__(self, messageHandler): self.integralType = 'montecarlo' # integral type (which alg needs to be used). Either montecarlo or quadrature(quadrature not yet) self.seed = 20021986 # seed for montecarlo self.matrixDict = {} # dictionary of arrays and target - self.lowerUpperDict = {} - self.functionS = None - self.computationPrefix = None + self.computeErrrorBounds = False # compute the bounding error? + self.lowerUpperDict = {} # dictionary of lower and upper bounds (used if no distributions are inputted) + self.functionS = None # evaluation classifier for the integration + self.errorModel = None # classifier used for the error estimation + self.computationPrefix = None # output prefix for the storage of the probability and, if requested, bounding error self.stat = BasicStatistics(self.messageHandler) # instantiation of the 'BasicStatistics' processor, which is used to compute the pb given montecarlo evaluations - self.stat.what = ['expectedValue'] - self.addAssemblerObject('distribution','-n', newXmlFlg = True) - self.printTag = 'POSTPROCESSOR INTEGRAL' + self.stat.what = ['expectedValue'] # expected value calculation + self.addAssemblerObject('distribution','-n', newXmlFlg = True) # distributions are optional + self.printTag = 'POSTPROCESSOR INTEGRAL' # print tag def _localReadMoreXML(self, xmlNode): """ @@ -159,6 +165,8 @@ def _handleInput(self, paramInput): self.target = child.value elif child.getName() == 'outputName': self.computationPrefix = child.value + elif child.getName() == 'computeBounds': + self.computeErrrorBounds = child.value else: self.raiseAnError(NameError, 'invalid or missing labels after the variables call. Only "variable" is accepted.tag: ' + child.getName()) # if no distribution, we look for the integration domain in the input @@ -166,10 +174,11 @@ def _handleInput(self, paramInput): if self.variableDist[varName] == None: if 'lowerBound' not in self.lowerUpperDict[varName].keys() or 'upperBound' not in self.lowerUpperDict[varName].keys(): self.raiseAnError(NameError, 'either a distribution name or lowerBound and upperBound need to be specified for variable ' + varName) - if self.computationPrefix == None: + if self.computationPrefix is None: self.raiseAnError(IOError,'The required XML node has not been inputted!!!') - if self.target == None: + if self.target is None: self.raiseAWarning('integral target has not been provided. The postprocessor is going to take the last output it finds in the provided limitsurface!!!') + True def initialize(self, runInfo, inputs, initDict): """ @@ -183,10 +192,29 @@ def initialize(self, runInfo, inputs, initDict): if self.integralType in ['montecarlo']: self.stat.toDo = {'expectedValue':[{'targets':set([self.target]), 'prefix':self.computationPrefix}]} self.stat.initialize(runInfo, inputs, initDict) - self.functionS = LearningGate.returnInstance('SupervisedGate','SciKitLearn', self, **{'SKLtype':'neighbors|KNeighborsClassifier', 'Features':','.join(list(self.variableDist.keys())), 'Target':self.target}) + self.functionS = LearningGate.returnInstance('SupervisedGate','SciKitLearn', self, + **{'SKLtype':'neighbors|KNeighborsClassifier', + 'Features':','.join(list(self.variableDist.keys())), + 'Target':self.target, 'n_jobs': -1}) self.functionS.train(self.matrixDict) self.raiseADebug('DATA SET MATRIX:') self.raiseADebug(self.matrixDict) + if self.computeErrrorBounds: + # create a model for computing the "error" + self.errorModel = LearningGate.returnInstance('SupervisedGate','SciKitLearn', self, + **{'SKLtype':'neighbors|KNeighborsClassifier', + 'Features':','.join(list(self.variableDist.keys())), + 'Target':self.target, 'weights': 'distance', 'n_jobs': -1}) + #modify the self.matrixDict to compute half of the "error" + indecesToModifyOnes = np.argwhere(self.matrixDict[self.target] > 0.).flatten() + res = np.concatenate((np.ones(len(indecesToModifyOnes)), np.zeros(len(indecesToModifyOnes)))) + modifiedMatrixDict = {} + for key in self.matrixDict: + avg = np.average(self.matrixDict[key][indecesToModifyOnes]) + modifiedMatrixDict[key] = np.concatenate((self.matrixDict[key][indecesToModifyOnes], self.matrixDict[key][indecesToModifyOnes] + + (self.matrixDict[key][indecesToModifyOnes]/avg * 1.e-14))) if key != self.target else res + self.errorModel.train(modifiedMatrixDict) + for varName, distName in self.variableDist.items(): if distName != None: self.variableDist[varName] = self.retrieveObjectFromAssemblerDict('distribution', distName) @@ -228,8 +256,9 @@ def run(self, input): This method executes the postprocessor action. In this case, it performs the computation of the LS integral @ In, input, object, object contained the data to process. (inputToInternal output) @ Out, pb, float, integral outcome (probability of the event) + @ Out, boundError, float, optional, error bound (maximum error of the computed probability) """ - pb = None + pb, boundError = None, None if self.integralType == 'montecarlo': tempDict = {} randomMatrix = np.random.rand(int(math.ceil(1.0 / self.tolerance**2)), len(self.variableDist.keys())) @@ -241,9 +270,11 @@ def run(self, input): randomMatrix[:, index] = f(randomMatrix[:, index]) tempDict[varName] = randomMatrix[:, index] pb = self.stat.run({'targets':{self.target:xarray.DataArray(self.functionS.evaluate(tempDict)[self.target])}})[self.computationPrefix +"_"+self.target] + if self.errorModel: + boundError = abs(pb-self.stat.run({'targets':{self.target:xarray.DataArray(self.errorModel.evaluate(tempDict)[self.target])}})[self.computationPrefix +"_"+self.target]) else: self.raiseAnError(NotImplemented, "quadrature not yet implemented") - return pb + return pb, boundError def collectOutput(self, finishedJob, output): """ @@ -253,13 +284,18 @@ def collectOutput(self, finishedJob, output): @ Out, None """ evaluation = finishedJob.getEvaluation() - pb = evaluation[1] + pb, boundError = evaluation[1] lms = evaluation[0][0] if output.type == 'PointSet': # we store back the limitsurface dataSet = lms.asDataset() loadDict = {key: dataSet[key].values for key in lms.getVars()} loadDict[self.computationPrefix] = np.full(len(lms), pb) + if self.computeErrrorBounds: + if self.computationPrefix+"_err" not in output.getVars(): + self.raiseAWarning('ERROR Bounds have been computed but the output DataObject does not request the variable: "', self.computationPrefix+"_err", '"!') + else: + loadDict[self.computationPrefix+"_err"] = np.full(len(lms), boundError) output.load(loadDict,'dict') # NB I keep this commented part in case we want to keep the possibility to have outputfiles for PP #elif isinstance(output,Files.File): diff --git a/framework/Samplers/LimitSurfaceSearch.py b/framework/Samplers/LimitSurfaceSearch.py index 6ac2431935..e2b20ab0a6 100644 --- a/framework/Samplers/LimitSurfaceSearch.py +++ b/framework/Samplers/LimitSurfaceSearch.py @@ -850,5 +850,4 @@ def _formatSolutionExportVariableNames(self, acceptable): new.append(template.format(RESIDUUM=self.goalFunction.name)) else: new.append(template) - print('DEBUGG new:', new) return set(new) diff --git a/tests/framework/PostProcessors/LimitSurface/gold/limitSurfaceBoundingError/LimitSurfaceWeightedPb_dump.csv b/tests/framework/PostProcessors/LimitSurface/gold/limitSurfaceBoundingError/LimitSurfaceWeightedPb_dump.csv new file mode 100644 index 0000000000..75ba0c3b2e --- /dev/null +++ b/tests/framework/PostProcessors/LimitSurface/gold/limitSurfaceBoundingError/LimitSurfaceWeightedPb_dump.csv @@ -0,0 +1,201 @@ +y0,x0,EventProbability,EventProbability_err,goalFunctionForLimitSurface +7.05613837842,1.63193506661,0.503725,0.01371875,0.0 +7.05613837842,1.67929636528,0.503725,0.01371875,0.0 +7.00598866187,1.72665766395,0.503725,0.01371875,0.0 +6.95583894533,1.77401896262,0.503725,0.01371875,0.0 +6.90568922878,1.82138026128,0.503725,0.01371875,0.0 +6.85553951223,1.86874155995,0.503725,0.01371875,0.0 +6.85553951223,1.91610285862,0.503725,0.01371875,0.0 +6.80538979569,1.96346415729,0.503725,0.01371875,0.0 +6.75524007914,2.01082545595,0.503725,0.01371875,0.0 +6.70509036259,2.05818675462,0.503725,0.01371875,0.0 +6.65494064604,2.10554805329,0.503725,0.01371875,0.0 +6.65494064604,2.15290935196,0.503725,0.01371875,0.0 +6.6047909295,2.20027065063,0.503725,0.01371875,0.0 +6.55464121295,2.24763194929,0.503725,0.01371875,0.0 +6.5044914964,2.29499324796,0.503725,0.01371875,0.0 +6.45434177986,2.34235454663,0.503725,0.01371875,0.0 +6.40419206331,2.3897158453,0.503725,0.01371875,0.0 +6.40419206331,2.43707714396,0.503725,0.01371875,0.0 +6.35404234676,2.48443844263,0.503725,0.01371875,0.0 +6.30389263022,2.5317997413,0.503725,0.01371875,0.0 +6.25374291367,2.57916103997,0.503725,0.01371875,0.0 +6.20359319712,2.62652233864,0.503725,0.01371875,0.0 +6.20359319712,2.6738836373,0.503725,0.01371875,0.0 +6.15344348058,2.72124493597,0.503725,0.01371875,0.0 +6.10329376403,2.76860623464,0.503725,0.01371875,0.0 +6.05314404748,2.81596753331,0.503725,0.01371875,0.0 +6.00299433094,2.86332883197,0.503725,0.01371875,0.0 +6.00299433094,2.91069013064,0.503725,0.01371875,0.0 +5.95284461439,2.95805142931,0.503725,0.01371875,0.0 +5.90269489784,3.00541272798,0.503725,0.01371875,0.0 +5.8525451813,3.05277402664,0.503725,0.01371875,0.0 +5.80239546475,3.10013532531,0.503725,0.01371875,0.0 +5.7522457482,3.14749662398,0.503725,0.01371875,0.0 +5.7522457482,3.19485792265,0.503725,0.01371875,0.0 +5.70209603166,3.24221922132,0.503725,0.01371875,0.0 +5.65194631511,3.28958051998,0.503725,0.01371875,0.0 +5.60179659856,3.33694181865,0.503725,0.01371875,0.0 +5.55164688201,3.38430311732,0.503725,0.01371875,0.0 +5.55164688201,3.43166441599,0.503725,0.01371875,0.0 +5.50149716547,3.47902571465,0.503725,0.01371875,0.0 +5.45134744892,3.52638701332,0.503725,0.01371875,0.0 +5.40119773237,3.57374831199,0.503725,0.01371875,0.0 +5.35104801583,3.62110961066,0.503725,0.01371875,0.0 +5.35104801583,3.66847090933,0.503725,0.01371875,0.0 +5.30089829928,3.71583220799,0.503725,0.01371875,0.0 +5.25074858273,3.76319350666,0.503725,0.01371875,0.0 +5.20059886619,3.81055480533,0.503725,0.01371875,0.0 +5.15044914964,3.857916104,0.503725,0.01371875,0.0 +5.15044914964,3.90527740266,0.503725,0.01371875,0.0 +5.10029943309,3.95263870133,0.503725,0.01371875,0.0 +5.05014971655,4.0,0.503725,0.01371875,0.0 +5.0,4.04736129867,0.503725,0.01371875,0.0 +4.94985028345,4.09472259734,0.503725,0.01371875,0.0 +4.89970056691,4.142083896,0.503725,0.01371875,0.0 +4.89970056691,4.18944519467,0.503725,0.01371875,0.0 +4.84955085036,4.23680649334,0.503725,0.01371875,0.0 +4.79940113381,4.28416779201,0.503725,0.01371875,0.0 +4.74925141727,4.33152909067,0.503725,0.01371875,0.0 +4.69910170072,4.37889038934,0.503725,0.01371875,0.0 +4.69910170072,4.42625168801,0.503725,0.01371875,0.0 +4.64895198417,4.47361298668,0.503725,0.01371875,0.0 +4.59880226763,4.52097428535,0.503725,0.01371875,0.0 +4.54865255108,4.56833558401,0.503725,0.01371875,0.0 +4.49850283453,4.61569688268,0.503725,0.01371875,0.0 +4.49850283453,4.66305818135,0.503725,0.01371875,0.0 +4.44835311799,4.71041948002,0.503725,0.01371875,0.0 +4.39820340144,4.75778077868,0.503725,0.01371875,0.0 +4.34805368489,4.80514207735,0.503725,0.01371875,0.0 +4.29790396834,4.85250337602,0.503725,0.01371875,0.0 +4.2477542518,4.89986467469,0.503725,0.01371875,0.0 +4.2477542518,4.94722597336,0.503725,0.01371875,0.0 +4.19760453525,4.99458727202,0.503725,0.01371875,0.0 +4.1474548187,5.04194857069,0.503725,0.01371875,0.0 +4.09730510216,5.08930986936,0.503725,0.01371875,0.0 +4.04715538561,5.13667116803,0.503725,0.01371875,0.0 +4.04715538561,5.18403246669,0.503725,0.01371875,0.0 +3.99700566906,5.23139376536,0.503725,0.01371875,0.0 +3.94685595252,5.27875506403,0.503725,0.01371875,0.0 +3.89670623597,5.3261163627,0.503725,0.01371875,0.0 +3.84655651942,5.37347766136,0.503725,0.01371875,0.0 +3.84655651942,5.42083896003,0.503725,0.01371875,0.0 +3.79640680288,5.4682002587,0.503725,0.01371875,0.0 +3.74625708633,5.51556155737,0.503725,0.01371875,0.0 +3.69610736978,5.56292285604,0.503725,0.01371875,0.0 +3.64595765324,5.6102841547,0.503725,0.01371875,0.0 +3.64595765324,5.65764545337,0.503725,0.01371875,0.0 +3.59580793669,5.70500675204,0.503725,0.01371875,0.0 +3.54565822014,5.75236805071,0.503725,0.01371875,0.0 +3.4955085036,5.79972934937,0.503725,0.01371875,0.0 +3.44535878705,5.84709064804,0.503725,0.01371875,0.0 +3.3952090705,5.89445194671,0.503725,0.01371875,0.0 +3.3952090705,5.94181324538,0.503725,0.01371875,0.0 +3.34505935396,5.98917454405,0.503725,0.01371875,0.0 +3.29490963741,6.03653584271,0.503725,0.01371875,0.0 +3.24475992086,6.08389714138,0.503725,0.01371875,0.0 +3.19461020431,6.13125844005,0.503725,0.01371875,0.0 +3.19461020431,6.17861973872,0.503725,0.01371875,0.0 +3.14446048777,6.22598103738,0.503725,0.01371875,0.0 +3.09431077122,6.27334233605,0.503725,0.01371875,0.0 +3.04416105467,6.32070363472,0.503725,0.01371875,0.0 +7.00598866187,1.63193506661,0.503725,0.01371875,1.0 +7.00598866187,1.67929636528,0.503725,0.01371875,1.0 +6.95583894533,1.72665766395,0.503725,0.01371875,1.0 +6.90568922878,1.77401896262,0.503725,0.01371875,1.0 +6.85553951223,1.82138026128,0.503725,0.01371875,1.0 +6.80538979569,1.86874155995,0.503725,0.01371875,1.0 +6.80538979569,1.91610285862,0.503725,0.01371875,1.0 +6.75524007914,1.96346415729,0.503725,0.01371875,1.0 +6.70509036259,2.01082545595,0.503725,0.01371875,1.0 +6.65494064604,2.05818675462,0.503725,0.01371875,1.0 +6.6047909295,2.10554805329,0.503725,0.01371875,1.0 +6.6047909295,2.15290935196,0.503725,0.01371875,1.0 +6.55464121295,2.20027065063,0.503725,0.01371875,1.0 +6.5044914964,2.24763194929,0.503725,0.01371875,1.0 +6.45434177986,2.29499324796,0.503725,0.01371875,1.0 +6.40419206331,2.34235454663,0.503725,0.01371875,1.0 +6.35404234676,2.3897158453,0.503725,0.01371875,1.0 +6.35404234676,2.43707714396,0.503725,0.01371875,1.0 +6.30389263022,2.48443844263,0.503725,0.01371875,1.0 +6.25374291367,2.5317997413,0.503725,0.01371875,1.0 +6.20359319712,2.57916103997,0.503725,0.01371875,1.0 +6.15344348058,2.62652233864,0.503725,0.01371875,1.0 +6.15344348058,2.6738836373,0.503725,0.01371875,1.0 +6.10329376403,2.72124493597,0.503725,0.01371875,1.0 +6.05314404748,2.76860623464,0.503725,0.01371875,1.0 +6.00299433094,2.81596753331,0.503725,0.01371875,1.0 +5.95284461439,2.86332883197,0.503725,0.01371875,1.0 +5.95284461439,2.91069013064,0.503725,0.01371875,1.0 +5.90269489784,2.95805142931,0.503725,0.01371875,1.0 +5.8525451813,3.00541272798,0.503725,0.01371875,1.0 +5.80239546475,3.05277402664,0.503725,0.01371875,1.0 +5.7522457482,3.10013532531,0.503725,0.01371875,1.0 +5.70209603166,3.14749662398,0.503725,0.01371875,1.0 +5.70209603166,3.19485792265,0.503725,0.01371875,1.0 +5.65194631511,3.24221922132,0.503725,0.01371875,1.0 +5.60179659856,3.28958051998,0.503725,0.01371875,1.0 +5.55164688201,3.33694181865,0.503725,0.01371875,1.0 +5.50149716547,3.38430311732,0.503725,0.01371875,1.0 +5.50149716547,3.43166441599,0.503725,0.01371875,1.0 +5.45134744892,3.47902571465,0.503725,0.01371875,1.0 +5.40119773237,3.52638701332,0.503725,0.01371875,1.0 +5.35104801583,3.57374831199,0.503725,0.01371875,1.0 +5.30089829928,3.62110961066,0.503725,0.01371875,1.0 +5.30089829928,3.66847090933,0.503725,0.01371875,1.0 +5.25074858273,3.71583220799,0.503725,0.01371875,1.0 +5.20059886619,3.76319350666,0.503725,0.01371875,1.0 +5.15044914964,3.81055480533,0.503725,0.01371875,1.0 +5.10029943309,3.857916104,0.503725,0.01371875,1.0 +5.10029943309,3.90527740266,0.503725,0.01371875,1.0 +5.05014971655,3.95263870133,0.503725,0.01371875,1.0 +5.0,4.0,0.503725,0.01371875,1.0 +4.94985028345,4.04736129867,0.503725,0.01371875,1.0 +4.89970056691,4.09472259734,0.503725,0.01371875,1.0 +4.84955085036,4.142083896,0.503725,0.01371875,1.0 +4.84955085036,4.18944519467,0.503725,0.01371875,1.0 +4.79940113381,4.23680649334,0.503725,0.01371875,1.0 +4.74925141727,4.28416779201,0.503725,0.01371875,1.0 +4.69910170072,4.33152909067,0.503725,0.01371875,1.0 +4.64895198417,4.37889038934,0.503725,0.01371875,1.0 +4.64895198417,4.42625168801,0.503725,0.01371875,1.0 +4.59880226763,4.47361298668,0.503725,0.01371875,1.0 +4.54865255108,4.52097428535,0.503725,0.01371875,1.0 +4.49850283453,4.56833558401,0.503725,0.01371875,1.0 +4.44835311799,4.61569688268,0.503725,0.01371875,1.0 +4.44835311799,4.66305818135,0.503725,0.01371875,1.0 +4.39820340144,4.71041948002,0.503725,0.01371875,1.0 +4.34805368489,4.75778077868,0.503725,0.01371875,1.0 +4.29790396834,4.80514207735,0.503725,0.01371875,1.0 +4.2477542518,4.85250337602,0.503725,0.01371875,1.0 +4.19760453525,4.89986467469,0.503725,0.01371875,1.0 +4.19760453525,4.94722597336,0.503725,0.01371875,1.0 +4.1474548187,4.99458727202,0.503725,0.01371875,1.0 +4.09730510216,5.04194857069,0.503725,0.01371875,1.0 +4.04715538561,5.08930986936,0.503725,0.01371875,1.0 +3.99700566906,5.13667116803,0.503725,0.01371875,1.0 +3.99700566906,5.18403246669,0.503725,0.01371875,1.0 +3.94685595252,5.23139376536,0.503725,0.01371875,1.0 +3.89670623597,5.27875506403,0.503725,0.01371875,1.0 +3.84655651942,5.3261163627,0.503725,0.01371875,1.0 +3.79640680288,5.37347766136,0.503725,0.01371875,1.0 +3.79640680288,5.42083896003,0.503725,0.01371875,1.0 +3.74625708633,5.4682002587,0.503725,0.01371875,1.0 +3.69610736978,5.51556155737,0.503725,0.01371875,1.0 +3.64595765324,5.56292285604,0.503725,0.01371875,1.0 +3.59580793669,5.6102841547,0.503725,0.01371875,1.0 +3.59580793669,5.65764545337,0.503725,0.01371875,1.0 +3.54565822014,5.70500675204,0.503725,0.01371875,1.0 +3.4955085036,5.75236805071,0.503725,0.01371875,1.0 +3.44535878705,5.79972934937,0.503725,0.01371875,1.0 +3.3952090705,5.84709064804,0.503725,0.01371875,1.0 +3.34505935396,5.89445194671,0.503725,0.01371875,1.0 +3.34505935396,5.94181324538,0.503725,0.01371875,1.0 +3.29490963741,5.98917454405,0.503725,0.01371875,1.0 +3.24475992086,6.03653584271,0.503725,0.01371875,1.0 +3.19461020431,6.08389714138,0.503725,0.01371875,1.0 +3.14446048777,6.13125844005,0.503725,0.01371875,1.0 +3.14446048777,6.17861973872,0.503725,0.01371875,1.0 +3.09431077122,6.22598103738,0.503725,0.01371875,1.0 +3.04416105467,6.27334233605,0.503725,0.01371875,1.0 +2.99401133813,6.32070363472,0.503725,0.01371875,1.0 diff --git a/tests/framework/PostProcessors/LimitSurface/test_LimitSurface_with_err_bounds.xml b/tests/framework/PostProcessors/LimitSurface/test_LimitSurface_with_err_bounds.xml new file mode 100644 index 0000000000..ab36e245ec --- /dev/null +++ b/tests/framework/PostProcessors/LimitSurface/test_LimitSurface_with_err_bounds.xml @@ -0,0 +1,138 @@ + + + + framework/PostProcessors/LimitSurface.testLimitSurfaceIntegralPPWihtBoundingError + alfoa + 2020-04-15 + Models.PostProcessors.LimitSurface, Models.PostProcessors.LimitSurfaceIntegral + + This test is aimed to check the capability of RAVEN to compute the integral of the Limit Surface (e.g. + Failure probability) reporting the bounding error as well (the maximum error, in probability, in the computation of the limit surface ) + + + Added test for computation of the error bound and linked to new requirement + + R-RA-8 + + + + limitSurfaceBoundingError + FirstMRun,ComputeLimitSurfacePositiveNegative,ComputeLimitSurfaceIntegralWeighted + 1 + + + + + z,x0,y0 + + + x0,y0 + both + Acc + goalFunctionForLimitSurface + + + 0.0025 + MonteCarlo + 20021986 + goalFunctionForLimitSurface + EventProbability + True + + x0_distrib + + + y0_distrib + + + + x0,y0 + goalFunctionForLimitSurface + svm|LinearSVC + 1 + 0.0001 + 10 + + + + + + z + + + + + + 4 + 2 + 0.0 + 8.0 + + + 5 + 2 + 0.0 + 10.0 + + + + + + + x0_distrib + 0.1 0.9 + + + y0_distrib + 0.1 0.9 + + + + + + + Dummy + PythonModule + Grid_external + PointSetPostProcTest + + + PointSetPostProcTest + computeLimitSurfacePositiveNegative + LimitSurfacePositiveNegative + + + LimitSurfacePositiveNegative + LimitSurfaceIntegralWeighted + LimitSurfaceWeightedPb + LimitSurfaceWeightedPb_dump + + + + + + csv + LimitSurfaceWeightedPb + + + + + + x0,y0 + z + + + y0,x0 + goalFunctionForLimitSurface + + + y0,x0 + EventProbability,EventProbability_err,goalFunctionForLimitSurface + + + x0,y0 + OutputPlaceHolder + + + + diff --git a/tests/framework/PostProcessors/LimitSurface/tests b/tests/framework/PostProcessors/LimitSurface/tests index cadc0c504e..d814c8cbfe 100644 --- a/tests/framework/PostProcessors/LimitSurface/tests +++ b/tests/framework/PostProcessors/LimitSurface/tests @@ -26,4 +26,15 @@ max_time = 300 rel_err = 0.0001 [../] + + [./testLimitSurfaceIntegralPPWihtBoundingError] + type = 'RavenFramework' + input = 'test_LimitSurface_with_err_bounds.xml' + output = 'limitSurfaceBoundingError/LimitSurfaceWeightedPb_dump.xml' + csv = 'limitSurfaceBoundingError/LimitSurfaceWeightedPb_dump.csv' + max_time = 300 + rel_err = 0.001 + [../] + + []