Exemplo n.º 1
0
    def test_get_variable_valueref(self):
        model_cc_1 = FMUModelME2("CoupledClutches.fmu",
                                 me2_xml_path,
                                 _connect_dll=False)
        model_cc_2 = FMUModelME2("CoupledClutches.fmu",
                                 me2_xml_path,
                                 _connect_dll=False)

        models = [("First", model_cc_1), ("Second", model_cc_2)]
        connections = []

        coupled = CoupledFMUModelME2(models, connections)

        nose.tools.assert_raises(fmi.FMUException,
                                 coupled.get_variable_valueref, "J1.w")

        vr_1 = coupled.get_variable_valueref("First.J1.w")
        vr_2 = coupled.get_variable_valueref("Second.J1.w")

        assert vr_1 != vr_2

        var_name_1 = coupled.get_variable_by_valueref(vr_1)
        var_name_2 = coupled.get_variable_by_valueref(vr_2)

        assert var_name_1 == "First.J1.w"
        assert var_name_2 == "Second.J1.w"
Exemplo n.º 2
0
 def test_model_variables(self):
     model_cc_1 = FMUModelME2("CoupledClutches.fmu", me2_xml_path, _connect_dll=False)
     model_cc_2 = FMUModelME2("CoupledClutches.fmu", me2_xml_path, _connect_dll=False)
     
     models = [("First", model_cc_1), ("Second", model_cc_2)]
     connections = []
     
     coupled = CoupledFMUModelME2(models, connections)
     
     vars = coupled.get_model_variables()
     vars_1 = model_cc_1.get_model_variables()
     vars_2 = model_cc_2.get_model_variables()
     
     assert len(vars) == len(vars_1) + len(vars_2)
     
     vars = coupled.get_model_variables(include_alias=False)
     vars_1 = model_cc_1.get_model_variables(include_alias=False)
     vars_2 = model_cc_2.get_model_variables(include_alias=False)
     
     assert len(vars) == len(vars_1) + len(vars_2)
     
     vars = coupled.get_model_variables(include_alias=False, type=fmi.FMI2_INTEGER)
     vars_1 = model_cc_1.get_model_variables(include_alias=False, type=fmi.FMI2_INTEGER)
     vars_2 = model_cc_2.get_model_variables(include_alias=False, type=fmi.FMI2_INTEGER)
     
     assert len(vars) == len(vars_1) + len(vars_2)
Exemplo n.º 3
0
    def test_caching(self):
        negated_alias = FMUModelME2("NegatedAlias.fmu",
                                    os.path.join(file_path, "files", "FMUs",
                                                 "XML", "ME2.0"),
                                    _connect_dll=False)

        assert len(negated_alias.cache) == 0  #No starting cache

        vars_1 = negated_alias.get_model_variables()
        vars_2 = negated_alias.get_model_variables()
        assert id(vars_1) == id(vars_2)

        vars_3 = negated_alias.get_model_variables(filter="*")
        assert id(vars_1) != id(vars_3)

        vars_4 = negated_alias.get_model_variables(type=0)
        assert id(vars_3) != id(vars_4)

        vars_5 = negated_alias.get_model_time_varying_value_references()
        vars_7 = negated_alias.get_model_time_varying_value_references()
        assert id(vars_5) != id(vars_1)
        assert id(vars_5) == id(vars_7)

        negated_alias = FMUModelME2("NegatedAlias.fmu",
                                    os.path.join(file_path, "files", "FMUs",
                                                 "XML", "ME2.0"),
                                    _connect_dll=False)

        assert len(negated_alias.cache) == 0  #No starting cache

        vars_6 = negated_alias.get_model_variables()
        assert id(vars_1) != id(vars_6)
