def loss_in_a_bent_section_of_circular_tubing( temperature=293.15, # Kelvin pressure=101.3, # kPa particle_diameter=3.5, # µm particle_density=1000, # kg/m^3 tube_air_flow_rate=3, # cc/s tube_air_velocity=False, # m/s tube_diameter=0.0025, # m angle_of_bend=90, # degrees flow_type='auto', verbose=False): """ (B&W 8-66 to 8-68; W&B 6-52, 6-53) Temperature 293.15 Kelvin Pressure 101.3 kPa Particle Diameter 3.5 µm Particle Density 1000 kg/m^3 Tube air velocity 6.25 m/s Tube diameter 0.0025 m Angle of bend 90 degrees""" if not tube_air_velocity: tube_air_velocity = _tools_sampling_efficiency.flow_rate2flow_velocity( tube_air_flow_rate, tube_diameter, verbose=verbose) if flow_type == 'auto': flow_type = _tools_sampling_efficiency.test_flow_type_in_tube( tube_diameter, tube_air_velocity, temperature, pressure, verbose=verbose) velocity_ratio = 1 stnum = _tools_sampling_efficiency.stokes_number(particle_density, particle_diameter, pressure, temperature, tube_air_velocity, velocity_ratio, tube_diameter, verbose=verbose) if flow_type == 'laminar': fract = 1 - stnum * angle_of_bend * np.pi / 180. elif flow_type == 'turbulent': fract = np.exp(-2.823 * stnum * angle_of_bend * np.pi / 180) else: raise ValueError('Unknown flow type: %s' % flow_type) return fract
def loss_at_an_abrupt_contraction_in_circular_tubing( temperature=293.15, # Kelvin pressure=101.3, # kPa particle_diameter=1, # µm particle_density=1000, # kg/m^3 tube_air_velocity=False, # m/s flow_rate_in_inlet=3, # cc/s tube_diameter=0.0025, # m contraction_diameter=0.00125, # m contraction_angle=90, # degrees verbose=False, ): """ (B&W 8-69 to 8-71; W&B 6-54, 17-25) Temperature 293.15 Kelvin Pressure 101.3 kPa Particle diameter 1 µm Particle density 1000 kg/m^3 Tube air velocity 10 m/s Tube diameter 0.0025 m Contraction diameter 0.00125 m Contraction angle 90 degrees """ if not tube_air_velocity: tube_air_velocity = _tools_sampling_efficiency.flow_rate2flow_velocity( flow_rate_in_inlet, tube_diameter, verbose=verbose) st_num = _tools_sampling_efficiency.stokes_number(particle_density, particle_diameter, pressure, temperature, tube_air_velocity, 1, contraction_diameter, verbose=verbose) # st_num = (particle_density * particle_diameter * particle_diameter * 0.000000000001 * slip_correction_factor * B906 / (18*B912*B908)) frac = 1 - (1 / (1 + ((2 * st_num * (1 - (contraction_diameter / tube_diameter)**2)) / (3.14 * np.exp(-0.0185 * contraction_angle)))**-1.24)) return frac
def loss_in_a_bent_section_of_circular_tubing(temperature=293.15, # Kelvin pressure=101.3, # kPa particle_diameter=3.5, # µm particle_density=1000, # kg/m^3 tube_air_flow_rate=3, # cc/s tube_air_velocity=False, # m/s tube_diameter=0.0025, # m angle_of_bend=90, # degrees flow_type='auto', verbose=False ): """ (B&W 8-66 to 8-68; W&B 6-52, 6-53) Temperature 293.15 Kelvin Pressure 101.3 kPa Particle Diameter 3.5 µm Particle Density 1000 kg/m^3 Tube air velocity 6.25 m/s Tube diameter 0.0025 m Angle of bend 90 degrees""" if not tube_air_velocity: tube_air_velocity = _tools_sampling_efficiency.flow_rate2flow_velocity(tube_air_flow_rate, tube_diameter, verbose=verbose) if flow_type == 'auto': flow_type = _tools_sampling_efficiency.test_flow_type_in_tube(tube_diameter, tube_air_velocity, temperature, pressure, verbose=verbose) velocity_ratio = 1 stnum = _tools_sampling_efficiency.stokes_number(particle_density, particle_diameter, pressure, temperature, tube_air_velocity, velocity_ratio, tube_diameter, verbose=verbose) if flow_type == 'laminar': fract = 1 - stnum * angle_of_bend * np.pi / 180. elif flow_type == 'turbulent': fract = np.exp(-2.823 * stnum * angle_of_bend * np.pi / 180) else: raise ValueError('Unknown flow type: %s' % flow_type) return fract
def loss_at_an_abrupt_contraction_in_circular_tubing(temperature=293.15, # Kelvin pressure=101.3, # kPa particle_diameter=1, # µm particle_density=1000, # kg/m^3 tube_air_velocity=False, # m/s flow_rate_in_inlet=3, # cc/s tube_diameter=0.0025, # m contraction_diameter=0.00125, # m contraction_angle=90, # degrees verbose=False, ): """ (B&W 8-69 to 8-71; W&B 6-54, 17-25) Temperature 293.15 Kelvin Pressure 101.3 kPa Particle diameter 1 µm Particle density 1000 kg/m^3 Tube air velocity 10 m/s Tube diameter 0.0025 m Contraction diameter 0.00125 m Contraction angle 90 degrees """ if not tube_air_velocity: tube_air_velocity = _tools_sampling_efficiency.flow_rate2flow_velocity(flow_rate_in_inlet, tube_diameter, verbose=verbose) st_num = _tools_sampling_efficiency.stokes_number(particle_density, particle_diameter, pressure, temperature, tube_air_velocity, 1, contraction_diameter, verbose=verbose) # st_num = (particle_density * particle_diameter * particle_diameter * 0.000000000001 * slip_correction_factor * B906 / (18*B912*B908)) frac = 1 - (1 / (1 + ((2 * st_num * (1 - (contraction_diameter / tube_diameter) ** 2)) / ( 3.14 * np.exp(-0.0185 * contraction_angle))) ** -1.24)) return frac
def inlet_efficiency_isoaxial_horizontal_sharp_edged( temperature=293.15, # Kelvin pressure=101.3, # kPa particle_diameter=15, # µm particle_density=1000, # kg/m^3 inlet_diameter=0.0127, # m inlet_length=0.1, # m sampling_flow_rate=3, # cc/s air_velocity_inlet=False, # m/s ambient_air_speed=25.5, # m/s velocity_ratio=False, # R is 1 for isokinetic, > 1 for subisokinetic verbose=False): """ Inlet efficiency for an isoaxial horizontal sharp-edged inlet: aspiration + transmission (B&W 8-8, 8-14, 8-16, 8-18; W&B 6-8, 6-14, 6-16, 6-18, Hinds 10-7) Temperature 293.15 Kelvin Pressure 101.3 kPa Particle diameter 15 µm Particle density 1000 kg/m^3 Inlet diameter 0.0127 m Inlet length 0.1 m Air velocity in inlet (Vi) 0.05 m/s Velocity ratio (Vw/Vi) 15 Parameters ---------- temperature pressure particle_diameter particle_density inlet_diameter inlet_length air_velocity_inlet velocity_ratio verbose Returns ------- """ if not air_velocity_inlet: air_velocity_inlet = _tools_sampling_efficiency.flow_rate2flow_velocity( sampling_flow_rate, inlet_diameter, verbose=verbose) if not velocity_ratio: velocity_ratio = ambient_air_speed / air_velocity_inlet st_no = _tools_sampling_efficiency.stokes_number(particle_density, particle_diameter, pressure, temperature, air_velocity_inlet, velocity_ratio, inlet_diameter, verbose=verbose) asp_eff = 1 + (velocity_ratio - 1) * (1 - (1 / (1 + (2 + (0.617 / velocity_ratio)) * st_no))) set_vel = _tools_sampling_efficiency.settling_velocity(temperature, particle_density, particle_diameter, pressure, verbose=verbose) grav_param = (inlet_length / air_velocity_inlet) / (inlet_diameter / set_vel) flow_reyno = _tools_sampling_efficiency.flow_reynolds_number( inlet_diameter, air_velocity_inlet, temperature, pressure, verbose=verbose) grav_eff = np.exp( -4.7 * (np.sqrt(grav_param * st_no / np.sqrt(flow_reyno)))**0.75) if velocity_ratio > 1: init_trans_eff = (1 + (velocity_ratio - 1) / (1 + 2.66 / st_no** (2 / 3))) / (1 + (velocity_ratio - 1) / (1 + 0.418 / st_no)) else: init_trans_eff = 1 def vena_contracta_efficiency(): if velocity_ratio < 1: eff = np.exp( -75 * (0.09 * (st_no * (air_velocity_inlet - air_velocity_inlet * velocity_ratio) / (air_velocity_inlet * velocity_ratio))**0.3)**2) else: eff = 1 return eff vena_cont_eff = vena_contracta_efficiency() efficiency = asp_eff * grav_eff * init_trans_eff * vena_cont_eff return efficiency
def inlet_efficiency_isoaxial_horizontal_sharp_edged(temperature = 293.15, # Kelvin pressure = 101.3, # kPa particle_diameter = 15, # µm particle_density = 1000, # kg/m^3 inlet_diameter = 0.0127, # m inlet_length = 0.1, # m sampling_flow_rate = 3, # cc/s air_velocity_inlet = False,# m/s ambient_air_speed = 25.5, # m/s velocity_ratio = False, # R is 1 for isokinetic, > 1 for subisokinetic verbose = False ): """ Inlet efficiency for an isoaxial horizontal sharp-edged inlet: aspiration + transmission (B&W 8-8, 8-14, 8-16, 8-18; W&B 6-8, 6-14, 6-16, 6-18, Hinds 10-7) Temperature 293.15 Kelvin Pressure 101.3 kPa Particle diameter 15 µm Particle density 1000 kg/m^3 Inlet diameter 0.0127 m Inlet length 0.1 m Air velocity in inlet (Vi) 0.05 m/s Velocity ratio (Vw/Vi) 15 Parameters ---------- temperature pressure particle_diameter particle_density inlet_diameter inlet_length air_velocity_inlet velocity_ratio verbose Returns ------- """ if not air_velocity_inlet: air_velocity_inlet = _tools_sampling_efficiency.flow_rate2flow_velocity(sampling_flow_rate, inlet_diameter, verbose=verbose) if not velocity_ratio: velocity_ratio = ambient_air_speed/air_velocity_inlet st_no = _tools_sampling_efficiency.stokes_number(particle_density, particle_diameter, pressure, temperature, air_velocity_inlet, velocity_ratio, inlet_diameter, verbose=verbose) asp_eff = 1 + (velocity_ratio - 1) * (1 - (1 / (1 + (2 + (0.617 / velocity_ratio)) * st_no))) set_vel = _tools_sampling_efficiency.settling_velocity(temperature, particle_density, particle_diameter, pressure, verbose=verbose) grav_param =(inlet_length / air_velocity_inlet) / (inlet_diameter / set_vel) flow_reyno = _tools_sampling_efficiency.flow_reynolds_number(inlet_diameter, air_velocity_inlet, temperature, pressure, verbose=verbose) grav_eff = np.exp(-4.7 * (np.sqrt(grav_param * st_no / np.sqrt(flow_reyno)))**0.75) if velocity_ratio > 1: init_trans_eff = (1 + (velocity_ratio - 1) / (1 + 2.66 / st_no**(2/3))) / (1 + (velocity_ratio - 1) / (1 + 0.418 / st_no)) else: init_trans_eff = 1 def vena_contracta_efficiency(): if velocity_ratio < 1: eff = np.exp(-75 * (0.09 * (st_no * (air_velocity_inlet - air_velocity_inlet * velocity_ratio) / (air_velocity_inlet * velocity_ratio))**0.3)**2) else: eff = 1 return eff vena_cont_eff = vena_contracta_efficiency() efficiency = asp_eff * grav_eff * init_trans_eff * vena_cont_eff return efficiency