pythontuplesfmijmodelica

error while creating a 2-tuple as input for model.simulate() of fmu model with pyfmi


I have a fmu created in gt-suite. I am trying to work with it in python using python PyFMI package. My code

from pyfmi import load_fmu
import numpy as np

model = load_fmu('AHUPIv2b.fmu')

t = np.linspace(0.,100.,100) 
u = np.linspace(3.5,4.5,100)
v = np.linspace(900,1000,100)
u_traj = np.transpose(np.vstack((t,u)))
v_traj = np.transpose(np.vstack((t,v)))

input_object = (('InputVarI','InputVarP'),(u_traj,v_traj))
res = model.simulate(final_time=500, input=input_object, options={'ncp':500})

res = model.simulate(final_time=10)

model.simulate takes input as one of its parameters, Documentation says

input --
        Input signal for the simulation. The input should be a 2-tuple
        consisting of first the names of the input variable(s) and then
        the data matrix.

'InputVarI','InputVarP' are the input variables and u_traj,v_traj are data matrices.

My code gives an error gives an error -

TypeError: tuple indices must be integers or slices, not tuple

Is the input_object created wrong? Can someone help with how to create the input tuples correctly as per the documentation?


Solution

  • The input object is created incorrect. The second variable in the input tuple should be a single data matrix, not two data matrices.

    The correct input should be:

    data = np.transpose(np.vstack((t,u,v)))
    input_object = (['InputVarI','InputVarP'],data)
    

    See also pyFMI parameter change don't change the simulation output