Health, Safety, and Flammability Properties (chemicals.safety)

This module contains functions for lookup the following properties for a chemical:

  • Short-term Exposure Limit (STEL)

  • Time-Weighted Average Exposure Limit (TWA)

  • Celing limit for working exposure

  • Whether a chemicals is absorbed thorough human skin

  • Whether a chemical is a carcinogen, suspected of being a carcinogen, or has been identified as unlikely to be a carcinogen

  • Flash point

  • Auto ignition point

  • Lower flammability limit

  • Upper flammability limit

In addition, several estimation methods for chemicals without flammability limits are provided and for calculating the flammability limits of mixtures.

This module also contains several utility functions.

For reporting bugs, adding feature requests, or submitting pull requests, please use the GitHub issue tracker.

Short-term Exposure Limit

chemicals.safety.STEL(CASRN, method=None)[source]

This function handles the retrieval of Short-term Exposure Limit (STEL) on worker exposure to dangerous chemicals.

Parameters
CASRNstr

CASRN, [-]

methodstr

Name of method to use, [-]

Returns
STELfloat

Short-term Exposure Limit, [ppm or mg/m^3]

unitsstr

One of ppm or mg/m^3, [-]

Notes

The ppm value is preferentially returned if both are available. While they can be converted in specific cases, it is better to work with the specified units of the original source.

Examples

>>> STEL('67-64-1')
(750.0, 'ppm')
>>> STEL('7664-38-2')
(0.7489774978301237, 'ppm')
>>> STEL('55720-99-5')
(2.0, 'mg/m^3')
chemicals.safety.STEL_methods(CASRN)[source]

Return all methods available to obtain STEL for the desired chemical.

Parameters
CASRNstr

CASRN, [-]

Returns
methodslist[str]

Methods which can be used to obtain STEL with the given inputs.

See also

STEL
chemicals.safety.STEL_all_methods = ('Ontario Limits',)

Tuple of method name keys. See the STEL for the actual references

Time-Weighted Average Exposure Limit

chemicals.safety.TWA(CASRN, method=None)[source]

Return the Time-Weighted Average exposure limits (TWA) for the desired chemical if it is available.

Parameters
CASRNstr

CASRN, [-]

methodstr

Name of method to use, [-]

Returns
TWAfloat

Time-Weighted Average exposure, [ppm or mg/m^3]

unitsstr

One of ppm or mg/m^3, [-]

Notes

The ppm value is preferentially returned if both are available. While they can be converted in specific cases, it is better to work with the specified units of the original source.

Examples

>>> TWA('98-00-0')
(10.0, 'ppm')
>>> TWA('1303-00-0')
(5.0742430905659505e-05, 'ppm')
chemicals.safety.TWA_methods(CASRN)[source]

Return all methods available to obtain the Time-Weighted Average exposure limits (TWA) for the desired chemical.

Parameters
CASRNstr

CASRN, [-]

Returns
methodslist[str]

Methods which can be used to obtain TWA with the given inputs.

See also

TWA

Examples

>>> TWA_methods('71-43-2')
['Ontario Limits']
chemicals.safety.TWA_all_methods = ('Ontario Limits',)

Tuple of method name keys. See the TWA for the actual references

Ceiling Limit

chemicals.safety.Ceiling(CASRN, method=None)[source]

This function handles the retrieval of ceiling limits on worker exposure to dangerous chemicals. Ceiling limits are not to be exceeded at any time.

Parameters
CASRNstr

CASRN, [-]

methodstr

Name of method to use, [-]

Returns
Ceilingfloat

Ceiling Limit, [ppm or mg/m^3]

unitsstr

One of ppm or mg/m^3, [-]

Examples

>>> Ceiling('75-07-0')
(25.0, 'ppm')
>>> Ceiling('1395-21-7')
(6e-05, 'mg/m^3')
chemicals.safety.Ceiling_methods(CASRN)[source]

Return all methods available to obtain Ceiling limits for the desired chemical.

Parameters
CASRNstr

CASRN, [-]

Returns
methodslist[str]

Methods which can be used to obtain Ceiling limits with the given inputs.

See also

Ceiling
chemicals.safety.Ceiling_all_methods = ('Ontario Limits',)

Tuple of method name keys. See the Ceiling for the actual references

Skin Absorbance

chemicals.safety.Skin(CASRN, method=None)[source]