Exemplo n.º 4
0
    def test_inputs_list(self):

        model_sub_1 = FMUModelME2("LinearStability.SubSystem1.fmu",
                                  me2_xml_path,
                                  _connect_dll=False)
        model_sub_2 = FMUModelME2("LinearStability.SubSystem2.fmu",
                                  me2_xml_path,
                                  _connect_dll=False)
        model_full = FMUModelME2("LinearStability.FullSystem.fmu",
                                 me2_xml_path,
                                 _connect_dll=False)

        models = [("First", model_sub_1), ("Second", model_sub_2)]
        connections = [(model_sub_1, "y1", model_sub_2, "u2"),
                       (model_sub_2, "y2", model_sub_1, "u1")]

        coupled = CoupledFMUModelME2(models, connections=connections)

        #Inputs should not be listed if they are internally connected
        vars = coupled.get_input_list().keys()
        assert len(vars) == 0

        coupled = CoupledFMUModelME2(models, connections=[])
        vars = coupled.get_input_list().keys()
        assert "First.u1" in vars
        assert "Second.u2" in vars
Exemplo n.º 5
0
    def test_loading(self):
        model_cc_1 = FMUModelME2("CoupledClutches.fmu",
                                 me2_xml_path,
                                 _connect_dll=False)
        model_cc_2 = FMUModelME2("CoupledClutches.fmu",
                                 me2_xml_path,
                                 _connect_dll=False)

        models = [model_cc_1, model_cc_2]
        connections = []

        nose.tools.assert_raises(fmi.FMUException, CoupledFMUModelME2, models,
                                 connections)

        models = [("First", model_cc_1), model_cc_2]
        nose.tools.assert_raises(fmi.FMUException, CoupledFMUModelME2, models,
                                 connections)

        models = [("First", model_cc_1), ("First", model_cc_2)]
        nose.tools.assert_raises(fmi.FMUException, CoupledFMUModelME2, models,
                                 connections)

        models = [("First", model_cc_1), ("Second", model_cc_2)]
        coupled = CoupledFMUModelME2(models, connections)

        connections = [("k")]
        nose.tools.assert_raises(fmi.FMUException, CoupledFMUModelME2, models,
                                 connections)

        connections = [(model_cc_1, "J1.phi", model_cc_2, "J2.phi")]
        nose.tools.assert_raises(fmi.FMUException, CoupledFMUModelME2, models,
                                 connections)
Exemplo n.º 6
0
    def __init__(self, negated_aliases, *args, **kwargs):
        FMUModelME2.__init__(self, *args, **kwargs)

        self.continuous_states = np.zeros(self.get_ode_sizes()[0])
        self.nominal_continuous_states = np.ones(self.get_ode_sizes()[0])
        self.variables = self.get_model_variables(include_alias=False)
        self.negated_aliases = negated_aliases
        self.states = self.get_states_list()

        self.reset()
Exemplo n.º 7
0
 def test_alias(self):
     model_cc_1 = FMUModelME2("CoupledClutches.fmu", me2_xml_path, _connect_dll=False)
     model_cc_2 = FMUModelME2("CoupledClutches.fmu", me2_xml_path, _connect_dll=False)
     
     models = [("First", model_cc_1), ("Second", model_cc_2)]
     connections = []
     
     coupled = CoupledFMUModelME2(models, connections)
     
     aliases = coupled.get_variable_alias("First.J4.phi")
     assert "First.J4.phi" in aliases.keys()
     assert coupled.get_variable_alias_base("First.J4.phi") == "First.J4.flange_a.phi"
Exemplo n.º 8
0
 def test_ode_sizes(self):
     model_cc_1 = FMUModelME2("CoupledClutches.fmu", me2_xml_path, _connect_dll=False)
     model_cc_2 = FMUModelME2("CoupledClutches.fmu", me2_xml_path, _connect_dll=False)
     
     models = [("First", model_cc_1), ("Second", model_cc_2)]
     connections = []
     
     coupled = CoupledFMUModelME2(models, connections)
     
     [nbr_states, nbr_event_ind] = coupled.get_ode_sizes()
     
     assert nbr_states == 16
     assert nbr_event_ind == 66
