File: t_NaiveEnclosingSimplex_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 (53 lines) | stat: -rwxr-xr-x 1,547 bytes parent folder | download | duplicates (2)
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
51
52
53
#! /usr/bin/env python

import openturns as ot

ot.TESTPREAMBLE()

dim = 2
interval = ot.Interval([0.0] * dim, [10.0] * dim)
mesh = ot.IntervalMesher([30] * dim).build(interval)
f = ot.SymbolicFunction(["x", "y"], ["x + 0.5*sin(y)", "y-0.1*x*sin(x)"])
mesh.setVertices(f(mesh.getVertices()))

simplices = mesh.getSimplices()
nrSimplices = len(simplices)
naive = ot.NaiveEnclosingSimplex(mesh.getVertices(), simplices)
print("naive=", naive)

ot.RandomGenerator.SetSeed(0)
test = ot.JointDistribution([ot.Uniform(-1.0, 11.0)] * dim).getSample(100)

for i, vertex in enumerate(test):
    index = naive.query(vertex)
    if index >= nrSimplices:
        print(i, "is outside")
    else:
        found, coordinates = mesh.checkPointInSimplexWithCoordinates(vertex, index)
        if not found:
            print(
                "Wrong simplex found for",
                vertex,
                "(index=",
                index,
                simplices[index],
                "barycentric coordinates=",
                coordinates,
            )

indices = naive.query(test)
for i, index in enumerate(indices):
    if index >= nrSimplices:
        print(i, "is outside")
    else:
        found, coordinates = mesh.checkPointInSimplexWithCoordinates(test[i], index)
        if not found:
            print(
                "Wrong simplex found for",
                test[i],
                "(index=",
                index,
                simplices[index],
                "barycentric coordinates=",
                coordinates,
            )