This function handles the retrieval of whether or not a chemical can be absorbed through the skin, relevant to chemical safety calculations.

Parameters
CASRNstr

CASRN, [-]

methodstr

Name of method to use, [-]

Returns
skinbool

Whether or not the substance is absorbed through human skin, [-]

Examples

>>> Skin('108-94-1')
True
>>> Skin('1395-21-7')
False
chemicals.safety.Skin_methods(CASRN)[source]

Return all methods available to obtain whether or not a chemical can be absorbed through the skin.

Parameters
CASRNstr

CASRN, [-]

Returns
methodslist[str]

Methods which can be used to obtain whether or not a chemical can be absorbed through the skin.

See also

Skin
chemicals.safety.Skin_all_methods = ('Ontario Limits',)

Tuple of method name keys. See the Skin for the actual references

Carcinogenicity

chemicals.safety.Carcinogen(CASRN, method=None)[source]

Looks up if a chemical is listed as a carcinogen or not according to either a specifc method or with all methods. Returns either the status as a string for a specified method, or the status of the chemical in all available data sources, in the format {source: status}.

Parameters
CASRNstr

CASRN [-]

Returns
statusstr or dict

Carcinogen status information [-].

Other Parameters
methodstr, optional

A string for the method name to use, as defined in the variable, Carcinogen_all_methods.

Notes

Supported methods are:
  • IARC: International Agency for Research on Cancer, [1]. As extracted with a last update of February 22, 2016. Has listing information of 863 chemicals with CAS numbers. Chemicals without CAS numbers not included here. If two listings for the same CAS were available, the harshest rating was used. If two listings were available published at different times, the latest value was used. All else equal, the most pessimistic value was used.

  • NTP: National Toxicology Program, [2]. Has data on 228 chemicals.

References

1

International Agency for Research on Cancer. Agents Classified by the IARC Monographs, Volumes 1-115. Lyon, France: IARC; 2020 Available from: http://monographs.iarc.fr/ENG/Classification/

2

NTP (National Toxicology Program). 2021. Report on Carcinogens, Fifteenth Edition.; Research Triangle Park, NC: U.S. Department of Health and Human Services, Public Health Service. https://doi.org/10.22427/NTP-OTHER-1003

Examples

>>> Carcinogen('61-82-5')
{'International Agency for Research on Cancer': 'Not classifiable as to its carcinogenicity to humans (3)', 'National Toxicology Program 13th Report on Carcinogens': 'Reasonably Anticipated'}
chemicals.safety.Carcinogen_methods(CASRN)[source]

Return all methods available to obtain Carcinogen listings for the desired chemical.

Parameters
CASRNstr

CASRN, [-]

Returns
methodslist[str]

Methods which can be used to obtain Carcinogen listings with the given inputs.

See also

Carcinogen
chemicals.safety.Carcinogen_all_methods = ('International Agency for Research on Cancer', 'National Toxicology Program 13th Report on Carcinogens')

Tuple of method name keys. See the Carcinogen for the actual references

Flash Point

chemicals.safety.T_flash(CASRN, method=None)[source]

This function handles the retrieval or calculation of a chemical’s flash point. Lookup is based on CASRNs. No predictive methods are currently implemented. Will automatically select a data source to use if no method is provided; returns None if the data is not available.

Parameters
CASRNstr

CASRN [-]

Returns
T_flashfloat

Flash point of the chemical, [K]

Other Parameters
methodstr, optional

A string for the method name to use, as defined in the variable, T_flash_all_methods,

See also

T_flash_methods

Notes

Preferred source is ‘IEC 60079-20-1 (2010)’ [1], with the secondary source ‘NFPA 497 (2008)’ [2] having very similar data. A third source ‘Serat DIPPR (2017)’ [3] provides third hand experimental but evaluated data from the DIPPR database, version unspecified, for 870 compounds.

The predicted values from the DIPPR databank are also available in the supporting material in [3], but are not included.

References

1

IEC. “IEC 60079-20-1:2010 Explosive atmospheres - Part 20-1: Material characteristics for gas and vapour classification - Test methods and data.” https://webstore.iec.ch/publication/635. See also https://law.resource.org/pub/in/bis/S05/is.iec.60079.20.1.2010.pdf

2

National Fire Protection Association. NFPA 497: Recommended Practice for the Classification of Flammable Liquids, Gases, or Vapors and of Hazardous. NFPA, 2008.

