Exemplo n.º 1
0
    def test_splitterW(self):
        g = Group()
        p = Problem(root=g)
        comp = g.add('comp', SplitterW())
        p.setup(check=False)
        
        comp.params['W1_des'] = 1.08
        comp.params['MNexit1_des'] = 1.0
        comp.params['MNexit2_des'] = 1.0
        comp.params['design'] = True

        comp.params['flow_in:in:W'] = 3.48771299
        comp.params['flow_in:in:Tt'] = 630.74523
        comp.params['flow_in:in:Pt'] = 0.0271945
        comp.params['flow_in:in:Mach'] = 1.0
        p.run()
        self.check(comp)

        comp.params['design'] = False
        comp.params['flow_out_1:in:is_super'] = True
        comp.params['flow_out_2:in:is_super'] = True
        p.run()
        self.check(comp)

        comp.params['flow_in:in:W'] *= 0.95
        comp.params['flow_out_1:in:is_super'] = False
        comp.params['flow_out_2:in:is_super'] = False
        p.run()
        TOL = 0.001
        assert_rel_error(self, comp.unknowns['flow_out_1:out:Mach'], 0.76922, TOL)
        assert_rel_error(self, comp.unknowns['flow_out_2:out:Mach'], 0.76922, TOL)
Exemplo n.º 2
0
    def test_copy_flow(self): 
        self.comp1.params['flow:in:W'] = 100.0
        self.comp1.params['flow:in:Tt'] = 518.0
        self.comp1.params['flow:in:Pt'] = 15.0
        CycleComponent.copy_from(self.comp1, 'flow', self.comp2, 'flow')

        self.p.run()

        TOL = 0.0001
        assert_rel_error(self, self.comp2.unknowns['flow:out:Tt'], 518.0, TOL)
        assert_rel_error(self, self.comp2.unknowns['flow:out:Pt'], 15.0, TOL)
Exemplo n.º 3
0
    def test_nozzle_under(self):
        self.comp.params['back_Ps'] = 14.0
        self.comp.params['design'] = False

        self.p.run()
        
        assert_rel_error(self, self.comp.unknowns['flow_out:out:W'], 100.0, TOL)
        assert_rel_error(self, self.comp.unknowns['flow_out:out:Pt'], 50.0, TOL)
        assert_rel_error(self, self.comp.unknowns['flow_out:out:Tt'], 700.0, TOL)
        assert_rel_error(self, self.comp.unknowns['Athroat_dmd'], 99.59, TOL)
        assert_rel_error(self, self.comp.unknowns['flow_out:out:area'], 112.88, TOL)
        self.assertEqual(self.comp.unknowns['switchRegime'], 'UNDEREXPANDED')
Exemplo n.º 4
0
    def test_compressor(self):
        comp = Compressor()
        g = Group()
        g.add('comp', comp)
        p = Problem(root=g)
        p.setup()

        comp.params['PR_des'] = 12.47
        comp.params['MNexit_des'] = 0.4
        comp.params['eff_des'] = 0.8
        comp.params['flow_in:in:W'] = 1.08
        comp.params['flow_in:in:Tt'] = 630.74523
        comp.params['flow_in:in:Pt'] = 0.0271945
        comp.params['flow_in:in:Mach'] = 0.6
        comp.params['design'] = True

        p.run()

        TOL = 0.001
        assert_rel_error(self, comp.unknowns['flow_out:out:W'], 1.08, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Pt'], 0.33899, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Tt'], 1424.01, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:rhos'], 0.000594, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Mach'], 0.4 ,TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:area'], 364.7, TOL)
        assert_rel_error(self, comp.unknowns['pwr'], 303.2, TOL)
        assert_rel_error(self, comp.unknowns['eff_poly'], 0.8545, TOL)

        # run off design
        comp.params['design'] = False
        p.run()

        # values should remain unchanged in off-design at design condition
        assert_rel_error(self, comp.unknowns['flow_out:out:W'], 1.08, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Pt'], 0.33899, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Tt'], 1424.01, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:rhos'], 0.000594, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Mach'], 0.4 ,TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:area'], 364.7, TOL)
        assert_rel_error(self, comp.unknowns['pwr'], 303.2, TOL)
        assert_rel_error(self, comp.unknowns['eff_poly'], 0.8545, TOL)

        # try changing something
        comp.params['flow_in:in:W'] *= 1.1
        p.run()
        assert_rel_error(self, comp.unknowns['PR'], 13.52995, TOL)
