def test_findComponentOn_nestedTuples(self): # Tests for #1069 m = ConcreteModel() m.x = Var() m.c = Constraint(Any) m.c[0] = m.x >= 0 m.c[(1, )] = m.x >= 1 m.c[(2, )] = m.x >= 2 m.c[2] = m.x >= 3 self.assertIs(ComponentUID(m.c[0]).find_component_on(m), m.c[0]) self.assertIs(ComponentUID('c[0]').find_component_on(m), m.c[0]) self.assertIsNone(ComponentUID('c[(0,)]').find_component_on(m)) self.assertIs( ComponentUID(m.c[(1, )]).find_component_on(m), m.c[(1, )]) self.assertIs(ComponentUID('c[(1,)]').find_component_on(m), m.c[(1, )]) self.assertIsNone(ComponentUID('c[1]').find_component_on(m)) self.assertIs(ComponentUID('c[(2,)]').find_component_on(m), m.c[(2, )]) self.assertIs(ComponentUID('c[2]').find_component_on(m), m.c[2]) self.assertEqual(len(m.c), 4) self.assertEqual(repr(ComponentUID(m.c[0])), "c[0]") self.assertEqual(repr(ComponentUID(m.c[(1, )])), "c[(1,)]") self.assertEqual(str(ComponentUID(m.c[0])), "c[0]") self.assertEqual(str(ComponentUID(m.c[(1, )])), "c[(1,)]") m = ConcreteModel() m.x = Var() m.c = Constraint([0, 1]) m.c[0] = m.x >= 0 m.c[(1, )] = m.x >= 1 self.assertIs(ComponentUID(m.c[0]).find_component_on(m), m.c[0]) self.assertIs(ComponentUID(m.c[(0, )]).find_component_on(m), m.c[0]) self.assertIs(ComponentUID('c[0]').find_component_on(m), m.c[0]) self.assertIs(ComponentUID('c[(0,)]').find_component_on(m), m.c[0]) self.assertIs(ComponentUID(m.c[1]).find_component_on(m), m.c[1]) self.assertIs(ComponentUID(m.c[(1, )]).find_component_on(m), m.c[1]) self.assertIs(ComponentUID('c[(1,)]').find_component_on(m), m.c[1]) self.assertIs(ComponentUID('c[1]').find_component_on(m), m.c[1]) self.assertEqual(len(m.c), 2) m = ConcreteModel() m.b = Block(Any) m.b[0].c = Block(Any) m.b[0].c[0].x = Var() m.b[(1, )].c = Block(Any) m.b[(1, )].c[(1, )].x = Var() ref = m.b[0].c[0].x self.assertIs(ComponentUID(ref).find_component_on(m), ref) ref = 'm.b[0].c[(0,)].x' self.assertIsNone(ComponentUID(ref).find_component_on(m)) ref = m.b[(1, )].c[(1, )].x self.assertIs(ComponentUID(ref).find_component_on(m), ref) ref = 'm.b[(1,)].c[1].x' self.assertIsNone(ComponentUID(ref).find_component_on(m)) buf = {} ref = m.b[0].c[0].x self.assertIs( ComponentUID(ref, cuid_buffer=buf).find_component_on(m), ref) self.assertEqual(len(buf), 3) ref = 'm.b[0].c[(0,)].x' self.assertIsNone( ComponentUID(ref, cuid_buffer=buf).find_component_on(m)) self.assertEqual(len(buf), 3) ref = m.b[(1, )].c[(1, )].x self.assertIs( ComponentUID(ref, cuid_buffer=buf).find_component_on(m), ref) self.assertEqual(len(buf), 4) ref = 'm.b[(1,)].c[1].x' self.assertIsNone( ComponentUID(ref, cuid_buffer=buf).find_component_on(m)) self.assertEqual(len(buf), 4)
def test_power_law_rate_no_order(): m = ConcreteModel() # # Add a test thermo package for validation m.pparams = PhysicalParameterTestBlock() m.thermo = m.pparams.build_state_block([1]) m.rparams = GenericReactionParameterBlock( default={ "property_package": m.pparams, "base_units": { "time": pyunits.s, "mass": pyunits.kg, "amount": pyunits.mol, "length": pyunits.m, "temperature": pyunits.K }, "rate_reactions": { "r1": { "stoichiometry": { ("p1", "c1"): -1, ("p1", "c2"): 2 }, "rate_form": power_law_rate, "concentration_form": ConcentrationForm.moleFraction } } }) # Create a dummy state block m.rxn = Block([1]) add_object_reference(m.rxn[1], "phase_component_set", m.pparams._phase_component_set) add_object_reference(m.rxn[1], "params", m.rparams) add_object_reference(m.rxn[1], "state_ref", m.thermo[1]) m.rxn[1].k_rxn = Var(["r1"], initialize=1) power_law_rate.build_parameters(m.rparams.reaction_r1, m.rparams.config.rate_reactions["r1"]) # Check parameter construction assert isinstance(m.rparams.reaction_r1.reaction_order, Var) assert len(m.rparams.reaction_r1.reaction_order) == 4 for i, v in m.rparams.reaction_r1.reaction_order.items(): try: stoic = m.rparams.config.rate_reactions.r1.stoichiometry[i] except KeyError: stoic = 0 if stoic < 1: assert v.value == -stoic else: assert v.value == 0 # Check reaction form rform = power_law_rate.return_expression(m.rxn[1], m.rparams.reaction_r1, "r1", 300) assert str(rform) == str(m.rxn[1].k_rxn["r1"] * m.thermo[1].mole_frac_phase_comp["p1", "c1"]** m.rparams.reaction_r1.reaction_order["p1", "c1"])
def test_generate_cuid_string_map(self): model = Block(concrete=True) model.x = Var() model.y = Var([1, 2]) model.V = Var([('a', 'b'), (1, '2'), (3, 4)]) model.b = Block(concrete=True) model.b.z = Var([1, '2']) setattr(model.b, '.H', Var(['a', 2])) model.B = Block(['a', 2], concrete=True) setattr(model.B['a'], '.k', Var()) model.B[2].b = Block() model.B[2].b.x = Var() model.add_component('c tuple', Constraint(Any)) model.component('c tuple')[(1, )] = model.x >= 0 cuids = ( ComponentUID.generate_cuid_string_map(model, repr_version=1), ComponentUID.generate_cuid_string_map(model), ) self.assertEqual(len(cuids[0]), 29) self.assertEqual(len(cuids[1]), 29) for obj in [ model, model.x, model.y, model.y_index, model.y[1], model.y[2], model.V, model.V_index, model.V['a', 'b'], model.V[1, '2'], model.V[3, 4], model.b, model.b.z, model.b.z_index, model.b.z[1], model.b.z['2'], getattr(model.b, '.H'), getattr(model.b, '.H_index'), getattr(model.b, '.H')['a'], getattr(model.b, '.H')[2], model.B, model.B_index, model.B['a'], getattr(model.B['a'], '.k'), model.B[2], model.B[2].b, model.B[2].b.x, model.component('c tuple')[(1, )] ]: self.assertEqual(ComponentUID(obj).get_repr(1), cuids[0][obj]) self.assertEqual(repr(ComponentUID(obj)), cuids[1][obj]) cuids = ( ComponentUID.generate_cuid_string_map(model, descend_into=False, repr_version=1), ComponentUID.generate_cuid_string_map(model, descend_into=False), ) self.assertEqual(len(cuids[0]), 18) self.assertEqual(len(cuids[1]), 18) for obj in [ model, model.x, model.y, model.y_index, model.y[1], model.y[2], model.V, model.V_index, model.V['a', 'b'], model.V[1, '2'], model.V[3, 4], model.b, model.B, model.B_index, model.B['a'], model.B[2], model.component('c tuple')[(1, )] ]: self.assertEqual(ComponentUID(obj).get_repr(1), cuids[0][obj]) self.assertEqual(repr(ComponentUID(obj)), cuids[1][obj]) cuids = ( ComponentUID.generate_cuid_string_map(model, ctype=Var, repr_version=1), ComponentUID.generate_cuid_string_map(model, ctype=Var), ) self.assertEqual(len(cuids[0]), 22) self.assertEqual(len(cuids[1]), 22) for obj in [ model, model.x, model.y, model.y[1], model.y[2], model.V, model.V['a', 'b'], model.V[1, '2'], model.V[3, 4], model.b, model.b.z, model.b.z[1], model.b.z['2'], getattr(model.b, '.H'), getattr(model.b, '.H')['a'], getattr(model.b, '.H')[2], model.B, model.B['a'], getattr(model.B['a'], '.k'), model.B[2], model.B[2].b, model.B[2].b.x ]: self.assertEqual(ComponentUID(obj).get_repr(1), cuids[0][obj]) self.assertEqual(repr(ComponentUID(obj)), cuids[1][obj]) cuids = ( ComponentUID.generate_cuid_string_map(model, ctype=Var, descend_into=False, repr_version=1), ComponentUID.generate_cuid_string_map(model, ctype=Var, descend_into=False), ) self.assertEqual(len(cuids[0]), 9) self.assertEqual(len(cuids[1]), 9) for obj in [ model, model.x, model.y, model.y[1], model.y[2], model.V, model.V['a', 'b'], model.V[1, '2'], model.V[3, 4] ]: self.assertEqual(ComponentUID(obj).get_repr(1), cuids[0][obj]) self.assertEqual(repr(ComponentUID(obj)), cuids[1][obj])