Value function

A value function f_{value}: \mathcal{D} \times \mathbb{R}^d \rightarrow \mathcal{D} \times \mathbb{R}^q is a particular field function that lets invariant the mesh of a field and defined by a function g : \mathbb{R}^d  \rightarrow \mathbb{R}^q such that:

\begin{aligned} f_{value}(\underline{t}, \underline{x})=(\underline{t}, g(\underline{x}))\end{aligned}

Let’s note that the input dimension of f_{value} still designs the dimension of \underline{x} : d. Its output dimension is equal to q.

The creation of the ValueFunction object requires the function g and the integer n: the dimension of the vertices of the mesh \mathcal{M}. This data is required for tests on the compatibility of dimension when a composite process is created using the spatial function.

The use case illustrates the creation of a spatial (field) function from the function g: \mathbb{R}^2  \rightarrow \mathbb{R}^2 such as :

\begin{aligned}
  g(\underline{x})=(x_1^2, x_1+x_2)
\end{aligned}

import openturns as ot

ot.Log.Show(ot.Log.NONE)

Create a mesh

N = 100
mesh = ot.RegularGrid(0.0, 1.0, N)

Create the function that acts the values of the mesh

g = ot.SymbolicFunction(["x1", "x2"], ["x1^2", "x1+x2"])

Create the field function

f = ot.ValueFunction(g, mesh)

Evaluate f

inF = ot.Normal(2).getSample(N)
outF = f(inF)

# print input/output at first mesh nodes
xy = inF
xy.stack(outF)
xy[:5]
X0X1y0y1
0-0.07417901-0.82054490.005502526-0.8947239
10.49118230.30993470.24126010.801117
2-0.6362435-0.080464940.4048058-0.7167084
3-0.4333433-0.26129880.1877864-0.6946421
41.176418-2.048281.383959-0.8718619