def gravitational_loss_in_circular_tube(temperature=293.15, # Kelvin pressure=101.3, # kPa particle_diameter=10, # µm particle_density=1000, # kg/m^3 tube_diameter=0.01, # m tube_length=0.1, # m incline_angle=60, # degrees from horizontal (0-90) flow_rate=3, # cc/s mean_flow_velocity=False, # 0.1061 # m/s) flow_type='auto', verbose=False): """ Arguments --------- temperature = 293.15, # Kelvin pressure = 101.3, # kPa particle_diameter = 10, # µm particle_density = 1000, # kg/m^3 tube_diameter = 0.01, # m tube_length = 0.1, # m incline_angle = 60, # degrees from horizontal (0-90) flow_rate = 3, # cc/s mean_flow_velocity = False #0.1061 # m/s)""" if not mean_flow_velocity: mean_flow_velocity = tools.flow_rate2flow_velocity(flow_rate, tube_diameter, verbose=verbose) if flow_type == 'auto': flow_type = tools.test_flow_type_in_tube(tube_diameter, mean_flow_velocity, temperature, pressure, verbose=verbose) if flow_type == 'laminar': sv = tools.settling_velocity(temperature, particle_density, particle_diameter, pressure, verbose=verbose) k770 = np.cos(np.pi * incline_angle / 180) * 3 * sv * tube_length / (4 * tube_diameter * mean_flow_velocity) if np.any((k770 ** (2. / 3)) > 1): fract = 0 else: if np.any(k770 ** (2 / 3.) > 1): k771 = 0 else: k771 = np.arcsin(k770 ** (1 / 3.)) # done fract = (1 - (2 / np.pi) * ( 2 * k770 * np.sqrt(1 - k770 ** (2 / 3)) + k771 - ( k770 ** (1 / 3) * np.sqrt(1 - k770 ** (2 / 3))))) # done if np.any(fract < 0): fract = 0 elif flow_type == 'turbulent': raise ValueError('Sorry this loss mechanism has not been implemented for turbulent flow') else: raise ValueError('Unknown flow type: %s' % flow_type) if verbose: print('k770: %s' % k770) print('k771: %s' % k771) print('fraction penetrating: %s' % fract) return fract
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.flow_rate2flow_velocity(tube_air_flow_rate, tube_diameter, verbose=verbose) if flow_type == 'auto': flow_type = tools.test_flow_type_in_tube(tube_diameter, tube_air_velocity, temperature, pressure, verbose=verbose) velocity_ratio = 1 stnum = tools.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_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.flow_rate2flow_velocity(tube_air_flow_rate, tube_diameter, verbose=verbose) if flow_type == 'auto': flow_type = tools.test_flow_type_in_tube(tube_diameter, tube_air_velocity, temperature, pressure, verbose=verbose) velocity_ratio = 1 stnum = tools.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 gravitational_loss_in_circular_tube( temperature=293.15, # Kelvin pressure=101.3, # kPa particle_diameter=10, # µm particle_density=1000, # kg/m^3 tube_diameter=0.01, # m tube_length=0.1, # m incline_angle=60, # degrees from horizontal (0-90) flow_rate=3, # cc/s mean_flow_velocity=False, # 0.1061 # m/s) flow_type='auto', verbose=False): """ Arguments --------- temperature = 293.15, # Kelvin pressure = 101.3, # kPa particle_diameter = 10, # µm particle_density = 1000, # kg/m^3 tube_diameter = 0.01, # m tube_length = 0.1, # m incline_angle = 60, # degrees from horizontal (0-90) flow_rate = 3, # cc/s mean_flow_velocity = False #0.1061 # m/s)""" if not mean_flow_velocity: mean_flow_velocity = tools.flow_rate2flow_velocity(flow_rate, tube_diameter, verbose=verbose) if flow_type == 'auto': flow_type = tools.test_flow_type_in_tube(tube_diameter, mean_flow_velocity, temperature, pressure, verbose=verbose) if flow_type == 'laminar': sv = tools.settling_velocity(temperature, particle_density, particle_diameter, pressure, verbose=verbose) k770 = np.cos(np.pi * incline_angle / 180) * 3 * sv * tube_length / ( 4 * tube_diameter * mean_flow_velocity) if np.any((k770**(2. / 3)) > 1): fract = 0 else: if np.any(k770**(2 / 3.) > 1): k771 = 0 else: k771 = np.arcsin(k770**(1 / 3.)) # done fract = (1 - (2 / np.pi) * (2 * k770 * np.sqrt(1 - k770**(2 / 3)) + k771 - (k770**(1 / 3) * np.sqrt(1 - k770**(2 / 3))))) # done if np.any(fract < 0): fract = 0 elif flow_type == 'turbulent': raise ValueError( 'Sorry this loss mechanism has not been implemented for turbulent flow' ) else: raise ValueError('Unknown flow type: %s' % flow_type) if verbose: print('k770: %s' % k770) print('k771: %s' % k771) print('fraction penetrating: %s' % fract) return fract