Exemplo n.º 9
0
 def test_variable_causality(self):
     model_cc_1 = FMUModelME2("CoupledClutches.fmu", me2_xml_path, _connect_dll=False)
     model_cc_2 = FMUModelME2("CoupledClutches.fmu", me2_xml_path, _connect_dll=False)
     
     models = [("First", model_cc_1), ("Second", model_cc_2)]
     connections = []
     
     coupled = CoupledFMUModelME2(models, connections)
     
     nose.tools.assert_raises(fmi.FMUException,  coupled.get_variable_causality, "J1.w")
     
     causality = coupled.get_variable_causality("First.J1.w")
     
     assert causality == model_cc_1.get_variable_causality("J1.w")
Exemplo n.º 10
0
 def test_reversed_connections(self):
     model_sub_1 = FMUModelME2("LinearStability.SubSystem1.fmu", me2_xml_path, _connect_dll=False)
     model_sub_2 = FMUModelME2("LinearStability.SubSystem2.fmu", me2_xml_path, _connect_dll=False)
     model_full  = FMUModelME2("LinearStability.FullSystem.fmu", me2_xml_path, _connect_dll=False)
     
     models = [("First", model_sub_1), ("Second", model_sub_2)]
     connections = [(model_sub_2,"y1",model_sub_1,"u2"),
                    (model_sub_1,"y2",model_sub_2,"u1")]
     
     nose.tools.assert_raises(fmi.FMUException,  CoupledFMUModelME2, models, connections)
     
     connections = [(model_sub_2,"u2",model_sub_1,"y1"),
                    (model_sub_1,"u1",model_sub_2,"y2")]
                    
     nose.tools.assert_raises(fmi.FMUException,  CoupledFMUModelME2, models, connections)
Exemplo n.º 11
0
    def test_unicode_description(self):
        full_path = os.path.join(file_path, "files", "FMUs", "XML", "ME2.0", "Description.fmu")
        model = FMUModelME2(full_path, _connect_dll=False)
        
        desc = model.get_variable_description("x")

        assert desc == "Test symbols '' ‘’"
Exemplo n.º 12
0
 def test_get_variable_description(self):
     model = FMUModelME2("CoupledClutches.fmu",
                         os.path.join(file_path, "files", "FMUs", "XML",
                                      "ME2.0"),
                         _connect_dll=False)
     assert model.get_variable_description(
         "J1.phi") == "Absolute rotation angle of component"
Exemplo n.º 13
0
 def test_log_file_name(self):
     full_path = os.path.join(file_path, "files", "FMUs", "XML", "ME2.0", "CoupledClutches.fmu")
     
     model = FMUModelME2(full_path, _connect_dll=False)
     
     path, file_name = os.path.split(full_path)
     assert model.get_log_file_name() == file_name.replace(".","_")[:-4]+"_log.txt"
Exemplo n.º 14
0
 def test_states_list(self):
     model_cc_1 = FMUModelME2("CoupledClutches.fmu", me2_xml_path, _connect_dll=False)
     model_cc_2 = FMUModelME2("CoupledClutches.fmu", me2_xml_path, _connect_dll=False)
     
     models = [("First", model_cc_1), ("Second", model_cc_2)]
     connections = []
     
     coupled = CoupledFMUModelME2(models, connections)
     
     states = coupled.get_states_list()
     
     for state in states:
         assert state.startswith("First.") or state.startswith("Second.")
         var = coupled.get_variable_by_valueref(states[state].value_reference)
         alias_vars = coupled.get_variable_alias(var).keys()
         assert state in alias_vars
Exemplo n.º 15
0
    def test_get_erronous_nominals(self):
        model = FMUModelME2("NominalTests.NominalTest4.fmu",
                            os.path.join(file_path, "files", "FMUs", "XML",
                                         "ME2.0"),
                            _connect_dll=False)

        nose.tools.assert_almost_equal(model.get_variable_nominal("x"), 2.0)
        nose.tools.assert_almost_equal(model.get_variable_nominal("y"), 1.0)

        nose.tools.assert_almost_equal(
            model.get_variable_nominal("x", _override_erroneous_nominal=False),
            -2.0)
        nose.tools.assert_almost_equal(
            model.get_variable_nominal("y", _override_erroneous_nominal=False),
            0.0)

        x_vref = model.get_variable_valueref("x")
        y_vref = model.get_variable_valueref("y")

        nose.tools.assert_almost_equal(
            model.get_variable_nominal(valueref=x_vref), 2.0)
        nose.tools.assert_almost_equal(
            model.get_variable_nominal(valueref=y_vref), 1.0)

        nose.tools.assert_almost_equal(
            model.get_variable_nominal(valueref=x_vref,
                                       _override_erroneous_nominal=False),
            -2.0)
        nose.tools.assert_almost_equal(
            model.get_variable_nominal(valueref=y_vref,
                                       _override_erroneous_nominal=False), 0.0)
