File: t_SensitivityAnalysis_std.py

package info (click to toggle)
openturns 1.7-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 38,588 kB
  • ctags: 26,495
  • sloc: cpp: 144,032; python: 26,855; ansic: 7,868; sh: 419; makefile: 263; yacc: 123; lex: 44
file content (38 lines) | stat: -rwxr-xr-x 1,232 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#! /usr/bin/env python

from __future__ import print_function
from openturns import *

TESTPREAMBLE()
RandomGenerator.SetSeed(0)

try:
    inDim = 3
    outDim = 1

    formula = [
        'sin(_pi*X1)+7*sin(_pi*X2)*sin(_pi*X2)+0.1*((_pi*X3)*(_pi*X3)*(_pi*X3)*(_pi*X3))*sin(_pi*X1)']

    model = NumericalMathFunction(['X1', 'X2', 'X3'], ['Y'], formula)

    distribution = ComposedDistribution(
        [Uniform(-1.0, 1.0)] * inDim, IndependentCopula(inDim))

    size = 10000
    sample1 = distribution.getSample(size)
    sample2 = distribution.getSample(size)

    sensitivityAnalysis = SensitivityAnalysis(sample1, sample2, model)
    sensitivityAnalysis.setBlockSize(17)
    secondOrderIndices = sensitivityAnalysis.getSecondOrderIndices()
    firstOrderIndices = sensitivityAnalysis.getFirstOrderIndices()
    totalOrderIndices = sensitivityAnalysis.getTotalOrderIndices()

    print("First order Sobol indice of Y|X1 = %.6f" % firstOrderIndices[0])
    print("Total order Sobol indice of Y|X3 = %.6f" % totalOrderIndices[2])
    print("Second order Sobol indice of Y|X1,X3 = %.6f" %
          secondOrderIndices[0, 2])

except:
    import sys
    print("t_SensitivityAnalysis_std.py", sys.exc_info()[0], sys.exc_info()[1])