File: t_KarhunenLoeveQuadratureAlgorithm_std.py

package info (click to toggle)
openturns 1.24-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 66,204 kB
  • sloc: cpp: 256,662; python: 63,381; ansic: 4,414; javascript: 406; sh: 180; xml: 164; yacc: 123; makefile: 98; lex: 55
file content (50 lines) | stat: -rwxr-xr-x 1,808 bytes parent folder | download | duplicates (3)
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
39
40
41
42
43
44
45
46
47
48
49
50
#! /usr/bin/env python

import openturns as ot

ot.ResourceMap.SetAsScalar("LinearCombinationEvaluation-SmallCoefficient", 1.0e-10)
domain = ot.Interval(-1.0, 1.0)
basis = ot.OrthogonalProductPolynomialFactory([ot.LegendreFactory()])
basisSize = 5
functions = [basis.build(i) for i in range(basisSize)]
experiment = ot.LHSExperiment(basis.getMeasure(), 100)
mustScale = False
threshold = 0.0001
model = ot.AbsoluteExponential([1.0])
algo = ot.KarhunenLoeveQuadratureAlgorithm(
    domain, domain, model, experiment, functions, mustScale, threshold
)
algo.run()
result = algo.getResult()
lambd = result.getEigenvalues()
KLModes = result.getModesAsProcessSample()
print("KL modes=", KLModes)
print("KL eigenvalues=", lambd)
process = ot.GaussianProcess(model, KLModes.getMesh())
sample = process.getSample(10)
coefficients = result.project(sample)
print("KL coefficients=", coefficients)
KLFunctions = result.getModes()
print("KL functions=", KLFunctions)
print("KL lift=", result.lift(coefficients[0]))
print("KL lift as field=", result.liftAsField(coefficients[0]))
# Now using Legendre/Gauss quadrature
marginalDegree = 5
algo = ot.KarhunenLoeveQuadratureAlgorithm(
    domain, domain, model, marginalDegree, threshold
)
algo.run()
result = algo.getResult()
lambd = result.getEigenvalues()
KLModes = result.getScaledModesAsProcessSample()
# Due to symmetry many results can have a sign switch depending on the CPU/compiler/BLAS used
# print("KL modes=", KLModes)
print("KL eigenvalues=", lambd)
coefficients = result.project(sample)
# print("KL coefficients=", coefficients)
KLFunctions = result.getModes()
# print("KL functions=", KLFunctions)
lifted = result.lift(coefficients[0])
# print("KL lift=", lifted)
liftedAsField = result.liftAsField(coefficients[0])
# print("KL lift as field=", liftedAsField)