Skip to content

air_density

Functions:

  • compute_air_density

    Computes air density, following the approach of "Revised formula for the density of moist air (CIPM-2007)" by A Picard, R S Davis, M Glaser and K Fujii

compute_air_density

compute_air_density(
    temperature=20,
    pressure=101325,
    relative_humidity=0,
    dew_temperature=None,
)

Computes air density, following the approach of "Revised formula for the density of moist air (CIPM-2007)" by A Picard, R S Davis, M Glaser and K Fujii

Source code in reskit/util/air_density.py
def compute_air_density(temperature=20, pressure=101325, relative_humidity=0, dew_temperature=None):
    """Computes air density, following the approach of "Revised formula for the density of moist air (CIPM-2007)" by A Picard, R S Davis, M Glaser and K Fujii"""
    if relative_humidity is None and dew_temperature is None:
        relative_humidity = 0

    t = temperature
    T = 273.15 + t
    p = pressure

    A = 1.2378847e-5
    B = -1.9121316e-2
    C = 33.93711047
    D = -6.3431645e3

    a_ = 1.00062
    b_ = 3.14e-8
    y_ = 5.6e-7

    if not dew_temperature is None:
        Td = dew_temperature + 273.15
        psv = np.exp(A * np.power(Td, 2) + B * Td + C + D / Td)
        f = a_ + b_ * p + y_ * np.power(dew_temperature, 2)
        xv = f * psv / p
    else:
        psv = np.exp(A * np.power(T, 2) + B * T + C + D / T)
        f = a_ + b_ * p + y_ * np.power(t, 2)
        xv = relative_humidity * f * psv / p

    a0 = 1.58123e-6
    a1 = -2.9331e-8
    a2 = 1.1043e-10
    b0 = 5.707e-6
    b1 = -2.051e-8
    c0 = 1.9898e-4
    c1 = -2.376e-6
    d = 1.83e-11
    e = -0.765e-8

    Z = (
        1
        - (p / T) * (a0 - a1 * t + a2 * np.power(t, 2) + (b0 + b1 * t) * xv + (c0 + c1 * t) * np.power(xv, 2))
        + np.power(p / T, 2) * (d + e * np.power(xv, 2))
    )

    Ma = 28.96546e-3
    Mv = 18.01528e-3
    R = 8.314472

    airden = p * Ma / (Z * R * T) * (1 - xv * (1 - (Mv / Ma)))

    return airden