def setup_network_individual_offdesign(self): """ Set up network for individual offdesign tests. """ self.nw = network(['H2O'], T_unit='C', p_unit='bar', v_unit='m3 / s') so = basics.source('source') sp = nodes.splitter('splitter', num_out=2) self.pump1 = turbomachinery.pump('pump 1') self.sc1 = heat_exchangers.solar_collector('collector field 1') v1 = piping.valve('valve1') self.pump2 = turbomachinery.pump('pump 2') self.sc2 = heat_exchangers.solar_collector('collector field 2') v2 = piping.valve('valve2') me = nodes.merge('merge', num_in=2) si = basics.sink('sink') self.pump1.set_attr(eta_s=0.8, design=['eta_s'], offdesign=['eta_s_char']) self.pump2.set_attr(eta_s=0.8, design=['eta_s'], offdesign=['eta_s_char']) self.sc1.set_attr(pr=0.95, lkf_lin=3.33, lkf_quad=0.011, A=1252, E=700, Tamb=20, eta_opt=0.92, design=['pr'], offdesign=['zeta']) self.sc2.set_attr(pr=0.95, lkf_lin=3.5, lkf_quad=0.011, A=700, E=800, Tamb=20, eta_opt=0.92, design=['pr'], offdesign=['zeta']) fl = {'H2O': 1} inlet = connection(so, 'out1', sp, 'in1', T=50, p=3, fluid=fl) outlet = connection(me, 'out1', si, 'in1', p=3) self.sp_p1 = connection(sp, 'out1', self.pump1, 'in1') self.p1_sc1 = connection(self.pump1, 'out1', self.sc1, 'in1') self.sc1_v1 = connection(self.sc1, 'out1', v1, 'in1', p=3.1, T=90) v1_me = connection(v1, 'out1', me, 'in1') self.sp_p2 = connection(sp, 'out2', self.pump2, 'in1') self.p2_sc2 = connection(self.pump2, 'out1', self.sc2, 'in1') self.sc2_v2 = connection(self.sc2, 'out1', v2, 'in1', p=3.1, m=0.1) v2_me = connection(v2, 'out1', me, 'in2') self.nw.add_conns(inlet, outlet, self.sp_p1, self.p1_sc1, self.sc1_v1, v1_me, self.sp_p2, self.p2_sc2, self.sc2_v2, v2_me)
def test_solar_collector(self): """ Test component properties of solar collector. """ instance = solar_collector('solar collector') self.setup_heat_exchanger_simple_network(instance) fl = {'Ar': 0, 'H2O': 1} self.c1.set_attr(fluid=fl, p=10, T=30) self.c2.set_attr(T=70) # test grouped parameter settings with missing parameters instance.hydro_group.is_set = True instance.energy_group.is_set = True self.nw.solve('design', init_only=True) msg = ('Hydro group must no be set, if one parameter is missing!') eq_(instance.hydro_group.is_set, False, msg) msg = ('Energy group must no be set, if one parameter is missing!') eq_(instance.energy_group.is_set, False, msg) # test solar collector params as system variables instance.set_attr(E=1e3, lkf_lin=1.0, lkf_quad=0.005, A='var', eta_opt=0.9, Q=1e5, Tamb=20, pr=0.99) self.nw.solve('design') # heat loss must be identical to Q - E * A (internal heat loss # calculation) T_diff = (self.c2.T.val + self.c1.T.val) / 2 - instance.Tamb.val Q_loss = round( instance.A.val * (instance.E.val * (1 - instance.eta_opt.val) + T_diff * instance.lkf_lin.val + T_diff**2 * instance.lkf_quad.val), 0) msg = ('Value for heat loss of solar collector must be ' + str(Q_loss) + ', is ' + str(round(instance.Q_loss.val, 0)) + '.') eq_(Q_loss, round(instance.Q_loss.val, 0), msg) # test all parameters of the energy group: E instance.set_attr(A=instance.A.val, E='var') self.nw.solve('design') eq_(Q_loss, round(instance.Q_loss.val, 0), msg) # test all parameters of the energy group: eta_opt instance.set_attr(E=instance.E.val, eta_opt='var') self.nw.solve('design') eq_(Q_loss, round(instance.Q_loss.val, 0), msg) # test all parameters of the energy group: lkf_lin instance.set_attr(eta_opt=instance.eta_opt.val, lkf_lin='var') self.nw.solve('design') eq_(Q_loss, round(instance.Q_loss.val, 0), msg) # test all parameters of the energy group: lkf_quad instance.set_attr(lkf_lin=instance.lkf_lin.val, lkf_quad='var') self.nw.solve('design') eq_(Q_loss, round(instance.Q_loss.val, 0), msg) # test all parameters of the energy group: Tamb instance.set_attr(lkf_lin=instance.lkf_lin.val, lkf_quad='var') self.nw.solve('design') eq_(Q_loss, round(instance.Q_loss.val, 0), msg)