Exemplo n.º 5
0
    def check(self, comp):
        TOL = .001
        assert_rel_error(self, comp.unknowns['flow_out_1:out:W'], 1.08, TOL)
        assert_rel_error(self, comp.unknowns['flow_out_1:out:Pt'], 0.0271945, TOL)
        assert_rel_error(self, comp.unknowns['flow_out_1:out:Tt'], 630.75, TOL)
        assert_rel_error(self, comp.unknowns['flow_out_1:out:Mach'], 1.0, TOL)
        assert_rel_error(self, comp.unknowns['flow_out_1:out:area'], 1877.2, TOL)
        assert_rel_error(self, comp.unknowns['flow_out_1:out:rhos'], 0.0000737216, TOL)

        assert_rel_error(self, comp.unknowns['flow_out_2:out:W'], 2.407, TOL)
        assert_rel_error(self, comp.unknowns['flow_out_2:out:Pt'], 0.0271945, TOL)
        assert_rel_error(self, comp.unknowns['flow_out_2:out:Tt'], 630.75, TOL)
        assert_rel_error(self, comp.unknowns['flow_out_2:out:Mach'], 1.0, TOL)
        assert_rel_error(self, comp.unknowns['flow_out_2:out:area'], 4183.4, TOL)
        assert_rel_error(self, comp.unknowns['flow_out_2:out:rhos'], 0.0000737216, TOL)
Exemplo n.º 6
0
    def test_nozzle_over(self):
        self.comp.params['back_Ps'] = 16.0
        self.comp.params['design'] = False
        self.p.run()
        self.assertEqual(self.comp.unknowns['switchRegime'], 'OVEREXPANDED')
        assert_rel_error(self, self.comp.unknowns['flow_out:out:W'], 100.0, TOL)
        assert_rel_error(self, self.comp.unknowns['flow_out:out:Pt'], 50.0, TOL)
        assert_rel_error(self, self.comp.unknowns['flow_out:out:Tt'], 700.0, TOL)
        assert_rel_error(self, self.comp.unknowns['flow_out:out:Ps'], 15.0, TOL)
        
        self.comp.params['back_Ps'] = 19.0
        self.p.run()
        self.assertEqual(self.comp.unknowns['switchRegime'], 'OVEREXPANDED')
        assert_rel_error(self, self.comp.unknowns['flow_out:out:Ps'], 15.0, TOL)
        assert_rel_error(self, self.comp.unknowns['flow_out:out:Mach'], 1.432, TOL)
        
        self.comp.params['back_Ps'] = 24.0
        self.p.run()
        self.assertEqual(self.comp.unknowns['switchRegime'], 'OVEREXPANDED')
        
        self.comp.params['back_Ps'] = Pt=27.0
        self.p.run()
        self.assertEqual(self.comp.unknowns['switchRegime'],'OVEREXPANDED')

        self.comp.params['back_Ps'] = 32.0
        self.p.run()
        self.assertEqual(self.comp.unknowns['switchRegime'],'OVEREXPANDED')
Exemplo n.º 7
0
    def test_nozzle_off_design(self):
        assert_rel_error(self, self.comp.unknowns['flow_out:out:W'], 100.0, TOL)
        assert_rel_error(self, self.comp.unknowns['flow_out:out:Pt'], 50.0, TOL)
        assert_rel_error(self, self.comp.unknowns['flow_out:out:Tt'], 700.0, TOL)
        assert_rel_error(self, self.comp.unknowns['flow_out:out:Mach'], 1.432, TOL)
        assert_rel_error(self, self.comp.unknowns['flow_out:out:area'], 112.88, TOL)
        assert_rel_error(self, self.comp.unknowns['Athroat_des'], 99.59, TOL)
        assert_rel_error(self, self.comp.unknowns['Aexit_des'], 112.88, TOL)

        #off design calcs
        self.comp.params['design'] = False

        self.p.run()

        assert_rel_error(self, self.comp.unknowns['flow_out:out:W'], 100.0, TOL)
        assert_rel_error(self, self.comp.unknowns['flow_out:out:Pt'], 50.0, TOL)
        assert_rel_error(self, self.comp.unknowns['flow_out:out:Tt'], 700.0, TOL)
        assert_rel_error(self, self.comp.unknowns['flow_out:out:Mach'], 1.432, TOL)
        assert_rel_error(self, self.comp.unknowns['flow_out:out:area'], 112.88, TOL)
        assert_rel_error(self, self.comp.unknowns['Athroat_des'], 99.59, TOL)
        assert_rel_error(self, self.comp.unknowns['Aexit_des'], 112.88, TOL)