Exemplo n.º 16
0
    def test_loading_xml_me2(self):

        model = FMUModelME2("CoupledClutches.fmu",
                            os.path.join(file_path, "files", "FMUs", "XML",
                                         "ME2.0"),
                            _connect_dll=False)

        assert model.get_name() == "CoupledClutches", model.get_name()
Exemplo n.º 17
0
 def test_units(self):
     model = FMUModelME2("CoupledClutches.fmu", os.path.join(file_path, "files", "FMUs", "XML", "ME2.0"), _connect_dll=False)
     
     assert model.get_variable_unit("J1.w") == "rad/s", model.get_variable_unit("J1.w")
     assert model.get_variable_unit("J1.phi") == "rad", model.get_variable_unit("J1.phi")
     
     nose.tools.assert_raises(FMUException, model.get_variable_unit, "clutch1.useHeatPort")
     nose.tools.assert_raises(FMUException, model.get_variable_unit, "clutch1.sss")
     nose.tools.assert_raises(FMUException, model.get_variable_unit, "clutch1.sss")
Exemplo n.º 18
0
 def test_output_dependencies_2(self):
     full_path = os.path.join(file_path, "files", "FMUs", "XML", "ME2.0", "CoupledClutches.fmu")
     
     model = FMUModelME2(full_path, _connect_dll=False)
     
     [state_dep, input_dep] = model.get_output_dependencies()
     
     assert len(state_dep.keys()) == 0, len(state_dep.keys())
     assert len(input_dep.keys()) == 0, len(input_dep.keys())
Exemplo n.º 19
0
    def test_display_units(self):
        model = FMUModelME2("CoupledClutches.fmu",
                            os.path.join(file_path, "files", "FMUs", "XML",
                                         "ME2.0"),
                            _connect_dll=False)

        assert model.get_variable_display_unit("J1.phi") == "deg"
        nose.tools.assert_raises(FMUException, model.get_variable_display_unit,
                                 "J1.w")
Exemplo n.º 20
0
 def test_derivative_dependencies(self):
     full_path = os.path.join(file_path, "files", "FMUs", "XML", "ME2.0", "NoState.Example1.fmu")
     
     model = FMUModelME2(full_path, _connect_dll=False)
     
     [state_dep, input_dep] = model.get_derivatives_dependencies()
     
     assert len(state_dep.keys()) == 0, len(state_dep.keys())
     assert len(input_dep.keys()) == 0, len(input_dep.keys())
Exemplo n.º 21
0
    def test_declared_enumeration_type(self):
        model = FMUModelME2("Enumerations.Enumeration3.fmu",
                            os.path.join(file_path, "files", "FMUs", "XML",
                                         "ME2.0"),
                            _connect_dll=False)

        enum = model.get_variable_declared_type("x")
        assert len(enum.items.keys()) == 2
        enum = model.get_variable_declared_type("home")
        assert len(enum.items.keys()) == 4

        nose.tools.assert_raises(FMUException,
                                 model.get_variable_declared_type, "z")
Exemplo n.º 22
0
    def test_loading_wrong_model(self):
        model_sub1 = FMUModelCS2("LinearStability.SubSystem1.fmu",
                                 cs2_xml_path,
                                 _connect_dll=False)
        model_sub2 = FMUModelME2("LinearStability.SubSystem2.fmu",
                                 me2_xml_path,
                                 _connect_dll=False)

        models = [model_sub1, model_sub2]
        connections = [(model_sub1, "y1", model_sub2, "u2"),
                       (model_sub2, "y2", model_sub1, "u1")]

        nose.tools.assert_raises(FMUException, Master, models, connections)
