def get_last_work_stage(stage_geom: StageGeomAndHeatDrop, prev_stage: StageGasDynamics, L_stage_rel, eta_t0) -> StageGasDynamics: logger.info('get_last_work_stage') L_stage = L_stage_rel / ( prev_stage.G_stage_out / prev_stage.G_turbine - (stage_geom.g_lb + stage_geom.g_ld + stage_geom.g_lk)) p0_stag = prev_stage.p2 * (1 + (stage_geom.mu * prev_stage.c2) ** 2 / (2 * prev_stage.c_p_gas * prev_stage.T_st)) ** \ (prev_stage.k_gas / (prev_stage.k_gas - 1)) result = StageGasDynamics(prev_stage.T_st_stag, p0_stag, prev_stage.G_stage_out, prev_stage.G_turbine, prev_stage.alpha_air, KeroseneCombustionProducts(), stage_geom.rho, stage_geom.phi, stage_geom.psi, stage_geom.l1, stage_geom.l2, stage_geom.D1, stage_geom.D2, stage_geom.delta_r_rk, stage_geom.n, stage_geom.epsilon, stage_geom.g_lk, stage_geom.g_ld, stage_geom.g_lb, L_t=L_stage, eta_t0=eta_t0) return result
def get_last_pressure_stage(turbine_geom: TurbineGeomAndHeatDropDistribution, stage_geom: StageGeomAndHeatDrop, prev_stage: StageGasDynamics) -> StageGasDynamics: logger.info('get_last_pressure_stage') p0_stag = prev_stage.p2 * (1 + (stage_geom.mu * prev_stage.c2)**2 / (2 * prev_stage.c_p_gas * prev_stage.T_st)) ** \ (prev_stage.k_gas / (prev_stage.k_gas - 1)) result = StageGasDynamics(prev_stage.T_st_stag, p0_stag, prev_stage.G_stage_out, prev_stage.G_turbine, prev_stage.alpha_air, KeroseneCombustionProducts(), stage_geom.rho, stage_geom.phi, stage_geom.psi, stage_geom.l1, stage_geom.l2, stage_geom.D1, stage_geom.D2, stage_geom.delta_r_rk, stage_geom.n, stage_geom.epsilon, stage_geom.g_lk, stage_geom.g_ld, stage_geom.g_lb, p2=turbine_geom.p_t) return result
def get_intermediate_stage(stage_geom: StageGeomAndHeatDrop, prev_stage: StageGasDynamics, precise_heat_drop=True) -> \ StageGasDynamics: logger.info('get_intermediate_stage') if precise_heat_drop: H0 = stage_geom.H0 * (1 + (1 - stage_geom.mu)**2 * prev_stage.c2**2 / (2 * prev_stage.c_p_gas * prev_stage.T_st) ) + 0.5 * (stage_geom.mu * prev_stage.c2)**2 else: H0 = stage_geom.H0 p0_stag = prev_stage.p2 * (1 + (stage_geom.mu * prev_stage.c2)**2 / (2 * prev_stage.c_p_gas * prev_stage.T_st)) ** \ (prev_stage.k_gas / (prev_stage.k_gas - 1)) result = StageGasDynamics(prev_stage.T_st_stag, p0_stag, prev_stage.G_stage_out, prev_stage.G_turbine, prev_stage.alpha_air, KeroseneCombustionProducts(), stage_geom.rho, stage_geom.phi, stage_geom.psi, stage_geom.l1, stage_geom.l2, stage_geom.D1, stage_geom.D2, stage_geom.delta_r_rk, stage_geom.n, stage_geom.epsilon, stage_geom.g_lk, stage_geom.g_ld, stage_geom.g_lb, H0=H0) return result
def get_first_stage_gas_dynamics(stage_geom: StageGeomAndHeatDrop, T0_stag, p0_stag, G_turbine, alpha_air) -> StageGasDynamics: logger.info('get_first_stage_gas_dynamics') result = StageGasDynamics(T0_stag, p0_stag, G_turbine, G_turbine, alpha_air, KeroseneCombustionProducts(), stage_geom.rho, stage_geom.phi, stage_geom.psi, stage_geom.l1, stage_geom.l2, stage_geom.D1, stage_geom.D2, stage_geom.delta_r_rk, stage_geom.n, stage_geom.epsilon, stage_geom.g_lk, stage_geom.g_ld, stage_geom.g_lb, H0=stage_geom.H0) return result
def _compute_outlet(self): self._outlet.input.alpha = self._combustion_chamber.output.alpha self._outlet.input.lam_out = self.lam_out self._outlet.input.p_out = self.p_a self._outlet.input.sigma_out = self.sigma_out self._outlet.input.work_fluid = KeroseneCombustionProducts() logger.info('%s _compute_outlet' % str(self)) self._outlet.compute_output()
def _compute_power_turbine(self): self._power_turbine.input.alpha = self._combustion_chamber.output.alpha self._power_turbine.input.work_fluid = KeroseneCombustionProducts() self._power_turbine.input.eta_turb_stag_p = self.eta_power_turb_stag_p self._power_turbine.input.p_in_stag = self._compressor_turbine.output.p_out_stag self._power_turbine.input.T_in_stag = self._compressor_turbine.output.T_out_stag self._power_turbine.input.T_out_stag_init = 600 logger.info('%s _compute_power_turbine' % str(self)) self._power_turbine.compute_output()
def _compute_compressor_turbine(self): self._compressor_turbine.input.T_in_stag = self.T_comb_stag self._compressor_turbine.input.p_in_stag = self._combustion_chamber.output.p_out_stag self._compressor_turbine.input.alpha = self._combustion_chamber.output.alpha self._compressor_turbine.input.eta_m = self.eta_m self._compressor_turbine.input.eta_turb_stag_p = self.eta_comp_turb_stag_p self._compressor_turbine.input.g_gas = self._combustion_chamber.output.g_gas self._compressor_turbine.input.L_comp = self._compressor.output.L_comp self._compressor_turbine.input.pi_turb_stag_init = 3 self._compressor_turbine.input.work_fluid = KeroseneCombustionProducts() logger.info('%s _compute_compressor_turbine' % str(self)) self._compressor_turbine.compute_output()
def __init__(self, turbine_type: TurbineType, **kwargs): """ :param turbine_type: :param kwargs: gamma_av, gamma_sum, gamma_in, gamma_out """ self._T_g_stag = None self._p_g_stag = None self._G_turbine = None self._kwargs = kwargs self._alpha_air = None self._stage_number = None self._k_n = 6.8 self._work_fluid = KeroseneCombustionProducts() self._l1_D1_ratio = None self._n = None self._c21_init = None self._H01_init = None self._rho1 = None self._phi1 = 0.97 self._T_t_stag_cycle = None self._p_t_stag_cycle = None self._L_t_cycle = None self._alpha11 = None self._eta_t_stag_cycle = None self._H_t_stag_cycle = None self._geom = None self.c_p_gas = None self.k_gas = None self.c_p_gas_stag = None self.k_gas_stag = None self._gas_dynamics = list() self._type = turbine_type if ('gamma_av' in kwargs) and ('gamma_sum' in kwargs): self._gamma_av = kwargs['gamma_av'] self._gamma_in = None self._gamma_out = None self._gamma_sum = kwargs['gamma_sum'] elif ('gamma_in' in kwargs) and ('gamma_out' in kwargs): self._gamma_av = None self._gamma_in = kwargs['gamma_in'] self._gamma_out = kwargs['gamma_out'] self._gamma_sum = None else: assert False, 'gamma_av and gamma_sum or gamma_in and gamma_out must be set' self.L_t_sum = None self.H_t = None self.H_t_stag = None self.eta_t = None self.eta_t_stag = None self.eta_l = None self.N = None self.eta_m = None
def _init_turbine_geom(self): try: self._geom = TurbineGeomAndHeatDropDistribution(self.stage_number, self.eta_t_stag_cycle, self.H_t_stag_cycle, self.c21_init, self.n, KeroseneCombustionProducts(), self.T_g_stag, self.p_g_stag, self.alpha_air, self.G_turbine, self.l1_D1_ratio, self.H01_init, self.rho1, self.phi1, self.alpha11, self.k_n, self.T_t_stag_cycle, self.p_t_stag_cycle, **self._kwargs) except AssertionError: pass
def _compute_combustion_chamber(self): self._combustion_chamber.input.T_out_stag = self.T_comb_stag self._combustion_chamber.input.eta_comb = self.eta_comb self._combustion_chamber.input.g_cooling = self.g_cooling self._combustion_chamber.input.g_outflow = self.g_outflow self._combustion_chamber.input.g_return = self.g_return self._combustion_chamber.input.l0 = self.l0 self._combustion_chamber.input.p_in_stag = self._compressor.output.p_out_stag self._combustion_chamber.input.Q_n = self.Q_n self._combustion_chamber.input.sigma_comb = self.sigma_comb self._combustion_chamber.input.T_in_stag = self._compressor.output.T_out_stag self._combustion_chamber.input.work_fluid_in = Air() self._combustion_chamber.input.work_fluid_out = KeroseneCombustionProducts() logger.info('%s _compute_combustion_chamber' % str(self)) self._combustion_chamber.compute_output()
turbine_geometry.compute_output() dh01_rel = abs(turbine_geometry.first.H0 - turbine_geometry.H01) / turbine_geometry.H01 logger.debug('specify_h01 dh01_rel = %s' % dh01_rel) H01 = turbine_geometry.first.H0 if __name__ == '__main__': deg = np.pi / 180 turbine_geom = TurbineGeomAndHeatDropDistribution( 2, 0.91, 300e3, 150, 10e3, KeroseneCombustionProducts(), 1400, 1.3e6, 2.4, 9, 1 / 3.5, 180e3, 0.8, 0.96, 15 * deg, 6.8, 850, 120e3, gamma_av=0 * deg, gamma_sum=15 * deg) turbine_geom[0].delta_a_b_sa_ratio = 0.23