3(1,2)

Serat, Fatima Zohra, Ali Mustapha Benkouider, Ahmed Yahiaoui, and Farid Bagui. “Nonlinear Group Contribution Model for the Prediction of Flash Points Using Normal Boiling Points.” Fluid Phase Equilibria 449 (October 15, 2017): 52-59. doi:10.1016/j.fluid.2017.06.008.

4

Wikidata. Wikidata. Accessed via API. https://www.wikidata.org/

Examples

>>> T_flash(CASRN='64-17-5')
285.15
>>> T_flash('111-69-3', method='WIKIDATA')
365.92778
chemicals.safety.T_flash_methods(CASRN)[source]

Return all methods available to obtain T_flash for the desired chemical.

Parameters
CASRNstr

CASRN, [-]

Returns
methodslist[str]

Methods which can be used to obtain T_flash with the given inputs.

See also

T_flash
chemicals.safety.T_flash_all_methods = ('IEC 60079-20-1 (2010)', 'NFPA 497 (2008)', 'Serat DIPPR (2017)', 'WIKIDATA')

Tuple of method name keys. See the T_flash for the actual references

Autoignition Point

chemicals.safety.T_autoignition(CASRN, method=None)[source]

This function handles the retrieval or calculation of a chemical’s autoifnition temperature. Lookup is based on CASRNs. No predictive methods are currently implemented. Will automatically select a data source to use if no Method is provided; returns None if the data is not available.

Parameters
CASRNstr

CASRN [-]

Returns
Tautoignitionfloat

Autoignition point of the chemical, [K].

Other Parameters
methodstr, optional

A string for the method name to use, as defined in the variable, T_autoignition_all_methods.

Notes

Preferred source is ‘IEC 60079-20-1 (2010)’ [1], with the secondary source ‘NFPA 497 (2008)’ [2] having very similar data.

References

1

IEC. “IEC 60079-20-1:2010 Explosive atmospheres - Part 20-1: Material characteristics for gas and vapour classification - Test methods and data.” https://webstore.iec.ch/publication/635. See also https://law.resource.org/pub/in/bis/S05/is.iec.60079.20.1.2010.pdf

2

National Fire Protection Association. NFPA 497: Recommended Practice for the Classification of Flammable Liquids, Gases, or Vapors and of Hazardous. NFPA, 2008.

3

Wikidata. Wikidata. Accessed via API. https://www.wikidata.org/

Examples

>>> T_autoignition(CASRN='71-43-2')
771.15
>>> T_autoignition('111-69-3', method='WIKIDATA')
823.15
chemicals.safety.T_autoignition_methods(CASRN)[source]

Return all methods available to obtain T_autoignition for the desired chemical.

Parameters
CASRNstr

CASRN, [-]

Returns
methodslist[str]

Methods which can be used to obtain T_autoignition with the given inputs.

See also

T_autoignition
chemicals.safety.T_autoignition_all_methods = ('IEC 60079-20-1 (2010)', 'NFPA 497 (2008)', 'WIKIDATA')

Tuple of method name keys. See the T_autoignition for the actual references

Lower Flammability Limit

chemicals.safety.LFL(Hc=None, atoms=None, CASRN='', method=None)[source]

This function handles the retrieval or calculation of a chemical’s Lower Flammability Limit. Lookup is based on CASRNs. Will automatically select a data source to use if no Method is provided; returns None if the data is not available.

Parameters
Hcfloat, optional

Heat of combustion of gas [J/mol].

atomsdict, optional

Dictionary of atoms and atom counts.

CASRNstr, optional

CASRN, [-]

Returns
LFLfloat

Lower flammability limit of the gas in an atmosphere at STP, [mole fraction].

Other Parameters
methodstr, optional

A string for the method name to use, as defined in the variable, LFL_all_methods.

Notes

Preferred source is ‘IEC 60079-20-1 (2010)’ [1], with the secondary source ‘NFPA 497 (2008)’ [2] having very similar data. If the heat of combustion is provided, the estimation method Suzuki_LFL can be used. If the atoms of the molecule are available, the method Crowl_Louvar_LFL can be used.

References

1

IEC. “IEC 60079-20-1:2010 Explosive atmospheres - Part 20-1: Material characteristics for gas and vapour classification - Test methods and data.” https://webstore.iec.ch/publication/635. See also https://law.resource.org/pub/in/bis/S05/is.iec.60079.20.1.2010.pdf