Exemplo n.º 23
0
 def test_output_dependencies(self):
     full_path = os.path.join(file_path, "files", "FMUs", "XML", "ME2.0", "OutputTest2.fmu")
     model = FMUModelME2(full_path, _connect_dll=False)
     
     [state_dep, input_dep] = model.get_output_dependencies()
     
     assert state_dep["y1"][0] == "x1"
     assert state_dep["y1"][1] == "x2"
     assert state_dep["y2"][0] == "x2"
     assert state_dep["y3"][0] == "x1"
     assert input_dep["y1"][0] == "u1"
     assert input_dep["y3"][0] == "u1"
     assert len(input_dep["y2"]) == 0
Exemplo n.º 24
0
    def test_declared_enumeration_type(self):
        model = FMUModelME2("Enumerations.Enumeration3.fmu", os.path.join(file_path, "files", "FMUs", "XML", "ME2.0"), _connect_dll=False)
        
        enum = model.get_variable_declared_type("x")
        assert len(enum.items.keys()) == 2, len(enum.items.keys())
        enum = model.get_variable_declared_type("home")
        assert len(enum.items.keys()) == 4, len(enum.items.keys())

        assert enum.items[1][0] == "atlantis"
        assert enum.name == "Enumerations.Enumeration3.cities", "Got: " + enum.name
        assert enum.description == "", "Got: " + enum.description

        nose.tools.assert_raises(FMUException, model.get_variable_declared_type, "z")
Exemplo n.º 25
0
    def test_get_scalar_variable(self):
        negated_alias = FMUModelME2("NegatedAlias.fmu", os.path.join(file_path, "files", "FMUs", "XML", "ME2.0"), _connect_dll=False)

        sc_x = negated_alias.get_scalar_variable("x")
        
        assert sc_x.name == "x", sc_x.name
        assert sc_x.value_reference >= 0, sc_x.value_reference
        assert sc_x.type == fmi.FMI2_REAL, sc_x.type
        assert sc_x.variability == fmi.FMI2_CONTINUOUS, sc_x.variability
        assert sc_x.causality == fmi.FMI2_LOCAL, sc_x.causality
        assert sc_x.initial == fmi.FMI2_INITIAL_APPROX, sc_x.initial

        nose.tools.assert_raises(FMUException, negated_alias.get_scalar_variable, "not_existing")
Exemplo n.º 26
0
    def test_relative_quantity(self):
        full_path = os.path.join(file_path, "files", "FMUs", "XML", "ME2.0", "test_type_definitions.fmu")
        model = FMUModelME2(full_path, _connect_dll=False)
        
        rel = model.get_variable_relative_quantity("real_with_attr")
        assert rel == True, "Relative quantity should be True"
        rel = model.get_variable_relative_quantity("real_with_attr_false")
        assert rel == False, "Relative quantity should be False"
        
        rel = model.get_variable_relative_quantity("real_without_attr")
        assert rel == False, "Relative quantity should be (default) False"

        rel = model.get_variable_relative_quantity("real_with_typedef")
        assert rel == True, "Relative quantity should be True"
        
        nose.tools.assert_raises(FMUException, model.get_variable_relative_quantity, "int_with_attr")
Exemplo n.º 27
0
 def test_get_time_varying_variables(self):
     model = FMUModelME2("CoupledClutches.fmu", os.path.join(file_path, "files", "FMUs", "XML", "ME2.0"), _connect_dll=False)
     
     [r,i,b] = model.get_model_time_varying_value_references()
     [r_f, i_f, b_f] = model.get_model_time_varying_value_references(filter="*")
     
     assert len(r) == len(r_f)
     assert len(i) == len(i_f)
     assert len(b) == len(b_f)
     
     vars = model.get_variable_alias("J4.phi")
     for var in vars:
         [r,i,b] = model.get_model_time_varying_value_references(filter=var)
         assert len(r) == 1, len(r)
     
     [r,i,b] = model.get_model_time_varying_value_references(filter=list(vars.keys()))
     assert len(r) == 1, len(r)