def create(self, num, model, **model_params): counter = self.eid_counters.setdefault(model, itertools.count()) entities = [] for i in range(num): eid = '%s_%s' % (model, next(counter)) # Establish FMU module based on the version of the integrated module: if self.fmi_me_version == 1: fmu = fmipp.FMUModelExchangeV1(self.uri_to_extracted_fmu, self.instance_name, self.logging_on, self.stop_before_event, self.event_search_precision, self.integrator) elif self.fmi_me_version == 2: fmu = fmipp.FMUModelExchangeV2(self.uri_to_extracted_fmu, self.instance_name, self.logging_on, self.stop_before_event, self.event_search_precision, self.integrator) else: raise ValueError("Unknown FMI version '%i'" % self.fmi_me_version) # Set parameter values and initialize: self._entities[eid] = fmu inst_stat = self._entities[eid].instantiate(self.instance_name) assert inst_stat == fmipp.fmiOK self.set_values(eid, model_params, 'parameter') if self.automated_initialization: init_stat = self._entities[eid].initialize() assert init_stat == fmipp.fmiOK entities.append({'eid': eid, 'type': model, 'rel': []}) return entities
print('URI of extracted FMU: {}'.format(uri_to_extracted_fmu)) # ## Loading, instantiating and initialising the FMU # # Specify the FMU's configuration parameters. logging_on = False # turn logging on/off stop_before_event = False # halt integration immediately before an event? event_search_precision = 1e-2 # set precision for event detection integrator_type = fmipp.bdf # use Backward Differentiation Formula from CVODE #integrator_type = fmipp.rk # alternatively, use Runge-Kutta for integration # Load the FMU with the help of class **FMUModelExchangeV2**. fmu = fmipp.FMUModelExchangeV2(uri_to_extracted_fmu, model_name, logging_on, stop_before_event, event_search_precision, integrator_type) # Instantiate the FMU and check the status. status = fmu.instantiate('radiator_1') # instantiate model assert status == fmipp.fmiOK # check status # Initialize the FMU and check the status. status = fmu.initialize() # initialize model assert status == fmipp.fmiOK # check status # ## Run a simulation with the FMU # # Specify default step size of one simulation step (communication step size).