Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
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