Exemplo n.º 8
0
    def test_nozzle_very_low_temperatures(self): 
        comp = Nozzle()
        g = Group()
        g.add('comp', comp)
        p = Problem(root=g)
        p.setup(check=False)

        comp.params['flow_in:in:W'] = 0.639
        comp.params['flow_in:in:Tt'] = 540.0
        comp.params['flow_in:in:Pt'] = 0.34
        comp.params['flow_in:in:Mach'] = 0.4
        comp.params['back_Ps'] = 0.0272
        comp.params['design'] = True
        
        p.run()

        TOL = 0.01 #this test needs larger tollerance due to exteremely low temperatures
        assert_rel_error(self, comp.unknowns['flow_out:out:W'], 0.639, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Pt'], 0.34, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Tt'], 540.0, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Mach'], 2.7092, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:area'], 264.204, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:rhos'], .000177443, TOL)
        assert_rel_error(self, comp.unknowns['Fg'], 38.98, TOL)

        #off design calcs
        comp.params['design'] = False
        p.run()

        self.assertEqual(comp.unknowns['switchRegime'], 'PERFECTLY_EXPANDED')
        assert_rel_error(self, comp.unknowns['flow_out:out:W'], 0.639, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Pt'], 0.34, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Tt'], 540.0, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Mach'], 2.7092, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:area'], 264.204, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:rhos'], 0.000177443, TOL)

        comp.params['back_Ps'] = 0.03
        p.run()

        self.assertEqual(comp.unknowns['switchRegime'], 'OVEREXPANDED')

        comp.params['back_Ps'] = 0.026
        p.run()

        self.assertEqual(comp.unknowns['switchRegime'], 'UNDEREXPANDED')
Exemplo n.º 9
0
 def test_nozzle_normal_shock(self):
     self.comp.params['back_Ps'] = 35.0
     self.comp.params['design'] = False
     self.p.run()
     self.assertEqual(self.comp.unknowns['switchRegime'], 'NORMAL_SHOCK')
     assert_rel_error(self, self.comp.unknowns['flow_out:out:W'], 100.0, TOL)
     assert_rel_error(self, self.comp.unknowns['flow_out:out:Pt'], 50.0, TOL)
     assert_rel_error(self, self.comp.unknowns['flow_out:out:Tt'], 700., TOL)
     assert_rel_error(self, self.comp.unknowns['flow_out:out:Ps'], 35.0, TOL)
     assert_rel_error(self, self.comp.unknowns['flow_out:out:Mach'], 0.697, TOL)
     
     self.comp.params['back_Ps'] = 37.0
     self.p.run()
     self.assertEqual(self.comp.unknowns['switchRegime'], 'NORMAL_SHOCK')
     assert_rel_error(self, self.comp.unknowns['flow_out:out:W'], 100.0, TOL)
     assert_rel_error(self, self.comp.unknowns['flow_out:out:Pt'], 50.0, TOL)
     assert_rel_error(self, self.comp.unknowns['flow_out:out:Tt'], 700.0, TOL)
     assert_rel_error(self, self.comp.unknowns['flow_out:out:Ps'], 37.0, TOL)
     assert_rel_error(self, self.comp.unknowns['flow_out:out:Mach'], 0.662, TOL)
