FMUPointToFieldFunction basics

FMUPointToFieldFunction enables to use OpenTURNS’ high level algorithms by wrapping the FMU into an openturns.Function object.

First, retrieve the path to the FMU deviation.fmu. Recall the deviation model is static, i.e. its output does not evolve over time.

import openturns as ot
import otfmi.example.utility
path_fmu = otfmi.example.utility.get_path_fmu("deviation")

Wrap the FMU into an OpenTURNS function:

function = otfmi.FMUPointToFieldFunction(
    path_fmu, inputs_fmu=["E", "F", "L", "I"], outputs_fmu=["y"]
)
print(type(function))
<class 'openturns.func.PointToFieldFunction'>

Simulate the FMU on a point:

inputPoint = ot.Point([3.0e7, 30000, 200, 400])
outputPoint = function(inputPoint)[-1]
print(f"y = {outputPoint}")
y = [6.66667]

Simulate the FMU on a sample:

inputSample = ot.Sample(
    [[3.0e7, 30000, 200, 400], [3.0e7, 30000, 250, 400], [3.0e7, 30000, 300, 400]]
)
inputSample.setDescription(["E", "F", "L", "I"])
outputSample = function(inputSample)
outputSample = [y[-1] for y in outputSample]
print(outputSample)
[class=Point name=Unnamed dimension=1 values=[6.66667], class=Point name=Unnamed dimension=1 values=[13.0208], class=Point name=Unnamed dimension=1 values=[22.5]]

Total running time of the script: (0 minutes 0.132 seconds)