コード例 #1
0
ファイル: mosaik_fmi.py プロジェクト: hoangtranthe/JRA2-TC1
    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
コード例 #2
0
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).