Exemplo n.º 10
0
    def test_heat_exchanger(self): 
        comp = HeatExchanger()
        g = Group()
        g.add('comp', comp)
        p = Problem(root=g)
        p.setup()

        comp.params['flow_in:in:Tt'] = 1423.8
        comp.params['flow_in:in:Pt'] = 0.302712118187
        comp.params['flow_in:in:W'] = 1.0
        comp.params['dPqP'] = 0.0
        comp.params['design'] = True
        p.run()
        
        TOL = 0.005
        assert_rel_error(self, comp.unknowns['flow_out:out:Tt'], 539.94, TOL)
        assert_rel_error(self, comp.unknowns['Qreleased'], 327.22, TOL)
        assert_rel_error(self, comp.unknowns['Qabsorbed'], 327.22, TOL)
        assert_rel_error(self, comp.unknowns['Qmax'], 335.1, TOL)
        assert_rel_error(self, comp.unknowns['T_cold_out'], 749.96, TOL)
        
        #check off design 
        comp.params['design'] = False
        
        p.run()

        assert_rel_error(self, comp.unknowns['flow_out:out:Tt'], 539.94, TOL)
        assert_rel_error(self, comp.unknowns['Qreleased'], 327.22, TOL)
        assert_rel_error(self, comp.unknowns['Qabsorbed'], 327.22, TOL)
        assert_rel_error(self, comp.unknowns['Qmax'], 335.1, TOL)
        assert_rel_error(self, comp.unknowns['T_cold_out'], 749.96, TOL)
Exemplo n.º 11
0
    def test_inlet(self):
        comp = Inlet()
        g = Group()
        g.add('comp', comp)
        p = Problem(root=g)
        p.setup()

        comp.params['ram_recovery'] = 1.0
        comp.params['MNexit_des'] = 0.6
        comp.params['flow_in:in:W'] = 1.08
        comp.params['flow_in:in:Tt'] = 630.75
        comp.params['flow_in:in:Pt'] = 0.0272
        comp.params['flow_in:in:Mach'] = 1.0
        comp.params['design'] = True
        p.run()

        TOL = 0.005
        assert_rel_error(self, comp.unknowns['flow_out:out:W'], 1.080, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Pt'], 0.0272, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Tt'], 630.75, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:rhos'], 0.000098, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Mach'], 0.6, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:area'], 2230.8, TOL)

        #check off design
        comp.params['design'] = False
        p.run()

        assert_rel_error(self, comp.unknowns['flow_out:out:W'], 1.080, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Pt'], 0.0272, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Tt'], 630.75, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:rhos'], 0.000098, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Mach'], 0.6, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:area'], 2230.8, TOL)

        #vary something
        comp.params['flow_in:in:W'] = 0.9
        p.run()

        assert_rel_error(self, comp.unknowns['flow_out:out:W'], 0.9, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Pt'], 0.0272, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Tt'], 630.75, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:Mach'], 0.45955, TOL)
        assert_rel_error(self, comp.unknowns['flow_out:out:area'], 2230.8, TOL)
Exemplo n.º 12
0
 def test_dels(self):
     s = flowstation.solve(Pt=15.0, Tt=518.0, W=100.0).s
     flow = flowstation.solve(Tt=1000.0, Pt=40.0, W=100.0)
     diffs = flow.s - s
     assert_rel_error(self, diffs, .092609, .0001)
Exemplo n.º 13
0
    def test_delh(self):
        ht = flowstation.solve(Pt=15.0, Tt=518.0, W=100.0).ht
        flow = flowstation.solve(Tt=1000.0, Pt=40.0, W=100.0)
        diffh = flow.ht - ht

        assert_rel_error(self, diffh, 117.4544, .0001)
Exemplo n.º 14
0
 def _assert(self, flow):
     TOL = 0.0005
     assert_rel_error(self, flow.area, 32.006, TOL)
     assert_rel_error(self, flow.Mach, .3, TOL)
     assert_rel_error(self, flow.Ps, 376.194, TOL)
     assert_rel_error(self, flow.Ts, 1081.781, TOL)
     assert_rel_error(self, flow.Vflow, 479.519, TOL)
     assert_rel_error(self, flow.rhos, .93826, TOL)
     assert_rel_error(self, flow.gams, 1.37596, TOL)