2

National Fire Protection Association. NFPA 497: Recommended Practice for the Classification of Flammable Liquids, Gases, or Vapors and of Hazardous. NFPA, 2008.

3

Wikidata. Wikidata. Accessed via API. https://www.wikidata.org/

Examples

>>> LFL(CASRN='71-43-2')
0.012
>>> LFL(Hc=-890590.0, atoms={'C': 1, 'H': 4}, CASRN='74-82-8')
0.044
>>> LFL(CASRN='111-69-3', method='WIKIDATA')
0.017
chemicals.safety.LFL_methods(Hc=None, atoms=None, CASRN='')[source]

Return all methods available to obtain LFL for the desired chemical.

Parameters
Hcfloat, optional

Heat of combustion of gas [J/mol].

atomsdict, optional

Dictionary of atoms and atom counts.

CASRNstr, optional

CASRN, [-]

Returns
methodslist[str]

Methods which can be used to obtain LFL with the given inputs.

See also

LFL

Examples

Methane

>>> LFL_methods(Hc=-890590.0, atoms={'C': 1, 'H': 4}, CASRN='74-82-8')
['IEC 60079-20-1 (2010)', 'NFPA 497 (2008)', 'Suzuki (1994)', 'Crowl and Louvar (2001)']
chemicals.safety.LFL_all_methods = ('IEC 60079-20-1 (2010)', 'NFPA 497 (2008)', 'WIKIDATA', 'Suzuki (1994)', 'Crowl and Louvar (2001)')

Tuple of method name keys. See the LFL for the actual references

chemicals.safety.Suzuki_LFL(Hc)[source]

Calculates lower flammability limit, using the Suzuki [1] correlation. Uses heat of combustion only.

The lower flammability limit of a gas is air is:

LFL=3.42ΔHc+0.569\text{LFL} = \frac{-3.42}{\Delta H_c^{\circ}} + 0.569
ΔHc+0.0538ΔHc2+1.80\Delta H_c^{\circ} + 0.0538\Delta H_c^{\circ 2} + 1.80
Parameters
Hcfloat

Heat of combustion of gas [J/mol]

Returns
LFLfloat

Lower flammability limit, mole fraction [-]

Notes

Fit performed with 112 compounds, r^2 was 0.977. LFL in percent volume in air. Hc is at standard conditions, in MJ/mol. 11 compounds left out as they were outliers. Equation does not apply for molecules with halogen atoms, only hydrocarbons with oxygen or nitrogen or sulfur. No sample calculation provided with the article. However, the equation is straightforward. Limits of equations’s validity are -6135596 J where it predicts a LFL of 0, and -48322129 J where it predicts a LFL of 1.

References

1

Suzuki, Takahiro. “Note: Empirical Relationship between Lower Flammability Limits and Standard Enthalpies of Combustion of Organic Compounds.” Fire and Materials 18, no. 5 (September 1, 1994): 333-36. doi:10.1002/fam.810180509.

Examples

Pentane, 1.5 % LFL in literature

>>> Suzuki_LFL(-3536600)
0.014276107095811815
chemicals.safety.Crowl_Louvar_LFL(atoms)[source]

Calculates lower flammability limit, using the Crowl-Louvar [1] correlation. Uses molecular formula only. The lower flammability limit of a gas is air is:

CmHxOy+zO2mCO2+x2H2OC_mH_xO_y + zO_2 \to mCO_2 + \frac{x}{2}H_2O
LFL=0.554.76m+1.19x2.38y+1\text{LFL} = \frac{0.55}{4.76m + 1.19x - 2.38y + 1}
Parameters
atomsdict

Dictionary of atoms and atom counts

Returns
LFLfloat

Lower flammability limit, mole fraction

Notes

Coefficient of 0.55 taken from [2]

References

1(1,2)

Crowl, Daniel A., and Joseph F. Louvar. Chemical Process Safety: Fundamentals with Applications. 2E. Upper Saddle River, N.J: Prentice Hall, 2001.

2

Jones, G. W. “Inflammation Limits and Their Practical Application in Hazardous Industrial Operations.” Chemical Reviews 22, no. 1 (February 1, 1938): 1-26. doi:10.1021/cr60071a001

Examples

Hexane, example from [1], lit. 1.2 %

