Source code for pyaerocom.molmasses

VAR_PREFIXES = [
    "vmr",
    "mmr",
    "conc",
    "sconc",
    "wet",
    "dry",
    "concNt",
    "concN",
    "concC",
    "proxydry",
    "proxywet",
    "dep",
]

# in g/mol
MOLMASSES = {
    "air_dry": 28.9647,
    "o3": 48,
    "so2": 64.066,
    "so4": 96.06,
    "no": 30.01,
    "no2": 46.0055,
    "no3": 62.0045,
    "hno3": 63.01,
    "nh3": 17.031,
    "nh4": 18.039,
    "co": 28.010,
    "isop": 68.12,
    "glyoxal": 58.036,
    "glyox": 58.036,
    "hcho": 30.026,
    "co2": 44.0095,
    "ch4": 16.04,
}


[docs] class UnkownSpeciesError(ValueError): pass
[docs] def get_species(var_name): """ Get species name from variable name Parameters ---------- var_name : str pyaerocom variable name (cf. variables.ini) Raises ------ UnkownSpeciesError if species cannot be inferred Returns ------- str name of species """ if var_name in MOLMASSES: return var_name for prefix in VAR_PREFIXES: if var_name.startswith(prefix): species = var_name.split(prefix)[-1] if species in MOLMASSES: return species raise UnkownSpeciesError(f"Could not infer atom / molecule/ species from var_name {var_name}")
[docs] def get_molmass(var_name): """ Get molar mass for input variable Parameters ---------- var_name : str pyaerocom variable name (cf. variables.ini) or name of species Returns ------- float molar mass of species in units of g/mol """ return MOLMASSES[get_species(var_name)]
[docs] def get_mmr_to_vmr_fac(var_name): """ Get conversion factor for MMR -> VMR conversion for input variable Note ---- Assumes dry air molar mass Parameters ---------- var_name : str Name of variable to be converted Returns ------- float multiplication factor to convert MMR -> VMR """ return get_molmass("air_dry") / get_molmass(var_name)