Function Repository Resource:

JobackEstimate

Source Notebook

Estimate physical properties of chemicals using Joback fragmentation

Contributed by: Jan Mangaldan

ResourceFunction["JobackEstimate"][molecule,property]

gives an estimate of the specified property for the given molecule using Joback fragmentation.

Details

Joback fragmentation is also known as the Joback–Reid method.
Joback fragmentation is a group contribution method that estimates the physical properties of a substance by fragmenting its molecular structure into its functional groups and suitably combining parameters based on the generated fragments.
molecule should be a connected Molecule or a "Chemical" entity representing one.
Supported properties include the following:
"CriticalPressure"critical pressure (bar)
"CriticalTemperature"critical temperature (K)
"CriticalVolume"critical volume (mL/mol)
"EnthalpyOfFormation"enthalpy of formation (kJ/mol)
"EnthalpyOfFusion"enthalpy of fusion (kJ/mol)
"EnthalpyOfVaporization"enthalpy of vaporization (kJ/mol)
"GibbsEnergyOfFormation"Gibbs energy of formation (kJ/mol)
{"IdealGasHeatCapacity",t}ideal gas heat capacity at temperature t (J/(mol·K))
{"LiquidViscosity",t}liquid viscosity at temperature t (Pa·s)
"NormalBoilingPoint"normal boiling point (K)
"NormalFreezingPoint"normal freezing point (K)
For the properties "IdealGasHeatCapacity" and "LiquidViscosity", the temperature must be a valid temperature Quantity.
ResourceFunction["JobackEstimate"][molecule,{property1,property2,}] returns an association with keys corresponding to the propertyi.

Examples

Basic Examples (2) 

Estimate the boiling point of acetone:

In[1]:=
ResourceFunction["JobackEstimate"][
 Entity["Chemical", "Acetone"], "NormalBoilingPoint"]
Out[1]=

Compare with the known boiling point:

In[2]:=
UnitConvert[
 Entity["Chemical", "Acetone"][
  EntityProperty["Chemical", "BoilingPoint"]], "Kelvins"]
Out[2]=

Scope (2) 

A molecule:

In[3]:=
mol = Molecule["O=[N+]([O-])N=C1NCCN1Cc1ccc(Cl)nc1"]
Out[3]=

Estimate a single property:

In[4]:=
ResourceFunction["JobackEstimate"][mol, "EnthalpyOfFormation"]
Out[4]=

Estimate multiple properties:

In[5]:=
ResourceFunction[
 "JobackEstimate"][mol, {"CriticalPressure", "CriticalTemperature"}]
Out[5]=

A molecule:

In[6]:=
mol = Molecule["CC(C)c1ccc(cc1)CC(C)C=O"]
Out[6]=

Plot its ideal gas heat capacity and liquid viscosity over a given temperature range:

In[7]:=
{Plot[ResourceFunction["JobackEstimate"][
    mol, {"IdealGasHeatCapacity", Quantity[T, "Kelvins"]}], {T, 273., 1000.}, {AxesLabel -> {"T", 
Subsuperscript["C", "p", 0]}, PlotLabel -> "IdealGasHeatCapacity"}], Plot[ResourceFunction["JobackEstimate"][
    mol, {"LiquidViscosity", Quantity[T, "Kelvins"]}], {T, 287.3, 550.3}, {AxesLabel -> {"T", 
Subscript["\[Eta]", "L"]}, PlotLabel -> "LiquidViscosity"}]} // GraphicsRow
Out[7]=

Possible Issues (1) 

Molecules that contain functional groups not supported by the Joback method will return Missing:

In[8]:=
ResourceFunction["JobackEstimate"][
 Molecule["triethyl phosphate"], "NormalFreezingPoint"]
Out[8]=

Requirements

Wolfram Language 12.3 (May 2021) or above

Version History

  • 1.0.1 – 01 February 2024
  • 1.0.0 – 08 December 2023

Source Metadata

Related Resources

License Information