>>> Crowl_Louvar_LFL({'H': 14, 'C': 6})
0.011899610558199915
chemicals.safety.LFL_ISO_10156_2017(zs, LFLs, CASs)[source]

Calculate the lower flammability limit of a mixture of combustible gases and inert gases according to ISO 10156 (2017) [1].

LFL=1i=1ncombustibleAiLFLi\text{LFL} = \frac{1}{\sum_{i=1}^{n_{combustible}}\frac{A_i}{\text{LFL}_i'}}
LFLi=1LFLm(1K)jninertBjjncombustibleAjLFLm100LFLmLFLi\text{LFL}_i' = \frac{1 - \text{LFL}_m' - (1 - K) \frac{\sum_j^{n_{inert}} B_j}{\sum_j^{n_{combustible}} A_j} \text{LFL}_m' } {100 - \text{LFL}_m'}\text{LFL}_i
K=ininertziKkK = \sum_i^{n_{inert}} z_i K_k

The B sum is the total mole fraction of all inert gas compounds; and the A sum is the total mole fraction of all combustible compounds. KkK_k are the looked up inert gas coefficients. LFLm\text{LFL}_m' is calculated as the Le Chatelier’s lower flammability limit if there were no inert gases in the mixture.

Parameters
zslist[float]

Mole fractions of all components in a gas including inerts, [-]

LFLslist[float]

Lower or upper flammability limits for each flammable component in a gas, [-]

CASslist[str]

CAS numbers of each compound; required to look up inert gas factors, [-]

Returns
LFLfloat

Lower or flammability limit of a gas mixture, [-]

Notes

Inert gas parameters are available for O2, N2, CO2, He, Ar, Ne, Kr, Xe, SO2, SF6, CF4, C3F8, and C2HF5.

References

1(1,2)

Standardization, International Organization for. ISO 10156: 2017 : Gas Cylinders - Gases and Gas Mixtures - Determination of Fire Potential and Oxidizing Ability for the Selection of Cylinder Valve Outlets, 2017.

Examples

All the sample problems from [1] have been implemented as tests.

>>> zs = [.15, .15, .3, .35+.05*.79, .05*.21]
>>> LFLs = [.04, .044, None, None, None]
>>> CASs = ['1333-74-0', '74-82-8', '124-38-9', '7727-37-9', '7782-44-7']
>>> LFL_ISO_10156_2017(zs, LFLs, CASs)
0.1427372274

Upper Flammability Limit

chemicals.safety.UFL(Hc=None, atoms=None, CASRN='', method=None)[source]

This function handles the retrieval or calculation of a chemical’s Upper Flammability Limit. Lookup is based on CASRNs. Two predictive methods are currently implemented. Will automatically select a data source to use if no Method is provided; returns None if the data is not available.

Parameters
Hcfloat, optional

Heat of combustion of gas [J/mol]

atomsdict, optional

Dictionary of atoms and atom counts

CASRNstr, optional

CASRN [-]

Returns
UFLfloat

Upper flammability limit of the gas in an atmosphere at STP, [mole fraction]

Other Parameters
methodstr, optional

A string for the method name to use, as defined in the variable, UFL_all_methods.

Notes

Preferred source is ‘IEC 60079-20-1 (2010)’ [1], with the secondary source ‘NFPA 497 (2008)’ [2] having very similar data. If the heat of combustion is provided, the estimation method Suzuki_UFL can be used. If the atoms of the molecule are available, the method Crowl_Louvar_UFL can be used.

References

1

IEC. “IEC 60079-20-1:2010 Explosive atmospheres - Part 20-1: Material characteristics for gas and vapour classification - Test methods and data.” https://webstore.iec.ch/publication/635. See also https://law.resource.org/pub/in/bis/S05/is.iec.60079.20.1.2010.pdf

2

National Fire Protection Association. NFPA 497: Recommended Practice for the Classification of Flammable Liquids, Gases, or Vapors and of Hazardous. NFPA, 2008.

3

Wikidata. Wikidata. Accessed via API. https://www.wikidata.org/

Examples

>>> UFL(CASRN='71-43-2')
0.086

Methane

>>> UFL(Hc=-890590.0, atoms={'C': 1, 'H': 4}, CASRN='74-82-8')
0.17
>>> UFL(CASRN='111-69-3', method='WIKIDATA')
0.05
chemicals.safety.UFL_methods(Hc=None, atoms=None, CASRN='')[source]

Return all methods available to obtain UFL for the desired chemical.

Parameters
Hcfloat, optional

Heat of combustion of gas [J/mol].

atomsdict, optional

Dictionary of atoms and atom counts.

CASRNstr, optional

CASRN, [-]

Returns
methodslist[str]

Methods which can be used to obtain UFL with the given inputs.

See also

UFL

Examples

Methane

>>> UFL_methods(Hc=-890590.0, atoms={'C': 1, 'H': 4}, CASRN='74-82-8')
['IEC 60079-20-1 (2010)', 'NFPA 497 (2008)', 'Suzuki (1994)', 'Crowl and Louvar (2001)']
chemicals.safety.UFL_all_methods = ('IEC 60079-20-1 (2010)', 'NFPA 497 (2008)', 'WIKIDATA', 'Suzuki (1994)', 'Crowl and Louvar (2001)')

Tuple of method name keys. See the UFL for the actual references

chemicals.safety.Suzuki_UFL(Hc)[source]

Calculates upper flammability limit, using the Suzuki [1] correlation. Uses heat of combustion only. The upper flammability limit of a gas is air is:

UFL=6.3ΔHc+0.567ΔHc2+23.5\text{UFL} = 6.3\Delta H_c^\circ + 0.567\Delta H_c^{\circ 2} + 23.5
Parameters
Hcfloat

Heat of combustion of gas [J/mol]

Returns
UFLfloat

Upper flammability limit, mole fraction

Notes

UFL in percent volume in air according to original equation. Hc is at standard conditions in the equation, in units of MJ/mol. AAPD = 1.2% for 95 compounds used in fit. Somewhat better results than the High and Danner method. 4.9% < UFL < 23.0% -890.3 kJ/mol < dHc < -6380 kJ/mol r^2 = 0.989 Sample calculations provided for all chemicals, both this method and High and Danner. Examples are from the article. Predicts a UFL of 1 at 7320190 J and a UFL of 0 at -5554160 J.

References

1

Suzuki, Takahiro, and Kozo Koide. “Short Communication: Correlation between Upper Flammability Limits and Thermochemical Properties of Organic Compounds.” Fire and Materials 18, no. 6 (November 1, 1994): 393-97. doi:10.1002/fam.810180608.

Examples

Pentane, literature 7.8% UFL

>>> Suzuki_UFL(-3536600)
0.0831119493052
chemicals.safety.Crowl_Louvar_UFL(atoms)[source]

Calculates upper flammability limit, using the Crowl-Louvar [1] correlation. Uses molecular formula only. The upper flammability limit of a gas is air is:

CmHxOy+zO2mCO2+x2H2OC_mH_xO_y + zO_2 \to mCO_2 + \frac{x}{2}H_2O
UFL=3.54.76m+1.19x2.38y+1\text{UFL} = \frac{3.5}{4.76m + 1.19x - 2.38y + 1}
Parameters
atomsdict

Dictionary of atoms and atom counts

Returns
UFLfloat

Upper flammability limit, mole fraction

Notes

Coefficient of 3.5 taken from [2]

References

1(1,2)

Crowl, Daniel A., and Joseph F. Louvar. Chemical Process Safety: Fundamentals with Applications. 2E. Upper Saddle River, N.J: Prentice Hall, 2001.

2

Jones, G. W. “Inflammation Limits and Their Practical Application in Hazardous Industrial Operations.” Chemical Reviews 22, no. 1 (February 1, 1938): 1-26. doi:10.1021/cr60071a001

Examples

Hexane, example from [1], lit. 7.5 %

>>> Crowl_Louvar_UFL({'H': 14, 'C': 6})
0.07572479446127219

Mixture Flammability Limit

chemicals.safety.fire_mixing(ys, FLs)[source]

Le Chatelier’s mixing rule for lower and upper flammability limits of mixtures of gases.

Parameters
yslist[float]

Normalized mole fractions of all flammable components in a gas, [-]

FLslist[float]

Lower or upper flammability limits for each flammable component in a gas, [-]

Returns
FLfloat

Lower or upper flammability limit of a gas, [-]

Notes

This equation has a higher accuracy for lower flammability limits than upper flammability limits. Some sources recommend not using it for upper flammability limits.

References

1

Crowl, Daniel A., and Joseph F. Louvar. Chemical Process Safety: Fundamentals with Applications. 2E. Upper Saddle River, N.J: Prentice Hall, 2001.

Examples

Sample problems from [1] for the lower and upper flammability limit.

>>> fire_mixing(ys=normalize([0.0024, 0.0061, 0.0015]), FLs=[.012, .053, .031])
0.02751172136637642
>>> fire_mixing(ys=normalize([0.0024, 0.0061, 0.0015]), FLs=[.075, .15, .32])
0.12927551844869378

Utility Methods

chemicals.safety.ppmv_to_mgm3(ppmv, MW, T=298.15, P=101325.0)[source]

Converts a concentration in ppmv to units of mg/m^3. Used in industrial toxicology.

mgm3=ppmvPRTMW1000\frac{mg}{m^3} = \frac{ppmv\cdot P}{RT}\cdot \frac{MW}{1000}
Parameters
ppmvfloat

Concentration of a component in a gas mixure [parts per million, volumetric]

MWfloat

Molecular weight of the trace gas [g/mol]

Tfloat, optional

Temperature of the gas at which the ppmv is reported, [K]

Pfloat, optional

Pressure of the gas at which the ppmv is reported, [Pa]

Returns
mgm3float

Concentration of a substance in an ideal gas mixture [mg/m^3]

Notes

The term P/(RT)/1000 converts to 0.040874 at STP. Its inverse is reported as 24.45 in [1].

References

1

ACGIH. Industrial Ventilation: A Manual of Recommended Practice, 23rd Edition. American Conference of Governmental and Industrial Hygenists, 2004.

Examples

>>> ppmv_to_mgm3(1.0, 40.0)
1.6349617809430446
chemicals.safety.mgm3_to_ppmv(mgm3, MW, T=298.15, P=101325.0)[source]

Converts a concentration in mg/m^3 to units of ppmv. Used in industrial toxicology.

ppmv=1000RTMWPmgm3ppmv = \frac{1000RT}{MW\cdot P} \cdot \frac{mg}{m^3}
Parameters
mgm3float

Concentration of a substance in an ideal gas mixture [mg/m^3]

MWfloat

Molecular weight of the trace gas [g/mol]

Tfloat, optional

Temperature of the gas at which the ppmv is reported, [K]

Pfloat, optional

Pressure of the gas at which the ppmv is reported, [Pa]

Returns
ppmvfloat

Concentration of a component in a gas mixure [parts per million, volumetric]

Notes

The term P/(RT)/1000 converts to 0.040874 at STP. Its inverse is reported as 24.45 in [1].

References

1

ACGIH. Industrial Ventilation: A Manual of Recommended Practice, 23rd Edition. American Conference of Governmental and Industrial Hygenists, 2004.

Examples

>>> mgm3_to_ppmv(1.635, 40.0)
1.0000233761164334
chemicals.safety.NFPA_30_classification(T_flash, Tb=None, Psat_100F=None)[source]

Classify a chemical’s flammability/combustibility according to the NFPA 30 standard Flammable and Combustible Liquids Code.

Class IA: Flash Point < 73°F; Boiling Point < 100°F Class IB: Flash Point < 73°F; 100°F <= Boiling Point Class IC: 73°F <= Flash Point < 100°F Class II: 100°F <= Flash Point < 140°F Class IIIA: 140°F <= Flash Point < 200°F Class IIIB: 200°F <= Flash Point

Class I liquids are designated as flammable; class II and II liquids are designated as combustible.

Parameters
T_flashfloat

Flash point (closed-cup method, adjusted for sea level), [K]

Tbfloat, optional

Normal boiling point (needed to classify IA and IB liquids), [K]

Psat_100Ffloat, optional

Vapor pressure at 100°F (needed to classify IA and IB liquids), [K]

Returns
classificationstr

One of ‘IA’, ‘IB’, ‘IC’, ‘II’, ‘IIIA’, ‘IIIB’, [-]

Notes

Only one of Tb or Psat_100F is needed.

Class ‘IA’ also includes unstable liquids.

References

1

NFPA (National Fire Prevention Association). NFPA 30: Flammable and Combustible Liquids Code, 2008. National Fire Protection Association (NFPA), 2007.

Examples

Ethylene oxide

>>> NFPA_30_classification(253.15, 283.55)
'IA'

Butyl alcohol

>>> NFPA_30_classification(308.15)
'IC'