You are on page 1of 555

thermo Documentation

Release 0.1

Caleb Bell

May 06, 2018


Contents

1 thermo 3
1.1 thermo package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 Submodules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1.1 thermo.acentric module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1.1.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1.1.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1.1.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1.1.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1.1.1.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.1.1.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.1.1.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.1.1.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.1.1.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.1.1.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.1.1.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.1.1.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.1.2 thermo.activity module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.1.2.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.1.2.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.1.2.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1.1.2.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1.1.2.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1.1.2.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1.1.2.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.1.2.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.1.2.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.1.1.2.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.1.2.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.1.2.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.1.2.13 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.1.1.2.14 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.1.1.2.15 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.1.1.2.16 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1.1.2.17 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1.1.2.18 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1.1.2.19 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

i
1.1.1.2.20 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.1.1.2.21 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.1.1.2.22 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.1.1.2.23 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.1.1.2.24 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.1.1.2.25 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.1.1.3 thermo.chemical module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.1.1.3.1 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.1.1.3.2 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
1.1.1.3.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.1.1.3.4 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.1.1.3.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.1.1.3.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.1.1.3.7 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.1.1.3.8 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.1.1.3.9 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
1.1.1.3.10 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.1.1.3.11 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.1.1.3.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.1.1.3.13 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.1.1.3.14 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.1.1.3.15 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.1.1.3.16 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.1.1.3.17 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.1.1.3.18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.1.1.3.19 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.1.1.3.20 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.1.1.3.21 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.1.1.3.22 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.1.1.3.23 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.1.1.3.24 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.1.1.3.25 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.1.1.3.26 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.1.1.3.27 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.1.1.3.28 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.1.1.3.29 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.1.1.3.30 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.1.1.3.31 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.1.1.3.32 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.1.1.3.33 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.1.1.3.34 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.1.1.3.35 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.1.1.3.36 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.1.1.3.37 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.1.1.3.38 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.1.1.3.39 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.1.1.3.40 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.1.1.3.41 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.1.1.3.42 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
1.1.1.3.43 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
1.1.1.3.44 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
1.1.1.3.45 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
1.1.1.3.46 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.1.1.3.47 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

ii
1.1.1.3.48 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.1.1.3.49 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.1.1.3.50 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.1.1.3.51 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.1.1.3.52 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.1.1.3.53 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.1.1.3.54 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.1.1.3.55 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.1.1.3.56 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.1.1.3.57 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.1.1.3.58 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.1.1.3.59 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.1.1.3.60 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.1.1.3.61 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.1.1.3.62 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.1.1.3.63 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.1.1.3.64 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.1.1.3.65 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.1.1.3.66 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.1.1.3.67 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.1.1.3.68 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.1.1.3.69 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.1.1.3.70 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.1.1.3.71 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.1.1.3.72 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.1.1.3.73 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
1.1.1.3.74 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
1.1.1.3.75 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
1.1.1.3.76 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
1.1.1.3.77 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
1.1.1.3.78 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
1.1.1.3.79 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
1.1.1.3.80 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
1.1.1.3.81 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
1.1.1.3.82 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
1.1.1.3.83 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
1.1.1.3.84 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
1.1.1.3.85 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
1.1.1.3.86 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
1.1.1.4 thermo.combustion module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
1.1.1.4.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
1.1.1.4.2 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
1.1.1.5 thermo.critical module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
1.1.1.5.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1.1.1.5.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1.1.1.5.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
1.1.1.5.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
1.1.1.5.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
1.1.1.5.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
1.1.1.5.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
1.1.1.5.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
1.1.1.5.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
1.1.1.5.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
1.1.1.5.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

iii
1.1.1.5.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
1.1.1.5.13 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
1.1.1.5.14 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
1.1.1.5.15 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
1.1.1.5.16 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
1.1.1.5.17 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
1.1.1.5.18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
1.1.1.5.19 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
1.1.1.5.20 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
1.1.1.5.21 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
1.1.1.5.22 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
1.1.1.5.23 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
1.1.1.5.24 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
1.1.1.5.25 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
1.1.1.5.26 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
1.1.1.5.27 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
1.1.1.5.28 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
1.1.1.5.29 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
1.1.1.5.30 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
1.1.1.5.31 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
1.1.1.5.32 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
1.1.1.5.33 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
1.1.1.5.34 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
1.1.1.5.35 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
1.1.1.5.36 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
1.1.1.5.37 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
1.1.1.5.38 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
1.1.1.5.39 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
1.1.1.5.40 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
1.1.1.5.41 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
1.1.1.5.42 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
1.1.1.5.43 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
1.1.1.5.44 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
1.1.1.5.45 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
1.1.1.6 thermo.datasheet module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
1.1.1.7 thermo.dipole module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
1.1.1.7.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
1.1.1.7.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
1.1.1.7.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
1.1.1.8 thermo.dippr module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
1.1.1.8.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
1.1.1.8.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
1.1.1.8.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
1.1.1.8.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
1.1.1.8.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
1.1.1.8.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
1.1.1.8.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
1.1.1.8.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
1.1.1.8.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
1.1.1.8.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
1.1.1.8.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
1.1.1.8.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
1.1.1.8.13 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
1.1.1.8.14 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

iv
1.1.1.8.15 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
1.1.1.8.16 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
1.1.1.8.17 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
1.1.1.8.18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
1.1.1.8.19 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
1.1.1.8.20 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
1.1.1.8.21 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
1.1.1.8.22 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
1.1.1.8.23 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
1.1.1.8.24 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
1.1.1.8.25 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
1.1.1.8.26 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
1.1.1.8.27 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
1.1.1.8.28 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
1.1.1.8.29 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
1.1.1.8.30 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
1.1.1.8.31 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
1.1.1.8.32 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
1.1.1.9 thermo.electrochem module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
1.1.1.9.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
1.1.1.9.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
1.1.1.9.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
1.1.1.9.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
1.1.1.9.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
1.1.1.9.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
1.1.1.9.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
1.1.1.9.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
1.1.1.9.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
1.1.1.9.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
1.1.1.9.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
1.1.1.9.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
1.1.1.9.13 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
1.1.1.9.14 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
1.1.1.9.15 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
1.1.1.9.16 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
1.1.1.9.17 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
1.1.1.9.18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
1.1.1.9.19 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
1.1.1.9.20 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
1.1.1.9.21 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
1.1.1.9.22 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
1.1.1.9.23 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
1.1.1.9.24 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
1.1.1.9.25 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
1.1.1.9.26 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
1.1.1.9.27 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
1.1.1.9.28 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
1.1.1.9.29 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
1.1.1.9.30 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
1.1.1.9.31 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
1.1.1.9.32 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
1.1.1.9.33 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
1.1.1.9.34 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
1.1.1.9.35 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

v
1.1.1.9.36 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
1.1.1.9.37 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
1.1.1.9.38 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
1.1.1.9.39 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
1.1.1.9.40 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
1.1.1.9.41 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
1.1.1.9.42 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
1.1.1.9.43 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
1.1.1.9.44 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
1.1.1.9.45 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
1.1.1.9.46 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
1.1.1.9.47 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
1.1.1.9.48 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
1.1.1.9.49 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
1.1.1.9.50 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
1.1.1.9.51 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
1.1.1.9.52 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
1.1.1.10 thermo.elements module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
1.1.1.10.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
1.1.1.10.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
1.1.1.10.3 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
1.1.1.10.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
1.1.1.10.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
1.1.1.10.6 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
1.1.1.10.7 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
1.1.1.10.8 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
1.1.1.10.9 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
1.1.1.10.10 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
1.1.1.10.11 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
1.1.1.10.12 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
1.1.1.10.13 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
1.1.1.10.14 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
1.1.1.10.15 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
1.1.1.10.16 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
1.1.1.10.17 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
1.1.1.10.18 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
1.1.1.10.19 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
1.1.1.10.20 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
1.1.1.10.21 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
1.1.1.10.22 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
1.1.1.10.23 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
1.1.1.11 thermo.eos module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
1.1.1.11.1 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
1.1.1.11.2 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
1.1.1.11.3 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
1.1.1.11.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
1.1.1.11.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
1.1.1.11.6 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
1.1.1.11.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
1.1.1.11.8 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
1.1.1.11.9 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
1.1.1.11.10 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
1.1.1.11.11 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
1.1.1.11.12 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

vi
1.1.1.11.13 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
1.1.1.11.14 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
1.1.1.11.15 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
1.1.1.11.16 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
1.1.1.11.17 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
1.1.1.11.18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
1.1.1.11.19 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
1.1.1.11.20 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
1.1.1.11.21 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
1.1.1.11.22 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
1.1.1.11.23 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
1.1.1.11.24 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
1.1.1.11.25 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
1.1.1.11.26 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
1.1.1.11.27 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
1.1.1.11.28 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
1.1.1.11.29 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
1.1.1.11.30 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
1.1.1.11.31 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
1.1.1.11.32 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
1.1.1.11.33 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
1.1.1.11.34 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
1.1.1.11.35 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
1.1.1.11.36 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
1.1.1.11.37 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
1.1.1.11.38 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
1.1.1.11.39 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
1.1.1.11.40 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
1.1.1.11.41 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
1.1.1.11.42 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
1.1.1.11.43 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
1.1.1.11.44 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
1.1.1.11.45 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
1.1.1.11.46 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
1.1.1.11.47 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
1.1.1.11.48 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
1.1.1.11.49 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
1.1.1.11.50 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
1.1.1.11.51 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
1.1.1.11.52 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
1.1.1.11.53 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
1.1.1.11.54 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
1.1.1.11.55 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
1.1.1.11.56 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
1.1.1.11.57 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
1.1.1.11.58 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
1.1.1.11.59 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
1.1.1.11.60 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
1.1.1.11.61 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
1.1.1.11.62 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
1.1.1.11.63 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
1.1.1.11.64 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
1.1.1.11.65 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
1.1.1.11.66 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126

vii
1.1.1.11.67 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
1.1.1.11.68 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
1.1.1.11.69 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
1.1.1.11.70 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
1.1.1.11.71 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
1.1.1.11.72 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
1.1.1.11.73 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
1.1.1.11.74 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
1.1.1.11.75 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
1.1.1.11.76 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
1.1.1.11.77 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
1.1.1.11.78 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
1.1.1.11.79 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
1.1.1.12 thermo.eos_mix module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
1.1.1.12.1 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
1.1.1.12.2 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
1.1.1.12.3 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
1.1.1.12.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
1.1.1.12.5 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
1.1.1.12.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
1.1.1.12.7 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
1.1.1.12.8 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
1.1.1.12.9 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
1.1.1.12.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
1.1.1.12.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
1.1.1.12.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
1.1.1.12.13 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
1.1.1.12.14 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
1.1.1.12.15 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
1.1.1.12.16 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
1.1.1.12.17 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
1.1.1.12.18 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
1.1.1.12.19 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
1.1.1.12.20 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
1.1.1.12.21 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
1.1.1.12.22 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
1.1.1.12.23 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
1.1.1.12.24 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
1.1.1.12.25 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
1.1.1.12.26 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
1.1.1.12.27 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
1.1.1.12.28 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
1.1.1.12.29 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
1.1.1.12.30 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
1.1.1.12.31 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
1.1.1.12.32 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
1.1.1.12.33 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
1.1.1.12.34 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
1.1.1.12.35 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
1.1.1.12.36 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
1.1.1.12.37 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
1.1.1.12.38 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
1.1.1.12.39 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
1.1.1.12.40 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

viii
1.1.1.12.41 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
1.1.1.12.42 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
1.1.1.12.43 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
1.1.1.13 thermo.environment module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
1.1.1.13.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
1.1.1.13.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
1.1.1.13.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
1.1.1.13.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
1.1.1.13.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
1.1.1.13.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
1.1.1.13.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
1.1.1.13.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
1.1.1.13.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
1.1.1.14 thermo.heat_capacity module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
1.1.1.14.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
1.1.1.14.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
1.1.1.14.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
1.1.1.14.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
1.1.1.14.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
1.1.1.14.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
1.1.1.14.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
1.1.1.14.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
1.1.1.14.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
1.1.1.14.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
1.1.1.14.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
1.1.1.14.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
1.1.1.14.13 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
1.1.1.14.14 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
1.1.1.14.15 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
1.1.1.14.16 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
1.1.1.14.17 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
1.1.1.14.18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
1.1.1.14.19 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
1.1.1.14.20 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
1.1.1.14.21 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
1.1.1.14.22 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
1.1.1.14.23 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
1.1.1.14.24 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
1.1.1.14.25 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
1.1.1.14.26 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
1.1.1.14.27 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
1.1.1.14.28 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
1.1.1.14.29 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
1.1.1.14.30 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
1.1.1.14.31 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
1.1.1.14.32 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
1.1.1.14.33 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
1.1.1.14.34 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
1.1.1.14.35 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
1.1.1.14.36 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
1.1.1.14.37 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
1.1.1.14.38 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
1.1.1.14.39 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
1.1.1.14.40 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

ix
1.1.1.14.41 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
1.1.1.14.42 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
1.1.1.14.43 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
1.1.1.14.44 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
1.1.1.14.45 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
1.1.1.14.46 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
1.1.1.14.47 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
1.1.1.14.48 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
1.1.1.14.49 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
1.1.1.14.50 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
1.1.1.14.51 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
1.1.1.14.52 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
1.1.1.14.53 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
1.1.1.14.54 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
1.1.1.14.55 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
1.1.1.14.56 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
1.1.1.14.57 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
1.1.1.14.58 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
1.1.1.14.59 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
1.1.1.14.60 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
1.1.1.14.61 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
1.1.1.14.62 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
1.1.1.14.63 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
1.1.1.14.64 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
1.1.1.14.65 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
1.1.1.14.66 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
1.1.1.14.67 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
1.1.1.14.68 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
1.1.1.14.69 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
1.1.1.14.70 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
1.1.1.14.71 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
1.1.1.14.72 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
1.1.1.14.73 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
1.1.1.15 thermo.identifiers module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
1.1.1.15.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
1.1.1.15.2 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
1.1.1.15.3 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
1.1.1.15.4 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
1.1.1.15.5 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
1.1.1.15.6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
1.1.1.15.7 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
1.1.1.15.8 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
1.1.1.15.9 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
1.1.1.15.10 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
1.1.1.15.11 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
1.1.1.15.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
1.1.1.16 thermo.interface module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
1.1.1.16.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
1.1.1.16.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
1.1.1.16.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
1.1.1.16.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
1.1.1.16.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
1.1.1.16.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
1.1.1.16.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

x
1.1.1.16.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
1.1.1.16.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
1.1.1.16.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
1.1.1.16.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
1.1.1.16.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
1.1.1.16.13 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
1.1.1.16.14 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
1.1.1.16.15 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
1.1.1.16.16 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
1.1.1.16.17 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
1.1.1.16.18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
1.1.1.16.19 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
1.1.1.16.20 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
1.1.1.16.21 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
1.1.1.16.22 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
1.1.1.16.23 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
1.1.1.16.24 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
1.1.1.16.25 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
1.1.1.16.26 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
1.1.1.16.27 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
1.1.1.16.28 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
1.1.1.16.29 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
1.1.1.16.30 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
1.1.1.16.31 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
1.1.1.16.32 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
1.1.1.16.33 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
1.1.1.16.34 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
1.1.1.16.35 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
1.1.1.16.36 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
1.1.1.16.37 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
1.1.1.16.38 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
1.1.1.16.39 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
1.1.1.16.40 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
1.1.1.16.41 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
1.1.1.16.42 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
1.1.1.17 thermo.joback module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
1.1.1.17.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
1.1.1.17.2 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
1.1.1.17.3 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
1.1.1.17.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
1.1.1.17.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
1.1.1.17.6 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
1.1.1.17.7 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
1.1.1.17.8 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
1.1.1.17.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
1.1.1.17.10 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
1.1.1.17.11 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
1.1.1.17.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
1.1.1.17.13 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
1.1.1.17.14 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
1.1.1.17.15 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
1.1.1.17.16 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
1.1.1.17.17 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
1.1.1.17.18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

xi
1.1.1.17.19 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
1.1.1.18 thermo.law module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
1.1.1.18.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
1.1.1.18.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
1.1.1.18.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
1.1.1.19 thermo.lennard_jones module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
1.1.1.19.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
1.1.1.19.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
1.1.1.19.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
1.1.1.19.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
1.1.1.19.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
1.1.1.19.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
1.1.1.19.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
1.1.1.19.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
1.1.1.19.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
1.1.1.19.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
1.1.1.19.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
1.1.1.19.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
1.1.1.19.13 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
1.1.1.19.14 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
1.1.1.19.15 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
1.1.1.19.16 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
1.1.1.19.17 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
1.1.1.19.18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
1.1.1.19.19 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
1.1.1.19.20 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
1.1.1.19.21 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
1.1.1.19.22 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
1.1.1.19.23 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
1.1.1.19.24 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
1.1.1.19.25 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
1.1.1.19.26 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
1.1.1.19.27 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
1.1.1.19.28 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
1.1.1.19.29 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
1.1.1.19.30 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
1.1.1.19.31 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
1.1.1.19.32 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
1.1.1.19.33 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
1.1.1.19.34 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
1.1.1.19.35 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
1.1.1.19.36 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
1.1.1.19.37 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
1.1.1.19.38 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
1.1.1.19.39 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
1.1.1.19.40 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
1.1.1.19.41 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
1.1.1.19.42 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
1.1.1.19.43 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
1.1.1.19.44 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
1.1.1.19.45 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
1.1.1.19.46 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
1.1.1.19.47 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
1.1.1.19.48 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

xii
1.1.1.19.49 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
1.1.1.19.50 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
1.1.1.19.51 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
1.1.1.19.52 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
1.1.1.19.53 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
1.1.1.19.54 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
1.1.1.19.55 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
1.1.1.19.56 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
1.1.1.19.57 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
1.1.1.19.58 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
1.1.1.20 thermo.miscdata module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
1.1.1.20.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
1.1.1.20.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
1.1.1.20.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
1.1.1.21 thermo.mixture module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
1.1.1.21.1 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
1.1.1.21.2 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
1.1.1.21.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
1.1.1.21.4 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
1.1.1.21.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
1.1.1.21.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
1.1.1.21.7 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
1.1.1.21.8 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
1.1.1.21.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
1.1.1.21.10 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
1.1.1.21.11 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
1.1.1.21.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
1.1.1.21.13 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
1.1.1.21.14 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
1.1.1.21.15 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
1.1.1.21.16 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
1.1.1.21.17 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
1.1.1.21.18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
1.1.1.21.19 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
1.1.1.21.20 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
1.1.1.21.21 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
1.1.1.21.22 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
1.1.1.21.23 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
1.1.1.21.24 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
1.1.1.21.25 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
1.1.1.21.26 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
1.1.1.21.27 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
1.1.1.21.28 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
1.1.1.21.29 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
1.1.1.21.30 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
1.1.1.21.31 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
1.1.1.21.32 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
1.1.1.21.33 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
1.1.1.21.34 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
1.1.1.21.35 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
1.1.1.21.36 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
1.1.1.21.37 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
1.1.1.21.38 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
1.1.1.21.39 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

xiii
1.1.1.21.40 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
1.1.1.21.41 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
1.1.1.21.42 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
1.1.1.21.43 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
1.1.1.21.44 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
1.1.1.21.45 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
1.1.1.21.46 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
1.1.1.21.47 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
1.1.1.21.48 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
1.1.1.21.49 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
1.1.1.21.50 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
1.1.1.21.51 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
1.1.1.21.52 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
1.1.1.21.53 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
1.1.1.21.54 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
1.1.1.21.55 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
1.1.1.21.56 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
1.1.1.21.57 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
1.1.1.21.58 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
1.1.1.21.59 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
1.1.1.21.60 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
1.1.1.21.61 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
1.1.1.21.62 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
1.1.1.21.63 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
1.1.1.21.64 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
1.1.1.21.65 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
1.1.1.21.66 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
1.1.1.21.67 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
1.1.1.21.68 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
1.1.1.21.69 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
1.1.1.21.70 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
1.1.1.21.71 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
1.1.1.21.72 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
1.1.1.21.73 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
1.1.1.21.74 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
1.1.1.21.75 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
1.1.1.21.76 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
1.1.1.21.77 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
1.1.1.21.78 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
1.1.1.21.79 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
1.1.1.21.80 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
1.1.1.21.81 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
1.1.1.21.82 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
1.1.1.21.83 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
1.1.1.21.84 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
1.1.1.21.85 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
1.1.1.21.86 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
1.1.1.21.87 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
1.1.1.21.88 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
1.1.1.21.89 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
1.1.1.21.90 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
1.1.1.21.91 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
1.1.1.21.92 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
1.1.1.21.93 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

xiv
1.1.1.21.94 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
1.1.1.21.95 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
1.1.1.21.96 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
1.1.1.21.97 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
1.1.1.21.98 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
1.1.1.21.99 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
1.1.1.21.100Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
1.1.1.21.101Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
1.1.1.21.102Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
1.1.1.21.103Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
1.1.1.21.104Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
1.1.1.21.105Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
1.1.1.21.106Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
1.1.1.21.107Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
1.1.1.21.108Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
1.1.1.21.109Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
1.1.1.21.110Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
1.1.1.21.111Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
1.1.1.21.112Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
1.1.1.21.113Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
1.1.1.21.114Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
1.1.1.21.115Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
1.1.1.21.116Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
1.1.1.21.117Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
1.1.1.21.118Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
1.1.1.21.119Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
1.1.1.21.120Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
1.1.1.21.121Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
1.1.1.21.122Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
1.1.1.21.123Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
1.1.1.21.124Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
1.1.1.22 thermo.permittivity module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
1.1.1.22.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
1.1.1.22.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
1.1.1.22.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
1.1.1.22.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
1.1.1.22.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
1.1.1.22.6 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
1.1.1.23 thermo.phase_change module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
1.1.1.23.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
1.1.1.23.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
1.1.1.23.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
1.1.1.23.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
1.1.1.23.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
1.1.1.23.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
1.1.1.23.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
1.1.1.23.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
1.1.1.23.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
1.1.1.23.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
1.1.1.23.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
1.1.1.23.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
1.1.1.23.13 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
1.1.1.23.14 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
1.1.1.23.15 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

xv
1.1.1.23.16 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
1.1.1.23.17 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
1.1.1.23.18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
1.1.1.23.19 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
1.1.1.23.20 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
1.1.1.23.21 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
1.1.1.23.22 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
1.1.1.23.23 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
1.1.1.23.24 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
1.1.1.23.25 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
1.1.1.23.26 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
1.1.1.23.27 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
1.1.1.23.28 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
1.1.1.23.29 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
1.1.1.23.30 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
1.1.1.23.31 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
1.1.1.23.32 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
1.1.1.23.33 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
1.1.1.23.34 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
1.1.1.23.35 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
1.1.1.23.36 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
1.1.1.24 thermo.reaction module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
1.1.1.24.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
1.1.1.24.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
1.1.1.24.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
1.1.1.24.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
1.1.1.24.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
1.1.1.24.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
1.1.1.24.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
1.1.1.24.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
1.1.1.24.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
1.1.1.25 thermo.refractivity module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
1.1.1.25.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
1.1.1.25.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
1.1.1.25.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
1.1.1.25.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
1.1.1.25.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
1.1.1.25.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
1.1.1.25.7 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
1.1.1.25.8 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
1.1.1.25.9 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
1.1.1.25.10 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
1.1.1.26 thermo.safety module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
1.1.1.26.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
1.1.1.26.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
1.1.1.26.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
1.1.1.26.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
1.1.1.26.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
1.1.1.26.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
1.1.1.26.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
1.1.1.26.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
1.1.1.26.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
1.1.1.26.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
1.1.1.26.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297

xvi
1.1.1.26.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
1.1.1.26.13 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
1.1.1.26.14 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
1.1.1.26.15 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
1.1.1.26.16 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
1.1.1.26.17 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
1.1.1.26.18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
1.1.1.26.19 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
1.1.1.26.20 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
1.1.1.26.21 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
1.1.1.26.22 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
1.1.1.26.23 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
1.1.1.26.24 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
1.1.1.26.25 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
1.1.1.26.26 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
1.1.1.26.27 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
1.1.1.26.28 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
1.1.1.26.29 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
1.1.1.26.30 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
1.1.1.27 thermo.solubility module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
1.1.1.27.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
1.1.1.27.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
1.1.1.27.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
1.1.1.27.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
1.1.1.27.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
1.1.1.27.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
1.1.1.27.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
1.1.1.27.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
1.1.1.27.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
1.1.1.28 thermo.stream module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
1.1.1.28.1 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
1.1.1.28.2 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
1.1.1.29 thermo.temperature module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
1.1.1.29.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
1.1.1.29.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
1.1.1.29.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
1.1.1.29.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
1.1.1.29.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
1.1.1.29.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
1.1.1.30 thermo.thermal_conductivity module . . . . . . . . . . . . . . . . . . . . . . . . . 316
1.1.1.30.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
1.1.1.30.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
1.1.1.30.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
1.1.1.30.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
1.1.1.30.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
1.1.1.30.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
1.1.1.30.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
1.1.1.30.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
1.1.1.30.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
1.1.1.30.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
1.1.1.30.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
1.1.1.30.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
1.1.1.30.13 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
1.1.1.30.14 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

xvii
1.1.1.30.15 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
1.1.1.30.16 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
1.1.1.30.17 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
1.1.1.30.18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
1.1.1.30.19 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
1.1.1.30.20 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
1.1.1.30.21 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
1.1.1.30.22 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
1.1.1.30.23 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
1.1.1.30.24 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
1.1.1.30.25 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
1.1.1.30.26 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
1.1.1.30.27 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
1.1.1.30.28 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
1.1.1.30.29 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
1.1.1.30.30 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
1.1.1.30.31 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
1.1.1.30.32 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
1.1.1.30.33 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
1.1.1.30.34 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
1.1.1.30.35 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
1.1.1.30.36 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
1.1.1.30.37 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
1.1.1.30.38 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
1.1.1.30.39 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
1.1.1.30.40 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
1.1.1.30.41 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
1.1.1.30.42 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
1.1.1.30.43 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
1.1.1.30.44 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
1.1.1.30.45 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
1.1.1.30.46 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
1.1.1.30.47 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
1.1.1.30.48 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
1.1.1.30.49 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
1.1.1.30.50 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
1.1.1.30.51 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
1.1.1.30.52 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
1.1.1.30.53 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
1.1.1.30.54 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
1.1.1.30.55 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
1.1.1.30.56 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
1.1.1.30.57 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
1.1.1.30.58 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
1.1.1.30.59 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
1.1.1.30.60 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
1.1.1.30.61 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
1.1.1.30.62 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
1.1.1.30.63 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
1.1.1.30.64 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
1.1.1.30.65 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
1.1.1.30.66 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
1.1.1.30.67 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
1.1.1.30.68 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

xviii
1.1.1.30.69 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
1.1.1.30.70 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
1.1.1.30.71 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
1.1.1.30.72 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
1.1.1.30.73 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
1.1.1.30.74 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
1.1.1.30.75 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
1.1.1.30.76 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
1.1.1.30.77 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
1.1.1.30.78 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
1.1.1.31 thermo.triple module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
1.1.1.31.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
1.1.1.31.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
1.1.1.31.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
1.1.1.31.4 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
1.1.1.31.5 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
1.1.1.32 thermo.unifac module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
1.1.1.32.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
1.1.1.32.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
1.1.1.32.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
1.1.1.32.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
1.1.1.32.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
1.1.1.32.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
1.1.1.32.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
1.1.1.32.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
1.1.1.32.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
1.1.1.32.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
1.1.1.32.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
1.1.1.32.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
1.1.1.32.13 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
1.1.1.32.14 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
1.1.1.32.15 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
1.1.1.33 thermo.utils module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
1.1.1.33.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
1.1.1.33.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
1.1.1.33.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
1.1.1.33.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
1.1.1.33.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
1.1.1.33.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
1.1.1.33.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
1.1.1.33.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
1.1.1.33.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
1.1.1.33.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
1.1.1.33.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
1.1.1.33.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
1.1.1.33.13 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
1.1.1.33.14 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
1.1.1.33.15 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
1.1.1.33.16 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
1.1.1.33.17 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
1.1.1.33.18 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
1.1.1.33.19 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
1.1.1.33.20 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
1.1.1.33.21 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361

xix
1.1.1.33.22 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
1.1.1.33.23 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
1.1.1.33.24 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
1.1.1.33.25 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
1.1.1.33.26 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
1.1.1.33.27 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
1.1.1.33.28 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
1.1.1.33.29 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
1.1.1.33.30 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
1.1.1.33.31 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
1.1.1.33.32 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
1.1.1.33.33 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
1.1.1.33.34 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
1.1.1.33.35 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
1.1.1.33.36 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
1.1.1.33.37 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
1.1.1.33.38 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
1.1.1.33.39 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
1.1.1.33.40 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
1.1.1.33.41 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
1.1.1.33.42 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
1.1.1.33.43 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
1.1.1.33.44 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
1.1.1.33.45 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
1.1.1.33.46 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
1.1.1.33.47 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
1.1.1.33.48 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
1.1.1.33.49 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
1.1.1.33.50 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
1.1.1.33.51 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
1.1.1.33.52 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
1.1.1.33.53 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
1.1.1.33.54 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
1.1.1.33.55 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
1.1.1.33.56 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
1.1.1.33.57 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
1.1.1.33.58 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
1.1.1.33.59 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
1.1.1.33.60 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
1.1.1.33.61 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
1.1.1.33.62 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
1.1.1.33.63 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
1.1.1.33.64 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
1.1.1.33.65 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
1.1.1.33.66 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
1.1.1.33.67 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
1.1.1.33.68 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
1.1.1.33.69 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
1.1.1.33.70 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
1.1.1.33.71 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
1.1.1.33.72 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
1.1.1.33.73 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
1.1.1.33.74 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
1.1.1.33.75 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375

xx
1.1.1.33.76 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
1.1.1.33.77 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
1.1.1.33.78 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
1.1.1.33.79 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
1.1.1.33.80 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
1.1.1.33.81 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
1.1.1.33.82 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
1.1.1.34 thermo.vapor_pressure module . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
1.1.1.34.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
1.1.1.34.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
1.1.1.34.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
1.1.1.34.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
1.1.1.34.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
1.1.1.34.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
1.1.1.34.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
1.1.1.34.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
1.1.1.34.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
1.1.1.34.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
1.1.1.34.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
1.1.1.34.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
1.1.1.34.13 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
1.1.1.34.14 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
1.1.1.34.15 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
1.1.1.34.16 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
1.1.1.34.17 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
1.1.1.34.18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
1.1.1.34.19 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
1.1.1.34.20 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
1.1.1.34.21 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
1.1.1.34.22 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
1.1.1.34.23 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
1.1.1.34.24 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
1.1.1.34.25 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
1.1.1.34.26 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
1.1.1.34.27 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
1.1.1.34.28 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
1.1.1.34.29 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
1.1.1.34.30 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
1.1.1.35 thermo.virial module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
1.1.1.35.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
1.1.1.35.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
1.1.1.35.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
1.1.1.35.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
1.1.1.35.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
1.1.1.35.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
1.1.1.35.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
1.1.1.35.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
1.1.1.35.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
1.1.1.35.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
1.1.1.35.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
1.1.1.35.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
1.1.1.36 thermo.viscosity module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
1.1.1.36.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
1.1.1.36.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

xxi
1.1.1.36.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
1.1.1.36.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
1.1.1.36.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
1.1.1.36.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
1.1.1.36.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
1.1.1.36.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
1.1.1.36.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
1.1.1.36.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
1.1.1.36.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
1.1.1.36.12 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
1.1.1.36.13 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
1.1.1.36.14 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
1.1.1.36.15 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
1.1.1.36.16 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
1.1.1.36.17 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
1.1.1.36.18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
1.1.1.36.19 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
1.1.1.36.20 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
1.1.1.36.21 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
1.1.1.36.22 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
1.1.1.36.23 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
1.1.1.36.24 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
1.1.1.36.25 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
1.1.1.36.26 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
1.1.1.36.27 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
1.1.1.36.28 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
1.1.1.36.29 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
1.1.1.36.30 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
1.1.1.36.31 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
1.1.1.36.32 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
1.1.1.36.33 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
1.1.1.36.34 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
1.1.1.36.35 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
1.1.1.36.36 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
1.1.1.36.37 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
1.1.1.36.38 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
1.1.1.36.39 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
1.1.1.36.40 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
1.1.1.36.41 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
1.1.1.36.42 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
1.1.1.36.43 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
1.1.1.36.44 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
1.1.1.36.45 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
1.1.1.36.46 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
1.1.1.36.47 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
1.1.1.36.48 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
1.1.1.36.49 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
1.1.1.36.50 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
1.1.1.37 thermo.volume module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
1.1.1.37.1 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
1.1.1.37.2 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
1.1.1.37.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
1.1.1.37.4 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
1.1.1.37.5 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443

xxii
1.1.1.37.6 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
1.1.1.37.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
1.1.1.37.8 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
1.1.1.37.9 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
1.1.1.37.10 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
1.1.1.37.11 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
1.1.1.37.12 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
1.1.1.37.13 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
1.1.1.37.14 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
1.1.1.37.15 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
1.1.1.37.16 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
1.1.1.37.17 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
1.1.1.37.18 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
1.1.1.37.19 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
1.1.1.37.20 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
1.1.1.37.21 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
1.1.1.37.22 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
1.1.1.37.23 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
1.1.1.37.24 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
1.1.1.37.25 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
1.1.1.37.26 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
1.1.1.37.27 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
1.1.1.37.28 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
1.1.1.37.29 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
1.1.1.37.30 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
1.1.1.37.31 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
1.1.1.37.32 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
1.1.1.37.33 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
1.1.1.37.34 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
1.1.1.37.35 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
1.1.1.37.36 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
1.1.1.37.37 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
1.1.1.37.38 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
1.1.1.37.39 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
1.1.1.37.40 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
1.1.1.37.41 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
1.1.1.37.42 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458
1.1.1.37.43 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
1.1.1.37.44 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
1.1.1.37.45 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
1.1.1.37.46 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
1.1.1.37.47 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
1.1.1.37.48 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
1.1.1.37.49 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
1.1.1.37.50 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
1.1.1.37.51 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465
1.1.1.37.52 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
1.1.1.37.53 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
1.1.1.37.54 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
1.1.1.37.55 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
1.1.1.37.56 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
1.1.1.37.57 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
1.1.1.37.58 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
1.1.1.37.59 Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474

xxiii
2 Indices and tables 477

Bibliography 479

Python Module Index 507

xxiv
thermo Documentation, Release 0.1

Contents:

Contents 1
thermo Documentation, Release 0.1

2 Contents
CHAPTER 1

thermo

1.1 thermo package

1.1.1 Submodules

1.1.1.1 thermo.acentric module

thermo.acentric.omega(CASRN, AvailableMethods=False, Method=None, IgnoreMethods=[’LK’,


’DEFINITION’])
This function handles the retrieval of a chemical’s acentric factor, omega, or its calculation from correlations or
directly through the definition of acentric factor if possible. Requires a known boiling point, critical temperature
and pressure for use of the correlations. Requires accurate vapor pressure data for direct calculation.
Will automatically select a method to use if no Method is provided; returns None if the data is not available and
cannot be calculated.
[︂ ]︂
𝜔 ≡ − log10 lim (𝑃 𝑠𝑎𝑡 /𝑃𝑐 ) − 1.0
𝑇 /𝑇𝑐 =0.7

Parameters
CASRN [string] CASRN [-]
Returns
omega [float] Acentric factor of compound
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain omega with the given inputs
Other Parameters
Method [string, optional] The method name to use. Accepted methods are ‘PSRK’,
‘PD’, ‘YAWS’, ‘LK’, and ‘DEFINITION’. All valid values are also held in the list
omega_methods.

3
thermo Documentation, Release 0.1

AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain omega for the desired chemical, and will return methods instead of omega
IgnoreMethods [list, optional] A list of methods to ignore in obtaining the full list of methods,
useful for for performance reasons and ignoring inaccurate methods

1.1.1.1.1 Notes

A total of five sources are available for this function. They are:
• ‘PSRK’, a compillation of experimental and estimated data published in the Appendix of [15]_, the fourth
revision of the PSRK model.
• ‘PD’, an older compillation of data published in (Passut & Danner, 1973) [16]_.
• ‘YAWS’, a large compillation of data from a variety of sources; no data points are sourced in the work of
[17]_.
• ‘LK’, a estimation method for hydrocarbons.
• ‘DEFINITION’, based on the definition of omega as presented in [1], using vapor pressure data.

1.1.1.1.2 References

[1], [2], [3], [4]

1.1.1.1.3 Examples

>>> omega(CASRN='64-17-5')
0.635

thermo.acentric.LK_omega(Tb, Tc, Pc)


Estimates the acentric factor of a fluid using a correlation in [1].
𝑠𝑎𝑡 6
ln 𝑃𝑏𝑟 − 5.92714 + 6.09648/𝑇𝑏𝑟 + 1.28862 ln 𝑇𝑏𝑟 − 0.169347𝑇𝑏𝑟
𝜔= 6
15.2518 − 15.6875/𝑇𝑏𝑟 − 13.4721 ln 𝑇𝑏𝑟 + 0.43577𝑇𝑏𝑟

Parameters
Tb [float] Boiling temperature of the fluid [K]
Tc [float] Critical temperature of the fluid [K]
Pc [float] Critical pressure of the fluid [Pa]
Returns
omega [float] Acentric factor of the fluid [-]

1.1.1.1.4 Notes

Internal units are atmosphere and Kelvin. Example value from Reid (1987). Using ASPEN V8.4, LK method
gives 0.325595.

4 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.1.5 References

[1]

1.1.1.1.6 Examples

Isopropylbenzene

>>> LK_omega(425.6, 631.1, 32.1E5)


0.32544249926397856

thermo.acentric.omega_mixture(omegas, zs, CASRNs=None, Method=None, AvailableMeth-


ods=False)
This function handles the calculation of a mixture’s acentric factor. Calculation is based on the omegas provided
for each pure component. Will automatically select a method to use if no Method is provided; returns None if
insufficient data is available.
Parameters
omegas [array-like] acentric factors of each component, [-]
zs [array-like] mole fractions of each component, [-]
CASRNs: list of strings CASRNs, not currently used [-]
Returns
omega [float] acentric factor of the mixture, [-]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain omega with the given inputs
Other Parameters
Method [string, optional] The method name to use. Only ‘SIMPLE’ is accepted so far. All
valid values are also held in the list omega_mixture_methods.
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain omega for the desired chemical, and will return methods instead of omega

1.1.1.1.7 Notes

The only data used in the methods implemented to date are mole fractions and pure-component omegas. An
alternate definition could be based on the dew point or bubble point of a multicomponent mixture, but this has
not been done to date.

1.1.1.1.8 References

[1]

1.1.1.1.9 Examples

>>> omega_mixture([0.025, 0.12], [0.3, 0.7])


0.0915

1.1. thermo package 5


thermo Documentation, Release 0.1

thermo.acentric.StielPolar(Tc=None, Pc=None, omega=None, CASRN=”, Method=None, Avail-


ableMethods=False)
This function handles the calculation of a chemical’s Stiel Polar factor, directly through the definition of Stiel-
polar factor if possible. Requires Tc, Pc, acentric factor, and a vapor pressure datum at Tr=0.6.
Will automatically select a method to use if no Method is provided; returns None if the data is not available and
cannot be calculated.

𝑥 = log 𝑃𝑟 |𝑇𝑟 =0.6 + 1.70𝜔 + 1.552

Parameters
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
omega [float] Acentric factor of the fluid [-]
CASRN [string] CASRN [-]
Returns
factor [float] Stiel polar factor of compound
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain Stiel polar factor with the given inputs
Other Parameters
Method [string, optional] The method name to use. Only ‘DEFINITION’ is accepted so far.
All valid values are also held in the list Stiel_polar_methods.
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain Stiel-polar factor for the desired chemical, and will return methods instead of stiel-
polar factor

1.1.1.1.10 Notes

Only one source is available for this function. It is:


• ‘DEFINITION’, based on the definition of Stiel Polar Factor presented in [1], using vapor pressure data.
A few points have also been published in [2], which may be used for comparison. Currently this is only used
for a surface tension correlation.

1.1.1.1.11 References

[1], [2]

1.1.1.1.12 Examples

>>> StielPolar(647.3, 22048321.0, 0.344, CASRN='7732-18-5')


0.024581140348734376

6 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.2 thermo.activity module

thermo.activity.K_value(P=None, Psat=None, phi_l=None, phi_g=None, gamma=None, Poynt-


ing=1)
Calculates the equilibrium K-value assuming Raoult’s law, or an equation of state model, or an activity coeffi-
cient model, or a combined equation of state-activity model.
The calculation procedure will use the most advanced approach with the provided inputs:
• If P, Psat, phi_l, phi_g, and gamma are provided, use the combined approach.
• If P, Psat, and gamma are provided, use the modified Raoult’s law.
• If phi_l and phi_g are provided, use the EOS only method.
• If P and Psat are provided, use Raoult’s law.
Definitions:
𝑦𝑖
𝐾𝑖 =
𝑥𝑖
Raoult’s law:
𝑃𝑖𝑠𝑎𝑡
𝐾𝑖 =
𝑃
Activity coefficient, no EOS (modified Raoult’s law):

𝛾𝑖 𝑃𝑖𝑠𝑎𝑡
𝐾𝑖 =
𝑃
Equation of state only:

𝜑𝑙𝑖 𝑓𝑖𝑙
𝐾𝑖 = =
𝜑𝑣𝑖 𝑓𝑖𝑣
Combined approach (liquid reference fugacity coefficient is normally calculated the saturation pressure for it as
a pure species; vapor fugacity coefficient calculated normally):

𝛾𝑖 𝑃𝑖𝑠𝑎𝑡 𝜑𝑙,𝑟𝑒𝑓
𝑖
𝐾𝑖 =
𝜑𝑣𝑖 𝑃
Combined approach, with Poynting Correction Factor (liquid molar volume in the integral is for i as a pure
species only):
[︂ ∫︀ 𝑃
𝑉 𝑙 𝑑𝑃
]︂
𝑃 𝑠𝑎𝑡 𝑖
𝛾𝑖 𝑃𝑖𝑠𝑎𝑡 𝜑𝑙,𝑟𝑒𝑓
𝑖 exp 𝑖
𝑅𝑇
𝐾𝑖 = 𝑣
𝜑𝑖 𝑃
Parameters
P [float] System pressure, optional
Psat [float] Vapor pressure of species i, [Pa]
phi_l [float] Fugacity coefficient of species i in the liquid phase, either at the system condi-
tions (EOS-only case) or at the saturation pressure of species i as a pure species (reference
condition for the combined approach), optional [-]
phi_g [float] Fugacity coefficient of species i in the vapor phase at the system conditions, op-
tional [-]
gamma [float] Activity coefficient of species i in the liquid phase, optional [-]

1.1. thermo package 7


thermo Documentation, Release 0.1

Poynting [float] Poynting correction factor, optional [-]


Returns
K [float] Equilibrium K value of component i, calculated with an approach depending on the
provided inputs [-]

1.1.1.2.1 Notes

The Poynting correction factor is normally simplified as follows, due to a liquid’s low pressure dependency:
𝑉𝑙 (𝑃 −𝑃𝑖𝑠𝑎𝑡 )
[︁ ]︁
𝛾𝑖 𝑃𝑖𝑠𝑎𝑡 𝜑𝑙,𝑟𝑒𝑓
𝑖 exp 𝑅𝑇
𝐾𝑖 =
𝜑𝑣𝑖 𝑃

1.1.1.2.2 References

[1], [2]

1.1.1.2.3 Examples

Raoult’s law:

>>> K_value(101325, 3000.)


0.029607698001480384

Modified Raoult’s law:

>>> K_value(P=101325, Psat=3000, gamma=0.9)


0.026646928201332347

EOS-only approach:

>>> K_value(phi_l=1.6356, phi_g=0.88427)


1.8496613025433408

Gamma-phi combined approach:

>>> K_value(P=1E6, Psat=1938800, phi_l=1.4356, phi_g=0.88427, gamma=0.92)


2.8958055544121137

Gamma-phi combined approach with a Poynting factor:

>>> K_value(P=1E6, Psat=1938800, phi_l=1.4356, phi_g=0.88427, gamma=0.92,


... Poynting=0.999)
2.8929097488577016

thermo.activity.Rachford_Rice_flash_error(V_over_F, zs, Ks)


Calculates the objective function of the Rachford-Rice flash equation. This function should be called by a solver
seeking a solution to a flash calculation. The unknown variable is V_over_F, for which a solution must be
between 0 and 1.
∑︁ 𝑧𝑖 (𝐾𝑖 − 1)
=0
𝑖
1 + 𝑉𝐹 (𝐾𝑖 − 1)

8 Chapter 1. thermo
thermo Documentation, Release 0.1

Parameters
V_over_F [float] Vapor fraction guess [-]
zs [list[float]] Overall mole fractions of all species, [-]
Ks [list[float]] Equilibrium K-values, [-]
Returns
error [float] Deviation between the objective function at the correct V_over_F and the at-
tempted V_over_F, [-]

1.1.1.2.4 Notes

The derivation is as follows:


𝐹 𝑧𝑖 = 𝐿𝑥𝑖 + 𝑉 𝑦𝑖
𝑧𝑖
𝑥𝑖 = 𝑉
1 + 𝐹 (𝐾𝑖 − 1)
∑︁ ∑︁
𝑦𝑖 = 𝐾𝑖 𝑥𝑖 = 1
𝑖 𝑖
∑︁
(𝑦𝑖 − 𝑥𝑖 ) = 0
𝑖
∑︁ 𝑧𝑖 (𝐾𝑖 − 1)
=0
𝑖
1 + 𝑉𝐹 (𝐾𝑖 − 1)

1.1.1.2.5 References

[1]

1.1.1.2.6 Examples

>>> Rachford_Rice_flash_error(0.5, zs=[0.5, 0.3, 0.2],


... Ks=[1.685, 0.742, 0.532])
0.04406445591174976

thermo.activity.Rachford_Rice_solution(zs, Ks)
Solves the objective function of the Rachford-Rice flash equation. Uses the method proposed in [2] to obtain an
initial guess.
∑︁ 𝑧𝑖 (𝐾𝑖 − 1)
=0
𝑖
1 + 𝑉𝐹 (𝐾𝑖 − 1)
Parameters
zs [list[float]] Overall mole fractions of all species, [-]
Ks [list[float]] Equilibrium K-values, [-]
Returns
V_over_F [float] Vapor fraction solution [-]
xs [list[float]] Mole fractions of each species in the liquid phase, [-]
ys [list[float]] Mole fractions of each species in the vapor phase, [-]

1.1. thermo package 9


thermo Documentation, Release 0.1

1.1.1.2.7 Notes

The initial guess is the average of the following, as described in [2].


(︂ )︂
𝑉 (𝐾𝑚𝑎𝑥 − 𝐾𝑚𝑖𝑛 )𝑧𝑜𝑓 𝐾𝑚𝑎𝑥 − (1 − 𝐾𝑚𝑖𝑛 )
=
𝐹 𝑚𝑖𝑛 (1 − 𝐾𝑚𝑖𝑛 )(𝐾𝑚𝑎𝑥 − 1)
(︂ )︂
𝑉 1
=
𝐹 𝑚𝑎𝑥 1 − 𝐾𝑚𝑖𝑛

Another algorithm for determining the range of the correct solution is given in [3]; [2] provides a narrower
range however. For both cases, each guess should be limited to be between 0 and 1 as they are often negative or
larger than 1.
(︂ )︂
𝑉 1
=
𝐹 𝑚𝑖𝑛 1 − 𝐾𝑚𝑎𝑥
(︂ )︂
𝑉 1
=
𝐹 𝑚𝑎𝑥 1 − 𝐾𝑚𝑖𝑛

If the newton method does not converge, a bisection method (brenth) is used instead. However, it is somewhat
slower, especially as newton will attempt 50 iterations before giving up.

1.1.1.2.8 References

[1], [2], [3]

1.1.1.2.9 Examples

>>> Rachford_Rice_solution(zs=[0.5, 0.3, 0.2], Ks=[1.685, 0.742, 0.532])


(0.6907302627738542, [0.3394086969663436, 0.3650560590371706, 0.2955352439964858],
˓→ [0.571903654388289, 0.27087159580558057, 0.15722474980613044])

thermo.activity.Li_Johns_Ahmadi_solution(zs, Ks)
Solves the objective function of the Li-Johns-Ahmadi flash equation. Uses the method proposed in [1] to obtain
an initial guess.
(︂ )︂ 𝑛−1 [︂ ]︂
𝐾𝑚𝑎𝑥 − 𝐾𝑚𝑖𝑛 ∑︁ 𝐾𝑖 − 𝐾𝑚𝑖𝑛 𝑧𝑖 (𝐾𝑚𝑎𝑥 − 1)𝑥𝑚𝑎𝑥
0=1+ 𝑥1 +
𝐾𝑚𝑖𝑛 − 1 𝑖=2
𝐾𝑚𝑖𝑛 − 1 (𝐾𝑖 − 1)𝑧𝑚𝑎𝑥 + (𝐾𝑚𝑎𝑥 − 𝐾𝑖 )𝑥𝑚𝑎𝑥

Parameters
zs [list[float]] Overall mole fractions of all species, [-]
Ks [list[float]] Equilibrium K-values, [-]
Returns
V_over_F [float] Vapor fraction solution [-]
xs [list[float]] Mole fractions of each species in the liquid phase, [-]
ys [list[float]] Mole fractions of each species in the vapor phase, [-]

10 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.2.10 Notes

The initial guess is the average of the following, as described in [1]. Each guess should be limited to be between
0 and 1 as they are often negative or larger than 1. max refers to the corresponding mole fractions for the species
with the largest K value.
(︂ )︂ (︂ )︂
1 − 𝐾𝑚𝑖𝑛 1 − 𝐾𝑚𝑖𝑛
𝑧𝑚𝑎𝑥 ≤ 𝑥𝑚𝑎𝑥 ≤
𝐾𝑚𝑎𝑥 − 𝐾𝑚𝑖𝑛 𝐾𝑚𝑎𝑥 − 𝐾𝑚𝑖𝑛

If the newton method does not converge, a bisection method (brenth) is used instead. However, it is somewhat
slower, especially as newton will attempt 50 iterations before giving up.
This method does not work for problems of only two components. K values are sorted internally. Has not been
found to be quicker than the Rachford-Rice equation.

1.1.1.2.11 References

[1]

1.1.1.2.12 Examples

>>> Li_Johns_Ahmadi_solution(zs=[0.5, 0.3, 0.2], Ks=[1.685, 0.742, 0.532])


(0.6907302627738544, [0.33940869696634357, 0.3650560590371706, 0.
˓→2955352439964858], [0.5719036543882889, 0.27087159580558057, 0.

˓→15722474980613044])

thermo.activity.flash_inner_loop(zs, Ks, AvailableMethods=False, Method=None)


This function handles the solution of the inner loop of a flash calculation, solving for liquid and gas mole frac-
tions and vapor fraction based on specified overall mole fractions and K values. As K values are weak functions
of composition, this should be called repeatedly by an outer loop. Will automatically select an algorithm to use
if no Method is provided. Should always provide a solution.
The automatic algorithm selection will try an analytical solution, and use the Rachford-Rice method if there are
4 or more components in the mixture.
Parameters
zs [list[float]] Overall mole fractions of all species, [-]
Ks [list[float]] Equilibrium K-values, [-]
Returns
V_over_F [float] Vapor fraction solution [-]
xs [list[float]] Mole fractions of each species in the liquid phase, [-]
ys [list[float]] Mole fractions of each species in the vapor phase, [-]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain a solution with the given inputs
Other Parameters
Method [string, optional] The method name to use. Accepted methods are ‘Analytical’,
‘Rachford-Rice’, and ‘Li-Johns-Ahmadi’. All valid values are also held in the list
flash_inner_loop_methods.

1.1. thermo package 11


thermo Documentation, Release 0.1

AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain a solution for the desired chemical, and will return methods instead of V_over_F,
xs, and ys.

1.1.1.2.13 Notes

A total of three methods are available for this function. They are:
• ‘Analytical’, an exact solution derived with SymPy, applicable only only to mixtures of two or three com-
ponents
• ‘Rachford-Rice’, which numerically solves an objective function described in
Rachford_Rice_solution.
• ‘Li-Johns-Ahmadi’, which numerically solves an objective function described in
Li_Johns_Ahmadi_solution.

1.1.1.2.14 Examples

>>> flash_inner_loop(zs=[0.5, 0.3, 0.2], Ks=[1.685, 0.742, 0.532])


(0.6907302627738537, [0.3394086969663437, 0.36505605903717053, 0.
˓→29553524399648573], [0.5719036543882892, 0.2708715958055805, 0.

˓→1572247498061304])

thermo.activity.NRTL(xs, taus, alphas)


Calculates the activity coefficients of each species in a mixture using the Non-Random Two-Liquid (NRTL)
method, given their mole fractions, dimensionless interaction parameters, and nonrandomness constants. Those
are normally correlated with temperature in some form, and need to be calculated separately.
𝑛
∑︁ ⎛ 𝑛 ⎞
∑︁
𝑥𝑗 𝜏𝑗𝑖 𝐺𝑗𝑖 𝑥𝑚 𝜏𝑚𝑗 𝐺𝑚𝑗
𝑛 ⎜ ⎟
𝑗=1 ∑︁ 𝑥𝑗 𝐺𝑖𝑗 ⎜⎜𝜏𝑖𝑗 − 𝑚=1

ln(𝛾𝑖 ) = 𝑛 + 𝑛 ⎜ 𝑛


∑︁ ∑︁ ∑︁
𝑗=1
𝑥𝑘 𝐺𝑘𝑖 𝑥𝑘 𝐺𝑘𝑗 𝑥𝑘 𝐺𝑘𝑗
⎝ ⎠
𝑘=1 𝑘=1 𝑘=1
𝐺𝑖𝑗 = exp (−𝛼𝑖𝑗 𝜏𝑖𝑗 )

Parameters
xs [list[float]] Liquid mole fractions of each species, [-]
taus [list[list[float]]] Dimensionless interaction parameters of each compound with each other,
[-]
alphas [list[list[float]]] Nonrandomness constants of each compound interacting with each
other, [-]
Returns
gammas [list[float]] Activity coefficient for each species in the liquid mixture, [-]

1.1.1.2.15 Notes

This model needs N^2 parameters.

12 Chapter 1. thermo
thermo Documentation, Release 0.1

One common temperature dependence of the nonrandomness constants is:


𝛼𝑖𝑗 = 𝑐𝑖𝑗 + 𝑑𝑖𝑗 𝑇
Most correlations for the interaction parameters include some of the terms shown in the following form:
𝐵𝑖𝑗 𝐶𝑖𝑗
𝜏𝑖𝑗 = 𝐴𝑖𝑗 + + 2 + 𝐷𝑖𝑗 ln (𝑇 ) + 𝐸𝑖𝑗 𝑇 𝐹𝑖𝑗
𝑇 𝑇

1.1.1.2.16 References

[1], [2]

1.1.1.2.17 Examples

Ethanol-water example, at 343.15 K and 1 MPa:


>>> NRTL(xs=[0.252, 0.748], taus=[[0, -0.178], [1.963, 0]],
... alphas=[[0, 0.2974],[.2974, 0]])
[1.9363183763514304, 1.1537609663170014]

thermo.activity.Wilson(xs, params)
Calculates the activity coefficients of each species in a mixture using the Wilson method, given their mole
fractions, and dimensionless interaction parameters. Those are normally correlated with temperature, and need
to be calculated separately.
⎛ ⎞
𝑁 𝑁
∑︁ ∑︁ Λ𝑗𝑖 𝑥𝑗
ln 𝛾𝑖 = 1 − ln ⎝ Λ𝑖𝑗 𝑥𝑗 −

𝑁
𝑗 𝑗
∑︁
Λ𝑗𝑘 𝑥𝑘
𝑘

Parameters
xs [list[float]] Liquid mole fractions of each species, [-]
params [list[list[float]]] Dimensionless interaction parameters of each compound with each
other, [-]
Returns
gammas [list[float]] Activity coefficient for each species in the liquid mixture, [-]

1.1.1.2.18 Notes

This model needs N^2 parameters.


The original model correlated the interaction parameters using the standard pure-component molar volumes of
each species at 25°C, in the following form:
(︂ )︂
𝑉𝑗 −𝜆𝑖,𝑗
Λ𝑖𝑗 = exp
𝑉𝑖 𝑅𝑇
However, that form has less flexibility and offered no advantage over using only regressed parameters.
Most correlations for the interaction parameters include some of the terms shown in the following form:
𝑏𝑖𝑗 𝑒𝑖𝑗
ln Λ𝑖𝑗 = 𝑎𝑖𝑗 + + 𝑐𝑖𝑗 ln 𝑇 + 𝑑𝑖𝑗 𝑇 + 2 + ℎ𝑖𝑗 𝑇 2
𝑇 𝑇
The Wilson model is not applicable to liquid-liquid systems.

1.1. thermo package 13


thermo Documentation, Release 0.1

1.1.1.2.19 References

[1], [2]

1.1.1.2.20 Examples

Ethanol-water example, at 343.15 K and 1 MPa:


>>> Wilson([0.252, 0.748], [[1, 0.154], [0.888, 1]])
[1.8814926087178843, 1.1655774931125487]

thermo.activity.UNIQUAC(xs, rs, qs, taus)


Calculates the activity coefficients of each species in a mixture using the Universal quasi-chemical (UNIQUAC)
equation, given their mole fractions, rs, qs, and dimensionless interaction parameters. The interaction parame-
ters are normally correlated with temperature, and need to be calculated separately.
⎛ ⎞
𝑁 𝑁 𝑁
Φ𝑖 𝑧 𝜃𝑖 Φ𝑖 ∑︁ ∑︁ ∑︁ 𝜃𝑗 𝜏𝑖𝑗
ln 𝛾𝑖 = ln + 𝑞𝑖 ln + 𝑙𝑖 − 𝑥𝑗 𝑙𝑗 − 𝑞𝑖 ln ⎝ 𝜃𝑗 𝜏𝑗𝑖 ⎠ + 𝑞𝑖 − 𝑞𝑖 ∑︀𝑁
𝑥𝑖 2 Φ𝑖 𝑥𝑖 𝑗 𝑗 𝑗 𝑘 𝜃𝑘 𝜏𝑘𝑗
𝑥𝑖 𝑞𝑖
𝜃𝑖 = 𝑛
∑︁
𝑥𝑗 𝑞𝑗
𝑗=1
𝑥𝑖 𝑟𝑖
Φ𝑖 = 𝑛
∑︁
𝑥𝑗 𝑟𝑗
𝑗=1
𝑧
𝑙𝑖 = (𝑟𝑖 − 𝑞𝑖 ) − (𝑟𝑖 − 1)
2
Parameters
xs [list[float]] Liquid mole fractions of each species, [-]
rs [list[float]] Van der Waals volume parameters for each species, [-]
qs [list[float]] Surface area parameters for each species, [-]
taus [list[list[float]]] Dimensionless interaction parameters of each compound with each other,
[-]
Returns
gammas [list[float]] Activity coefficient for each species in the liquid mixture, [-]

1.1.1.2.21 Notes

This model needs N^2 parameters.


The original expression for the interaction parameters is as follows:
(︂ )︂
−∆𝑢𝑖𝑗
𝜏𝑗𝑖 = exp
𝑅𝑇
However, it is seldom used. Most correlations for the interaction parameters include some of the terms shown
in the following form:
𝑏𝑖𝑗 𝑒𝑖𝑗
ln 𝜏 𝑖𝑗 = 𝑎𝑖𝑗 + + 𝑐𝑖𝑗 ln 𝑇 + 𝑑𝑖𝑗 𝑇 + 2
𝑇 𝑇

14 Chapter 1. thermo
thermo Documentation, Release 0.1

This model is recast in a slightly more computationally efficient way in [2], as shown below:

ln 𝛾𝑖 = ln 𝛾𝑖𝑟𝑒𝑠 + ln 𝛾𝑖𝑐𝑜𝑚𝑏
⎛ ∑︀𝑁 ⎞
𝑟𝑒𝑠 𝑗 𝑞𝑗 𝑥𝑗 𝜏𝑗𝑖 ∑︁ 𝑞𝑘 𝑥𝑗 𝜏𝑖𝑗
ln 𝛾𝑖 = 𝑞𝑖 ⎝1 − ln ∑︀𝑁 − ∑︀ ⎠
𝑗 𝑞 𝑗 𝑥𝑗 𝑗 𝑘 𝑞𝑘 𝑥𝑘 𝜏𝑘𝑗
(︂ )︂
𝑐𝑜𝑚𝑏 𝑧 𝑉𝑖 𝑉𝑖
ln 𝛾𝑖 = (1 − 𝑉𝑖 + ln 𝑉𝑖 ) − 𝑞𝑖 1 − + ln
2 𝐹𝑖 𝐹𝑖
𝑟𝑖
𝑉𝑖 = ∑︀𝑁
𝑗 𝑟𝑗 𝑥𝑗
𝑞𝑖
𝐹𝑖 = ∑︀
𝑗 𝑞𝑗 𝑥𝑗

1.1.1.2.22 References

[1], [2], [3]

1.1.1.2.23 Examples

Ethanol-water example, at 343.15 K and 1 MPa:

>>> UNIQUAC(xs=[0.252, 0.748], rs=[2.1055, 0.9200], qs=[1.972, 1.400],


... taus=[[1.0, 1.0919744384510301], [0.37452902779205477, 1.0]])
[2.35875137797083, 1.2442093415968987]

thermo.activity.flash(P, zs, Psats)


thermo.activity.dew_at_T(zs, Psats, fugacities=None, gammas=None)

>>> dew_at_T([0.5, 0.5], [1400, 7000])


2333.3333333333335
>>> dew_at_T([0.5, 0.5], [1400, 7000], gammas=[1.1, .75])
2381.443298969072
>>> dew_at_T([0.5, 0.5], [1400, 7000], gammas=[1.1, .75], fugacities=[.995, 0.98])
2401.621874512658

thermo.activity.bubble_at_T(zs, Psats, fugacities=None, gammas=None)

>>> bubble_at_T([0.5, 0.5], [1400, 7000])


4200.0
>>> bubble_at_T([0.5, 0.5], [1400, 7000], gammas=[1.1, .75])
3395.0
>>> bubble_at_T([0.5, 0.5], [1400, 7000], gammas=[1.1, .75], fugacities=[.995, 0.
˓→98])

3452.440775305097

thermo.activity.identify_phase(T, P, Tm=None, Tb=None, Tc=None, Psat=None)


Determines the phase of a one-species chemical system according to basic rules, using whatever information is
available. Considers only the phases liquid, solid, and gas; does not consider two-phase scenarios, as should
occurs between phase boundaries.
• If the melting temperature is known and the temperature is under or equal to it, consider it a solid.

1.1. thermo package 15


thermo Documentation, Release 0.1

• If the critical temperature is known and the temperature is greater or equal to it, consider it a gas.
• If the vapor pressure at T is known and the pressure is under or equal to it, consider it a gas. If the pressure
is greater than the vapor pressure, consider it a liquid.
• If the melting temperature, critical temperature, and vapor pressure are not known, attempt to use the
boiling point to provide phase information. If the pressure is between 90 kPa and 110 kPa (approximately
normal), consider it a liquid if it is under the boiling temperature and a gas if above the boiling temperature.
• If the pressure is above 110 kPa and the boiling temperature is known, consider it a liquid if the temperature
is under the boiling temperature.
• Return None otherwise.

Parameters
T [float] Temperature, [K]
P [float] Pressure, [Pa]
Tm [float, optional] Normal melting temperature, [K]
Tb [float, optional] Normal boiling point, [K]
Tc [float, optional] Critical temperature, [K]
Psat [float, optional] Vapor pressure of the fluid at T, [Pa]
Returns
phase [str] Either ‘s’, ‘l’, ‘g’, or None if the phase cannot be determined

1.1.1.2.24 Notes

No special attential is paid to any phase transition. For the case where the melting point is not provided, the
possibility of the fluid being solid is simply ignored.

1.1.1.2.25 Examples

>>> identify_phase(T=280, P=101325, Tm=273.15, Psat=991)


'l'

thermo.activity.identify_phase_mixture(T=None, P=None, zs=None, Tcs=None, Pcs=None,


Psats=None, CASRNs=None, AvailableMeth-
ods=False, Method=None)

>>> identify_phase_mixture(T=280, P=5000., zs=[0.5, 0.5], Psats=[1400, 7000])


('l', [0.5, 0.5], None, 0)
>>> identify_phase_mixture(T=280, P=3000., zs=[0.5, 0.5], Psats=[1400, 7000])
('two-phase', [0.7142857142857143, 0.2857142857142857], [0.33333333333333337, 0.
˓→6666666666666666], 0.5625000000000001)

>>> identify_phase_mixture(T=280, P=800., zs=[0.5, 0.5], Psats=[1400, 7000])


('g', None, [0.5, 0.5], 1)
>>> identify_phase_mixture(T=280, P=800., zs=[0.5, 0.5])
(None, None, None, None)

thermo.activity.Pbubble_mixture(T=None, zs=None, Psats=None, CASRNs=None, Avail-


ableMethods=False, Method=None)

16 Chapter 1. thermo
thermo Documentation, Release 0.1

>>> Pbubble_mixture(zs=[0.5, 0.5], Psats=[1400, 7000])


4200.0

thermo.activity.bubble_at_P(P, zs, vapor_pressure_eqns, fugacities=None, gammas=None)


Calculates bubble point for a given pressure
Parameters
P [float] Pressure, [Pa]
zs [list[float]] Overall mole fractions of all species, [-]
vapor_pressure_eqns [list[functions]] Temperature dependent function for each specie, Re-
turns Psat, [Pa]
fugacities [list[float], optional] fugacities of each species, defaults to list of ones, [-]
gammas [list[float], optional] gammas of each species, defaults to list of ones, [-]
Returns
Tbubble [float, optional] Temperature of bubble point at pressure P, [K]
thermo.activity.Pdew_mixture(T=None, zs=None, Psats=None, CASRNs=None, AvailableMeth-
ods=False, Method=None)

>>> Pdew_mixture(zs=[0.5, 0.5], Psats=[1400, 7000])


2333.3333333333335

1.1.1.3 thermo.chemical module

class thermo.chemical.Chemical(ID, T=298.15, P=101325)


Bases: object
Creates a Chemical object which contains basic information such as molecular weight and the structure of the
species, as well as thermodynamic and transport properties as a function of temperature and pressure.
Parameters
ID [str]
One of the following [-]:
• Name, in IUPAC form or common form or a synonym registered in PubChem
• InChI name, prefixed by ‘InChI=1S/’ or ‘InChI=1/’
• InChI key, prefixed by ‘InChIKey=’
• PubChem CID, prefixed by ‘PubChem=’
• SMILES (prefix with ‘SMILES=’ to ensure smiles parsing)
• CAS number
T [float, optional] Temperature of the chemical (default 298.15 K), [K]
P [float, optional] Pressure of the chemical (default 101325 Pa) [Pa]

1.1. thermo package 17


thermo Documentation, Release 0.1

1.1.1.3.1 Examples

Creating chemical objects:

>>> Chemical('hexane')
<Chemical [hexane], T=298.15 K, P=101325 Pa>

>>> Chemical('CCCCCCCC', T=500, P=1E7)


<Chemical [octane], T=500.00 K, P=10000000 Pa>

>>> Chemical('7440-36-0', P=1000)


<Chemical [antimony], T=298.15 K, P=1000 Pa>

Getting basic properties:

>>> N2 = Chemical('Nitrogen')
>>> N2.Tm, N2.Tb, N2.Tc # melting, boiling, and critical points [K]
(63.15, 77.355, 126.2)
>>> N2.Pt, N2.Pc # sublimation and critical pressure [Pa]
(12526.9697368421, 3394387.5)
>>> N2.CAS, N2.formula, N2.InChI, N2.smiles, N2.atoms # CAS number, formula,
˓→InChI string, smiles string, dictionary of atomic elements and their count

('7727-37-9', 'N2', 'N2/c1-2', 'N#N', {'N': 2})

Changing the T/P of the chemical, and gettign temperature-dependent properties:

>>> N2.Cp, N2.rho, N2.mu # Heat capacity [J/kg/K], density [kg/m^3], viscosity
˓→[Pa*s]

(1039.4978324480921, 1.1452416223829405, 1.7804740647270688e-05)


>>> N2.calculate(T=65, P=1E6) # set it to a liquid at 65 K and 1 MPa
>>> N2.phase
'l'
>>> N2.Cp, N2.rho, N2.mu # properties are now of the liquid phase
(1984.9709554303004, 861.3539919443364, 0.0002857739143670701)

Molar units are also available for properties:

>>> N2.Cpm, N2.Vm, N2.Hvapm # heat capacity [J/mol/K], molar volume [m^3/mol],
˓→enthalpy of vaporization [J/mol]

(55.60578536285118, 3.252251717875631e-05, 5982.710998291719)

A great deal of properties are available; for a complete list look at the attributes list.

>>> N2.alpha, N2.JT # thermal diffusivity [m^2/s], Joule-Thompson coefficient [K/


˓→Pa]

(9.963988241081473e-08, -4.0370955160282056e-07)

>>> N2.isentropic_exponent, N2.isobaric_expansion


(1.4000000000000001, 0.0047654228408661571)

For pure species, the phase is easily identified, allowing for properties to be obtained without needing to specify
the phase. However, the properties are also available in the hypothetical gas phase (when under the boiling
point) and in the hypothetical liquid phase (when above the boiling point) as these properties are needed to
evaluate mixture properties. Specify the phase of a property to be retrieved by appending ‘l’ or ‘g’ or ‘s’ to the
property.

18 Chapter 1. thermo
thermo Documentation, Release 0.1

>>> tol = Chemical('toluene')

>>> tol.rhog, tol.Cpg, tol.kg, tol.mug


(4.032009635018902, 1126.5533755283168, 0.010736843919054837, 6.973325939594919e-
˓→06)

Temperature dependent properties are calculated by objects which provide many useful features related to the
properties. To determine the temperature at which nitrogen has a saturation pressure of 1 MPa:

>>> N2.VaporPressure.solve_prop(1E6)
103.73528598652341

To compute an integral of the ideal-gas heat capacity of nitrogen to determine the enthalpy required for a given
change in temperature. Note the thermodynamic objects calculate values in molar units always.

>>> N2.HeatCapacityGas.T_dependent_property_integral(100, 120) # J/mol/K


582.0121860897898

Derivatives of properties can be calculated as well, as may be needed by for example heat transfer calculations:

>>> N2.SurfaceTension.T_dependent_property_derivative(77)
-0.00022695346296730534

If a property is needed at multiple temperatures or pressures, it is faster to use the object directly to perform the
calculation rather than setting the conditions for the chemical.

>>> [N2.VaporPressure(T) for T in range(80, 120, 10)]


[135987.2098445901, 357853.1185240415, 773372.8975626591, 1458809.6559246336]

These objects are also how the methods by which the properties are calculated can be changed. To see the
available methods for a property:

>>> N2.VaporPressure.all_methods
set(['VDI_PPDS', 'BOILING_CRITICAL', 'WAGNER_MCGARRY', 'AMBROSE_WALTON', 'COOLPROP
˓→', 'LEE_KESLER_PSAT', 'EOS', 'ANTOINE_POLING', 'SANJARI', 'DIPPR_PERRY_8E',

˓→'Edalat', 'WAGNER_POLING'])

To specify the method which should be used for calculations of a property. In the example below, the Lee-kesler
correlation for vapor pressure is specified.

>>> N2.calculate(80)
>>> N2.Psat
136979.4840843189
>>> N2.VaporPressure.set_user_methods('LEE_KESLER_PSAT')
>>> N2.Psat
134987.76815364443

For memory reduction, these objects are shared by all chemicals which are the same; new instances will use the
same specified methods.

>>> N2_2 = Chemical('nitrogen')


>>> N2_2.VaporPressure.user_methods
['LEE_KESLER_PSAT']

To disable this behavior, set thermo.chemical.caching to False.

1.1. thermo package 19


thermo Documentation, Release 0.1

>>> thermo.chemical.caching = False


>>> N2_3 = Chemical('nitrogen')
>>> N2_3.VaporPressure.user_methods
[]

Properties may also be plotted via these objects:

>>> N2.VaporPressure.plot_T_dependent_property()
>>> N2.VolumeLiquid.plot_isotherm(T=77, Pmin=1E5, Pmax=1E7)
>>> N2.VolumeLiquid.plot_isobar(P=1E6, Tmin=66, Tmax=120)
>>> N2.VolumeLiquid.plot_TP_dependent_property(Tmin=60, Tmax=100, Pmin=1E5,
˓→Pmax=1E7)

Attributes
T [float] Temperature of the chemical, [K]
P [float] Pressure of the chemical, [Pa]
phase [str] Phase of the chemical; one of ‘s’, ‘l’, ‘g’, or ‘l/g’.
ID [str] User specified string by which the chemical’s CAS was looked up.
CAS [str] The CAS number of the chemical.
PubChem [int] PubChem Compound identifier (CID) of the chemical; all chemicals are
sourced from their database. Chemicals can be looked at online at https://pubchem.ncbi.
nlm.nih.gov.
MW [float] Molecular weight of the compound, [g/mol]
formula [str] Molecular formula of the compound.
atoms [dict] dictionary of counts of individual atoms, indexed by symbol with proper capital-
ization, [-]
similarity_variable [float] Similarity variable, see thermo.elements.
similarity_variable for the definition, [mol/g]
smiles [str] Simplified molecular-input line-entry system representation of the compound.
InChI [str] IUPAC International Chemical Identifier of the compound.
InChI_Key [str] 25-character hash of the compound’s InChI.
IUPAC_name [str] Preferred IUPAC name for a compound.
synonyms [list of strings] All synonyms for the compound found in PubChem, sorted by pop-
ularity.
Tm [float] Melting temperature [K]
Tb [float] Boiling temperature [K]
Tc [float] Critical temperature [K]
Pc [float] Critical pressure [Pa]
Vc [float] Critical volume [m^3/mol]
Zc [float] Critical compressibility [-]
rhoc [float] Critical density [kg/m^3]
rhocm [float] Critical molar density [mol/m^3]

20 Chapter 1. thermo
thermo Documentation, Release 0.1

omega [float] Acentric factor [-]


StielPolar [float] Stiel Polar factor, see thermo.acentric.StielPolar for the defini-
tion [-]
Tt [float] Triple temperature, [K]
Pt [float] Triple pressure, [Pa]
Hfus [float] Enthalpy of fusion [J/kg]
Hfusm [float] Molar enthalpy of fusion [J/mol]
Hsub [float] Enthalpy of sublimation [J/kg]
Hsubm [float] Molar enthalpy of sublimation [J/mol]
Hf [float] Enthalpy of formation [J/mol]
Hc [float] Molar enthalpy of combustion [J/mol]
Tflash [float] Flash point of the chemical, [K]
Tautoignition [float] Autoignition point of the chemical, [K]
LFL [float] Lower flammability limit of the gas in an atmosphere at STP, mole fraction [-]
UFL [float] Upper flammability limit of the gas in an atmosphere at STP, mole fraction [-]
TWA [tuple[quantity, unit]] Time-Weighted Average limit on worker exposure to dangerous
chemicals.
STEL [tuple[quantity, unit]] Short-term Exposure limit on worker exposure to dangerous chem-
icals.
Ceiling [tuple[quantity, unit]] Ceiling limits on worker exposure to dangerous chemicals.
Skin [bool] Whether or not a chemical can be absorbed through the skin.
Carcinogen [str or dict] Carcinogen status information.
dipole [float] Dipole moment in debye, [3.33564095198e-30 ampere*second^2]
Stockmayer [float] Lennard-Jones depth of potential-energy minimum over k, [K]
molecular_diameter [float] Lennard-Jones molecular diameter, [angstrom]
GWP [float] Global warming potential (default 100-year outlook) (impact/mass chemi-
cal)/(impact/mass CO2), [-]
ODP [float] Ozone Depletion potential (impact/mass chemical)/(impact/mass CFC-11), [-]
logP [float] Octanol-water partition coefficient, [-]
legal_status [str or dict] Dictionary of legal status indicators for the chemical.
economic_status [list] Dictionary of economic status indicators for the chemical.
RI [float] Refractive Index on the Na D line, [-]
RIT [float] Temperature at which refractive index reading was made
conductivity [float] Electrical conductivity of the fluid, [S/m]
conductivityT [float] Temperature at which conductivity measurement was made
VaporPressure [object] Instance of thermo.vapor_pressure.VaporPressure, with
data and methods loaded for the chemical; performs the actual calculations of vapor pressure
of the chemical.

1.1. thermo package 21


thermo Documentation, Release 0.1

EnthalpyVaporization [object] Instance of thermo.phase_change.


EnthalpyVaporization, with data and methods loaded for the chemical; performs
the actual calculations of molar enthalpy of vaporization of the chemical.
VolumeSolid [object] Instance of thermo.volume.VolumeSolid, with data and methods
loaded for the chemical; performs the actual calculations of molar volume of the solid phase
of the chemical.
VolumeLiquid [object] Instance of thermo.volume.VolumeLiquid, with data and
methods loaded for the chemical; performs the actual calculations of molar volume of the
liquid phase of the chemical.
VolumeGas [object] Instance of thermo.volume.VolumeGas, with data and methods
loaded for the chemical; performs the actual calculations of molar volume of the gas phase
of the chemical.
HeatCapacitySolid [object] Instance of thermo.heat_capacity.
HeatCapacitySolid, with data and methods loaded for the chemical; performs
the actual calculations of molar heat capacity of the solid phase of the chemical.
HeatCapacityLiquid [object] Instance of thermo.heat_capacity.
HeatCapacityLiquid, with data and methods loaded for the chemical; performs
the actual calculations of molar heat capacity of the liquid phase of the chemical.
HeatCapacityGas [object] Instance of thermo.heat_capacity.HeatCapacityGas,
with data and methods loaded for the chemical; performs the actual calculations of molar
heat capacity of the gas phase of the chemical.
ViscosityLiquid [object] Instance of thermo.viscosity.ViscosityLiquid, with
data and methods loaded for the chemical; performs the actual calculations of viscosity
of the liquid phase of the chemical.
ViscosityGas [object] Instance of thermo.viscosity.ViscosityGas, with data and
methods loaded for the chemical; performs the actual calculations of viscosity of the gas
phase of the chemical.
ThermalConductivityLiquid [object] Instance of thermo.thermal_conductivity.
ThermalConductivityLiquid, with data and methods loaded for the chemical; per-
forms the actual calculations of thermal conductivity of the liquid phase of the chemical.
ThermalConductivityGas [object] Instance of thermo.thermal_conductivity.
ThermalConductivityGas, with data and methods loaded for the chemical; performs
the actual calculations of thermal conductivity of the gas phase of the chemical.
SurfaceTension [object] Instance of thermo.interface.SurfaceTension, with data
and methods loaded for the chemical; performs the actual calculations of surface tension of
the chemical.
Permittivity [object] Instance of thermo.permittivity.Permittivity, with data
and methods loaded for the chemical; performs the actual calculations of permittivity of
the chemical.
Psat_298 [float] Vapor pressure of the chemical at 298.15 K, [Pa]
phase_STP [str] Phase of the chemical at 298.15 K and 101325 Pa; one of ‘s’, ‘l’, ‘g’, or ‘l/g’.
Vml_Tb [float] Molar volume of liquid phase at the normal boiling point [m^3/mol]
Vml_Tm [float] Molar volume of liquid phase at the melting point [m^3/mol]
Vml_STP [float] Molar volume of liquid phase at 298.15 K and 101325 Pa [m^3/mol]
Vmg_STP [float] Molar volume of gas phase at 298.15 K and 101325 Pa [m^3/mol]

22 Chapter 1. thermo
thermo Documentation, Release 0.1

Hvap_Tbm [float] Molar enthalpy of vaporization at the normal boiling point [J/mol]
Hvap_Tb [float] Mass enthalpy of vaporization at the normal boiling point [J/kg]
alpha Thermal diffusivity of the chemical at its current temperature, pressure, and phase in
units of [m^2/s].
alphag Thermal diffusivity of the gas phase of the chemical at its current temperature and
pressure, in units of [m^2/s].
alphal Thermal diffusivity of the liquid phase of the chemical at its current temperature and
pressure, in units of [m^2/s].
API API gravity of the liquid phase of the chemical, [degrees].
aromatic_rings Number of aromatic rings in a chemical, computed with RDKit from a
chemical’s SMILES.
atom_fractions Dictionary of atom:fractional occurence of the elements in a chemical.
Bvirial Second virial coefficient of the gas phase of the chemical at its current temperature
and pressure, in units of [mol/m^3].
charge Charge of a chemical, computed with RDKit from a chemical’s SMILES.
Cp Mass heat capacity of the chemical at its current phase and temperature, in units of [J/kg/K].
Cpg Gas-phase heat capacity of the chemical at its current temperature, in units of [J/kg/K].
Cpgm Gas-phase ideal gas heat capacity of the chemical at its current temperature, in units of
[J/mol/K].
Cpl Liquid-phase heat capacity of the chemical at its current temperature, in units of [J/kg/K].
Cplm Liquid-phase heat capacity of the chemical at its current temperature, in units of
[J/mol/K].
Cpm Molar heat capacity of the chemical at its current phase and temperature, in units of
[J/mol/K].
Cps Solid-phase heat capacity of the chemical at its current temperature, in units of [J/kg/K].
Cpsm Solid-phase heat capacity of the chemical at its current temperature, in units of [J/mol/K].
Cvg Gas-phase ideal-gas contant-volume heat capacity of the chemical at its current tempera-
ture, in units of [J/kg/K].
Cvgm Gas-phase ideal-gas contant-volume heat capacity of the chemical at its current temper-
ature, in units of [J/mol/K].
eos Equation of state object held by the chemical; used to calculate excess thermodynamic
quantities, and also provides a vapor pressure curve, enthalpy of vaporization curve, fugac-
ity, thermodynamic partial derivatives, and more; see thermo.eos for a full listing.
Hill Hill formula of a compound.
Hvap Enthalpy of vaporization of the chemical at its current temperature, in units of [J/kg].
Hvapm Enthalpy of vaporization of the chemical at its current temperature, in units of [J/mol].
isentropic_exponent Gas-phase ideal-gas isentropic exponent of the chemical at its cur-
rent temperature, [dimensionless].
isobaric_expansion Isobaric (constant-pressure) expansion of the chemical at its current
phase and temperature, in units of [1/K].

1.1. thermo package 23


thermo Documentation, Release 0.1

isobaric_expansion_g Isobaric (constant-pressure) expansion of the gas phase of the


chemical at its current temperature and pressure, in units of [1/K].
isobaric_expansion_l Isobaric (constant-pressure) expansion of the liquid phase of the
chemical at its current temperature and pressure, in units of [1/K].
JT Joule Thomson coefficient of the chemical at its current phase and temperature, in units of
[K/Pa].
JTg Joule Thomson coefficient of the chemical in the gas phase at its current temperature and
pressure, in units of [K/Pa].
JTl Joule Thomson coefficient of the chemical in the liquid phase at its current temperature
and pressure, in units of [K/Pa].
k Thermal conductivity of the chemical at its current phase, temperature, and pressure in units
of [W/m/K].
kg Thermal conductivity of the chemical in the gas phase at its current temperature and pres-
sure, in units of [W/m/K].
kl Thermal conductivity of the chemical in the liquid phase at its current temperature and
pressure, in units of [W/m/K].
mass_fractions Dictionary of atom:mass-weighted fractional occurence of elements.
mu Viscosity of the chemical at its current phase, temperature, and pressure in units of [Pa*s].
mug Viscosity of the chemical in the gas phase at its current temperature and pressure, in units
of [Pa*s].
mul Viscosity of the chemical in the liquid phase at its current temperature and pressure, in
units of [Pa*s].
nu Kinematic viscosity of the the chemical at its current temperature, pressure, and phase in
units of [m^2/s].
nug Kinematic viscosity of the gas phase of the chemical at its current temperature and pres-
sure, in units of [m^2/s].
nul Kinematic viscosity of the liquid phase of the chemical at its current temperature and
pressure, in units of [m^2/s].
Parachor Parachor of the chemical at its current temperature and pressure, in units of
[N^0.25*m^2.75/mol].
permittivity Relative permittivity (dielectric constant) of the chemical at its current tem-
perature, [dimensionless].
Poynting Poynting correction factor [dimensionless] for use in phase equilibria methods
based on activity coefficients or other reference states.
Pr Prandtl number of the chemical at its current temperature, pressure, and phase; [dimension-
less].
Prg Prandtl number of the gas phase of the chemical at its current temperature and pressure,
[dimensionless].
Prl Prandtl number of the liquid phase of the chemical at its current temperature and pressure,
[dimensionless].
Psat Vapor pressure of the chemical at its current temperature, in units of [Pa].
PSRK_groups Dictionary of PSRK subgroup: count groups for the PSRK subgroups, as de-
termined by DDBST’s online service.

24 Chapter 1. thermo
thermo Documentation, Release 0.1

rdkitmol RDKit object of the chemical, without hydrogen.


rdkitmol_Hs RDKit object of the chemical, with hydrogen.
rho Mass density of the chemical at its current phase and temperature and pressure, in units of
[kg/m^3].
rhog Gas-phase mass density of the chemical at its current temperature and pressure, in units
of [kg/m^3].
rhogm Molar density of the chemical in the gas phase at the current temperature and pressure,
in units of [mol/m^3].
rhol Liquid-phase mass density of the chemical at its current temperature and pressure, in
units of [kg/m^3].
rholm Molar density of the chemical in the liquid phase at the current temperature and pres-
sure, in units of [mol/m^3].
rhom Molar density of the chemical at its current phase and temperature and pressure, in units
of [mol/m^3].
rhos Solid-phase mass density of the chemical at its current temperature, in units of [kg/m^3].
rhosm Molar density of the chemical in the solid phase at the current temperature and pressure,
in units of [mol/m^3].
rings Number of rings in a chemical, computed with RDKit from a chemical’s SMILES.
SG Specific gravity of the chemical, [dimensionless].
SGg Specific gravity of the gas phase of the chemical, [dimensionless].
SGl Specific gravity of the liquid phase of the chemical at the specified temperature and pres-
sure, [dimensionless].
SGs Specific gravity of the solid phase of the chemical at the specified temperature and pres-
sure, [dimensionless].
sigma Surface tension of the chemical at its current temperature, in units of [N/m].
solubility_parameter Solubility parameter of the chemical at its current temperature
and pressure, in units of [Pa^0.5].
UNIFAC_Dortmund_groups Dictionary of Dortmund UNIFAC subgroup: count groups for
the Dortmund UNIFAC subgroups, as determined by DDBST’s online service.
UNIFAC_groups Dictionary of UNIFAC subgroup: count groups for the original UNIFAC
subgroups, as determined by DDBST’s online service.
UNIFAC_R UNIFAC R (normalized Van der Waals volume), dimensionless.
UNIFAC_Q UNIFAC Q (normalized Van der Waals area), dimensionless.
Van_der_Waals_area Unnormalized Van der Waals area, in units of [m^2/mol].
Van_der_Waals_volume Unnormalized Van der Waals volume, in units of [m^3/mol].
Vm Molar volume of the chemical at its current phase and temperature and pressure, in units of
[m^3/mol].
Vmg Gas-phase molar volume of the chemical at its current temperature and pressure, in units
of [mol/m^3].
Vml Liquid-phase molar volume of the chemical at its current temperature and pressure, in units
of [mol/m^3].

1.1. thermo package 25


thermo Documentation, Release 0.1

Vms Solid-phase molar volume of the chemical at its current temperature, in units of [mol/m^3].
Z Compressibility factor of the chemical at its current phase and temperature and pressure,
[dimensionless].
Zg Compressibility factor of the chemical in the gas phase at the current temperature and pres-
sure, [dimensionless].
Zl Compressibility factor of the chemical in the liquid phase at the current temperature and
pressure, [dimensionless].
Zs Compressibility factor of the chemical in the solid phase at the current temperature and
pressure, [dimensionless].

1.1.1.3.2 Methods

Reynolds([V, D])
draw_2d([width, height, Hs]) Interface for drawing a 2D image of the molecule.
draw_3d([width, height, style, Hs]) Interface for drawing an interactive 3D view of the
molecule.

Bond
Capillary
Grashof
Jakob
Peclet_heat
Tsat
Weber
calc_H
calc_H_excess
calc_S
calc_S_excess
calculate
calculate_PH
calculate_PS
calculate_TH
calculate_TS
set_TP_sources
set_constant_sources
set_constants
set_eos
set_ref
set_thermo

A
Helmholtz energy of the chemical at its current temperature and pressure, in units of [J/kg].
This property requires that thermo.chemical.set_thermo ran successfully to be accurate. It also
depends on the molar volume of the chemical at its current conditions.
API
API gravity of the liquid phase of the chemical, [degrees]. The reference condition is water at 15.6 °C (60
°F) and 1 atm (rho=999.016 kg/m^3, standardized).

26 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.3.3 Examples

>>> Chemical('water').API
9.999752435378895

Am
Helmholtz energy of the chemical at its current temperature and pressure, in units of [J/mol].
This property requires that thermo.chemical.set_thermo ran successfully to be accurate. It also
depends on the molar volume of the chemical at its current conditions.
Bond(L=None)
Bvirial
Second virial coefficient of the gas phase of the chemical at its current temperature and pressure, in units
of [mol/m^3].
This property uses the object-oriented interface thermo.volume.VolumeGas, converting its result
with thermo.utils.B_from_Z.

1.1.1.3.4 Examples

>>> Chemical('water').Bvirial
-0.0009596286322838357

Capillary(V=None)
Cp
Mass heat capacity of the chemical at its current phase and temperature, in units of [J/kg/K].
Utilizes the object oriented interfaces thermo.heat_capacity.HeatCapacitySolid,
thermo.heat_capacity.HeatCapacityLiquid, and thermo.heat_capacity.
HeatCapacityGas to perform the actual calculation of each property. Note that those interfaces
provide output in molar units (J/mol/K).

1.1.1.3.5 Examples

>>> w = Chemical('water')
>>> w.Cp, w.phase
(4180.597021827336, 'l')
>>> Chemical('palladium').Cp
234.26767209171211

Cpg
Gas-phase heat capacity of the chemical at its current temperature, in units of [J/kg/K]. For calculation
of this property at other temperatures, or specifying manually the method used to calculate it, and more
- see the object oriented interface thermo.heat_capacity.HeatCapacityGas; each Chemical
instance creates one to actually perform the calculations. Note that that interface provides output in molar
units.

1.1. thermo package 27


thermo Documentation, Release 0.1

1.1.1.3.6 Examples

>>> w = Chemical('water', T=520)


>>> w.Cpg
1967.6698314620658

Cpgm
Gas-phase ideal gas heat capacity of the chemical at its current temperature, in units of [J/mol/K]. For
calculation of this property at other temperatures, or specifying manually the method used to calculate it,
and more - see the object oriented interface thermo.heat_capacity.HeatCapacityGas; each
Chemical instance creates one to actually perform the calculations.

1.1.1.3.7 Examples

>>> Chemical('water').Cpgm
33.583577868850675
>>> Chemical('water').HeatCapacityGas.T_dependent_property(320)
33.67865044005934
>>> Chemical('water').HeatCapacityGas.T_dependent_property_integral(300, 320)
672.6480417835064

Cpl
Liquid-phase heat capacity of the chemical at its current temperature, in units of [J/kg/K]. For calculation of
this property at other temperatures, or specifying manually the method used to calculate it, and more - see
the object oriented interface thermo.heat_capacity.HeatCapacityLiquid; each Chemical
instance creates one to actually perform the calculations. Note that that interface provides output in molar
units.

1.1.1.3.8 Examples

>>> Chemical('water', T=320).Cpl


4177.518996988284

Ideal entropy change of water from 280 K to 340 K, output converted back to mass-based units of J/kg/K.

>>> dSm = Chemical('water').HeatCapacityLiquid.T_dependent_property_integral_


˓→over_T(280, 340)

>>> property_molar_to_mass(dSm, Chemical('water').MW)


812.1024585274956

Cplm
Liquid-phase heat capacity of the chemical at its current temperature, in units of [J/mol/K]. For calcula-
tion of this property at other temperatures, or specifying manually the method used to calculate it, and
more - see the object oriented interface thermo.heat_capacity.HeatCapacityLiquid; each
Chemical instance creates one to actually perform the calculations.

1.1.1.3.9 Notes

Some methods give heat capacity along the saturation line, some at 1 atm but only up to the normal boiling
point, and some give heat capacity at 1 atm up to the normal boiling point and then along the saturation
line. Real-liquid heat capacity is pressure dependent, but this interface is not.

28 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.3.10 Examples

>>> Chemical('water').Cplm
75.31462591538556
>>> Chemical('water').HeatCapacityLiquid.T_dependent_property(320)
75.2591744360631
>>> Chemical('water').HeatCapacityLiquid.T_dependent_property_integral(300,
˓→320)

1505.0619005000553

Cpm
Molar heat capacity of the chemical at its current phase and temperature, in units of [J/mol/K].
Utilizes the object oriented interfaces thermo.heat_capacity.HeatCapacitySolid,
thermo.heat_capacity.HeatCapacityLiquid, and thermo.heat_capacity.
HeatCapacityGas to perform the actual calculation of each property.

1.1.1.3.11 Examples

>>> Chemical('cubane').Cpm
137.05489206785944
>>> Chemical('ethylbenzene', T=550, P=3E6).Cpm
294.18449553310046

Cps
Solid-phase heat capacity of the chemical at its current temperature, in units of [J/kg/K]. For calculation
of this property at other temperatures, or specifying manually the method used to calculate it, and more -
see the object oriented interface thermo.heat_capacity.HeatCapacitySolid; each Chemical
instance creates one to actually perform the calculations. Note that that interface provides output in molar
units.

1.1.1.3.12 Examples

>>> Chemical('palladium', T=400).Cps


241.63563239992484
>>> Pd = Chemical('palladium', T=400)
>>> Cpsms = [Pd.HeatCapacitySolid.T_dependent_property(T) for T in np.
˓→linspace(300,500, 5)]

>>> [property_molar_to_mass(Cps, Pd.MW) for Cps in Cpsms]


[234.40150347679008, 238.01856793835751, 241.63563239992484, 245.
˓→25269686149224, 248.86976132305958]

Cpsm
Solid-phase heat capacity of the chemical at its current temperature, in units of [J/mol/K]. For calculation
of this property at other temperatures, or specifying manually the method used to calculate it, and more -
see the object oriented interface thermo.heat_capacity.HeatCapacitySolid; each Chemical
instance creates one to actually perform the calculations.

1.1.1.3.13 Examples

1.1. thermo package 29


thermo Documentation, Release 0.1

>>> Chemical('palladium').Cpsm
24.930765664000003
>>> Chemical('palladium').HeatCapacitySolid.T_dependent_property(320)
25.098979200000002
>>> Chemical('palladium').HeatCapacitySolid.all_methods
set(["Perry's Table 2-151", 'CRC Standard Thermodynamic Properties of
˓→Chemical Substances', 'Lastovka, Fulem, Becerra and Shaw (2008)'])

Cvg
Gas-phase ideal-gas contant-volume heat capacity of the chemical at its current temperature, in units of
[J/kg/K]. Subtracts R from the ideal-gas heat capacity; does not include pressure-compensation from an
equation of state.

1.1.1.3.14 Examples

>>> w = Chemical('water', T=520)


>>> w.Cvg
1506.1471795798861

Cvgm
Gas-phase ideal-gas contant-volume heat capacity of the chemical at its current temperature, in units of
[J/mol/K]. Subtracts R from the ideal-gas heat capacity; does not include pressure-compensation from an
equation of state.

1.1.1.3.15 Examples

>>> w = Chemical('water', T=520)


>>> w.Cvgm
27.13366316134193

Grashof(Tw=None, L=None)
Hill
Hill formula of a compound. For a description of the Hill system, see thermo.elements.
atoms_to_Hill.

1.1.1.3.16 Examples

>>> Chemical('furfuryl alcohol').Hill


'C5H6O2'

Hvap
Enthalpy of vaporization of the chemical at its current temperature, in units of [J/kg].
This property uses the object-oriented interface thermo.phase_change.
EnthalpyVaporization, but converts its results from molar to mass units.

1.1.1.3.17 Examples

30 Chapter 1. thermo
thermo Documentation, Release 0.1

>>> Chemical('water', T=320).Hvap


2389540.219347256

Hvapm
Enthalpy of vaporization of the chemical at its current temperature, in units of [J/mol]. For calculation of
this property at other temperatures, or specifying manually the method used to calculate it, and more - see
the object oriented interface thermo.phase_change.EnthalpyVaporization; each Chemical
instance creates one to actually perform the calculations.

1.1.1.3.18 Examples

>>> Chemical('water', T=320).Hvapm


43048.23612280223
>>> Chemical('water').EnthalpyVaporization.T_dependent_property(320)
43048.23612280223
>>> Chemical('water').EnthalpyVaporization.all_methods
set(['VDI_PPDS', 'MORGAN_KOBAYASHI', 'VETERE', 'VELASCO', 'LIU', 'COOLPROP',
˓→'CRC_HVAP_298', 'CLAPEYRON', 'SIVARAMAN_MAGEE_KOBAYASHI', 'ALIBAKHSHI',

˓→'DIPPR_PERRY_8E', 'RIEDEL', 'CHEN', 'PITZER', 'CRC_HVAP_TB'])

JT
Joule Thomson coefficient of the chemical at its current phase and temperature, in units of [K/Pa].
(︂ )︂ [︂ (︂ )︂ ]︂
𝜕𝑇 1 𝜕𝑉 𝑉
𝜇𝐽𝑇 = = 𝑇 −𝑉 = (𝛽𝑇 − 1)
𝜕𝑃 𝐻 𝐶𝑝 𝜕𝑇 𝑃 𝐶𝑝

1.1.1.3.19 Examples

>>> Chemical('water').JT
-2.2150394958666407e-07

JTg
Joule Thomson coefficient of the chemical in the gas phase at its current temperature and pressure, in units
of [K/Pa].
(︂ )︂ [︂ (︂ )︂ ]︂
𝜕𝑇 1 𝜕𝑉 𝑉
𝜇𝐽𝑇 = = 𝑇 −𝑉 = (𝛽𝑇 − 1)
𝜕𝑃 𝐻 𝐶𝑝 𝜕𝑇 𝑃 𝐶𝑝
Utilizes the temperature-derivative method of thermo.volume.VolumeGas and the temperature-
dependent heat capacity method thermo.heat_capacity.HeatCapacityGas to obtain the prop-
erties required for the actual calculation.

1.1.1.3.20 Examples

>>> Chemical('dodecane', T=400, P=1000).JTg


5.4089897835384913e-05

JTl
Joule Thomson coefficient of the chemical in the liquid phase at its current temperature and pressure, in
units of [K/Pa].
(︂ )︂ [︂ (︂ )︂ ]︂
𝜕𝑇 1 𝜕𝑉 𝑉
𝜇𝐽𝑇 = = 𝑇 −𝑉 = (𝛽𝑇 − 1)
𝜕𝑃 𝐻 𝐶𝑝 𝜕𝑇 𝑃 𝐶𝑝

1.1. thermo package 31


thermo Documentation, Release 0.1

Utilizes the temperature-derivative method of thermo.volume.VolumeLiquid and the temperature-


dependent heat capacity method thermo.heat_capacity.HeatCapacityLiquid to obtain the
properties required for the actual calculation.

1.1.1.3.21 Examples

>>> Chemical('dodecane', T=400).JTl


-3.1037120844444807e-07

Jakob(Tw=None)
PSRK_groups
Dictionary of PSRK subgroup: count groups for the PSRK subgroups, as determined by DDBST’s online
service.

1.1.1.3.22 Examples

>>> pprint(Chemical('Cumene').PSRK_groups)
{1: 2, 9: 5, 13: 1}

Parachor
Parachor of the chemical at its current temperature and pressure, in units of [N^0.25*m^2.75/mol].
𝜎 0.25 𝑀 𝑊
𝑃 =
𝜌𝐿 − 𝜌𝑉
Calculated based on surface tension, density of the liquid and gas phase, and molecular weight. For uses
of this property, see thermo.utils.Parachor.

1.1.1.3.23 Examples

>>> Chemical('octane').Parachor
6.291693072841486e-05

Peclet_heat(V=None, D=None)
Poynting
Poynting correction factor [dimensionless] for use in phase equilibria methods based on activity coeffi-
cients or other reference states. Performs the shortcut calculation assuming molar volume is independent
of pressure.
𝑉𝑙 (𝑃 − 𝑃 𝑠𝑎𝑡 )
[︂ ]︂
Poy = exp
𝑅𝑇
The full calculation normally returns values very close to the approximate ones. This property is defined
in terms of pure components only.

1.1.1.3.24 Notes

The full equation shown below can be used as follows:


⎡ ∫︀ 𝑃 ⎤
𝑃𝑖𝑠𝑎𝑡
𝑉𝑖𝑙 𝑑𝑃
Poy = exp ⎣ ⎦
𝑅𝑇

32 Chapter 1. thermo
thermo Documentation, Release 0.1

>>> from scipy.integrate import quad


>>> c = Chemical('pentane', T=300, P=1E7)
>>> exp(quad(lambda P : c.VolumeLiquid(c.T, P), c.Psat, c.P)[0]/R/c.T)
1.5821826990975127

1.1.1.3.25 Examples

>>> Chemical('pentane', T=300, P=1E7).Poynting


1.5743051250679803

Pr
Prandtl number of the chemical at its current temperature, pressure, and phase; [dimensionless].
𝐶𝑝 𝜇
𝑃𝑟 =
𝑘

1.1.1.3.26 Examples

>>> Chemical('acetone').Pr
4.450368847076066

Prg
Prandtl number of the gas phase of the chemical at its current temperature and pressure, [dimensionless].
𝐶𝑝 𝜇
𝑃𝑟 =
𝑘
Utilizes the temperature and pressure dependent object oriented interfaces thermo.viscosity.
ViscosityGas, thermo.thermal_conductivity.ThermalConductivityGas, and
thermo.heat_capacity.HeatCapacityGas to calculate the actual properties.

1.1.1.3.27 Examples

>>> Chemical('NH3').Prg
0.847263731933008

Prl
Prandtl number of the liquid phase of the chemical at its current temperature and pressure, [dimensionless].
𝐶𝑝 𝜇
𝑃𝑟 =
𝑘
Utilizes the temperature and pressure dependent object oriented interfaces thermo.viscosity.
ViscosityLiquid, thermo.thermal_conductivity.ThermalConductivityLiquid,
and thermo.heat_capacity.HeatCapacityLiquid to calculate the actual properties.

1.1.1.3.28 Examples

>>> Chemical('nitrogen', T=70).Prl


2.7655015690791696

1.1. thermo package 33


thermo Documentation, Release 0.1

Psat
Vapor pressure of the chemical at its current temperature, in units of [Pa]. For calculation of this property
at other temperatures, or specifying manually the method used to calculate it, and more - see the object ori-
ented interface thermo.vapor_pressure.VaporPressure; each Chemical instance creates one
to actually perform the calculations.

1.1.1.3.29 Examples

>>> Chemical('water', T=320).Psat


10533.614271198725
>>> Chemical('water').VaporPressure.T_dependent_property(320)
10533.614271198725
>>> Chemical('water').VaporPressure.all_methods
set(['VDI_PPDS', 'BOILING_CRITICAL', 'WAGNER_MCGARRY', 'AMBROSE_WALTON',
˓→'COOLPROP', 'LEE_KESLER_PSAT', 'EOS', 'ANTOINE_POLING', 'SANJARI', 'DIPPR_

˓→PERRY_8E', 'Edalat'])

R_specific
Specific gas constant, in units of [J/kg/K].

1.1.1.3.30 Examples

>>> Chemical('water').R_specific
461.52265188218

Reynolds(V=None, D=None)
SG
Specific gravity of the chemical, [dimensionless].
For gas-phase conditions, this is calculated at 15.6 °C (60 °F) and 1 atm for the chemical and the reference
fluid, air. For liquid and solid phase conditions, this is calculated based on a reference fluid of water at 4°C
at 1 atm, but the with the liquid or solid chemical’s density at the currently specified conditions.

1.1.1.3.31 Examples

>>> Chemical('MTBE').SG
0.7428160596603596

SGg
Specific gravity of the gas phase of the chemical, [dimensionless]. The reference condition is air at 15.6
°C (60 °F) and 1 atm (rho=1.223 kg/m^3). The definition for gases uses the compressibility factor of the
reference gas and the chemical both at the reference conditions, not the conditions of the chemical.

1.1.1.3.32 Examples

>>> Chemical('argon').SGg
1.3795835970877504

34 Chapter 1. thermo
thermo Documentation, Release 0.1

SGl
Specific gravity of the liquid phase of the chemical at the specified temperature and pressure, [dimension-
less]. The reference condition is water at 4 °C and 1 atm (rho=999.017 kg/m^3). For liquids, SG is defined
that the reference chemical’s T and P are fixed, but the chemical itself varies with the specified T and P.

1.1.1.3.33 Examples

>>> Chemical('water', T=365).SGl


0.9650065522428539

SGs
Specific gravity of the solid phase of the chemical at the specified temperature and pressure, [dimension-
less]. The reference condition is water at 4 °C and 1 atm (rho=999.017 kg/m^3). The SG varries with
temperature and pressure but only very slightly.

1.1.1.3.34 Examples

>>> Chemical('iron').SGs
7.87774317235069

Tsat(P)
U
Internal energy of the chemical at its current temperature and pressure, in units of [J/kg].
This property requires that thermo.chemical.set_thermo ran successfully to be accurate. It also
depends on the molar volume of the chemical at its current conditions.
UNIFAC_Dortmund_groups
Dictionary of Dortmund UNIFAC subgroup: count groups for the Dortmund UNIFAC subgroups, as de-
termined by DDBST’s online service.

1.1.1.3.35 Examples

>>> pprint(Chemical('Cumene').UNIFAC_Dortmund_groups)
{1: 2, 9: 5, 13: 1}

UNIFAC_Q
UNIFAC Q (normalized Van der Waals area), dimensionless. Used in the UNIFAC model.

1.1.1.3.36 Examples

>>> Chemical('decane').UNIFAC_Q
6.016

UNIFAC_R
UNIFAC R (normalized Van der Waals volume), dimensionless. Used in the UNIFAC model.

1.1. thermo package 35


thermo Documentation, Release 0.1

1.1.1.3.37 Examples

>>> Chemical('benzene').UNIFAC_R
3.1878

UNIFAC_groups
Dictionary of UNIFAC subgroup: count groups for the original UNIFAC subgroups, as determined by
DDBST’s online service.

1.1.1.3.38 Examples

>>> pprint(Chemical('Cumene').UNIFAC_groups)
{1: 2, 9: 5, 13: 1}

Um
Internal energy of the chemical at its current temperature and pressure, in units of [J/mol].
This property requires that thermo.chemical.set_thermo ran successfully to be accurate. It also
depends on the molar volume of the chemical at its current conditions.
Van_der_Waals_area
Unnormalized Van der Waals area, in units of [m^2/mol].

1.1.1.3.39 Examples

>>> Chemical('hexane').Van_der_Waals_area
964000.0

Van_der_Waals_volume
Unnormalized Van der Waals volume, in units of [m^3/mol].

1.1.1.3.40 Examples

>>> Chemical('hexane').Van_der_Waals_volume
6.8261966e-05

Vm
Molar volume of the chemical at its current phase and temperature and pressure, in units of [m^3/mol].
Utilizes the object oriented interfaces thermo.volume.VolumeSolid, thermo.volume.
VolumeLiquid, and thermo.volume.VolumeGas to perform the actual calculation of each prop-
erty.

1.1.1.3.41 Examples

>>> Chemical('ethylbenzene', T=550, P=3E6).Vm


0.00017758024401627633

Vmg
Gas-phase molar volume of the chemical at its current temperature and pressure, in units of [mol/m^3]. For

36 Chapter 1. thermo
thermo Documentation, Release 0.1

calculation of this property at other temperatures or pressures, or specifying manually the method used to
calculate it, and more - see the object oriented interface thermo.volume.VolumeGas; each Chemical
instance creates one to actually perform the calculations.

1.1.1.3.42 Examples

Estimate the molar volume of the core of the sun, at 15 million K and 26.5 PetaPascals, assuming pure
helium (actually 68% helium):

>>> Chemical('helium', T=15E6, P=26.5E15).Vmg


4.805464238181197e-07

Vml
Liquid-phase molar volume of the chemical at its current temperature and pressure, in units of [mol/m^3].
For calculation of this property at other temperatures or pressures, or specifying manually the method used
to calculate it, and more - see the object oriented interface thermo.volume.VolumeLiquid; each
Chemical instance creates one to actually perform the calculations.

1.1.1.3.43 Examples

>>> Chemical('cyclobutane', T=225).Vml


7.42395423425395e-05

Vms
Solid-phase molar volume of the chemical at its current temperature, in units of [mol/m^3]. For calculation
of this property at other temperatures, or specifying manually the method used to calculate it, and more
- see the object oriented interface thermo.volume.VolumeSolid; each Chemical instance creates
one to actually perform the calculations.

1.1.1.3.44 Examples

>>> Chemical('iron').Vms
7.09593392630242e-06

Weber(V=None, D=None)
Z
Compressibility factor of the chemical at its current phase and temperature and pressure, [dimensionless].

1.1.1.3.45 Examples

>>> Chemical('MTBE', T=900, P=1E-2).Z


0.9999999999079768

Zg
Compressibility factor of the chemical in the gas phase at the current temperature and pressure, [dimen-
sionless].
Utilizes the object oriented interface and thermo.volume.VolumeGas to perform the actual calcula-
tion of molar volume.

1.1. thermo package 37


thermo Documentation, Release 0.1

1.1.1.3.46 Examples

>>> Chemical('sulfur hexafluoride', T=700, P=1E9).Zg


11.140084184207813

Zl
Compressibility factor of the chemical in the liquid phase at the current temperature and pressure, [dimen-
sionless].
Utilizes the object oriented interface and thermo.volume.VolumeLiquid to perform the actual cal-
culation of molar volume.

1.1.1.3.47 Examples

>>> Chemical('water').Zl
0.0007385375470263454

Zs
Compressibility factor of the chemical in the solid phase at the current temperature and pressure, [dimen-
sionless].
Utilizes the object oriented interface and thermo.volume.VolumeSolid to perform the actual cal-
culation of molar volume.

1.1.1.3.48 Examples

>>> Chemical('palladium').Z
0.00036248477437931853

absolute_permittivity
Absolute permittivity of the chemical at its current temperature, in units of [farad/meter]. Those units are
equivalent to ampere^2*second^4/kg/m^3.

1.1.1.3.49 Examples

>>> Chemical('water', T=293.15).absolute_permittivity


7.096684821859018e-10

alpha
Thermal diffusivity of the chemical at its current temperature, pressure, and phase in units of [m^2/s].

𝑘
𝛼=
𝜌𝐶𝑝

1.1.1.3.50 Examples

>>> Chemical('furfural').alpha
7.672866198927953e-08

38 Chapter 1. thermo
thermo Documentation, Release 0.1

alphag
Thermal diffusivity of the gas phase of the chemical at its current temperature and pressure, in units of
[m^2/s].
𝑘
𝛼=
𝜌𝐶𝑝
Utilizes the temperature and pressure dependent object oriented interfaces thermo.volume.
VolumeGas, thermo.thermal_conductivity.ThermalConductivityGas, and thermo.
heat_capacity.HeatCapacityGas to calculate the actual properties.

1.1.1.3.51 Examples

>>> Chemical('ammonia').alphag
1.6931865425158556e-05

alphal
Thermal diffusivity of the liquid phase of the chemical at its current temperature and pressure, in units of
[m^2/s].
𝑘
𝛼=
𝜌𝐶𝑝
Utilizes the temperature and pressure dependent object oriented interfaces thermo.volume.
VolumeLiquid, thermo.thermal_conductivity.ThermalConductivityLiquid, and
thermo.heat_capacity.HeatCapacityLiquid to calculate the actual properties.

1.1.1.3.52 Examples

>>> Chemical('nitrogen', T=70).alphal


9.504101801042264e-08

aromatic_rings
Number of aromatic rings in a chemical, computed with RDKit from a chemical’s SMILES. If RDKit is
not available, holds None.

1.1.1.3.53 Examples

>>> Chemical('Paclitaxel').aromatic_rings
3

atom_fractions
Dictionary of atom:fractional occurence of the elements in a chemical. Useful when performing element
balances. For mass-fraction occurences, see mass_fractions.

1.1.1.3.54 Examples

>>> Chemical('Ammonium aluminium sulfate').atom_fractions


{'H': 0.25, 'S': 0.125, 'Al': 0.0625, 'O': 0.5, 'N': 0.0625}

calc_H(T, P)

1.1. thermo package 39


thermo Documentation, Release 0.1

calc_H_excess(T, P)
calc_S(T, P)
calc_S_excess(T, P)
calculate(T=None, P=None)
calculate_PH(P, H)
calculate_PS(P, S)
calculate_TH(T, H)
calculate_TS(T, S)
charge
Charge of a chemical, computed with RDKit from a chemical’s SMILES. If RDKit is not available, holds
None.

1.1.1.3.55 Examples

>>> Chemical('sodium ion').charge


1

draw_2d(width=300, height=300, Hs=False)


Interface for drawing a 2D image of the molecule. Requires an HTML5 browser, and the libraries RDKit
and IPython. An exception is raised if either of these libraries is absent.
Parameters
width [int] Number of pixels wide for the view
height [int] Number of pixels tall for the view
Hs [bool] Whether or not to show hydrogen

1.1.1.3.56 Examples

>>> Chemical('decane').draw_2d()

draw_3d(width=300, height=500, style=’stick’, Hs=True)


Interface for drawing an interactive 3D view of the molecule. Requires an HTML5 browser, and the
libraries RDKit, pymol3D, and IPython. An exception is raised if all three of these libraries are absent.
Parameters
width [int] Number of pixels wide for the view
height [int] Number of pixels tall for the view
style [str] One of ‘stick’, ‘line’, ‘cross’, or ‘sphere’
Hs [bool] Whether or not to show hydrogen

1.1.1.3.57 Examples

>>> Chemical('cubane').draw_3d()

40 Chapter 1. thermo
thermo Documentation, Release 0.1

economic_status
Dictionary of economic status indicators for the chemical.

1.1.1.3.58 Examples

>>> pprint(Chemical('benzene').economic_status)
["US public: {'Manufactured': 6165232.1, 'Imported': 463146.474, 'Exported':
˓→271908.252}",

u'1,000,000 - 10,000,000 tonnes per annum',


u'Intermediate Use Only',
'OECD HPV Chemicals']

eos
Equation of state object held by the chemical; used to calculate excess thermodynamic quantities, and
also provides a vapor pressure curve, enthalpy of vaporization curve, fugacity, thermodynamic partial
derivatives, and more; see thermo.eos for a full listing.

1.1.1.3.59 Examples

>>> Chemical('methane').eos.V_g
0.024410195021818258

isentropic_exponent
Gas-phase ideal-gas isentropic exponent of the chemical at its current temperature, [dimensionless]. Does
not include pressure-compensation from an equation of state.

1.1.1.3.60 Examples

>>> Chemical('hydrogen').isentropic_exponent
1.405237786321222

isobaric_expansion
Isobaric (constant-pressure) expansion of the chemical at its current phase and temperature, in units of
[1/K].
(︂ )︂
1 𝜕𝑉
𝛽=
𝑉 𝜕𝑇 𝑃

1.1.1.3.61 Examples

Radical change in value just above and below the critical temperature of water:

>>> Chemical('water', T=647.1, P=22048320.0).isobaric_expansion


0.34074205839222449

>>> Chemical('water', T=647.2, P=22048320.0).isobaric_expansion


0.18143324022215077

1.1. thermo package 41


thermo Documentation, Release 0.1

isobaric_expansion_g
Isobaric (constant-pressure) expansion of the gas phase of the chemical at its current temperature and
pressure, in units of [1/K].
(︂ )︂
1 𝜕𝑉
𝛽=
𝑉 𝜕𝑇 𝑃

Utilizes the temperature-derivative method of thermo.VolumeGas to perform the actual calculation.


The derivatives are all numerical.

1.1.1.3.62 Examples

>>> Chemical('Hexachlorobenzene', T=900).isobaric_expansion_g


0.001151869741981048

isobaric_expansion_l
Isobaric (constant-pressure) expansion of the liquid phase of the chemical at its current temperature and
pressure, in units of [1/K].
(︂ )︂
1 𝜕𝑉
𝛽=
𝑉 𝜕𝑇 𝑃

Utilizes the temperature-derivative method of thermo.volume.VolumeLiquid to perform the actual


calculation. The derivatives are all numerical.

1.1.1.3.63 Examples

>>> Chemical('dodecane', T=400).isobaric_expansion_l


0.0011617555762469477

k
Thermal conductivity of the chemical at its current phase, temperature, and pressure in units of [W/m/K].
Utilizes the object oriented interfaces thermo.thermal_conductivity.
ThermalConductivityLiquid and thermo.thermal_conductivity.
ThermalConductivityGas to perform the actual calculation of each property.

1.1.1.3.64 Examples

>>> Chemical('ethanol', T=300).kl


0.16313594741877802
>>> Chemical('ethanol', T=400).kg
0.026019924109310026

kg
Thermal conductivity of the chemical in the gas phase at its current temperature and pressure, in units of
[W/m/K].
For calculation of this property at other temperatures and pressures, or specifying manually the method
used to calculate it, and more - see the object oriented interface thermo.thermal_conductivity.
ThermalConductivityGas; each Chemical instance creates one to actually perform the calculations.

42 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.3.65 Examples

>>> Chemical('water', T=320).kg


0.021273128263091207

kl
Thermal conductivity of the chemical in the liquid phase at its current temperature and pressure, in units
of [W/m/K].
For calculation of this property at other temperatures and pressures, or specifying manually the method
used to calculate it, and more - see the object oriented interface thermo.thermal_conductivity.
ThermalConductivityLiquid; each Chemical instance creates one to actually perform the calcu-
lations.

1.1.1.3.66 Examples

>>> Chemical('water', T=320).kl


0.6369957248212118

legal_status
Dictionary of legal status indicators for the chemical.

1.1.1.3.67 Examples

>>> pprint(Chemical('benzene').legal_status)
{'DSL': 'LISTED',
'EINECS': 'LISTED',
'NLP': 'UNLISTED',
'SPIN': 'LISTED',
'TSCA': 'LISTED'}

mass_fractions
Dictionary of atom:mass-weighted fractional occurence of elements. Useful when performing mass bal-
ances. For atom-fraction occurences, see atom_fractions.

1.1.1.3.68 Examples

>>> Chemical('water').mass_fractions
{'H': 0.11189834407236524, 'O': 0.8881016559276347}

mu
Viscosity of the chemical at its current phase, temperature, and pressure in units of [Pa*s].
Utilizes the object oriented interfaces thermo.viscosity.ViscosityLiquid and thermo.
viscosity.ViscosityGas to perform the actual calculation of each property.

1.1.1.3.69 Examples

1.1. thermo package 43


thermo Documentation, Release 0.1

>>> Chemical('ethanol', T=300).mu


0.001044526538460911
>>> Chemical('ethanol', T=400).mu
1.1853097849748217e-05

mug
Viscosity of the chemical in the gas phase at its current temperature and pressure, in units of [Pa*s].
For calculation of this property at other temperatures and pressures, or specifying manually the
method used to calculate it, and more - see the object oriented interface thermo.viscosity.
ViscosityGas; each Chemical instance creates one to actually perform the calculations.

1.1.1.3.70 Examples

>>> Chemical('water', T=320, P=100).mug


1.0431450856297212e-05

mul
Viscosity of the chemical in the liquid phase at its current temperature and pressure, in units of [Pa*s].
For calculation of this property at other temperatures and pressures, or specifying manually the
method used to calculate it, and more - see the object oriented interface thermo.viscosity.
ViscosityLiquid; each Chemical instance creates one to actually perform the calculations.

1.1.1.3.71 Examples

>>> Chemical('water', T=320).mul


0.0005767262693751547

nu
Kinematic viscosity of the the chemical at its current temperature, pressure, and phase in units of [m^2/s].
𝜇
𝜈=
𝜌

1.1.1.3.72 Examples

>>> Chemical('argon').nu
1.3846930410865003e-05

nug
Kinematic viscosity of the gas phase of the chemical at its current temperature and pressure, in units of
[m^2/s].
𝜇
𝜈=
𝜌
Utilizes the temperature and pressure dependent object oriented interfaces thermo.volume.
VolumeGas, thermo.viscosity.ViscosityGas to calculate the actual properties.

44 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.3.73 Examples

>>> Chemical('methane', T=115).nug


2.5119305527611988e-06

nul
Kinematic viscosity of the liquid phase of the chemical at its current temperature and pressure, in units of
[m^2/s].
𝜇
𝜈=
𝜌
Utilizes the temperature and pressure dependent object oriented interfaces thermo.volume.
VolumeLiquid, thermo.viscosity.ViscosityLiquid to calculate the actual properties.

1.1.1.3.74 Examples

>>> Chemical('methane', T=110).nul


2.858184674118658e-07

permittivity
Relative permittivity (dielectric constant) of the chemical at its current temperature, [dimensionless].
For calculation of this property at other temperatures, or specifying manually the method used to calcu-
late it, and more - see the object oriented interface thermo.permittivity.Permittivity; each
Chemical instance creates one to actually perform the calculations.

1.1.1.3.75 Examples

>>> Chemical('toluene', T=250).permittivity


2.49775625

rdkitmol
RDKit object of the chemical, without hydrogen. If RDKit is not available, holds None.
For examples of what can be done with RDKit, see their website.
rdkitmol_Hs
RDKit object of the chemical, with hydrogen. If RDKit is not available, holds None.
For examples of what can be done with RDKit, see their website.
rho
Mass density of the chemical at its current phase and temperature and pressure, in units of [kg/m^3].
Utilizes the object oriented interfaces thermo.volume.VolumeSolid, thermo.volume.
VolumeLiquid, and thermo.volume.VolumeGas to perform the actual calculation of each prop-
erty. Note that those interfaces provide output in units of m^3/mol.

1.1.1.3.76 Examples

>>> Chemical('decane', T=550, P=2E6).rho


498.6549441720744

1.1. thermo package 45


thermo Documentation, Release 0.1

rhog
Gas-phase mass density of the chemical at its current temperature and pressure, in units of [kg/m^3]. For
calculation of this property at other temperatures or pressures, or specifying manually the method used to
calculate it, and more - see the object oriented interface thermo.volume.VolumeGas; each Chemical
instance creates one to actually perform the calculations. Note that that interface provides output in molar
units.

1.1.1.3.77 Examples

Estimate the density of the core of the sun, at 15 million K and 26.5 PetaPascals, assuming pure helium
(actually 68% helium):

>>> Chemical('helium', T=15E6, P=26.5E15).rhog


8329.27226509739

Compared to a result on Wikipedia of 150000 kg/m^3, the fundamental equation of state performs poorly.

>>> He = Chemical('helium', T=15E6, P=26.5E15)


>>> He.VolumeGas.set_user_methods_P(['IDEAL']); He.rhog
850477.8065477367

The ideal-gas law performs somewhat better, but vastly overshoots the density prediction.
rhogm
Molar density of the chemical in the gas phase at the current temperature and pressure, in units of
[mol/m^3].
Utilizes the object oriented interface and thermo.volume.VolumeGas to perform the actual calcula-
tion of molar volume.

1.1.1.3.78 Examples

>>> Chemical('tungsten hexafluoride').rhogm


42.01349946063116

rhol
Liquid-phase mass density of the chemical at its current temperature and pressure, in units of [kg/m^3].
For calculation of this property at other temperatures and pressures, or specifying manually the method
used to calculate it, and more - see the object oriented interface thermo.volume.VolumeLiquid;
each Chemical instance creates one to actually perform the calculations. Note that that interface provides
output in molar units.

1.1.1.3.79 Examples

>>> Chemical('o-xylene', T=297).rhol


876.9946785618097

rholm
Molar density of the chemical in the liquid phase at the current temperature and pressure, in units of
[mol/m^3].
Utilizes the object oriented interface and thermo.volume.VolumeLiquid to perform the actual cal-
culation of molar volume.

46 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.3.80 Examples

>>> Chemical('nitrogen', T=70).rholm


29937.20179186975

rhom
Molar density of the chemical at its current phase and temperature and pressure, in units of [mol/m^3].
Utilizes the object oriented interfaces thermo.volume.VolumeSolid, thermo.volume.
VolumeLiquid, and thermo.volume.VolumeGas to perform the actual calculation of each prop-
erty. Note that those interfaces provide output in units of m^3/mol.

1.1.1.3.81 Examples

>>> Chemical('1-hexanol').rhom
7983.414573003429

rhos
Solid-phase mass density of the chemical at its current temperature, in units of [kg/m^3]. For calculation
of this property at other temperatures, or specifying manually the method used to calculate it, and more
- see the object oriented interface thermo.volume.VolumeSolid; each Chemical instance creates
one to actually perform the calculations. Note that that interface provides output in molar units.

1.1.1.3.82 Examples

>>> Chemical('iron').rhos
7869.999999999994

rhosm
Molar density of the chemical in the solid phase at the current temperature and pressure, in units of
[mol/m^3].
Utilizes the object oriented interface and thermo.volume.VolumeSolid to perform the actual cal-
culation of molar volume.

1.1.1.3.83 Examples

>>> Chemical('palladium').rhosm
112760.75925577903

rings
Number of rings in a chemical, computed with RDKit from a chemical’s SMILES. If RDKit is not avail-
able, holds None.

1.1.1.3.84 Examples

>>> Chemical('Paclitaxel').rings
7

set_TP_sources()

1.1. thermo package 47


thermo Documentation, Release 0.1

set_constant_sources()
set_constants()
set_eos(T, P, eos=<class ’thermo.eos.PR’>)
set_ref(T_ref=298.15, P_ref=101325, phase_ref=’calc’, H_ref=0, S_ref=0)
set_thermo()
sigma
Surface tension of the chemical at its current temperature, in units of [N/m].
For calculation of this property at other temperatures, or specifying manually the method used to calcu-
late it, and more - see the object oriented interface thermo.interface.SurfaceTension; each
Chemical instance creates one to actually perform the calculations.

1.1.1.3.85 Examples

>>> Chemical('water', T=320).sigma


0.06855002575793023
>>> Chemical('water', T=320).SurfaceTension.solve_prop(0.05)
416.8307110842183

solubility_parameter
Solubility parameter of the chemical at its current temperature and pressure, in units of [Pa^0.5].
√︂
∆𝐻𝑣𝑎𝑝 − 𝑅𝑇
𝛿=
𝑉𝑚
Calculated based on enthalpy of vaporization and molar volume. Normally calculated at STP. For uses of
this property, see thermo.solubility.solubility_parameter.

1.1.1.3.86 Examples

>>> Chemical('NH3').solubility_parameter
24766.329043856073

1.1.1.4 thermo.combustion module

thermo.combustion.Hcombustion(atoms, Hf=None, HfH2O=-285825, HfCO2=-393474, HfSO2=-


296800, HfBr2=30880, HfI2=62417, HfHCl=-92173, HfHF=-
272711, HfP4O10=-3009940, HfO2=0, HfN2=0)
Calculates the heat of combustion, in J/mol. Value non-hydrocarbons is not correct, but still calculable.
Parameters
atoms [dict] Dictionary of atoms and their counts, []
Hf [float] Heat of formation of given chemical, [J/mol]
HfH2O [float, optional] Heat of formation of water, [J/mol]
HfCO2 [float, optional] Heat of formation of carbon dioxide, [J/mol]
HfSO2 [float, optional] Heat of formation of sulfur dioxide, [J/mol]
HfBr2 [float, optional] Heat of formation of bromine, [J/mol]

48 Chapter 1. thermo
thermo Documentation, Release 0.1

HfI2 [float, optional] Heat of formation of iodine, [J/mol]


HfHCl [float, optional] Heat of formation of chlorine, [J/mol]
HfHF [float, optional] Heat of formation of hydrogen fluoride, [J/mol]
HfP4O10 [float, optional] Heat of formation of phosphorus pentoxide, [J/mol]
HfO2 [float, optional] Heat of formation of oxygen, [J/mol]
HfN2 [float, optional] Heat of formation of nitrogen, [J/mol]
Returns
Hc [float] Heat of combustion of chemical, [J/mol]

1.1.1.4.1 Notes

Default heats of formation for chemicals are at 298 K, 1 atm.

1.1.1.4.2 Examples

Liquid methanol burning

>>> Hcombustion({'H': 4, 'C': 1, 'O': 1}, Hf=-239100)


-726024.0

1.1.1.5 thermo.critical module

thermo.critical.Tc(CASRN, AvailableMethods=False, Method=None, IgnoreMethods=[’SURF’])


This function handles the retrieval of a chemical’s critical temperature. 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.
Prefered sources are ‘IUPAC’ for organic chemicals, and ‘MATTHEWS’ for inorganic chemicals. Function has
data for approximately 1000 chemicals.
Parameters
CASRN [string] CASRN [-]
Returns
Tc [float] Critical temperature, [K]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain Tc with the given inputs
Other Parameters
Method [string, optional] The method name to use. Accepted methods are ‘IUPAC’,
‘MATTHEWS’, ‘CRC’, ‘PSRK’, ‘PD’, ‘YAWS’, and ‘SURF’. All valid values are also held
in the list Tc_methods.
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain Tc for the desired chemical, and will return methods instead of Tc
IgnoreMethods [list, optional] A list of methods to ignore in obtaining the full list of methods,
useful for for performance reasons and ignoring inaccurate methods

1.1. thermo package 49


thermo Documentation, Release 0.1

1.1.1.5.1 Notes

A total of seven sources are available for this function. They are:
• ‘IUPAC Organic Critical Properties’, a series of critically evaluated experimental datum for organic com-
pounds in [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], and [12].
• ‘Matthews Inorganic Critical Properties’, a series of critically evaluated data for inorganic compounds in
[13].
• ‘CRC Organic Critical Properties’, a compillation of critically evaluated data by the TRC as published in
[14].
• ‘PSRK Revision 4 Appendix’, a compillation of experimental and estimated data published in [15].
• ‘Passut Danner 1973 Critical Properties’, an older compillation of data published in [16]
• ‘Yaws Critical Properties’, a large compillation of data from a variety of sources; no data points are sourced
in the work of [17].
• Critical Surface’, an estimation method using a simple quadratic method for estimating Tc from Pc and
Vc. This is ignored and not returned as a method by default, as no compounds have values of Pc and Vc
but not Tc currently.

1.1.1.5.2 References

[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17]

1.1.1.5.3 Examples

>>> Tc(CASRN='64-17-5')
514.0

thermo.critical.Pc(CASRN, AvailableMethods=False, Method=None, IgnoreMethods=[’SURF’])


This function handles the retrieval of a chemical’s critical pressure. Lookup is based on CASRNs. Will auto-
matically select a data source to use if no Method is provided; returns None if the data is not available.
Prefered sources are ‘IUPAC’ for organic chemicals, and ‘MATTHEWS’ for inorganic chemicals. Function has
data for approximately 1000 chemicals.
Parameters
CASRN [string] CASRN [-]
Returns
Pc [float] Critical pressure, [Pa]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain Pc with the given inputs
Other Parameters
Method [string, optional] The method name to use. Accepted methods are ‘IUPAC’,
‘MATTHEWS’, ‘CRC’, ‘PSRK’, ‘PD’, ‘YAWS’, and ‘SURF’. All valid values are also held
in the list Pc_methods.
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain Pc for the desired chemical, and will return methods instead of Pc

50 Chapter 1. thermo
thermo Documentation, Release 0.1

IgnoreMethods [list, optional] A list of methods to ignore in obtaining the full list of methods,
useful for for performance reasons and ignoring inaccurate methods

1.1.1.5.4 Notes

A total of seven sources are available for this function. They are:
• ‘IUPAC’, a series of critically evaluated experimental datum for organic compounds in [1], [2], [3], [4],
[5], [6], [7], [8], [9], [10], [11], and [12].
• ‘MATTHEWS’, a series of critically evaluated data for inorganic compounds in [13].
• ‘CRC’, a compillation of critically evaluated data by the TRC as published in [14].
• ‘PSRK’, a compillation of experimental and estimated data published in [15].
• ‘PD’, an older compillation of data published in [16]
• ‘YAWS’, a large compillation of data from a variety of sources; no data points are sourced in the work of
[17].
• SURF’, an estimation method using a simple quadratic method for estimating Pc from Tc and Vc. This is
ignored and not returned as a method by default.

1.1.1.5.5 References

[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17]

1.1.1.5.6 Examples

>>> Pc(CASRN='64-17-5')
6137000.0

thermo.critical.Vc(CASRN, AvailableMethods=False, Method=None, IgnoreMethods=[’SURF’])


This function handles the retrieval of a chemical’s critical volume. Lookup is based on CASRNs. Will automat-
ically select a data source to use if no Method is provided; returns None if the data is not available.
Prefered sources are ‘IUPAC’ for organic chemicals, and ‘MATTHEWS’ for inorganic chemicals. Function has
data for approximately 1000 chemicals.
Parameters
CASRN [string] CASRN [-]
Returns
Vc [float] Critical volume, [m^3/mol]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain Vc with the given inputs
Other Parameters
Method [string, optional] The method name to use. Accepted methods are ‘IUPAC’,
‘MATTHEWS’, ‘CRC’, ‘PSRK’, ‘YAWS’, and ‘SURF’. All valid values are also held in
the list Vc_methods.
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain Vc for the desired chemical, and will return methods instead of Vc

1.1. thermo package 51


thermo Documentation, Release 0.1

IgnoreMethods [list, optional] A list of methods to ignore in obtaining the full list of methods,
useful for for performance reasons and ignoring inaccurate methods

1.1.1.5.7 Notes

A total of six sources are available for this function. They are:
• ‘IUPAC’, a series of critically evaluated experimental datum for organic compounds in [1], [2], [3], [4],
[5], [6], [7], [8], [9], [10], [11], and [12].
• ‘MATTHEWS’, a series of critically evaluated data for inorganic compounds in [13].
• ‘CRC’, a compillation of critically evaluated data by the TRC as published in [14].
• ‘PSRK’, a compillation of experimental and estimated data published in [15].
• ‘YAWS’, a large compillation of data from a variety of sources; no data points are sourced in the work of
[16].
• ‘SURF’, an estimation method using a simple quadratic method for estimating Pc from Tc and Vc. This is
ignored and not returned as a method by default

1.1.1.5.8 References

[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16]

1.1.1.5.9 Examples

>>> Vc(CASRN='64-17-5')
0.000168

thermo.critical.Zc(CASRN, AvailableMethods=False, Method=None, IgnoreMeth-


ods=[’COMBINED’])
This function handles the retrieval of a chemical’s critical compressibility. 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.
Prefered sources are ‘IUPAC’ for organic chemicals, and ‘MATTHEWS’ for inorganic chemicals. Function has
data for approximately 1000 chemicals.
Parameters
CASRN [string] CASRN [-]
Returns
Zc [float] Critical compressibility, [-]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain Vc with the given inputs
Other Parameters
Method [string, optional] The method name to use. Accepted methods are ‘IUPAC’,
‘MATTHEWS’, ‘CRC’, ‘PSRK’, ‘YAWS’, and ‘COMBINED’. All valid values are also
held in Zc_methods.
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain Zc for the desired chemical, and will return methods instead of Zc

52 Chapter 1. thermo
thermo Documentation, Release 0.1

IgnoreMethods [list, optional] A list of methods to ignore in obtaining the full list of methods,
useful for for performance reasons and ignoring inaccurate methods

1.1.1.5.10 Notes

A total of five sources are available for this function. They are:
• ‘IUPAC’, a series of critically evaluated experimental datum for organic compounds in [1], [2], [3], [4],
[5], [6], [7], [8], [9], [10], [11], and [12].
• ‘MATTHEWS’, a series of critically evaluated data for inorganic compounds in [13].
• ‘CRC’, a compillation of critically evaluated data by the TRC as published in [14].
• ‘PSRK’, a compillation of experimental and estimated data published in [15].
• ‘YAWS’, a large compillation of data from a variety of sources; no data points are sourced in the work of
[16].

1.1.1.5.11 References

[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16]

1.1.1.5.12 Examples

>>> Zc(CASRN='64-17-5')
0.24100000000000002

thermo.critical.Mersmann_Kind_predictor(atoms, coeff=3.645, power=0.5, cova-


lent_radii={’Si’: 1.17, ’I’: 1.33, ’N’: 0.71,
’H’: 0.37, ’Br’: 1.14, ’O’: 0.6, ’Cl’: 0.99, ’S’:
1.04, ’F’: 0.71, ’C’: 0.77})
Predicts the critical molar volume of a chemical based only on its atomic composition according to [1] and [2].
This is a crude approach, but provides very reasonable estimates in practice. Optionally, the coeff used and the
power in the fraction as well as the atomic contributions can be adjusted; this method is general and atomic
contributions can be regressed to predict other properties with this routine.
(︁ )︁1/3
𝑉𝑐
𝑛𝑎 𝑁𝐴 3.645
= (︁ )︁1/2
𝑑𝑎 𝑟𝑎
𝑟𝐻

𝑟𝑎 = 𝑑𝑎 /2
∑︀
(𝑛𝑖 𝑟𝑖 )
𝑑𝑎 = 2 𝑖
𝑛𝑎
In the above equations, 𝑛𝑖 is the number of atoms of species i in the molecule, 𝑟𝑖 is the covalent atomic radius
of the atom, and 𝑛𝑎 is the total number of atoms in the molecule.
Parameters
atoms [dict] Dictionary of atoms and their counts, [-]
coeff [float, optional] Coefficient used in the relationship, [m^2]
power [float, optional] Power applied to the relative atomic radius, [-]

1.1. thermo package 53


thermo Documentation, Release 0.1

covalent_radii [dict or indexable, optional] Object which can be indexed to atomic contrinbu-
tions (by symbol), [-]
Returns
Vc [float] Predicted critical volume of the chemical, [m^3/mol]

1.1.1.5.13 Notes

Using the thermo.elements.periodic_table covalent radii (from RDKit), the coefficient and power
should be 4.261206523632586 and 0.5597281770786228 respectively for best results.

1.1.1.5.14 References

[1], [2]

1.1.1.5.15 Examples

Prediction of critical volume of decane:

>>> Mersmann_Kind_predictor({'C': 10, 'H': 22})


0.0005851859052024729

This is compared against the experimental value, 0.000624 (a 6.2% relative error)
Using custom fitted coefficients we can do a bit better:

>>> from thermo.critical import rcovs_regressed


>>> Mersmann_Kind_predictor({'C': 10, 'H': 22}, coeff=4.261206523632586,
... power=0.5597281770786228, covalent_radii=rcovs_regressed)
0.0005956871011923075

The relative error is only 4.5% now. This is compared to an experimental uncertainty of 5.6%.
Evaluating 1321 critical volumes in the database, the average relative error is 5.0%; standard deviation 6.8%;
and worst value of 79% relative error for phosphorus.
thermo.critical.third_property(CASRN=None, T=False, P=False, V=False)
Function for calculating a critical property of a substance from its other two critical properties, but retrieving
the actual other critical values for convenient calculation. Calls functions Ihmels, Meissner, and Grigoras, each
of which use a general ‘Critical surface’ type of equation. Limited accuracy is expected due to very limited
theoretical backing.
Parameters
CASRN [string] The CAS number of the desired chemical
T [bool] Estimate critical temperature
P [bool] Estimate critical pressure
V [bool] Estimate critical volume
Returns
Tc, Pc or Vc [float] Critical property of fluid [K], [Pa], or [m^3/mol]

54 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.5.16 Notes

Avoids recursion only by eliminating the None and critical surface options for calculating each critical property.
So long as it never calls itself. Note that when used by Tc, Pc or Vc, this function results in said function calling
the other functions (to determine methods) and (with method specified)

1.1.1.5.17 Examples

>>> # Decamethyltetrasiloxane [141-62-8]


>>> third_property('141-62-8', V=True)
0.0010920041152263375

>>> # Succinic acid 110-15-6


>>> third_property('110-15-6', P=True)
6095016.233766234

thermo.critical.critical_surface(Tc=None, Pc=None, Vc=None, AvailableMethods=False,


Method=None)
Function for calculating a critical property of a substance from its other two critical properties. Calls func-
tions Ihmels, Meissner, and Grigoras, each of which use a general ‘Critical surface’ type of equation. Limited
accuracy is expected due to very limited theoretical backing.
Parameters
Tc [float] Critical temperature of fluid (optional) [K]
Pc [float] Critical pressure of fluid (optional) [Pa]
Vc [float] Critical volume of fluid (optional) [m^3/mol]
AvailableMethods [bool] Request available methods for given parameters
Method [string] Request calculation uses the requested method
Returns
Tc, Pc or Vc [float] Critical property of fluid [K], [Pa], or [m^3/mol]

1.1.1.5.18 Examples

Decamethyltetrasiloxane [141-62-8]

>>> critical_surface(Tc=599.4, Pc=1.19E6, Method='IHMELS')


0.0010927333333333334

thermo.critical.Ihmels(Tc=None, Pc=None, Vc=None)


Most recent, and most recommended method of estimating critical properties from each other. Two of the three
properties are required. This model uses the “critical surface”, a general plot of Tc vs Pc vs Vc. The model used
421 organic compounds to derive equation. The general equation is in [1]:
𝑇𝑐
𝑃𝑐 = −0.025 + 2.215
𝑉𝑐
Parameters
Tc [float] Critical temperature of fluid (optional) [K]
Pc [float] Critical pressure of fluid (optional) [Pa]

1.1. thermo package 55


thermo Documentation, Release 0.1

Vc [float] Critical volume of fluid (optional) [m^3/mol]


Returns
Tc, Pc or Vc [float] Critical property of fluid [K], [Pa], or [m^3/mol]

1.1.1.5.19 Notes

The prediction of Tc from Pc and Vc is not tested, as this is not necessary anywhere, but it is implemented.
Internal units are MPa, cm^3/mol, and K. A slight error occurs when Pa, cm^3/mol and K are used instead, on
the order of <0.2%. Their equation was also compared with 56 inorganic and elements. Devations of 20% for
<200K or >1000K points.

1.1.1.5.20 References

[1]

1.1.1.5.21 Examples

Succinic acid [110-15-6]


>>> Ihmels(Tc=851.0, Vc=0.000308)
6095016.233766234

thermo.critical.Meissner(Tc=None, Pc=None, Vc=None)


Old (1942) relationship for estimating critical properties from each other. Two of the three properties are re-
quired. This model uses the “critical surface”, a general plot of Tc vs Pc vs Vc. The model used 42 organic and
inorganic compounds to derive the equation. The general equation is in [1]:
2.08𝑇𝑐
𝑃𝑐 =
𝑉𝑐 − 8
Parameters
Tc [float, optional] Critical temperature of fluid [K]
Pc [float, optional] Critical pressure of fluid [Pa]
Vc [float, optional] Critical volume of fluid [m^3/mol]
Returns
Tc, Pc or Vc [float] Critical property of fluid [K], [Pa], or [m^3/mol]

1.1.1.5.22 Notes

The prediction of Tc from Pc and Vc is not tested, as this is not necessary anywhere, but it is implemented.
Internal units are atm, cm^3/mol, and K. A slight error occurs when Pa, cm^3/mol and K are used instead, on
the order of <0.2%. This equation is less accurate than that of Ihmels, but surprisingly close. The author also
proposed means of estimated properties independently.

1.1.1.5.23 References

[1]

56 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.5.24 Examples

Succinic acid [110-15-6]

>>> Meissner(Tc=851.0, Vc=0.000308)


5978445.199999999

thermo.critical.Grigoras(Tc=None, Pc=None, Vc=None)


Relatively recent (1990) relationship for estimating critical properties from each other. Two of the three proper-
ties are required. This model uses the “critical surface”, a general plot of Tc vs Pc vs Vc. The model used 137
organic and inorganic compounds to derive the equation. The general equation is in [1]:
𝑇𝑐
𝑃𝑐 = 2.9 + 20.2
𝑉𝑐
Parameters
Tc [float] Critical temperature of fluid (optional) [K]
Pc [float] Critical pressure of fluid (optional) [Pa]
Vc [float] Critical volume of fluid (optional) [m^3/mol]
Returns
Tc, Pc or Vc [float] Critical property of fluid [K], [Pa], or [m^3/mol]

1.1.1.5.25 Notes

The prediction of Tc from Pc and Vc is not tested, as this is not necessary anywhere, but it is implemented.
Internal units are bar, cm^3/mol, and K. A slight error occurs when Pa, cm^3/mol and K are used instead, on
the order of <0.2%. This equation is less accurate than that of Ihmels, but surprisingly close. The author also
investigated an early QSPR model.

1.1.1.5.26 References

[1]

1.1.1.5.27 Examples

Succinic acid [110-15-6]

>>> Grigoras(Tc=851.0, Vc=0.000308)


5871233.766233766

thermo.critical.Li(zs, Tcs, Vcs)


Calculates critical temperature of a mixture according to mixing rules in [1]. Better than simple mixing rules.
𝑛
∑︁
𝑇𝑐𝑚 = Φ𝑖 𝑇𝑐𝑖
𝑖=1
𝑥𝑖 𝑉𝑐𝑖
Φ = ∑︀𝑛
𝑗=1 𝑥𝑗 𝑉𝑐𝑗

Parameters

1.1. thermo package 57


thermo Documentation, Release 0.1

zs [array-like] Mole fractions of all components


Tcs [array-like] Critical temperatures of all components, [K]
Vcs [array-like] Critical volumes of all components, [m^3/mol]
Returns
Tcm [float] Critical temperatures of the mixture, [K]

1.1.1.5.28 Notes

Reviewed in many papers on critical mixture temperature.


Second example is from Najafi (2015), for ethylene, Benzene, ethylbenzene. This is similar to but not identical
to the result from the article. The experimental point is 486.9 K.
2rd example is from Najafi (2015), for: butane/pentane/hexane 0.6449/0.2359/0.1192 mixture, exp: 450.22 K.
Its result is identical to that calculated in the article.

1.1.1.5.29 References

[1]

1.1.1.5.30 Examples

Nitrogen-Argon 50/50 mixture


>>> Li([0.5, 0.5], [126.2, 150.8], [8.95e-05, 7.49e-05])
137.40766423357667

butane/pentane/hexane 0.6449/0.2359/0.1192 mixture, exp: 450.22 K.


>>> Li([0.6449, 0.2359, 0.1192], [425.12, 469.7, 507.6],
... [0.000255, 0.000313, 0.000371])
449.68261498555444

thermo.critical.Chueh_Prausnitz_Tc(zs, Tcs, Vcs, taus)


Calculates critical temperature of a mixture according to mixing rules in [1].
𝑛
∑︁ 𝑛 ∑︁
∑︁ 𝑛
𝑇𝑐𝑚 = 𝜃𝑖 𝑇 𝑐𝑖 + (𝜃𝑖 𝜃𝑗 𝜏𝑖𝑗 )𝑇𝑟𝑒𝑓
𝑖 𝑖 𝑗
2/3
𝑥𝑖 𝑉
𝜃 = ∑︀𝑛 𝑐𝑖 2/3
𝑗=1 𝑥𝑗 𝑉𝑐𝑗

For a binary mxiture, this simplifies to:

𝑇𝑐𝑚 = 𝜃1 𝑇𝑐1 + 𝜃2 𝑇𝑐2 + 2𝜃1 𝜃2 𝜏12

Parameters
zs [array-like] Mole fractions of all components
Tcs [array-like] Critical temperatures of all components, [K]
Vcs [array-like] Critical volumes of all components, [m^3/mol]

58 Chapter 1. thermo
thermo Documentation, Release 0.1

taus [array-like of shape zs by zs] Interaction parameters


Returns
Tcm [float] Critical temperatures of the mixture, [K]

1.1.1.5.31 Notes

All parameters, even if zero, must be given to this function.

1.1.1.5.32 References

[1], [2]

1.1.1.5.33 Examples

butane/pentane/hexane 0.6449/0.2359/0.1192 mixture, exp: 450.22 K.

>>> Chueh_Prausnitz_Tc([0.6449, 0.2359, 0.1192], [425.12, 469.7, 507.6],


... [0.000255, 0.000313, 0.000371], [[0, 1.92681, 6.80358],
... [1.92681, 0, 1.89312], [ 6.80358, 1.89312, 0]])
450.1225764723492

thermo.critical.Grieves_Thodos(zs, Tcs, Aijs)


Calculates critical temperature of a mixture according to mixing rules in [1].
∑︁ 𝑇𝑐𝑖
𝑇𝑐𝑚 = ∑︀
𝑖
1 + (1/𝑥𝑖 ) 𝑗 𝐴𝑖𝑗 𝑥𝑗

For a binary mxiture, this simplifies to:


𝑇𝑐1 𝑇𝑐2
𝑇𝑐𝑚 = +
1 + (𝑥2 /𝑥1 )𝐴12 1 + (𝑥1 /𝑥2 )𝐴21

Parameters
zs [array-like] Mole fractions of all components
Tcs [array-like] Critical temperatures of all components, [K]
Aijs [array-like of shape zs by zs] Interaction parameters
Returns
Tcm [float] Critical temperatures of the mixture, [K]

1.1.1.5.34 Notes

All parameters, even if zero, must be given to this function. Giving 0s gives really bad results however.

1.1.1.5.35 References

[1], [2]

1.1. thermo package 59


thermo Documentation, Release 0.1

1.1.1.5.36 Examples

butane/pentane/hexane 0.6449/0.2359/0.1192 mixture, exp: 450.22 K.


>>> Grieves_Thodos([0.6449, 0.2359, 0.1192], [425.12, 469.7, 507.6], [[0, 1.2503,
˓→1.516], [0.799807, 0, 1.23843], [0.659633, 0.807474, 0]])

450.1839618758971

thermo.critical.modified_Wilson_Tc(zs, Tcs, Aijs)


Calculates critical temperature of a mixture according to mixing rules in [1]. Equation
⎛ ⎞
∑︁ ∑︁ ∑︁
𝑇𝑐𝑚 = 𝑥𝑖 𝑇𝑐𝑖 + 𝐶 𝑥𝑖 ln ⎝𝑥𝑖 + 𝑥𝑗 𝐴𝑖𝑗 ⎠ 𝑇𝑟𝑒𝑓
𝑖 𝑖 𝑗

For a binary mxiture, this simplifies to:

𝑇𝑐𝑚 = 𝑥1 𝑇𝑐1 + 𝑥2 𝑇𝑐2 + 𝐶[𝑥1 ln(𝑥1 + 𝑥2 𝐴12 ) + 𝑥2 ln(𝑥2 + 𝑥1 𝐴21 )]

Parameters
zs [float] Mole fractions of all components
Tcs [float] Critical temperatures of all components, [K]
Aijs [matrix] Interaction parameters
Returns
Tcm [float] Critical temperatures of the mixture, [K]

1.1.1.5.37 Notes

The equation and original article has been reviewed. [1] has 75 binary systems, and additional multicomponent
mixture parameters. All parameters, even if zero, must be given to this function.
2rd example is from [2], for: butane/pentane/hexane 0.6449/0.2359/0.1192 mixture, exp: 450.22 K. Its result is
identical to that calculated in the article.

1.1.1.5.38 References

[1], [2]

1.1.1.5.39 Examples

>>> modified_Wilson_Tc([0.6449, 0.2359, 0.1192], [425.12, 469.7, 507.6],


... [[0, 1.174450, 1.274390], [0.835914, 0, 1.21038],
... [0.746878, 0.80677, 0]])
450.0305966823031

thermo.critical.Tc_mixture(Tcs=None, zs=None, CASRNs=None, AvailableMethods=False,


Method=None)
This function handles the retrival of a mixture’s critical temperature.
This API is considered experimental, and is expected to be removed in a future release in favor of a more
complete object-oriented interface.

60 Chapter 1. thermo
thermo Documentation, Release 0.1

>>> Tc_mixture([400, 550], [0.3, 0.7])


505.0

thermo.critical.Pc_mixture(Pcs=None, zs=None, CASRNs=None, AvailableMethods=False,


Method=None)
This function handles the retrival of a mixture’s critical temperature.
This API is considered experimental, and is expected to be removed in a future release in favor of a more
complete object-oriented interface.

>>> Pc_mixture([2.2E7, 1.1E7], [0.3, 0.7])


14300000.0

thermo.critical.Chueh_Prausnitz_Vc(zs, Vcs, nus)


Calculates critical volume of a mixture according to mixing rules in [1] with an interaction parameter.
𝑛 𝑛 ∑︁
𝑛 2/3
∑︁ ∑︁ 𝑥𝑖 𝑉
𝑉𝑐𝑚 = 𝜃𝑖 𝑉𝑐𝑖 + (𝜃𝑖 𝜃𝑗 𝜈𝑖𝑗 )𝑉𝑟𝑒𝑓 𝜃 = ∑︀𝑛 𝑐𝑖 2/3
𝑖 𝑖 𝑗 𝑗=1 𝑥𝑗 𝑉𝑐𝑗

Parameters
zs [float] Mole fractions of all components
Vcs [float] Critical volumes of all components, [m^3/mol]
nus [matrix] Interaction parameters, [cm^3/mol]
Returns
Vcm [float] Critical volume of the mixture, [m^3/mol]

1.1.1.5.40 Notes

All parameters, even if zero, must be given to this function. nu parameters are in cm^3/mol, but are converted
to m^3/mol inside the function

1.1.1.5.41 References

[1], [2]

1.1.1.5.42 Examples

1-butanol/benzene 0.4271/0.5729 mixture, Vcm = 268.096 mL/mol.

>>> Chueh_Prausnitz_Vc([0.4271, 0.5729], [0.000273, 0.000256], [[0, 5.61847], [5.


˓→61847, 0]])

0.00026620503424517445

thermo.critical.modified_Wilson_Vc(zs, Vcs, Aijs)


Calculates critical volume of a mixture according to mixing rules in [1] with parameters. Equation
⎛ ⎞
∑︁ ∑︁ ∑︁
𝑉𝑐𝑚 = 𝑥𝑖 𝑉𝑐𝑖 + 𝐶 𝑥𝑖 ln ⎝𝑥𝑖 + 𝑥𝑗 𝐴𝑖𝑗 ⎠ 𝑉𝑟𝑒𝑓
𝑖 𝑖 𝑗

1.1. thermo package 61


thermo Documentation, Release 0.1

For a binary mxiture, this simplifies to:

𝑉𝑐𝑚 = 𝑥1 𝑉𝑐1 + 𝑥2 𝑉𝑐2 + 𝐶[𝑥1 ln(𝑥1 + 𝑥2 𝐴12 ) + 𝑥2 ln(𝑥2 + 𝑥1 𝐴21 )]

Parameters
zs [float] Mole fractions of all components
Vcs [float] Critical volumes of all components, [m^3/mol]
Aijs [matrix] Interaction parameters, [cm^3/mol]
Returns
Vcm [float] Critical volume of the mixture, [m^3/mol]

1.1.1.5.43 Notes

The equation and original article has been reviewed. All parameters, even if zero, must be given to this function.
C = -2500
All parameters, even if zero, must be given to this function. nu parameters are in cm^3/mol, but are converted
to m^3/mol inside the function

1.1.1.5.44 References

[1], [2]

1.1.1.5.45 Examples

1-butanol/benzene 0.4271/0.5729 mixture, Vcm = 268.096 mL/mol.

>>> modified_Wilson_Vc([0.4271, 0.5729], [0.000273, 0.000256],


... [[0, 0.6671250], [1.3939900, 0]])
0.0002664335032706881

thermo.critical.Vc_mixture(Vcs=None, zs=None, CASRNs=None, AvailableMethods=False,


Method=None)
This function handles the retrival of a mixture’s critical temperature.
This API is considered experimental, and is expected to be removed in a future release in favor of a more
complete object-oriented interface.

>>> Vc_mixture([5.6E-5, 2E-4], [0.3, 0.7])


0.0001568

1.1.1.6 thermo.datasheet module

thermo.datasheet.tabulate_solid(chemical, Tmin=None, Tmax=None, pts=10)


thermo.datasheet.tabulate_liq(chemical, Tmin=None, Tmax=None, pts=10)
thermo.datasheet.tabulate_gas(chemical, Tmin=None, Tmax=None, pts=10)
thermo.datasheet.tabulate_constants(chemical, full=False, vertical=False)

62 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.7 thermo.dipole module

thermo.dipole.dipole_moment(CASRN, AvailableMethods=False, Method=None)


This function handles the retrieval of a chemical’s dipole moment. Lookup is based on CASRNs. Will automat-
ically select a data source to use if no Method is provided; returns None if the data is not available.
Prefered source is ‘CCCBDB’. Considerable variation in reported data has found.
Parameters
CASRN [string] CASRN [-]
Returns
dipole [float] Dipole moment, [debye]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain dipole moment with the given inputs
Other Parameters
Method [string, optional] The method name to use. Accepted methods are ‘CCCBDB’,
‘MULLER’, or ‘POLING’. All valid values are also held in the list dipole_methods.
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain the dipole moment for the desired chemical, and will return methods instead of the
dipole moment

1.1.1.7.1 Notes

A total of three sources are available for this function. They are:
• ‘CCCBDB’, a series of critically evaluated data for compounds in [1], intended for use in predictive
modeling.
• ‘MULLER’, a collection of data in a group-contribution scheme in [2].
• ‘POLING’, in the appendix in [3].
This function returns dipole moment in units of Debye. This is actually a non-SI unit; to convert to SI, multiply
by 3.33564095198e-30 and its units will be in ampere*second^2 or equivalently and more commonly given,
coulomb*second. The constant is the result of 1E-21/c, where c is the speed of light.

1.1.1.7.2 References

[1], [2], [3]

1.1.1.7.3 Examples

>>> dipole_moment(CASRN='64-17-5')
1.44

1.1. thermo package 63


thermo Documentation, Release 0.1

1.1.1.8 thermo.dippr module

thermo.dippr.EQ100(T, A=0, B=0, C=0, D=0, E=0, F=0, G=0, order=0)


DIPPR Equation # 100. Used in calculating the molar heat capacities of liquids and solids, liquid thermal
conductivity, and solid density. All parameters default to zero. As this is a straightforward polynomial, no
restrictions on parameters apply. Note that high-order polynomials like this may need large numbers of decimal
places to avoid unnecessary error.

𝑌 = 𝐴 + 𝐵𝑇 + 𝐶𝑇 2 + 𝐷𝑇 3 + 𝐸𝑇 4 + 𝐹 𝑇 5 + 𝐺𝑇 6

Parameters
T [float] Temperature, [K]
A-G [float] Parameter for the equation; chemical and property specific [-]
order [int, optional] Order of the calculation. 0 for the calculation of the result itself; for 1, the
first derivative of the property is returned, for -1, the indefinite integral of the property with
respect to temperature is returned; and for -1j, the indefinite integral of the property divided
by temperature with respect to temperature is returned. No other integrals or derivatives are
implemented, and an exception will be raised if any other order is given.
Returns
Y [float]
Property [constant-specific; if order == 1, property/K; if order == -1, property*K; if
order == -1j, unchanged from default]

1.1.1.8.1 Notes

The derivative with respect to T, integral with respect to T, and integral over T with respect to T are computed
as follows. All derivatives and integrals are easily computed with SymPy.

𝑑𝑌
= 𝐵 + 2𝐶𝑇 + 3𝐷𝑇 2 + 4𝐸𝑇 3 + 5𝐹 𝑇 4 + 6𝐺𝑇 5
𝑑𝑇
𝐵𝑇 2 𝐶𝑇 3 𝐷𝑇 4 𝐸𝑇 5 𝐹𝑇6 𝐺𝑇 7
∫︁
𝑌 𝑑𝑇 = 𝐴𝑇 + + + + + +
2 3 4 5 6 7
𝐶𝑇 2 𝐷𝑇 3 𝐸𝑇 4 𝐹𝑇5 𝐺𝑇 6
∫︁
𝑌
𝑑𝑇 = 𝐴 log (𝑇 ) + 𝐵𝑇 + + + + +
𝑇 2 3 4 5 6

1.1.1.8.2 References

[1]

1.1.1.8.3 Examples

Water liquid heat capacity; DIPPR coefficients normally listed in J/kmol/K.

>>> EQ100(300, 276370., -2090.1, 8.125, -0.014116, 0.0000093701)


75355.81000000003

64 Chapter 1. thermo
thermo Documentation, Release 0.1

thermo.dippr.EQ101(T, A, B, C, D, E)
DIPPR Equation # 101. Used in calculating vapor pressure, sublimation pressure, and liquid viscosity. All 5
parameters are required. E is often an integer. As the model is exponential, a sufficiently high temperature will
cause an OverflowError. A negative temperature (or just low, if fit poorly) may cause a math domain error.
(︂ )︂
𝐵
𝑌 = exp 𝐴 + + 𝐶 · ln 𝑇 + 𝐷 · 𝑇 𝐸
𝑇
Parameters
T [float] Temperature, [K]
A-E [float] Parameter for the equation; chemical and property specific [-]
Returns
Y [float] Property [constant-specific]

1.1.1.8.4 Notes

This function is not integrable for either dT or Y/T dT.

1.1.1.8.5 References

[1]

1.1.1.8.6 Examples

Water vapor pressure; DIPPR coefficients normally listed in Pa.


>>> EQ101(300, 73.649, -7258.2, -7.3037, 4.1653E-6, 2)
3537.44834545549

thermo.dippr.EQ102(T, A, B, C, D, order=0)
DIPPR Equation # 102. Used in calculating vapor viscosity, vapor thermal conductivity, and sometimes solid
heat capacity. High values of B raise an OverflowError. All 4 parameters are required. C and D are often 0.
𝐴 · 𝑇𝐵
𝑌 =
1+ 𝐶 𝐷
𝑇 + 𝑇2

Parameters
T [float] Temperature, [K]
A-D [float] Parameter for the equation; chemical and property specific [-]
order [int, optional] Order of the calculation. 0 for the calculation of the result itself; for 1, the
first derivative of the property is returned, for -1, the indefinite integral of the property with
respect to temperature is returned; and for -1j, the indefinite integral of the property divided
by temperature with respect to temperature is returned. No other integrals or derivatives are
implemented, and an exception will be raised if any other order is given.
Returns
Y [float]
Property [constant-specific; if order == 1, property/K; if order == -1, property*K; if
order == -1j, unchanged from default]

1.1. thermo package 65


thermo Documentation, Release 0.1

1.1.1.8.7 Notes

The derivative with respect to T, integral with respect to T, and integral over T with respect to T are computed
as follows. The first derivative is easily computed; the two integrals required Rubi to perform the integration.

𝐴𝑇 𝐵 𝑇𝐶2 + 2𝐷
(︀ )︀
𝑑𝑌 𝐴𝐵𝑇 𝐵 𝑇 3
= (︀ 𝐶 )︀ + (︀ )︀2
𝑑𝑇 𝑇 𝑇 + 𝑇𝐷2 + 1 𝐶
+ 𝐷2 + 1
𝑇 𝑇
(︁ )︁ (︁ )︁
∫︁ 2𝐴𝑇 𝐵+3 hyp2f1 1, 𝐵 + 3, 𝐵 + 4, − 𝐶−√2𝑇 𝐶 2 −4𝐷
2𝐴𝑇 𝐵+3
hyp2f1 1, 𝐵 + 3, 𝐵 + 4, − √2𝑇
𝐶+ 𝐶 2 −4𝐷
𝑌 𝑑𝑇 = − (︀ √ )︀ √ + (︀ √ )︀ √
2
(𝐵 + 3) 𝐶 + 𝐶 − 4𝐷 𝐶 − 4𝐷 2 2
(𝐵 + 3) 𝐶 − 𝐶 − 4𝐷 𝐶 − 4𝐷 2
(︁ )︁ (︁ )︁
∫︁ 2𝐴𝑇 𝐵+2
hyp2f1 1, 𝐵 + 2, 𝐵 + 3, − √2𝑇 2𝐴𝑇 𝐵+2
hyp2f1 1, 𝐵 + 2, 𝐵 + 3, − √2𝑇
𝑌 𝐶+ 𝐶 2 −4𝐷 𝐶− 𝐶 2 −4𝐷
𝑑𝑇 = − (︀ √ )︀ √ + (︀ √ )︀ √
𝑇 2
(𝐵 + 2) 𝐶 + 𝐶 − 4𝐷 𝐶 − 4𝐷 2 2
(𝐵 + 2) 𝐶 − 𝐶 − 4𝐷 𝐶 − 4𝐷 2

1.1.1.8.8 References

[1]

1.1.1.8.9 Examples

Water vapor viscosity; DIPPR coefficients normally listed in Pa*s.

>>> EQ102(300, 1.7096E-8, 1.1146, 0, 0)


9.860384711890639e-06

thermo.dippr.EQ104(T, A, B, C, D, E, order=0)
DIPPR Equation #104. Often used in calculating second virial coefficients of gases. All 5 parameters are
required. C, D, and E are normally large values.
𝐵 𝐶 𝐷 𝐸
𝑌 =𝐴+ + 3+ 8+ 9
𝑇 𝑇 𝑇 𝑇
Parameters
T [float] Temperature, [K]
A-E [float] Parameter for the equation; chemical and property specific [-]
order [int, optional] Order of the calculation. 0 for the calculation of the result itself; for 1, the
first derivative of the property is returned, for -1, the indefinite integral of the property with
respect to temperature is returned; and for -1j, the indefinite integral of the property divided
by temperature with respect to temperature is returned. No other integrals or derivatives are
implemented, and an exception will be raised if any other order is given.
Returns
Y [float]
Property [constant-specific; if order == 1, property/K; if order == -1, property*K; if
order == -1j, unchanged from default]

66 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.8.10 Notes

The derivative with respect to T, integral with respect to T, and integral over T with respect to T are computed
as follows. All expressions can be obtained with SymPy readily.

𝑑𝑌 𝐵 3𝐶 8𝐷 9𝐸
= − 2 − 4 − 9 − 10
𝑑𝑇 𝑇 𝑇 𝑇 𝑇
∫︁
1 (︀
28𝐶𝑇 6 + 8𝐷𝑇 + 7𝐸
)︀
𝑌 𝑑𝑇 = 𝐴𝑇 + 𝐵 log (𝑇 ) − 8
56𝑇
∫︁
𝑌 1 (︀
72𝐵𝑇 8 + 24𝐶𝑇 6 + 9𝐷𝑇 + 8𝐸
)︀
𝑑𝑇 = 𝐴 log (𝑇 ) −
𝑇 72𝑇 9

1.1.1.8.11 References

[1]

1.1.1.8.12 Examples

Water second virial coefficient; DIPPR coefficients normally dimensionless.

>>> EQ104(300, 0.02222, -26.38, -16750000, -3.894E19, 3.133E21)


-1.1204179007265156

thermo.dippr.EQ105(T, A, B, C, D)
DIPPR Equation #105. Often used in calculating liquid molar density. All 4 parameters are required. C is
sometimes the fluid’s critical temperature.
𝐴
𝑌 = 𝑇 𝐷
𝐵 1+(1− 𝐶 )
Parameters
T [float] Temperature, [K]
A-D [float] Parameter for the equation; chemical and property specific [-]
Returns
Y [float] Property [constant-specific]

1.1.1.8.13 Notes

This expression can be integrated in terms of the incomplete gamma function for dT, but for Y/T dT no integral
could be found.

1.1.1.8.14 References

[1]

1.1. thermo package 67


thermo Documentation, Release 0.1

1.1.1.8.15 Examples

Hexane molar density; DIPPR coefficients normally in kmol/m^3.


>>> EQ105(300., 0.70824, 0.26411, 507.6, 0.27537)
7.593170096339236

thermo.dippr.EQ106(T, Tc, A, B, C=0, D=0, E=0)


DIPPR Equation #106. Often used in calculating liquid surface tension, and heat of vaporization. Only param-
eters A and B parameters are required; many fits include no further parameters. Critical temperature is also
required.
2 3
𝑌 = 𝐴(1 − 𝑇𝑟 )𝐵+𝐶𝑇𝑟 +𝐷𝑇𝑟 +𝐸𝑇𝑟
𝑇
𝑇𝑟 =
𝑇𝑐
Parameters
T [float] Temperature, [K]
Tc [float] Critical temperature, [K]
A-D [float] Parameter for the equation; chemical and property specific [-]
Returns
Y [float] Property [constant-specific]

1.1.1.8.16 Notes

The integral could not be found, but the integral over T actually could, again in terms of hypergeometric func-
tions.

1.1.1.8.17 References

[1]

1.1.1.8.18 Examples

Water surface tension; DIPPR coefficients normally in Pa*s.


>>> EQ106(300, 647.096, 0.17766, 2.567, -3.3377, 1.9699)
0.07231499373541

thermo.dippr.EQ107(T, A=0, B=0, C=0, D=0, E=0, order=0)


DIPPR Equation #107. Often used in calculating ideal-gas heat capacity. All 5 parameters are required. Also
called the Aly-Lee equation.
[︂ ]︂2 [︂ ]︂2
𝐶/𝑇 𝐸/𝑇
𝑌 =𝐴+𝐵 +𝐷
sinh(𝐶/𝑇 ) cosh(𝐸/𝑇 )
Parameters
T [float] Temperature, [K]
A-E [float] Parameter for the equation; chemical and property specific [-]

68 Chapter 1. thermo
thermo Documentation, Release 0.1

order [int, optional] Order of the calculation. 0 for the calculation of the result itself; for 1, the
first derivative of the property is returned, for -1, the indefinite integral of the property with
respect to temperature is returned; and for -1j, the indefinite integral of the property divided
by temperature with respect to temperature is returned. No other integrals or derivatives are
implemented, and an exception will be raised if any other order is given.
Returns
Y [float]
Property [constant-specific; if order == 1, property/K; if order == -1, property*K; if
order == -1j, unchanged from default]

1.1.1.8.19 Notes

The derivative with respect to T, integral with respect to T, and integral over T with respect to T are computed
as follows. The derivative is obtained via SymPy; the integrals from Wolfram Alpha.

2𝐵𝐶 3 cosh 𝐶 2𝐷𝐸 3 sinh 𝐸


(︀ )︀ (︀ )︀
𝑑𝑌 𝑇 2𝐵𝐶 2 2𝐷𝐸 2
= 3
(︀ 𝐶 )︀ − 2
(︀ 𝐶 )︀ + 3
(︀ 𝐸𝑇)︀ −
𝑇 3 cosh2 𝐸
(︀ )︀
𝑑𝑇 𝑇 4 sinh 𝑇 𝑇 3 sinh 𝑇 𝑇 4 cosh 𝑇 𝑇
∫︁ (︂ )︂
𝐵𝐶 𝐸
𝑌 𝑑𝑇 = 𝐴𝑇 + (︀ 𝐶 )︀ − 𝐷𝐸 tanh
tanh 𝑇 𝑇
∫︁ (︂ (︂ )︂)︂ (︂ )︂ (︂ (︂ )︂)︂
𝑌 𝐵𝐶 𝐶 𝐷𝐸 𝐸 𝐸
𝑑𝑇 = 𝐴 log (𝑇 ) + (︀ 𝐶 )︀ − 𝐵 log sinh − tanh + 𝐷 log cosh
𝑇 𝑇 tanh 𝑇 𝑇 𝑇 𝑇 𝑇

1.1.1.8.20 References

[1], [2]

1.1.1.8.21 Examples

Water ideal gas molar heat capacity; DIPPR coefficients normally in J/kmol/K

>>> EQ107(300., 33363., 26790., 2610.5, 8896., 1169.)


33585.90452768923

thermo.dippr.EQ114(T, Tc, A, B, C, D, order=0)


DIPPR Equation #114. Rarely used, normally as an alternate liquid heat capacity expression. All 4 parameters
are required, as well as critical temperature.

𝐴2 1 1 1
𝑌 = + 𝐵 − 2𝐴𝐶𝜏 − 𝐴𝐷𝜏 2 − 𝐶 2 𝜏 3 − 𝐶𝐷𝜏 4 − 𝐷2 𝜏 5
𝜏 3 2 5
𝑇
𝜏 =1−
𝑇𝑐
Parameters
T [float] Temperature, [K]
Tc [float] Critical temperature, [K]
A-D [float] Parameter for the equation; chemical and property specific [-]

1.1. thermo package 69


thermo Documentation, Release 0.1

order [int, optional] Order of the calculation. 0 for the calculation of the result itself; for 1, the
first derivative of the property is returned, for -1, the indefinite integral of the property with
respect to temperature is returned; and for -1j, the indefinite integral of the property divided
by temperature with respect to temperature is returned. No other integrals or derivatives are
implemented, and an exception will be raised if any other order is given.
Returns
Y [float]
Property [constant-specific; if order == 1, property/K; if order == -1, property*K; if
order == -1j, unchanged from default]

1.1.1.8.22 Notes

The derivative with respect to T, integral with respect to T, and integral over T with respect to T are computed
as follows. All expressions can be obtained with SymPy readily.
)︂2 )︂3 )︂4
𝐴2 𝐶2 𝐷2
(︂ )︂ (︂ (︂ (︂
𝑑𝑌 2𝐴 2𝐴 𝑇 𝑇 2𝐶 𝑇 𝑇
= )︁2 + 𝐶+ 𝐷 − +1 + − +1 + 𝐷 − +1 + − +1
𝑑𝑇 𝑇𝑐 𝑇𝑐 𝑇𝑐 𝑇𝑐 𝑇𝑐 𝑇𝑐 𝑇𝑐 𝑇𝑐 𝑇𝑐
(︁
𝑇𝑐 − 𝑇𝑇𝑐 + 1

𝐷2 𝑇 6 𝑇 5 (︀ 𝑇 4 (︀ 2 𝑇 3 (︀
∫︁
𝑌 𝑑𝑇 = −𝐴2 𝑇𝑐 log (𝑇 − 𝑇𝑐 ) + 𝐶𝐷 + 2𝐷2 + 𝐶 + 6𝐶𝐷 + 6𝐷2 − 𝐴𝐷 + 𝐶 2 + 3𝐶𝐷 + 2𝐷
)︀ )︀
5
− 4 3
30𝑇𝑐 10𝑇𝑐 12𝑇𝑐 3𝑇𝑐2
−60𝐴2 𝑇𝑐 + 60𝐴𝐶𝑇𝑐 + 30𝐴𝐷𝑇𝑐 − 30𝐵𝑇𝑐 + 10𝐶 2 𝑇𝑐 + 15𝐶𝐷𝑇𝑐 + 6𝐷2 𝑇𝑐 𝐷2 𝑇 5 𝑇 4 (︀
∫︁ (︂ )︂
𝑌 2
𝑑𝑇 = −𝐴 log 𝑇 + + − 𝐶𝐷
𝑇 60𝐴2 − 60𝐴𝐶 − 30𝐴𝐷 + 30𝐵 − 10𝐶 2 − 15𝐶𝐷 − 6𝐷2 25𝑇𝑐5 8𝑇𝑐4
Strictly speaking, the integral over T has an imaginary component, but only the real component is relevant and
the complex part discarded.

1.1.1.8.23 References

[1]

1.1.1.8.24 Examples

Hydrogen liquid heat capacity; DIPPR coefficients normally in J/kmol/K.


>>> EQ114(20, 33.19, 66.653, 6765.9, -123.63, 478.27)
19423.948911676463

thermo.dippr.EQ115(T, A, B, C=0, D=0, E=0)


DIPPR Equation #115. No major uses; has been used as an alternate liquid viscosity expression, and as a model
for vapor pressure. Only parameters A and B are required.
(︂ )︂
𝐵 2 𝐸
𝑌 = exp 𝐴 + + 𝐶 log 𝑇 + 𝐷𝑇 + 2
𝑇 𝑇
Parameters
T [float] Temperature, [K]
A-E [float] Parameter for the equation; chemical and property specific [-]
Returns
Y [float] Property [constant-specific]

70 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.8.25 Notes

No coefficients found for this expression. This function is not integrable for either dT or Y/T dT.

1.1.1.8.26 References

[1]
thermo.dippr.EQ116(T, Tc, A, B, C, D, E, order=0)
DIPPR Equation #116. Used to describe the molar density of water fairly precisely; no other uses listed. All 5
parameters are needed, as well as the critical temperature.

𝑌 = 𝐴 + 𝐵𝜏 0.35 + 𝐶𝜏 2/3 + 𝐷𝜏 + 𝐸𝜏 4/3


𝑇
𝜏 =1−
𝑇𝑐
Parameters
T [float] Temperature, [K]
Tc [float] Critical temperature, [K]
A-E [float] Parameter for the equation; chemical and property specific [-]
order [int, optional] Order of the calculation. 0 for the calculation of the result itself; for 1, the
first derivative of the property is returned, for -1, the indefinite integral of the property with
respect to temperature is returned; and for -1j, the indefinite integral of the property divided
by temperature with respect to temperature is returned. No other integrals or derivatives are
implemented, and an exception will be raised if any other order is given.
Returns
Y [float]
Property [constant-specific; if order == 1, property/K; if order == -1, property*K; if
order == -1j, unchanged from default]

1.1.1.8.27 Notes

The derivative with respect to T and integral with respect to T are computed as follows. The integral divided
by T with respect to T has an extremely complicated (but still elementary) integral which can be read from the
source. It was computed with Rubi; the other expressions can readily be obtained with SymPy.
√︂
𝑑𝑌 7𝐵 2𝐶 𝐷 4𝐸 3 𝑇
=− 13 − √︁ − − − +1
𝑑𝑇 (︁
𝑇
)︁ 20
3𝑇 3
− 𝑇
+ 1 𝑇𝑐 3𝑇𝑐 𝑇𝑐
20𝑇𝑐 − 𝑇𝑐 + 1 𝑐 𝑇𝑐

)︂ 27 )︂ 35 )︂ 73
𝑇2
∫︁ (︂ (︂ (︂ )︂ (︂
20𝐵 𝑇 20
3𝐶 𝑇 3𝐸 𝑇
𝑌 𝑑𝑇 = 𝐴𝑇 − 𝑇𝑐 − + 1 − 𝑇𝑐 − + 1 +𝐷 − +𝑇 − 𝑇𝑐 − + 1
27 𝑇𝑐 5 𝑇𝑐 2𝑇𝑐 7 𝑇𝑐

1.1.1.8.28 References

[1]

1.1. thermo package 71


thermo Documentation, Release 0.1

1.1.1.8.29 Examples

Water liquid molar density; DIPPR coefficients normally in kmol/m^3.

>>> EQ116(300., 647.096, 17.863, 58.606, -95.396, 213.89, -141.26)


55.17615446406527

thermo.dippr.EQ127(T, A, B, C, D, E, F, G, order=0)
DIPPR Equation #127. Rarely used, and then only in calculating ideal-gas heat capacity. All 7 parameters are
required.
[︃ (︀ )︀2 (︀ 𝐶 )︀ ]︃ [︃ (︀ )︀2 (︀ 𝐸 )︀ ]︃ [︃ (︀ )︀2 (︀ 𝐺 )︀ ]︃
𝐶 𝐸 𝐺
exp exp exp
𝑌 = 𝐴 + 𝐵 (︀𝑇 𝑇
)︀2 + 𝐷 (︀
𝑇 𝑇
)︀2 + 𝐹 (︀
𝑇 𝑇
)︀2
exp 𝐶𝑇 − 1 exp 𝐸
𝑇 − 1 exp 𝐺
𝑇 − 1

Parameters
T [float] Temperature, [K]
A-G [float] Parameter for the equation; chemical and property specific [-]
order [int, optional] Order of the calculation. 0 for the calculation of the result itself; for 1, the
first derivative of the property is returned, for -1, the indefinite integral of the property with
respect to temperature is returned; and for -1j, the indefinite integral of the property divided
by temperature with respect to temperature is returned. No other integrals or derivatives are
implemented, and an exception will be raised if any other order is given.
Returns
Y [float]
Property [constant-specific; if order == 1, property/K; if order == -1, property*K; if
order == -1j, unchanged from default]

1.1.1.8.30 Notes

The derivative with respect to T, integral with respect to T, and integral over T with respect to T are computed
as follows. All expressions can be obtained with SymPy readily.
𝐶 2𝐶 𝐶 𝐸 2𝐸 𝐸
𝑑𝑌 𝐵𝐶 3 𝑒 𝑇 2𝐵𝐶 3 𝑒 𝑇 2𝐵𝐶 2 𝑒 𝑇 𝐷𝐸 3 𝑒 𝑇 2𝐷𝐸 3 𝑒 𝑇 2𝐷𝐸 2 𝑒 𝑇 𝐹 𝐺3
=− )︁2 + )︁3 − )︁2 − )︁2 + )︁3 − )︁2 −
𝑑𝑇
(︁ 𝐶 (︁ 𝐶 (︁ 𝐶 (︁ 𝐸 (︁ 𝐸 (︁ 𝐸 (︁ 𝐺
𝑇4 𝑒𝑇 − 1 𝑇4 𝑒𝑇 − 1 𝑇3 𝑒𝑇 − 1 𝑇4 𝑒𝑇 − 1 𝑇4 𝑒𝑇 − 1 𝑇3 𝑒𝑇 − 1 𝑇4 𝑒𝑇

𝐵𝐶 2 𝐷𝐸 2 𝐹 𝐺2
∫︁
𝑌 𝑑𝑇 = 𝐴𝑇 + 𝐶 + 𝐸 + 𝐺
𝐶𝑒 𝑇 −𝐶 −𝐸 𝐸𝑒 𝐺𝑒 𝑇 − 𝐺
𝑇
∫︁ (︂ )︁)︂ (︂
𝑌 1 1 1 (︁ 𝐶 1 1 1 (︁ 𝐸
𝑑𝑇 = 𝐴 log (𝑇 ) + 𝐵𝐶 2 𝐶 + − 2
log 𝑒 𝑇 − 1 + 𝐷𝐸 2
𝐸 + − 2 log 𝑒 𝑇 − 1
𝑇 𝐶𝑇 𝑒 𝑇 − 𝐶𝑇 𝐶𝑇 𝐶 𝐸𝑇 𝑒 𝑇 − 𝐸𝑇 𝐸𝑇 𝐸

1.1.1.8.31 References

[1]

72 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.8.32 Examples

Ideal gas heat capacity of methanol; DIPPR coefficients normally in J/kmol/K

>>> EQ127(20., 3.3258E4, 3.6199E4, 1.2057E3, 1.5373E7, 3.2122E3, -1.5318E7, 3.


˓→2122E3)

33258.0

1.1.1.9 thermo.electrochem module

thermo.electrochem.conductivity(CASRN=None, AvailableMethods=False, Method=None,


full_info=True)
This function handles the retrieval of a chemical’s conductivity. Lookup is based on CASRNs. Will automati-
cally select a data source to use if no Method is provided; returns None if the data is not available.
Function has data for approximately 100 chemicals.
Parameters
CASRN [string] CASRN [-]
Returns
kappa [float] Electrical conductivity of the fluid, [S/m]
T [float, only returned if full_info == True] Temperature at which conductivity measurement
was made
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain RI with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in con-
ductivity_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain conductivity for the desired chemical, and will return methods instead of conduc-
tivity
full_info [bool, optional] If True, function will return the temperature at which the conductivity
reading was made

1.1.1.9.1 Notes

Only one source is available in this function. It is:


• ‘LANGE_COND’ which is from Lange’s Handbook, Table 8.34 Electrical
Conductivity of Various Pure Liquids’, a compillation of data in [1].

1.1.1.9.2 References

[1]

1.1. thermo package 73


thermo Documentation, Release 0.1

1.1.1.9.3 Examples

>>> conductivity('7732-18-5')
(4e-06, 291.15)

thermo.electrochem.Laliberte_density(T, ws, CASRNs)


Calculate the density of an aqueous electrolyte mixture using the form proposed by [1]. Parameters are loaded
by the function as needed. Units are Kelvin and Pa*s.
(︃ )︃−1
𝑤𝑤 ∑︁ 𝑤𝑖
𝜌𝑚 = +
𝜌𝑤 𝑖
𝜌𝑎𝑝𝑝𝑖

Parameters
T [float] Temperature of fluid [K]
ws [array] Weight fractions of fluid components other than water
CASRNs [array] CAS numbers of the fluid components other than water
Returns
rho_i [float] Solution density, [kg/m^3]

1.1.1.9.4 Notes

Temperature range check is not used here.

1.1.1.9.5 References

[1]

1.1.1.9.6 Examples

>>> Laliberte_density(273.15, [0.0037838838], ['7647-14-5'])


1002.6250120185854

thermo.electrochem.Laliberte_heat_capacity(T, ws, CASRNs)


Calculate the heat capacity of an aqueous electrolyte mixture using the form proposed by [1]. Parameters are
loaded by the function as needed.

𝑇 𝑂𝐷𝑂

Parameters
T [float] Temperature of fluid [K]
ws [array] Weight fractions of fluid components other than water
CASRNs [array] CAS numbers of the fluid components other than water
Returns
Cp [float] Solution heat capacity, [J/kg/K]

74 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.9.7 Notes

Temperature range check is not implemented. Units are Kelvin and J/kg/K.

1.1.1.9.8 References

[1]

1.1.1.9.9 Examples

>>> Laliberte_heat_capacity(273.15+1.5, [0.00398447], ['7647-14-5'])


4186.569908672113

thermo.electrochem.Laliberte_viscosity(T, ws, CASRNs)


Calculate the viscosity of an aqueous mixture using the form proposed by [1]. Parameters are loaded by the
function as needed. Units are Kelvin and Pa*s.
𝑤𝑖
𝜇𝑚 = 𝜇𝑤
𝑤 Π𝜇𝑖
𝑤

Parameters
T [float] Temperature of fluid [K]
ws [array] Weight fractions of fluid components other than water
CASRNs [array] CAS numbers of the fluid components other than water
Returns
mu_i [float] Solute partial viscosity, Pa*s

1.1.1.9.10 Notes

Temperature range check is not used here. Check is performed using NaCl at 5 degC from the first value in [1]’s
spreadsheet.

1.1.1.9.11 References

[1]

1.1.1.9.12 Examples

>>> Laliberte_viscosity(273.15+5, [0.005810], ['7647-14-5'])


0.0015285828581961414

thermo.electrochem.Laliberte_viscosity_w(T)
Calculate the viscosity of a water using the form proposed by [1]. No parameters are needed, just a temperature.
Units are Kelvin and Pa*s. t is temperature in degrees Celcius.
𝑡 + 246
𝜇𝑤 =
(0.05594𝑡 + 5.2842)𝑡 + 137.37

1.1. thermo package 75


thermo Documentation, Release 0.1

Parameters
T [float] Temperature of fluid [K]
Returns
mu_w [float] Water viscosity, Pa*s

1.1.1.9.13 Notes

Original source or pure water viscosity is not cited. No temperature range is given for this equation.

1.1.1.9.14 References

[1]

1.1.1.9.15 Examples

>>> Laliberte_viscosity_w(298)
0.0008932264487033279

thermo.electrochem.Laliberte_viscosity_i(T, w_w, v1, v2, v3, v4, v5, v6)


Calculate the viscosity of a solute using the form proposed by [1] Parameters are needed, and a temperature.
Units are Kelvin and Pa*s.
(︁ 𝑣2
)︁
exp 𝑣1 (1−𝑤 𝑤)
𝑣4 𝑡+1
+𝑣3

𝜇𝑖 =
𝑣5 (1 − 𝑤𝑤 )𝑣6 + 1

Parameters
T [float] Temperature of fluid [K]
w_w [float] Weight fraction of water in the solution
v1-v6 [floats] Function fit parameters
Returns
mu_i [float] Solute partial viscosity, Pa*s

1.1.1.9.16 Notes

Temperature range check is outside of this function. Check is performed using NaCl at 5 degC from the first
value in [1]’s spreadsheet.

1.1.1.9.17 References

[1]

1.1.1.9.18 Examples

76 Chapter 1. thermo
thermo Documentation, Release 0.1

>>> d = _Laliberte_Viscosity_ParametersDict['7647-14-5']
>>> Laliberte_viscosity_i(273.15+5, 1-0.005810, d["V1"], d["V2"], d["V3"], d["V4
˓→"], d["V5"], d["V6"] )

0.004254025533308794

thermo.electrochem.Laliberte_density_w(T)
Calculate the density of water using the form proposed by [1]. No parameters are needed, just a temperature.
Units are Kelvin and kg/m^3h.

[(−2.8054253 × 10−10 · 𝑡 + 1.0556302 × 10−7 )𝑡 − 4.6170461 × 10−5 ]𝑡 − 0.0079870401 𝑡 + 16.945176 𝑡 + 999.83


{︀(︀ )︀ }︀
𝜌𝑤 =
1 + 0.01687985 · 𝑡
Parameters
T [float] Temperature of fluid [K]
Returns
rho_w [float] Water density, [kg/m^3]

1.1.1.9.19 Notes

Original source not cited No temperature range is used.

1.1.1.9.20 References

[1]

1.1.1.9.21 Examples

>>> Laliberte_density_w(298.15)
997.0448954179155
>>> Laliberte_density_w(273.15 + 50)
988.0362916114763

thermo.electrochem.Laliberte_density_i(T, w_w, c0, c1, c2, c3, c4)


Calculate the density of a solute using the form proposed by Laliberte [1]. Parameters are needed, and a
temperature, and water fraction. Units are Kelvin and Pa*s.

(𝑐0 [1 − 𝑤𝑤 ] + 𝑐1 ) exp(10−6 [𝑡 + 𝑐4 ]2 )
𝜌𝑎𝑝𝑝,𝑖 =
(1 − 𝑤𝑤 ) + 𝑐2 + 𝑐3 𝑡

Parameters
T [float] Temperature of fluid [K]
w_w [float] Weight fraction of water in the solution
c0-c4 [floats] Function fit parameters
Returns
rho_i [float] Solute partial density, [kg/m^3]

1.1. thermo package 77


thermo Documentation, Release 0.1

1.1.1.9.22 Notes

Temperature range check is TODO

1.1.1.9.23 References

[1]

1.1.1.9.24 Examples

>>> d = _Laliberte_Density_ParametersDict['7647-14-5']
>>> Laliberte_density_i(273.15+0, 1-0.0037838838, d["C0"], d["C1"], d["C2"], d["C3
˓→"], d["C4"])

3761.8917585699983

thermo.electrochem.Laliberte_heat_capacity_w(T)
Calculate the heat capacity of water using the interpolation proposed by [1]. No parameters are needed, just a
temperature.
(︂ )︂ (︂ )︂ (︂ )︂
𝑡 − 𝑡1 (𝐶𝑝3 − 2𝐶𝑝2 + 𝐶𝑝1 ) 𝑡 − 𝑡1 𝑡 − 𝑡1
𝐶𝑝𝑤 = 𝐶𝑝1 + (𝐶𝑝2 − 𝐶𝑝1 ) + −1
𝑡2 − 𝑡1 2 𝑡2 − 𝑡1 𝑡2 − 𝑡1

Parameters
T [float] Temperature of fluid [K]
Returns
Cp_w [float] Water heat capacity, [J/kg/K]

1.1.1.9.25 Notes

Units are Kelvin and J/kg/K. Original source not cited No temperature range is used. The original equation is
not used, but rather a cubic scipy interpolation routine.

1.1.1.9.26 References

[1]

1.1.1.9.27 Examples

>>> Laliberte_heat_capacity_w(273.15+3.56)
4208.878020261102

thermo.electrochem.Laliberte_heat_capacity_i(T, w_w, a1, a2, a3, a4, a5, a6)


Calculate the heat capacity of a solute using the form proposed by [1] Parameters are needed, and a temperature,
and water fraction.

𝐶𝑝𝑖 = 𝑎1 𝑒𝛼 + 𝑎5 (1 − 𝑤𝑤 )𝑎6 𝛼 = 𝑎2 𝑡 + 𝑎3 exp(0.01𝑡) + 𝑎4 (1 − 𝑤𝑤 )

Parameters

78 Chapter 1. thermo
thermo Documentation, Release 0.1

T [float] Temperature of fluid [K]


w_w [float] Weight fraction of water in the solution
a1-a6 [floats] Function fit parameters
Returns
Cp_i [float] Solute partial heat capacity, [J/kg/K]

1.1.1.9.28 Notes

Units are Kelvin and J/kg/K. Temperature range check is TODO

1.1.1.9.29 References

[1]

1.1.1.9.30 Examples

>>> d = _Laliberte_Heat_Capacity_ParametersDict['7647-14-5']
>>> Laliberte_heat_capacity_i(1.5+273.15, 1-0.00398447, d["A1"], d["A2"], d["A3"],
˓→ d["A4"], d["A5"], d["A6"])

-2930.7353945880477

thermo.electrochem.dilute_ionic_conductivity(ionic_conductivities, zs, rhom)


This function handles the calculation of the electrical conductivity of a dilute electrolytic aqueous solution. Re-
quires the mole fractions of each ion, the molar density of the whole mixture, and ionic conductivity coefficients
for each ion.
∑︁
𝜆= 𝜆∘𝑖 𝑧𝑖 𝜌𝑚
𝑖

Parameters
ionic_conductivities [list[float]] Ionic conductivity coefficients of each ion in the mixture
[m^2*S/mol]
zs [list[float]] Mole fractions of each ion in the mixture, [-]
rhom [float] Overall molar density of the solution, [mol/m^3]
Returns
kappa [float] Electrical conductivity of the fluid, [S/m]

1.1.1.9.31 Notes

The ionic conductivity coefficients should not be equivalent coefficients; for example, 0.0053 m^2*S/mol is the
equivalent conductivity coefficient of Mg+2, but this method expects twice its value - 0.0106. Both are reported
commonly in literature.
Water can be included in this caclulation by specifying a coefficient of 0. The conductivity of any electrolyte
eclipses its own conductivity by many orders of magnitude. Any other solvents present will affect the conduc-
tivity extensively and there are few good methods to predict this effect.

1.1. thermo package 79


thermo Documentation, Release 0.1

1.1.1.9.32 References

[1]

1.1.1.9.33 Examples

Complex mixture of electrolytes [‘Cl-‘, ‘HCO3-‘, ‘SO4-2’, ‘Na+’, ‘K+’, ‘Ca+2’, ‘Mg+2’]:

>>> ionic_conductivities = [0.00764, 0.00445, 0.016, 0.00501, 0.00735, 0.0119, 0.


˓→01061]

>>> zs = [0.03104, 0.00039, 0.00022, 0.02413, 0.0009, 0.0024, 0.00103]


>>> dilute_ionic_conductivity(ionic_conductivities=ionic_conductivities, zs=zs,
˓→rhom=53865.9)

22.05246783663

thermo.electrochem.conductivity_McCleskey(T, M, lambda_coeffs, A_coeffs, B, multiplier,


rho=1000.0)
This function handles the calculation of the electrical conductivity of an electrolytic aqueous solution with one
electrolyte in solution. It handles temperature dependency and concentrated solutions. Requires the temperature
of the solution; its molality, and four sets of coefficients lambda_coeffs, A_coeffs, B, and multiplier.
𝜅
Λ=
𝐶
𝑚1/2
Λ = Λ0 (𝑡) − 𝐴(𝑡)
1 + 𝐵𝑚1/2
∘ 2
Λ (𝑡) = 𝑐1 𝑡 + 𝑐2 𝑡 + 𝑐3
𝐴(𝑡) = 𝑑1 𝑡2 + 𝑑2 𝑡 + 𝑑3

In the above equations, t is temperature in degrees Celcius; m is molality in mol/kg, and C is the concentration
of the elctrolytes in mol/m^3, calculated as the product of density and molality.
Parameters
T [float] Temperature of the solution, [K]
M [float] Molality of the solution with respect to one electrolyte (mol solute / kg solvent),
[mol/kg]
lambda_coeffs [list[float]] List of coefficients for the polynomial used to calculate lambda;
length-3 coefficients provided in [1], [-]
A_coeffs [list[float]] List of coefficients for the polynomial used to calculate A; length-3 coef-
ficients provided in [1], [-]
B [float] Empirical constant for an electrolyte, [-]
multiplier [float] The multiplier to obtain the absolute conductivity from the equivalent con-
ductivity; ex 2 for CaCl2, [-]
rho [float, optional] The mass density of the aqueous mixture, [kg/m^3]
Returns
kappa [float] Electrical conductivity of the solution at the specified molality and temperature
[S/m]

80 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.9.34 Notes

Coefficients provided in [1] result in conductivity being calculated in units of mS/cm; they are converted to S/m
before returned.

1.1.1.9.35 References

[1]

1.1.1.9.36 Examples

A 0.5 wt% solution of CaCl2, conductivity calculated in mS/cm

>>> conductivity_McCleskey(T=293.15, M=0.045053, A_coeffs=[.03918, 3.905,


... 137.7], lambda_coeffs=[0.01124, 2.224, 72.36], B=3.8, multiplier=2)
0.8482584585108555

thermo.electrochem.thermal_conductivity_Magomedov(T, P, ws, CASRNs, k_w=None)


Calculate the thermal conductivity of an aqueous mixture of electrolytes using the form proposed by Magome-
dov [1]. Parameters are loaded by the function as needed. Function will fail if an electrolyte is not in the
database.
[︃ 𝑛
]︃ 𝑛
∑︁ ∑︁
−4 3 −8
𝜆 = 𝜆𝑤 1 − 𝐴𝑖 (𝑤𝑖 + 2 × 10 𝑤𝑖 ) − 2 × 10 𝑃 𝑇 𝑤𝑖
𝑖=1 𝑖=1

Parameters
T [float] Temperature of liquid [K]
P [float] Pressure of the liquid [Pa]
ws [array] Weight fractions of liquid components other than water
CASRNs [array] CAS numbers of the liquid components other than water
k_w [float] Liquid thermal condiuctivity or pure water at T and P, [W/m/K]
Returns
kl [float] Liquid thermal condiuctivity, [W/m/K]

1.1.1.9.37 Notes

Range from 273 K to 473 K, P from 0.1 MPa to 100 MPa. C from 0 to 25 mass%. Internal untis are MPa for
pressure and weight percent.
An example is sought for this function. It is not possible to reproduce the author’s values consistently.

1.1.1.9.38 References

[1]

1.1. thermo package 81


thermo Documentation, Release 0.1

1.1.1.9.39 Examples

>>> thermal_conductivity_Magomedov(293., 1E6, [.25], ['7758-94-3'], k_w=0.59827)


0.548654049375

thermo.electrochem.ionic_strength(mis, zis)
Calculate the ionic strength of a solution in one of two ways, depending on the inputs only. For Pitzer and
Bromley models, mis should be molalities of each component. For eNRTL models, mis should be mole fractions
of each electrolyte in the solution. This will sum to be much less than 1.
1 ∑︁
𝐼= 𝑀𝑖 𝑧𝑖2
2
1 ∑︁
𝐼= 𝑥𝑖 𝑧𝑖2
2
Parameters
mis [list] Molalities of each ion, or mole fractions of each ion [mol/kg or -]
zis [list] Charges of each ion [-]
Returns
I [float] ionic strength, [?]

1.1.1.9.40 References

[1], [2]

1.1.1.9.41 Examples

>>> ionic_strength([0.1393, 0.1393], [1, -1])


0.1393

thermo.electrochem.Kweq_1981(T, rho_w)
Calculates equilibrium constant for OH- and H+ in water, according to [1]. Second most recent formulation.

log10 𝐾𝑤 = 𝐴 + 𝐵/𝑇 + 𝐶/𝑇 2 + 𝐷/𝑇 3 + (𝐸 + 𝐹/𝑇 + 𝐺/𝑇 2 ) log10 𝜌𝑤

Parameters
T [float] Temperature of fluid [K]
rho_w [float] Density of water, [kg/m^3]
Returns
Kweq [float] Ionization constant of water, [-]

1.1.1.9.42 Notes

Density is internally converted to units of g/cm^3.


A = -4.098; B = -3245.2; C = 2.2362E5; D = -3.984E7; E = 13.957; F = -1262.3; G = 8.5641E5

82 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.9.43 References

[1]

1.1.1.9.44 Examples

>>> -1*log10(Kweq_1981(600, 700))


11.274522047458206

thermo.electrochem.Kweq_IAPWS_gas(T)
Calculates equilibrium constant for OH- and H+ in water vapor, according to [1]. This is the most recent
formulation available.
𝐺
−𝑙𝑜𝑔10 𝐾𝑤 = 𝛾0 + 𝛾1 𝑇 −1 + 𝛾2 𝑇 −2 + 𝛾3 𝑇 −3

Parameters
T [float] Temperature of H2O [K]
Returns
K_w_G [float]

1.1.1.9.45 Notes

gamma0 = 6.141500E-1; gamma1 = 4.825133E4; gamma2 = -6.770793E4; gamma3 = 1.010210E7

1.1.1.9.46 References

[1]

1.1.1.9.47 Examples

>>> Kweq_IAPWS_gas(800)
1.4379721554798815e-61

thermo.electrochem.Kweq_IAPWS(T, rho_w)
Calculates equilibrium constant for OH- and H+ in water, according to [1]. This is the most recent formulation
available.

𝑄 = 𝜌 exp(𝛼0 + 𝛼1 𝑇 −1 + 𝛼2 𝑇 −2 𝜌2/3 )
[︂ ]︂
𝑄 18.015268
− log10 𝐾𝑤 = −2𝑛 log10 (1 + 𝑄) − 𝜌(𝛽0 + 𝛽1 𝑇 −1 + 𝛽2 𝜌) − log10 𝐾𝑤
𝐺
+ 2 log10
𝑄+1 1000

Parameters
T [float] Temperature of water [K]
rho_w [float] Density of water at temperature and pressure [kg/m^3]
Returns
Kweq [float] Ionization constant of water, [-]

1.1. thermo package 83


thermo Documentation, Release 0.1

1.1.1.9.48 Notes

Formulation is in terms of density in g/cm^3; density is converted internally.


n = 6; alpha0 = -0.864671; alpha1 = 8659.19; alpha2 = -22786.2; beta0 = 0.642044; beta1 = -56.8534; beta2 =
-0.375754

1.1.1.9.49 References

[1]

1.1.1.9.50 Examples

Example from IAPWS check:

>>> -1*log10(Kweq_IAPWS(600, 700))


11.203153057603775

thermo.electrochem.balance_ions(anions, cations, anion_zs=None, cation_zs=None, an-


ion_concs=None, cation_concs=None, rho_w=997.1,
method=’increase dominant’, selected_ion=None)
Performs an ion balance to adjust measured experimental ion compositions to electroneutrality. Can accept
either the actual mole fractions of the ions, or their concentrations in units of [mg/L] as well for convinience.
The default method will locate the most prevalent ion in the type of ion not in excess - and increase it until the
two ion types balance.
Parameters
anions [list(ChemicalMetadata)] List of all negatively charged ions measured as being in the
solution; ChemicalMetadata instances or simply objects with the attributes MW and charge,
[-]
cations [list(ChemicalMetadata)] List of all positively charged ions measured as being in the
solution; ChemicalMetadata instances or simply objects with the attributes MW and charge,
[-]
anion_zs [list, optional] Mole fractions of each anion as measured in the aqueous solution, [-]
cation_zs [list, optional] Mole fractions of each cation as measured in the aqueous solution, [-]
anion_concs [list, optional] Concentrations of each anion in the aqueous solution in the units
often reported (for convinience only) [mg/L]
cation_concs [list, optional] Concentrations of each cation in the aqueous solution in the units
often reported (for convinience only) [mg/L]
rho_w [float, optional] Density of the aqueous solutionr at the temperature and pressure the
anion and cation concentrations were measured (if specified), [kg/m^3]
method [str, optional] The method to use to balance the ionimbalance; one of ‘dominant’, ‘de-
crease dominant’, ‘increase dominant’, ‘proportional insufficient ions increase’, ‘propor-
tional excess ions decrease’, ‘proportional cation adjustment’, ‘proportional anion adjust-
ment’, ‘Na or Cl increase’, ‘Na or Cl decrease’, ‘adjust’, ‘increase’, ‘decrease’, ‘makeup’].
selected_ion [ChemicalMetadata, optional] Some methods adjust only one user-specified ion;
this is that input. For the case of the ‘makeup’ method, this is a tuple of (anion, cation)
ChemicalMetadata instances and only the ion type not in excess will be used.

84 Chapter 1. thermo
thermo Documentation, Release 0.1

Returns
anions [list(ChemicalMetadata)] List of all negatively charged ions measured as being in the so-
lution; ChemicalMetadata instances after potentially adding in an ion which was not present
but specified by the user, [-]
cations [list(ChemicalMetadata)] List of all positively charged ions measured as being in the so-
lution; ChemicalMetadata instances after potentially adding in an ion which was not present
but specified by the user, [-]
anion_zs [list,] Mole fractions of each anion in the aqueous solution after the charge balance,
[-]
cation_zs [list] Mole fractions of each cation in the aqueous solution after the charge balance,
[-]
z_water [float] Mole fraction of the water in the solution, [-]

1.1.1.9.51 Notes

The methods perform the charge balance as follows:


• ‘dominant’ : The ion with the largest mole fraction in solution has its concentration adjusted up or down
as necessary to balance the solution.
• ‘decrease dominant’ : The ion with the largest mole fraction in the type of ion with excess charge has its
own mole fraction decreased to balance the solution.
• ‘increase dominant’ : The ion with the largest mole fraction in the type of ion with insufficient charge has
its own mole fraction decreased to balance the solution.
• ‘proportional insufficient ions increase’ : The ion charge type which is present insufficiently has each of
the ions mole fractions increased proportionally until the solution is balanced.
• ‘proportional excess ions decrease’ : The ion charge type which is present in excess has each of the ions
mole fractions decreased proportionally until the solution is balanced.
• ‘proportional cation adjustment’ : All cations have their mole fractions increased or decreased proportion-
ally as necessary to balance the solution.
• ‘proportional anion adjustment’ : All anions have their mole fractions increased or decreased proportion-
ally as necessary to balance the solution.
• ‘Na or Cl increase’ : Either Na+ or Cl- is added to the solution until the solution is balanced; the species
will be added if they were not present initially as well.
• ‘Na or Cl decrease’ : Either Na+ or Cl- is removed from the solution until the solution is balanced; the
species will be added if they were not present initially as well.
• ‘adjust’ : An ion specified with the parameter selected_ion has its mole fraction increased or decreased
as necessary to balance the solution. An exception is raised if the specified ion alone cannot balance the
solution.
• ‘increase’ : An ion specified with the parameter selected_ion has its mole fraction increased as necessary
to balance the solution. An exception is raised if the specified ion alone cannot balance the solution.
• ‘decrease’ : An ion specified with the parameter selected_ion has its mole fraction decreased as necessary
to balance the solution. An exception is raised if the specified ion alone cannot balance the solution.
• ‘makeup’ : Two ions ase specified as a tuple with the parameter selected_ion. Whichever ion type is
present in the solution insufficiently is added; i.e. if the ions were Mg+2 and Cl-, and there was too much
negative charge in the solution, Mg+2 would be added until the solution was balanced.

1.1. thermo package 85


thermo Documentation, Release 0.1

1.1.1.9.52 Examples

>>> anions_n = ['Cl-', 'HCO3-', 'SO4-2']


>>> cations_n = ['Na+', 'K+', 'Ca+2', 'Mg+2']
>>> cations = [pubchem_db.search_name(i) for i in cations_n]
>>> anions = [pubchem_db.search_name(i) for i in anions_n]
>>> an_res, cat_res, an_zs, cat_zs, z_water = balance_ions(anions, cations,
... anion_zs=[0.02557, 0.00039, 0.00026], cation_zs=[0.0233, 0.00075,
... 0.00262, 0.00119], method='proportional excess ions decrease')
>>> an_zs
[0.02557, 0.00039, 0.00026]
>>> cat_zs
[0.01948165456267761, 0.0006270918850647299, 0.0021906409851594564, 0.
˓→0009949857909693717]

>>> z_water
0.9504856267761288

1.1.1.10 thermo.elements module

class thermo.elements.PeriodicTable(elements)
Bases: object
Periodic Table object for use in dealing with elements.
Parameters
elements [list[Element]] List of Element objects
See also:
periodic_table, Element

1.1.1.10.1 Notes

Can be checked to sese if an element in in this, can be iterated over, and as a current length of 118 elements.

1.1.1.10.2 References

[1]
Attributes
CAS_to_elements
name_to_elements
number_to_elements
symbol_to_elements
CAS_to_elements
name_to_elements
number_to_elements
symbol_to_elements

86 Chapter 1. thermo
thermo Documentation, Release 0.1

thermo.elements.molecular_weight(atoms)
Calculates molecular weight of a molecule given a dictionary of its atoms and their counts, in the format {sym-
bol: count}.
∑︁
𝑀𝑊 = 𝑛𝑖 𝑀 𝑊𝑖
𝑖

Parameters
atoms [dict] dictionary of counts of individual atoms, indexed by symbol with proper capital-
ization, [-]
Returns
MW [float] Calculated molecular weight [g/mol]

1.1.1.10.3 Notes

Elemental data is from rdkit, with CAS numbers added. An exception is raised if an incorrect element symbol
is given. Elements up to 118 are supported, as are deutreium and tritium.

1.1.1.10.4 References

[1]

1.1.1.10.5 Examples

>>> molecular_weight({'H': 12, 'C': 20, 'O': 5}) # DNA


332.30628

thermo.elements.mass_fractions(atoms, MW=None)
Calculates the mass fractions of each element in a compound, given a dictionary of its atoms and their counts,
in the format {symbol: count}.
𝑛𝑖 𝑀 𝑊 𝑖
𝑤𝑖 = ∑︀
𝑖 𝑛𝑖 𝑀 𝑊 𝑖

Parameters
atoms [dict] dictionary of counts of individual atoms, indexed by symbol with proper capital-
ization, [-]
MW [float, optional] Molecular weight, [g/mol]
Returns
mfracs [dict] dictionary of mass fractions of individual atoms, indexed by symbol with proper
capitalization, [-]

1.1.1.10.6 Notes

Molecular weight is optional, but speeds up the calculation slightly. It is calculated using the function molecu-
lar_weight if not specified.
Elemental data is from rdkit, with CAS numbers added. An exception is raised if an incorrect element symbol
is given. Elements up to 118 are supported.

1.1. thermo package 87


thermo Documentation, Release 0.1

1.1.1.10.7 References

[1]

1.1.1.10.8 Examples

>>> mass_fractions({'H': 12, 'C': 20, 'O': 5})


{'H': 0.03639798802478244, 'C': 0.7228692758981262, 'O': 0.24073273607709128}

thermo.elements.atom_fractions(atoms)
Calculates the atomic fractions of each element in a compound, given a dictionary of its atoms and their counts,
in the format {symbol: count}.
𝑛𝑖
𝑎𝑖 = ∑︀
𝑖 𝑛𝑖
Parameters
atoms [dict] dictionary of counts of individual atoms, indexed by symbol with proper capital-
ization, [-]
Returns
afracs [dict] dictionary of atomic fractions of individual atoms, indexed by symbol with proper
capitalization, [-]

1.1.1.10.9 Notes

No actual data on the elements is used, so incorrect or custom compounds would not raise an error.

1.1.1.10.10 References

[1]

1.1.1.10.11 Examples

>>> atom_fractions({'H': 12, 'C': 20, 'O': 5})


{'H': 0.32432432432432434, 'C': 0.5405405405405406, 'O': 0.13513513513513514}

thermo.elements.similarity_variable(atoms, MW=None)
Calculates the similarity variable of an compound, as defined in [1]. Currently only applied for certain heat
capacity estimation routines.
∑︀
𝑁 𝑛𝑖
𝛼= = ∑︀ 𝑖
𝑀𝑊 𝑖 𝑛 𝑖 𝑀 𝑊𝑖
Parameters
atoms [dict] dictionary of counts of individual atoms, indexed by symbol with proper capital-
ization, [-]
MW [float, optional] Molecular weight, [g/mol]
Returns
similarity_variable [float] Similarity variable as defined in [1], [mol/g]

88 Chapter 1. thermo
thermo Documentation, Release 0.1

1.1.1.10.12 Notes

Molecular weight is optional, but speeds up the calculation slightly. It is calculated using the function molecu-
lar_weight if not specified.

1.1.1.10.13 References

[1]

1.1.1.10.14 Examples

>>> similarity_variable({'H': 32, 'C': 15})


0.2212654140784498

thermo.elements.atoms_to_Hill(atoms)
Determine the Hill formula of a compound, given a dictionary of its atoms and their counts, in the format
{symbol: count}.
Parameters
atoms [dict] dictionary of counts of individual atoms, indexed by symbol with proper capital-
ization, [-]
Returns
Hill_formula [str] Hill formula, [-]

1.1.1.10.15 Notes

The Hill system is as follows:


If the chemical has ‘C’ in it, this is listed first, and then if it has ‘H’ in it as well as ‘C’, then that goes next. All
elements are sorted alphabetically afterwards, including ‘H’ if ‘C’ is not present. All elements are followed by
their count, unless it is 1.

1.1.1.10.16 References

[1]

1.1.1.10.17 Examples

>>> atoms_to_Hill({'H': 5, 'C': 2, 'Br': 1})


'C2H5Br'

thermo.elements.simple_formula_parser(formula)
Basic formula parser, primarily for obtaining element counts from formulas as formated in PubChem. Handles
formulas with integer counts, but no brackets, no hydrates, no charges, no isotopes, and no group multipliers.
Strips charges from the end of a formula first. Accepts repeated chemical units. Performs no sanity checking
that elements are actually elements. As it uses regular expressions for matching, errors are mostly just ignored.
Parameters

1.1. thermo package 89


thermo Documentation, Release 0.1

formula [str] Formula string, very simply formats only.


Returns
atoms [dict] dictionary of counts of individual atoms, indexed by symbol with proper capital-
ization, [-]

1.1.1.10.18 Notes

Inspiration taken from the thermopyl project, at https://github.com/choderalab/thermopyl.

1.1.1.10.19 Examples

>>> simple_formula_parser('CO2')
{'C': 1, 'O': 2}

thermo.elements.nested_formula_parser(formula, check=True)
Improved formula parser which handles braces and their multipliers, as well as rational element counts.
Strips charges from the end of a formula first. Accepts repeated chemical units. Performs no sanity checking
that elements are actually elements. As it uses regular expressions for matching, errors are mostly just ignored.
Parameters
formula [str] Formula string, very simply formats only.
check [bool] If check is True, a simple check will be performed to determine if a formula is not
a formula and an exception will be raised if it is not, [-]
Returns
atoms [dict] dictionary of counts of individual atoms, indexed by symbol with proper capital-
ization, [-]

1.1.1.10.20 Notes

Inspired by the approach taken by CrazyMerlyn on a reddit DailyProgrammer challenge, at https://www.reddit.


com/r/dailyprogrammer/comments/6eerfk/20170531_challenge_317_intermediate_counting/

1.1.1.10.21 Examples

>>> pprint(nested_formula_parser('Pd(NH3)4.0001+2'))
{'H': 12.0003, 'N': 4.0001, 'Pd': 1}

thermo.elements.CAS_by_number = ['12385-13-6', '7440-59-7', '7439-93-2', '7440-41-7', '7440


CAS numbers of the elements, indexed by atomic numbers off-by-one up to 118.
thermo.elements.periods = [1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4
Periods of the elements, indexed by atomic numbers off-by-one up to 118.
thermo.elements.groups = [1, 18, 1, 2, 13, 14, 15, 16, 17, 18, 1, 2, 13, 14, 15, 16, 17, 18
Groups of the elements, indexed by atomic numbers off-by-one up to 118. Lanthanides and Actinides are set to
None.

90 Chapter 1. thermo
thermo Documentation, Release 0.1

thermo.elements.blocks = {'s': [1, 2, 3, 4, 11, 12, 19, 20, 37, 38, 55, 56, 87, 88], 'd':
Blocks of the elements, stored in a dictionary with four keys and lists. Indexed by atomic numbers off-by-one
up to 118.
thermo.elements.charge_from_formula(formula)
Basic formula parser to determine the charge from a formula - given that the charge is already specified as one
element of the formula.
Performs no sanity checking that elements are actually elements.
Parameters
formula [str] Formula string, very simply formats only, ending in one of ‘+x’, ‘-x’, n*’+’, or
n*’-‘ or any of them surrounded by brackets but always at the end of a formula.
Returns
charge [int] Charge of the molecule, [faraday]

1.1.1.10.22 Examples

>>> charge_from_formula('Br3-')
-1
>>> charge_from_formula('Br3(-)')
-1

thermo.elements.serialize_formula(formula)
Basic formula serializer to construct a consistently-formatted formula. This is necessary for handling user-
supplied formulas, which are not always well formatted.
Performs no sanity checking that elements are actually elements.
Parameters
formula [str] Formula string as parseable by the method nested_formula_parser, [-]
Returns
formula [str] A consistently formatted formula to describe a molecular formula, [-]

1.1.1.10.23 Examples

>>> serialize_formula('Pd(NH3)4+3')
'H12N4Pd+3'

1.1.1.11 thermo.eos module

class thermo.eos.GCEOS
Bases: object
Class for solving a generic Pressure-explicit three-parameter cubic equation of state. Does not implement any
parameters itself; must be subclassed by an equation of state class which uses it. Works for mixtures or pure
species for all properties except fugacity. All properties are derived with the CAS SymPy, not relying on any
derivations previously published.

𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑉 − 𝑏 𝑉 2 + 𝛿𝑉 + 𝜖

1.1. thermo package 91


thermo Documentation, Release 0.1

Main methods (in order they are called) are solve, set_from_PT, volume_solutions,
set_properties_from_solution, and derivatives_and_departures.
solve calls check_sufficient_input, which checks if two of T, P, and V were set. It then solves for the remaining
variable. If T is missing, method solve_T is used; it is parameter specific, and so must be implemented in
each specific EOS. If P is missing, it is directly calculated. If V is missing, it is calculated with the method
volume_solutions. At this point, either three possible volumes or one user specified volume are known. The
value of a_alpha, and its first and second temperature derivative are calculated with the EOS-specific method
a_alpha_and_derivatives.
If V is not provided, volume_solutions calculates the three possible molar volumes which are solutions to the
EOS; in the single-phase region, only one solution is real and correct. In the two-phase region, all volumes are
real, but only the largest and smallest solution are physically meaningful, with the largest being that of the gas
and the smallest that of the liquid.
set_from_PT is called to sort out the possible molar volumes. For the case of a user-specified V, the possi-
bility of there existing another solution is ignored for speed. If there is only one real volume, the method
set_properties_from_solution is called with it. If there are two real volumes, set_properties_from_solution is
called once with each volume. The phase is returned by set_properties_from_solution, and the volumes is set to
either V_l or V_g as appropriate.
set_properties_from_solution is a beast which calculates all relevant partial derivatives and properties of the
EOS. 15 derivatives and excess enthalpy and entropy are calculated first. If the method was called with the
quick flag, the method derivatives_and_departures uses a mess derived with SymPy’s cse function to perform
the calculation as quickly as possible. Otherwise, the independent formulas for each property are used.
set_properties_from_solution next calculates beta (isobaric expansion coefficient), kappa (isothermal compress-
ibility), Cp_minus_Cv, Cv_dep, Cp_dep, V_dep molar volume departure, U_dep internal energy departure,
G_dep Gibbs energy departure, A_dep Helmholtz energy departure, fugacity, and phi (fugacity coefficient). It
then calculates PIP or phase identification parameter, and determines the fluid phase with it. Finally, it sets all
these properties as attibutes or either the liquid or gas phase with the convention of adding on _l or _g to the
variable names.

1.1.1.11.1 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Dummy method to calculate a_alpha and its first and
second derivatives.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
Continued on next page

92 Chapter 1. thermo
thermo Documentation, Release 0.1

Table 1.2 – continued from previous page


solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Generic method to calculate T from a specified P and V.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

derivatives_and_departures
main_derivatives_and_departures
to_TP

Hvap(T)
Method to calculate enthalpy of vaporization for a pure fluid from an equation of state, without iteration.
𝑑𝑃 𝑠𝑎𝑡 ∆𝐻𝑣𝑎𝑝
=
𝑑𝑇 𝑇 (𝑉𝑔 − 𝑉𝑙 )
Results above the critical temperature are meaningless. A first-order polynomial is used to extrapolate
under 0.32 Tc; however, there is normally not a volume solution to the EOS which can produce that low
of a pressure.
Parameters
T [float] Temperature, [K]
Returns
Hvap [float] Increase in enthalpy needed for vaporization of liquid phase along the satura-
tion line, [J/mol]

1.1.1.11.2 Notes

Calculates vapor pressure and its derivative with Psat and dPsat_dT as well as molar volumes of the
saturation liquid and vapor phase in the process.
Very near the critical point this provides unrealistic results due to Psat’s polynomials being insufficiently
accurate.

1.1.1.11.3 References

[1]
Psat(T, polish=False)
Generic method to calculate vapor pressure for a specified T.
From Tc to 0.32Tc, uses a 10th order polynomial of the following form:
10 (︂ )︂𝑘
𝑃𝑟 ∑︁ 𝛼
ln = 𝐶𝑘 −1
𝑇𝑟 𝑇𝑟
𝑘=0

If polish is True, SciPy’s newton solver is launched with the calculated vapor pressure as an initial guess
in an attempt to get more accuracy. This may not converge however.
Results above the critical temperature are meaningless. A first-order polynomial is used to extrapolate
under 0.32 Tc; however, there is normally not a volume solution to the EOS which can produce that low
of a pressure.

1.1. thermo package 93


thermo Documentation, Release 0.1

Parameters
T [float] Temperature, [K]
polish [bool, optional] Whether to attempt to use a numerical solver to make the solution
more precise or not
Returns
Psat [float] Vapor pressure, [Pa]

1.1.1.11.4 Notes

EOSs sharing the same b, delta, and epsilon have the same coefficient sets.
All coefficients were derived with numpy’s polyfit. The intersection between the polynomials is continu-
ous, but there is a step change in its derivative.
Form for the regression is inspired from [1].

1.1.1.11.5 References

[1]
V_g_sat(T)
Method to calculate molar volume of the vapor phase along the saturation line.
Parameters
T [float] Temperature, [K]
Returns
V_g_sat [float] Gas molar volume along the saturation line, [m^3/mol]

1.1.1.11.6 Notes

Computers Psat, and then uses volume_solutions to obtain the three possible molar volumes. The highest
value is returned.
V_l_sat(T)
Method to calculate molar volume of the liquid phase along the saturation line.
Parameters
T [float] Temperature, [K]
Returns
V_l_sat [float] Liquid molar volume along the saturation line, [m^3/mol]

1.1.1.11.7 Notes

Computers Psat, and then uses volume_solutions to obtain the three possible molar volumes. The lowest
value is returned.

94 Chapter 1. thermo
thermo Documentation, Release 0.1

a_alpha_and_derivatives(T, full=True, quick=True)


Dummy method to calculate a_alpha and its first and second derivatives. Should be implemented with the
same function signature in each EOS variant; this only raises a NotImplemented Exception. Should return
‘a_alpha’, ‘da_alpha_dT’, and ‘d2a_alpha_dT2’.
For use in solve_T, returns only a_alpha if full is False.
Parameters
T [float] Temperature, [K]
full [bool, optional] If False, calculates and returns only a_alpha
quick [bool, optional] Whether to use a SymPy cse-derived expression (3x faster) or indi-
vidual formulas
Returns
a_alpha [float] Coefficient calculated by EOS-specific method, [J^2/mol^2/Pa]
da_alpha_dT [float] Temperature derivative of coefficient calculated by EOS-specific
method, [J^2/mol^2/Pa/K]
d2a_alpha_dT2 [float] Second temperature derivative of coefficient calculated by EOS-
specific method, [J^2/mol^2/Pa/K**2]
check_sufficient_inputs()
Method to an exception if none of the pairs (T, P), (T, V), or (P, V) are given.
dPsat_dT(T)
Generic method to calculate the temperature derivative of vapor pressure for a specified T. Implements the
analytical derivative of the two polynomials described in Psat.
As with Psat, results above the critical temperature are meaningless. The first-order polynomial which
is used to calculate it under 0.32 Tc may not be physicall meaningful, due to there normally not being a
volume solution to the EOS which can produce that low of a pressure.
Parameters
T [float] Temperature, [K]
Returns
dPsat_dT [float] Derivative of vapor pressure with respect to temperature, [Pa/K]

1.1.1.11.8 Notes

There is a small step change at 0.32 Tc for all EOS due to the two switch between polynomials at that
point.
Useful for calculating enthalpy of vaporization with the Clausius Clapeyron Equation. Derived with
SymPy’s diff and cse.
derivatives_and_departures(T, P, V, b, delta, epsilon, a_alpha, da_alpha_dT, d2a_alpha_dT2,
quick=True)
kwargs = {}
static main_derivatives_and_departures(T, P, V, b, delta, epsilon, a_alpha,
da_alpha_dT, d2a_alpha_dT2, quick=True)
set_from_PT(Vs)
Counts the number of real volumes in Vs, and determines what to do. If there is only one

1.1. thermo package 95


thermo Documentation, Release 0.1

real volume, the method set_properties_from_solution is called with it. If there are two real vol-
umes, set_properties_from_solution is called once with each volume. The phase is returned by
set_properties_from_solution, and the volumes is set to either V_l or V_g as appropriate.
Parameters
Vs [list[float]] Three possible molar volumes, [m^3/mol]
set_properties_from_solution(T, P, V, b, delta, epsilon, a_alpha, da_alpha_dT,
d2a_alpha_dT2, quick=True)
Sets all interesting properties which can be calculated from an EOS alone. Determines which phase the
fluid is on its own; for details, see phase_identification_parameter.
The list of properties set is as follows, with all properties suffixed with ‘_l’ or ‘_g’.
dP_dT, dP_dV, dV_dT, dV_dP, dT_dV, dT_dP, d2P_dT2, d2P_dV2, d2V_dT2, d2V_dP2, d2T_dV2,
d2T_dP2, d2V_dPdT, d2P_dTdV, d2T_dPdV, H_dep, S_dep, beta, kappa, Cp_minus_Cv, V_dep, U_dep,
G_dep, A_dep, fugacity, phi, and PIP.
Parameters
T [float] Temperature, [K]
P [float] Pressure, [Pa]
V [float] Molar volume, [m^3/mol]
b [float] Coefficient calculated by EOS-specific method, [m^3/mol]
delta [float] Coefficient calculated by EOS-specific method, [m^3/mol]
epsilon [float] Coefficient calculated by EOS-specific method, [m^6/mol^2]
a_alpha [float] Coefficient calculated by EOS-specific method, [J^2/mol^2/Pa]
da_alpha_dT [float] Temperature derivative of coefficient calculated by EOS-specific
method, [J^2/mol^2/Pa/K]
d2a_alpha_dT2 [float] Second temperature derivative of coefficient calculated by EOS-
specific method, [J^2/mol^2/Pa/K**2]
quick [bool, optional] Whether to use a SymPy cse-derived expression (3x faster) or indi-
vidual formulas
Returns
phase [str] Either ‘l’ or ‘g’

1.1.1.11.9 Notes

The individual formulas for the derivatives and excess properties are as follows. For definitions of beta,
see isobaric_expansion; for kappa, see isothermal_compressibility; for Cp_minus_Cv, see Cp_minus_Cv;
for phase_identification_parameter, see phase_identification_parameter.

96 Chapter 1. thermo
thermo Documentation, Release 0.1

First derivatives; in part using the Triple Product Rule [2], [3]:

𝑎 𝑑𝛼(𝑇 )
(︂ )︂
𝑅
𝜕𝑃
− 2 𝑑𝑇 =
𝑉 𝑉 −𝑏 𝑉 +𝑉𝛿+𝜖
𝜕𝑇
(︂ )︂
𝜕𝑃 𝑅𝑇 𝑎 (−2𝑉 − 𝛿) 𝛼(𝑇 )
=− 2 − 2
𝜕𝑉 𝑇 (𝑉 − 𝑏) (𝑉 2 + 𝑉 𝛿 + 𝜖)
(︂ )︂ (︀ 𝜕𝑃 )︀
𝜕𝑉
= − (︀ 𝜕𝑇
𝜕𝑃
)︀𝑉
𝜕𝑇 𝑃 𝜕𝑉 𝑇
(︂ )︂ (︀ 𝜕𝑉 )︀
𝜕𝑉 𝜕𝑇 𝑃
= − (︀ 𝜕𝑃 )︀
𝜕𝑃 𝑇 𝜕𝑇 𝑉
(︂ )︂
𝜕𝑇 1
= (︀ 𝜕𝑉 )︀
𝜕𝑉 𝑃 𝜕𝑇 𝑃
(︂ )︂
𝜕𝑇 1
= (︀ 𝜕𝑃 )︀
𝜕𝑃 𝑉 𝜕𝑇 𝑉

Second derivatives with respect to one variable; those of T and V use identities shown in [1] and verified
numerically:

𝜕2𝑃
(︂ )︂

𝜕𝑇 2 𝑉
(︃
(︂ 2
)︂ 2
𝜕 𝑃 𝑅𝑇 𝑎 (2𝑉 + 𝛿) 𝛼(𝑇 )
=2 3 − 3 +
𝜕𝑉 2 𝑇 (𝑉 − 𝑏) (𝑉 2 + 𝑉 𝛿 + 𝜖)
(︂ 2 )︂ (︂
𝜕 𝑇
=−
𝜕𝑃 2 𝑉
(︂ 2 )︂ (︂
𝜕 𝑉
=−
𝜕𝑃 2 𝑇
)︂−2
𝜕2𝑇 𝜕2𝑃 𝜕2𝑃 𝜕2𝑃
(︂ )︂ [︂(︂ )︂ (︂ )︂ (︂ )︂ (︂ )︂]︂ (︂ [︂(︂ )︂ (︂ )︂ (︂ )︂ (︂ 2 )︂ ]︂
𝜕𝑃 𝜕𝑃 𝜕𝑃 𝜕𝑃 𝜕𝑃 𝜕 𝑃
=− − + −
𝜕𝑉 2 𝑃 𝜕𝑉 2 𝑇 𝜕𝑇 𝑉 𝜕𝑉 𝑇 𝜕𝑇 𝜕𝑉 𝜕𝑇 𝑉 𝜕𝑇 𝜕𝑉 𝜕𝑇 𝑉 𝜕𝑉 𝑇 𝜕𝑇 2 𝑉
)︂−2
𝜕2𝑉 𝜕2𝑃 𝜕2𝑃 𝜕2𝑃
(︂ )︂ [︂(︂ )︂ (︂ )︂ (︂ )︂ (︂ )︂]︂ (︂ [︂(︂ )︂ (︂ )︂ (︂ )︂ (︂ 2 )︂ ]︂
𝜕𝑃 𝜕𝑃 𝜕𝑃 𝜕𝑃 𝜕𝑃 𝜕 𝑃
=− − + −
𝜕𝑇 2 𝑃 𝜕𝑇 2 𝑉 𝜕𝑉 𝑇 𝜕𝑇 𝑉 𝜕𝑇 𝜕𝑉 𝜕𝑉 𝑇 𝜕𝑇 𝜕𝑉 𝜕𝑉 𝑇 𝜕𝑇 𝑉 𝜕𝑉 2 𝑇

Second derivatives with respect to the other two variables; those of T and V use identities shown in [1]
and verified numerically:

𝜕2𝑃 𝑎 (2𝑉 + 𝛿) 𝑑𝛼(𝑇 )


(︂ )︂
𝑅 𝑑𝑇
=− 2 + 2
𝜕𝑇 𝜕𝑉 (𝑉 − 𝑏) (𝑉 2 + 𝑉 𝛿 + 𝜖)
)︂−3
𝜕2𝑇 𝜕2𝑃
(︂ )︂ [︂(︂ )︂ (︂ )︂ (︂ )︂ (︂ 2 )︂ ]︂ (︂
𝜕𝑃 𝜕𝑃 𝜕 𝑃 𝜕𝑃
=− −
𝜕𝑃 𝜕𝑉 𝜕𝑇 𝜕𝑉 𝜕𝑇 𝑉 𝜕𝑉 𝑇 𝜕𝑇 2 𝑉 𝜕𝑇 𝑉
)︂−3
𝜕2𝑉 𝜕2𝑃
(︂ )︂ [︂(︂ )︂ (︂ )︂ (︂ )︂ (︂ 2 )︂ ]︂ (︂
𝜕𝑃 𝜕𝑃 𝜕 𝑃 𝜕𝑃
=− −
𝜕𝑇 𝜕𝑃 𝜕𝑇 𝜕𝑉 𝜕𝑉 𝑇 𝜕𝑇 𝑉 𝜕𝑉 2 𝑇 𝜕𝑉 𝑇

1.1. thermo package 97


thermo Documentation, Release 0.1

Excess properties
∫︁ 𝑉[︂ ]︂
𝜕𝑃 2
𝐻𝑑𝑒𝑝 = 𝑇 − 𝑃 𝑑𝑉 + 𝑃 𝑉 − 𝑅𝑇 = 𝑃 𝑉 − 𝑅𝑇 + √
∞ 𝜕𝑇 𝑉 2
𝛿 −4
∫︁ 𝑉 [︂ ]︂ (︂ )︂
𝜕𝑃 𝑅 𝑃𝑉 𝑃𝑉
𝑆𝑑𝑒𝑝 = − 𝑑𝑉 + 𝑅 log = −𝑅 log (𝑉 ) + 𝑅 log +𝑅
∞ 𝜕𝑇 𝑉 𝑅𝑇 𝑅𝑇

(︃√︂ (︃ )︃ √︂ (︃
𝑉
√︂ √︂
𝜕2𝑃 𝛿2
∫︁ (︂ )︂
1 1 𝛿 1 1
𝐶𝑣,𝑑𝑒𝑝 = 𝑇 𝑑𝑉 = −𝑇 𝑎 log 𝑉 − + + 2𝜖 − log 𝑉 +
∞ 𝜕𝑇 2 𝛿 2 − 4𝜖 2 𝛿 2 − 4𝜖 2 𝛿 2 − 4𝜖 𝛿 2 − 4𝜖

1.1.1.11.10 References

[1], [2], [3]


solve()
First EOS-generic method; should be called by all specific EOSs. For solving for T, the EOS must provide
the method solve_T. For all cases, the EOS must provide a_alpha_and_derivatives. Calls set_from_PT
once done.
solve_T(P, V, quick=True)
Generic method to calculate T from a specified P and V. Provides SciPy’s newton solver, and it-
erates to solve the general equation for P, recalculating a_alpha as a function of temperature using
a_alpha_and_derivatives each iteration.
Parameters
P [float] Pressure, [Pa]
V [float] Molar volume, [m^3/mol]
quick [bool, optional] Whether to use a SymPy cse-derived expression (3x faster) or indi-
vidual formulas - not applicable where a numerical solver is used.
Returns
T [float] Temperature, [K]
to_TP(T, P)
static volume_solutions(T, P, b, delta, epsilon, a_alpha, quick=True)
Solution of this form of the cubic EOS in terms of volumes. Returns three values, all with some complex
part.
Parameters
T [float] Temperature, [K]
P [float] Pressure, [Pa]

98 Chapter 1. thermo
thermo Documentation, Release 0.1

b [float] Coefficient calculated by EOS-specific method, [m^3/mol]


delta [float] Coefficient calculated by EOS-specific method, [m^3/mol]
epsilon [float] Coefficient calculated by EOS-specific method, [m^6/mol^2]
a_alpha [float] Coefficient calculated by EOS-specific method, [J^2/mol^2/Pa]
quick [bool, optional] Whether to use a SymPy cse-derived expression (3x faster) or indi-
vidual formulas
Returns
Vs [list[float]] Three possible molar volumes, [m^3/mol]

1.1.1.11.11 Notes

Using explicit formulas, as can be derived in the following example, is faster than most numeric root
finding techniques, and finds all values explicitly. It takes several seconds.
>>> from sympy import *
>>> P, T, V, R, b, a, delta, epsilon, alpha = symbols('P, T, V, R, b, a,
˓→delta, epsilon, alpha')

>>> Tc, Pc, omega = symbols('Tc, Pc, omega')


>>> CUBIC = R*T/(V-b) - a*alpha/(V*V + delta*V + epsilon) - P
>>> #solve(CUBIC, V)

class thermo.eos.PR(Tc, Pc, omega, T=None, P=None, V=None)


Bases: thermo.eos.GCEOS
Class for solving the Peng-Robinson cubic equation of state for a pure compound. Subclasses CUBIC_EOS,
which provides the methods for solving the EOS and calculating its assorted relevant thermodynamic properties.
Solves the EOS on initialization.
Implemented methods here are a_alpha_and_derivatives, which calculates a_alpha and its first and second
derivatives, and solve_T, which from a specified P and V obtains T.
Two of T, P, and V are needed to solve the EOS.
𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑣 − 𝑏 𝑣(𝑣 + 𝑏) + 𝑏(𝑣 − 𝑏)
𝑅2 𝑇𝑐2
𝑎 = 0.45724
𝑃𝑐
𝑅𝑇𝑐
𝑏 = 0.07780
𝑃
√︀ 𝑐
𝛼(𝑇 ) = [1 + 𝜅(1 − 𝑇𝑟 )]2
𝜅 = 0.37464 + 1.54226𝜔 − 0.26992𝜔 2
Parameters
Tc [float] Critical temperature, [K]
Pc [float] Critical pressure, [Pa]
omega [float] Acentric factor, [-]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]

1.1. thermo package 99


thermo Documentation, Release 0.1

1.1.1.11.12 Notes

The constants in the expresions for a and b are given to full precision in the actual code, as derived in [3].

1.1.1.11.13 References

[1], [2], [3]

1.1.1.11.14 Examples

T-P initialization, and exploring each phase’s properties:

>>> eos = PR(Tc=507.6, Pc=3025000, omega=0.2975, T=400., P=1E6)


>>> eos.V_l, eos.V_g
(0.00015607313188529268, 0.0021418760907613724)
>>> eos.phase
'l/g'
>>> eos.H_dep_l, eos.H_dep_g
(-26111.868721160878, -3549.2993749373945)
>>> eos.S_dep_l, eos.S_dep_g
(-58.09842815106099, -6.439449710478305)
>>> eos.U_dep_l, eos.U_dep_g
(-22942.157933046172, -2365.391545698767)
>>> eos.G_dep_l, eos.G_dep_g
(-2872.497460736482, -973.5194907460723)
>>> eos.A_dep_l, eos.A_dep_g
(297.21332737822377, 210.38833849255525)
>>> eos.beta_l, eos.beta_g
(0.0026933709177837514, 0.01012322391117497)
>>> eos.kappa_l, eos.kappa_g
(9.33572154382935e-09, 1.9710669809793307e-06)
>>> eos.Cp_minus_Cv_l, eos.Cp_minus_Cv_g
(48.510145807408, 44.54414603000346)
>>> eos.Cv_dep_l, eos.Cp_dep_l
(18.89210627002112, 59.08779227742912)

P-T initialization, liquid phase, and round robin trip:

>>> eos = PR(Tc=507.6, Pc=3025000, omega=0.2975, T=299., P=1E6)


>>> eos.phase, eos.V_l, eos.H_dep_l, eos.S_dep_l
('l', 0.00013022208100139945, -31134.740290463425, -72.47559475426019)

T-V initialization, liquid phase:

>>> eos = PR(Tc=507.6, Pc=3025000, omega=0.2975, T=299., V=0.00013022208100139953)


>>> eos.P, eos.phase
(1000000.0000020266, 'l')

P-V initialization at same state:

>>> eos = PR(Tc=507.6, Pc=3025000, omega=0.2975, V=0.00013022208100139953, P=1E6)


>>> eos.T, eos.phase
(298.99999999999926, 'l')

100 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.11.15 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for this EOS.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Method to calculate T from a specified P and V for the
PR EOS.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

derivatives_and_departures
main_derivatives_and_departures
to_TP

Psat_coeffs = [9.689234781518378e-06, -0.0002443582031145319, 0.0026885427128470565, -0


Psat_coeffs_limiting = [-3.4758880164801873, 0.7675486448347723]
Zc = 0.30740130869870386
a_alpha_and_derivatives(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives for this EOS. Returns a_alpha,
da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documentation. Uses
the set values of Tc, kappa, and a.
For use in solve_T, returns only a_alpha if full is False.
)︂2
𝑇 0.5
(︂ (︂ )︂
𝑎𝛼 = 𝑎 𝜅 − 0.5 + 1 + 1
𝑇𝑐
𝑇 0.5
(︂ (︂ )︂ )︂
𝑑𝑎𝛼 1.0𝑎𝜅
= − 0.5 0.5 𝜅 − 0.5 + 1 + 1
𝑑𝑇 𝑇 𝑇𝑐 𝑇𝑐
2
(︂ (︂ (︂ 0.5 )︂ )︂ )︂
𝑑 𝑎𝛼 1 𝑇 𝜅
= 0.5𝑎𝜅 − 1.5 0.5 𝜅 − 1 − 1 + 1.0 1.0
𝑑𝑇 2 𝑇 𝑇𝑐 𝑇 𝑐0.5 𝑇 𝑇𝑐

c1 = 0.4572355289213822

1.1. thermo package 101


thermo Documentation, Release 0.1

c2 = 0.07779607390388846
solve_T(P, V, quick=True)
Method to calculate T from a specified P and V for the PR EOS. Uses Tc, a, b, and kappa as well, obtained
from the class’s namespace.
Parameters
P [float] Pressure, [Pa]
V [float] Molar volume, [m^3/mol]
quick [bool, optional] Whether to use a SymPy cse-derived expression (3x faster) or indi-
vidual formulas
Returns
T [float] Temperature, [K]

1.1.1.11.16 Notes

The exact solution can be derived as follows, and is excluded for breviety.

>>> from sympy import *


>>> P, T, V = symbols('P, T, V')
>>> Tc, Pc, omega = symbols('Tc, Pc, omega')
>>> R, a, b, kappa = symbols('R, a, b, kappa')

>>> a_alpha = a*(1 + kappa*(1-sqrt(T/Tc)))**2


>>> PR_formula = R*T/(V-b) - a_alpha/(V*(V+b)+b*(V-b)) - P
>>> #solve(PR_formula, T)

class thermo.eos.SRK(Tc, Pc, omega, T=None, P=None, V=None)


Bases: thermo.eos.GCEOS
Class for solving the Soave-Redlich-Kwong cubic equation of state for a pure compound. Subclasses CU-
BIC_EOS, which provides the methods for solving the EOS and calculating its assorted relevant thermodynamic
properties. Solves the EOS on initialization.
Implemented methods here are a_alpha_and_derivatives, which sets a_alpha and its first and second derivatives,
and solve_T, which from a specified P and V obtains T.
Two of T, P, and V are needed to solve the EOS.
𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑉 − 𝑏 𝑉 (𝑉 + 𝑏)
𝑅2 (𝑇𝑐 )2 0.42748 · 𝑅2 (𝑇𝑐 )2
(︂ )︂
𝑎= √ =
9( 3 2 − 1)𝑃𝑐 𝑃𝑐
(︃ √ )︃
3
( 2 − 1) 𝑅𝑇𝑐 0.08664 · 𝑅𝑇𝑐
𝑏= =
3 𝑃𝑐 𝑃𝑐
[︃ (︃ √︂ )︃]︃2
𝑇
𝛼(𝑇 ) = 1 + 𝑚 1 −
𝑇𝑐
𝑚 = 0.480 + 1.574𝜔 − 0.176𝜔 2

Parameters
Tc [float] Critical temperature, [K]

102 Chapter 1. thermo


thermo Documentation, Release 0.1

Pc [float] Critical pressure, [Pa]


omega [float] Acentric factor, [-]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]

1.1.1.11.17 References

[1], [2], [3]

1.1.1.11.18 Examples

>>> eos = SRK(Tc=507.6, Pc=3025000, omega=0.2975, T=299., P=1E6)


>>> eos.phase, eos.V_l, eos.H_dep_l, eos.S_dep_l
('l', 0.00014682102759032003, -31754.65309653571, -74.3732468359525)

1.1.1.11.19 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for this EOS.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Method to calculate T from a specified P and V for the
SRK EOS.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

derivatives_and_departures
main_derivatives_and_departures
to_TP

1.1. thermo package 103


thermo Documentation, Release 0.1

Psat_coeffs = [3.2606704044732426e-06, -8.494828412561618e-05, 0.0009661948864683891, -


Psat_coeffs_limiting = [-3.2308843103522107, 0.7210534170705403]
Zc = 0.3333333333333333
a_alpha_and_derivatives(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives for this EOS. Returns a_alpha,
da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documentation. Uses
the set values of Tc, m, and a.
(︃ (︃ √︂ )︃ )︃2
𝑇
𝑎𝛼 = 𝑎 𝑚 − +1 +1
𝑇𝑐
√︂ (︃ (︃√︂ )︃ )︃
𝑑𝑎𝛼 𝑎𝑚 𝑇 𝑇
= 𝑚 −1 −1
𝑑𝑇 𝑇 𝑇𝑐 𝑇𝑐
√︁
𝑇
2
𝑑 𝑎𝛼 𝑎𝑚 𝑇𝑐
= (𝑚 + 1)
𝑑𝑇 2 2𝑇 2

c1 = 0.4274802335403414
c2 = 0.08664034996495772
epsilon = 0
solve_T(P, V, quick=True)
Method to calculate T from a specified P and V for the SRK EOS. Uses a, b, and Tc obtained from the
class’s namespace.
Parameters
P [float] Pressure, [Pa]
V [float] Molar volume, [m^3/mol]
quick [bool, optional] Whether to use a SymPy cse-derived expression (3x faster) or indi-
vidual formulas
Returns
T [float] Temperature, [K]

1.1.1.11.20 Notes

The exact solution can be derived as follows; it is excluded for breviety.

>>> from sympy import *


>>> P, T, V, R, a, b, m = symbols('P, T, V, R, a, b, m')
>>> Tc, Pc, omega = symbols('Tc, Pc, omega')
>>> a_alpha = a*(1 + m*(1-sqrt(T/Tc)))**2
>>> SRK = R*T/(V-b) - a_alpha/(V*(V+b)) - P
>>> # solve(SRK, T)

class thermo.eos.PR78(Tc, Pc, omega, T=None, P=None, V=None)


Bases: thermo.eos.PR
Class for solving the Peng-Robinson cubic equation of state for a pure compound according to the 1978 variant.
Subclasses PR, which provides everything except the variable kappa. Solves the EOS on initialization. See PR

104 Chapter 1. thermo


thermo Documentation, Release 0.1

for further documentation.


𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑣 − 𝑏 𝑣(𝑣 + 𝑏) + 𝑏(𝑣 − 𝑏)
𝑅2 𝑇𝑐2
𝑎 = 0.45724
𝑃𝑐
𝑅𝑇𝑐
𝑏 = 0.07780
𝑃
√︀ 𝑐
𝛼(𝑇 ) = [1 + 𝜅(1 − 𝑇𝑟 )]2
𝜅𝑖 = 0.37464 + 1.54226𝜔𝑖 − 0.26992𝜔𝑖2 if 𝜔𝑖 ≤ 0.491
𝜅𝑖 = 0.379642 + 1.48503𝜔𝑖 − 0.164423𝜔𝑖2 + 0.016666𝜔𝑖3 if 𝜔𝑖 > 0.491

Parameters
Tc [float] Critical temperature, [K]
Pc [float] Critical pressure, [Pa]
omega [float] Acentric factor, [-]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]

1.1.1.11.21 Notes

This variant is recommended over the original.

1.1.1.11.22 References

[1], [2]

1.1.1.11.23 Examples

P-T initialization (furfuryl alcohol), liquid phase:

>>> eos = PR78(Tc=632, Pc=5350000, omega=0.734, T=299., P=1E6)


>>> eos.phase, eos.V_l, eos.H_dep_l, eos.S_dep_l
('l', 8.351960066075009e-05, -63764.649480508735, -130.73710891262687)

1.1.1.11.24 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
Continued on next page

1.1. thermo package 105


thermo Documentation, Release 0.1

Table 1.5 – continued from previous page


V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for this EOS.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Method to calculate T from a specified P and V for the
PR EOS.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

derivatives_and_departures
main_derivatives_and_departures
to_TP

class thermo.eos.PRSV(Tc, Pc, omega, T=None, P=None, V=None, kappa1=0)


Bases: thermo.eos.PR
Class for solving the Peng-Robinson-Stryjek-Vera equations of state for a pure compound as given in [1]. The
same as the Peng-Robinson EOS, except with a different kappa formula and with an optional fit parameter.
Subclasses PR, which provides only several constants. See PR for further documentation and examples.
𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑣 − 𝑏 𝑣(𝑣 + 𝑏) + 𝑏(𝑣 − 𝑏)
𝑅2 𝑇𝑐2
𝑎 = 0.45724
𝑃𝑐
𝑅𝑇𝑐
𝑏 = 0.07780
𝑃
√︀ 𝑐
𝛼(𝑇 ) = [1 + 𝜅(1 − 𝑇𝑟 )]2
𝜅 = 𝜅0 + 𝜅1 (1 + 𝑇𝑟0.5 )(0.7 − 𝑇𝑟 )
𝜅0 = 0.378893 + 1.4897153𝜔 − 0.17131848𝜔 2 + 0.0196554𝜔 3
Parameters
Tc [float] Critical temperature, [K]
Pc [float] Critical pressure, [Pa]
omega [float] Acentric factor, [-]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]
kappa1 [float, optional] Fit parameter; available in [1] for over 90 compounds, [-]

106 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.11.25 Notes

[1] recommends that kappa1 be set to 0 for Tr > 0.7. This is not done by default; the class boolean
kappa1_Tr_limit may be set to True and the problem re-solved with that specified if desired. kappa1_Tr_limit
is not supported for P-V inputs.
Solutions for P-V solve for T with SciPy’s newton solver, as there is no analytical solution for T
[2] and [3] are two more resources documenting the PRSV EOS. [4] lists kappa values for 69 additional com-
pounds. See also PRSV2. Note that tabulated kappa values should be used with the critical parameters used in
their fits. Both [1] and [4] only considered vapor pressure in fitting the parameter.

1.1.1.11.26 References

[1], [2], [3], [4]

1.1.1.11.27 Examples

P-T initialization (hexane, with fit parameter in [1]), liquid phase:

>>> eos = PRSV(Tc=507.6, Pc=3025000, omega=0.2975, T=299., P=1E6, kappa1=0.05104)


>>> eos.phase, eos.V_l, eos.H_dep_l, eos.S_dep_l
('l', 0.000130126869448406, -31698.916002476693, -74.16749024350415)

1.1.1.11.28 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for this EOS.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Method to calculate T from a specified P and V for the
PRSV EOS.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

1.1. thermo package 107


thermo Documentation, Release 0.1

derivatives_and_departures
main_derivatives_and_departures
to_TP

a_alpha_and_derivatives(T, full=True, quick=True)


Method to calculate a_alpha and its first and second derivatives for this EOS. Returns a_alpha,
da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documentation. Uses
the set values of Tc, kappa0, kappa1, and a.
For use in root-finding, returns only a_alpha if full is False.
The a_alpha function is shown below; its first and second derivatives are long available through the SymPy
expression under it.
(︃(︃ (︃√︂ )︃ (︂ )︂)︃ (︃ √︂ )︃ )︃2
𝑇 𝑇 7 𝑇
𝑎𝛼 = 𝑎 𝜅0 + 𝜅1 +1 − + − +1 +1
𝑇𝑐 𝑇 𝑐 10 𝑇𝑐

>>> from sympy import *


>>> P, T, V = symbols('P, T, V')
>>> Tc, Pc, omega = symbols('Tc, Pc, omega')
>>> R, a, b, kappa0, kappa1 = symbols('R, a, b, kappa0, kappa1')
>>> kappa = kappa0 + kappa1*(1 + sqrt(T/Tc))*(Rational(7, 10)-T/Tc)
>>> a_alpha = a*(1 + kappa*(1-sqrt(T/Tc)))**2
>>> # diff(a_alpha, T)
>>> # diff(a_alpha, T, 2)

kappa1_Tr_limit = False
solve_T(P, V, quick=True)
Method to calculate T from a specified P and V for the PRSV EOS. Uses Tc, a, b, kappa0 and kappa as
well, obtained from the class’s namespace.
Parameters
P [float] Pressure, [Pa]
V [float] Molar volume, [m^3/mol]
quick [bool, optional] Whether to use a SymPy cse-derived expression (somewhat faster) or
individual formulas.
Returns
T [float] Temperature, [K]

1.1.1.11.29 Notes

Not guaranteed to produce a solution. There are actually two solution, one much higher than normally
desired; it is possible the solver could converge on this.
class thermo.eos.PRSV2(Tc, Pc, omega, T=None, P=None, V=None, kappa1=0, kappa2=0,
kappa3=0)
Bases: thermo.eos.PR
Class for solving the Peng-Robinson-Stryjek-Vera 2 equations of state for a pure compound as given in [1].
The same as the Peng-Robinson EOS, except with a different kappa formula and with three fit parameters.

108 Chapter 1. thermo


thermo Documentation, Release 0.1

Subclasses PR, which provides only several constants. See PR for further documentation and examples. PRSV
provides only one constant.

𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑣 − 𝑏 𝑣(𝑣 + 𝑏) + 𝑏(𝑣 − 𝑏)
𝑅2 𝑇𝑐2
𝑎 = 0.45724
𝑃𝑐
𝑅𝑇𝑐
𝑏 = 0.07780
𝑃
√︀ 𝑐
𝛼(𝑇 ) = [1 + 𝜅(1 − 𝑇𝑟 )]2
𝜅 = 𝜅0 + [𝜅1 + 𝜅2 (𝜅3 − 𝑇𝑟 )(1 − 𝑇𝑟0.5 )](1 + 𝑇𝑟0.5 )(0.7 − 𝑇𝑟 )
𝜅0 = 0.378893 + 1.4897153𝜔 − 0.17131848𝜔 2 + 0.0196554𝜔 3

Parameters
Tc [float] Critical temperature, [K]
Pc [float] Critical pressure, [Pa]
omega [float] Acentric factor, [-]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]
kappa1 [float, optional] Fit parameter; available in [1] for over 90 compounds, [-]
kappa2 [float, optional] Fit parameter; available in [1] for over 90 compounds, [-]
kappa [float, optional] Fit parameter; available in [1] for over 90 compounds, [-]

1.1.1.11.30 Notes

Solutions for P-V solve for T with SciPy’s newton solver, as there is no analytical solution for T
Note that tabulated kappa values should be used with the critical parameters used in their fits. [1] considered
only vapor pressure in fitting the parameter.

1.1.1.11.31 References

[1]

1.1.1.11.32 Examples

P-T initialization (hexane, with fit parameter in [1]), liquid phase:

>>> eos = PRSV2(Tc=507.6, Pc=3025000, omega=0.2975, T=299., P=1E6, kappa1=0.05104,


˓→ kappa2=0.8634, kappa3=0.460)

>>> eos.phase, eos.V_l, eos.H_dep_l, eos.S_dep_l


('l', 0.00013018821346475235, -31496.173493225797, -73.61525801151421)

1.1. thermo package 109


thermo Documentation, Release 0.1

1.1.1.11.33 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for this EOS.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Method to calculate T from a specified P and V for the
PRSV2 EOS.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

derivatives_and_departures
main_derivatives_and_departures
to_TP

a_alpha_and_derivatives(T, full=True, quick=True)


Method to calculate a_alpha and its first and second derivatives for this EOS. Returns a_alpha,
da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documentation. Uses
the set values of Tc, kappa0, kappa1, kappa2, kappa3, and a.
For use in solve_T, returns only a_alpha if full is False.
The first and second derivatives of a_alpha are available through the following SymPy expression.

>>> from sympy import *


>>> P, T, V = symbols('P, T, V')
>>> Tc, Pc, omega = symbols('Tc, Pc, omega')
>>> R, a, b, kappa0, kappa1, kappa2, kappa3 = symbols('R, a, b, kappa0,
˓→kappa1, kappa2, kappa3')

>>> Tr = T/Tc
>>> kappa = kappa0 + (kappa1 + kappa2*(kappa3-Tr)*(1-
˓→sqrt(Tr)))*(1+sqrt(Tr))*(Rational('0.7')-Tr)

>>> a_alpha = a*(1 + kappa*(1-sqrt(T/Tc)))**2


>>> # diff(a_alpha, T)
>>> # diff(a_alpha, T, 2)

solve_T(P, V, quick=True)

110 Chapter 1. thermo


thermo Documentation, Release 0.1

Method to calculate T from a specified P and V for the PRSV2 EOS. Uses Tc, a, b, kappa0, kappa1,
kappa2, and kappa3 as well, obtained from the class’s namespace.
Parameters
P [float] Pressure, [Pa]
V [float] Molar volume, [m^3/mol]
quick [bool, optional] Whether to use a SymPy cse-derived expression (somewhat faster) or
individual formulas.
Returns
T [float] Temperature, [K]

1.1.1.11.34 Notes

Not guaranteed to produce a solution. There are actually 8 solutions, six with an imaginary component at
a tested point. The two temperature solutions are quite far apart, with one much higher than the other; it is
possible the solver could converge on the higher solution, so use T inputs with care. This extra solution is
a perfectly valid one however.
class thermo.eos.VDW(Tc, Pc, T=None, P=None, V=None, omega=None)
Bases: thermo.eos.GCEOS
Class for solving the Van der Waals cubic equation of state for a pure compound. Subclasses CUBIC_EOS,
which provides the methods for solving the EOS and calculating its assorted relevant thermodynamic properties.
Solves the EOS on initialization.
Implemented methods here are a_alpha_and_derivatives, which sets a_alpha and its first and second derivatives,
and solve_T, which from a specified P and V obtains T. main_derivatives_and_departures is a re-implementation
with VDW specific methods, as the general solution has ZeroDivisionError errors.
Two of T, P, and V are needed to solve the EOS.
𝑅𝑇 𝑎
𝑃 = − 2
𝑉 −𝑏 𝑉
27 (𝑅𝑇𝑐 )2
𝑎=
64 𝑃𝑐
𝑅𝑇𝑐
𝑏=
8𝑃𝑐
Parameters
Tc [float] Critical temperature, [K]
Pc [float] Critical pressure, [Pa]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]

1.1.1.11.35 Notes

omega is allowed as an input for compatibility with the other EOS forms, but is not used.

1.1. thermo package 111


thermo Documentation, Release 0.1

1.1.1.11.36 References

[1], [2]

1.1.1.11.37 Examples

>>> eos = VDW(Tc=507.6, Pc=3025000, T=299., P=1E6)


>>> eos.phase, eos.V_l, eos.H_dep_l, eos.S_dep_l
('l', 0.00022332978038490077, -13385.722837649315, -32.65922018109096)

Attributes
omega

1.1.1.11.38 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for this EOS.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
main_derivatives_and_departures(T, P, V, Re-implementation of derivatives and excess property
b, . . . ) calculations, as ZeroDivisionError errors occur with the
general solution.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V) Method to calculate T from a specified P and V for the
VDW EOS.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

derivatives_and_departures
to_TP

Psat_coeffs = [0.00016085874036294383, -0.002014769498637164, 0.011302214511559567, -0.


Psat_coeffs_limiting = [-3.0232164484175756, 0.20980668241160666]

112 Chapter 1. thermo


thermo Documentation, Release 0.1

Zc = 0.375
a_alpha_and_derivatives(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives for this EOS. Returns a_alpha,
da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documentation. Uses
the set values of a.
𝑎𝛼 = 𝑎
𝑑𝑎𝛼
=0
𝑑𝑇
2
𝑑 𝑎𝛼
=0
𝑑𝑇 2

delta = 0
epsilon = 0
static main_derivatives_and_departures(T, P, V, b, delta, epsilon, a_alpha,
da_alpha_dT, d2a_alpha_dT2, quick=True)
Re-implementation of derivatives and excess property calculations, as ZeroDivisionError errors occur with
the general solution. The following derivation is the source of these formulas.

>>> from sympy import *


>>> P, T, V, R, b, a = symbols('P, T, V, R, b, a')
>>> P_vdw = R*T/(V-b) - a/(V*V)
>>> vdw = P_vdw - P
>>>
>>> dP_dT = diff(vdw, T)
>>> dP_dV = diff(vdw, V)
>>> d2P_dT2 = diff(vdw, T, 2)
>>> d2P_dV2 = diff(vdw, V, 2)
>>> d2P_dTdV = diff(vdw, T, V)
>>> H_dep = integrate(T*dP_dT - P_vdw, (V, oo, V))
>>> H_dep += P*V - R*T
>>> S_dep = integrate(dP_dT - R/V, (V,oo,V))
>>> S_dep += R*log(P*V/(R*T))
>>> Cv_dep = T*integrate(d2P_dT2, (V,oo,V))
>>>
>>> dP_dT, dP_dV, d2P_dT2, d2P_dV2, d2P_dTdV, H_dep, S_dep, Cv_dep
(R/(V - b), -R*T/(V - b)**2 + 2*a/V**3, 0, 2*(R*T/(V - b)**3 - 3*a/V**4), -R/
˓→(V - b)**2, P*V - R*T - a/V, R*(-log(V) + log(V - b)) + R*log(P*V/(R*T)), 0)

omega = None
solve_T(P, V)
Method to calculate T from a specified P and V for the VDW EOS. Uses a, and b, obtained from the class’s
namespace.
1 (︀
𝑃 𝑉 2 (𝑉 − 𝑏) + 𝑉 𝑎 − 𝑎𝑏
)︀
𝑇 = 2
𝑅𝑉
Parameters
P [float] Pressure, [Pa]
V [float] Molar volume, [m^3/mol]
Returns
T [float] Temperature, [K]

1.1. thermo package 113


thermo Documentation, Release 0.1

class thermo.eos.RK(Tc, Pc, T=None, P=None, V=None, omega=None)


Bases: thermo.eos.GCEOS
Class for solving the Redlich-Kwong cubic equation of state for a pure compound. Subclasses CUBIC_EOS,
which provides the methods for solving the EOS and calculating its assorted relevant thermodynamic properties.
Solves the EOS on initialization.
Implemented methods here are a_alpha_and_derivatives, which sets a_alpha and its first and second derivatives,
and solve_T, which from a specified P and V obtains T.
Two of T, P, and V are needed to solve the EOS.
𝑅𝑇 𝑎
𝑃 = − √
𝑉 − 𝑏 𝑉 𝑇 (𝑉 + 𝑏)
2 2.5
0.42748 · 𝑅2 (𝑇𝑐 )2.5
(︂ )︂
𝑅 (𝑇𝑐 )
𝑎= √
3
=
9( 2 − 1)𝑃𝑐 𝑃𝑐
(︃ √ )︃
3
( 2 − 1) 𝑅𝑇𝑐 0.08664 · 𝑅𝑇𝑐
𝑏= =
3 𝑃𝑐 𝑃𝑐

Parameters
Tc [float] Critical temperature, [K]
Pc [float] Critical pressure, [Pa]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]

1.1.1.11.39 Notes

omega is allowed as an input for compatibility with the other EOS forms, but is not used.

1.1.1.11.40 References

[1], [2], [3]

1.1.1.11.41 Examples

>>> eos = RK(Tc=507.6, Pc=3025000, T=299., P=1E6)


>>> eos.phase, eos.V_l, eos.H_dep_l, eos.S_dep_l
('l', 0.00015189341729751862, -26160.833620674086, -63.01311649400544)

Attributes
omega

1.1.1.11.42 Methods

114 Chapter 1. thermo


thermo Documentation, Release 0.1

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for this EOS.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Method to calculate T from a specified P and V for the
RK EOS.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

derivatives_and_departures
main_derivatives_and_departures
to_TP

Psat_coeffs = [704544.2441281658, 3561602.0999577316, 6656106.824621978, 4335693.453896


Psat_coeffs_limiting = [-72.70028836951158, -68.76714163049]
Zc = 0.3333333333333333
a_alpha_and_derivatives(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives for this EOS. Returns a_alpha,
da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documentation. Uses
the set values of a.
𝑎
𝑎𝛼 = √
𝑇
𝑑𝑎𝛼 𝑎
=− 3
𝑑𝑇 2𝑇 2
𝑑2 𝑎𝛼 3𝑎
= 5
𝑑𝑇 2 4𝑇 2

c1 = 0.4274802335403414
c2 = 0.08664034996495772
epsilon = 0
omega = None

1.1. thermo package 115


thermo Documentation, Release 0.1

solve_T(P, V, quick=True)
Method to calculate T from a specified P and V for the RK EOS. Uses a, and b, obtained from the class’s
namespace.
Parameters
P [float] Pressure, [Pa]
V [float] Molar volume, [m^3/mol]
quick [bool, optional] Whether to use a SymPy cse-derived expression (3x faster) or indi-
vidual formulas
Returns
T [float] Temperature, [K]

1.1.1.11.43 Notes

The exact solution can be derived as follows; it is excluded for breviety.

>>> from sympy import *


>>> P, T, V, R = symbols('P, T, V, R')
>>> Tc, Pc = symbols('Tc, Pc')
>>> a, b = symbols('a, b')

>>> RK = Eq(P, R*T/(V-b) - a/sqrt(T)/(V*V + b*V))


>>> # solve(RK, T)

class thermo.eos.APISRK(Tc, Pc, omega=None, T=None, P=None, V=None, S1=None, S2=0)


Bases: thermo.eos.SRK
Class for solving the Refinery Soave-Redlich-Kwong cubic equation of state for a pure compound shown in the
API Databook [1]. Subclasses CUBIC_EOS, which provides the methods for solving the EOS and calculating
its assorted relevant thermodynamic properties. Solves the EOS on initialization.
Implemented methods here are a_alpha_and_derivatives, which sets a_alpha and its first and second derivatives,
and solve_T, which from a specified P and V obtains T. Two fit constants are used in this expresion, with an
estimation scheme for the first if unavailable and the second may be set to zero.
Two of T, P, and V are needed to solve the EOS.
𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑉 − 𝑏 𝑉 (𝑉 + 𝑏)
𝑅2 (𝑇𝑐 )2 0.42748 · 𝑅2 (𝑇𝑐 )2
(︂ )︂
𝑎= √ =
9( 3 2 − 1)𝑃𝑐 𝑃𝑐
(︃ √ )︃
( 3 2 − 1) 𝑅𝑇𝑐 0.08664 · 𝑅𝑇𝑐
𝑏= =
3 𝑃𝑐 𝑃𝑐
[︂ √ ]︂2
(︁ √︀ )︁ 1 − 𝑇𝑟
𝛼(𝑇 ) = 1 + 𝑆1 1 − 𝑇𝑟 + 𝑆2 √
𝑇𝑟
2
𝑆1 = 0.48508 + 1.55171𝜔 − 0.15613𝜔 if S1 is not tabulated

Parameters
Tc [float] Critical temperature, [K]
Pc [float] Critical pressure, [Pa]

116 Chapter 1. thermo


thermo Documentation, Release 0.1

omega [float, optional] Acentric factor, [-]


T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]
S1 [float, optional] Fit constant or estimated from acentric factor if not provided [-]
S2 [float, optional] Fit constant or 0 if not provided [-]

1.1.1.11.44 References

[1]

1.1.1.11.45 Examples

>>> eos = APISRK(Tc=514.0, Pc=6137000.0, S1=1.678665, S2=-0.216396, P=1E6, T=299)


>>> eos.phase, eos.V_l, eos.H_dep_l, eos.S_dep_l
('l', 7.045692682173235e-05, -42826.271630638774, -103.62694391379836)

1.1.1.11.46 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for this EOS.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Method to calculate T from a specified P and V for the
API SRK EOS.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

1.1. thermo package 117


thermo Documentation, Release 0.1

derivatives_and_departures
main_derivatives_and_departures
to_TP

a_alpha_and_derivatives(T, full=True, quick=True)


Method to calculate a_alpha and its first and second derivatives for this EOS. Returns a_alpha,
da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documentation. Uses
the set values of Tc, a, S1, and S2.
[︂ √ ]︂2
(︁ √︀ )︁ 1 − 𝑇𝑟
𝑎𝛼(𝑇 ) = 𝑎 1 + 𝑆1 1 − 𝑇𝑟 + 𝑆2 √
𝑇
(︃ (︃√︂ )︃ √︂ (︃ √︂ )︃)︃ (︃ (︃√︂ )︃ √︂ (︃ (︃√︂ )︃ 𝑟 )︃)︃
𝑑𝑎𝛼 𝑇𝑐 𝑇 𝑇 𝑇 𝑇 𝑇 𝑇
= 𝑎 2 −𝑆2 −1 + 𝑆1 + 𝑆2 𝑆2 −1 + 𝑆1 −1 −1
𝑑𝑇 𝑇 𝑇𝑐 𝑇𝑐 𝑇𝑐 𝑇𝑐 𝑇𝑐 𝑇𝑐
(︃ √︂ √︂ √︂ √︂ √︂ √︂ )︃
𝑑2 𝑎𝛼 1 2 𝑇 𝑇 𝑇 𝑇 2 𝑇 2 𝑇
2
= 𝑎 3 𝑆1 𝑇 − 𝑆1 𝑆2 𝑇 + 3𝑆1 𝑆2 𝑇 𝑐 + 𝑆1 𝑇 − 3𝑆2 𝑇 𝑐 + 4𝑆2 𝑇 𝑐 + 3𝑆2 𝑇 𝑐
𝑑𝑇 2𝑇 𝑇𝑐 𝑇𝑐 𝑇𝑐 𝑇𝑐 𝑇𝑐 𝑇𝑐

solve_T(P, V, quick=True)
Method to calculate T from a specified P and V for the API SRK EOS. Uses a, b, and Tc obtained from
the class’s namespace.
Parameters
P [float] Pressure, [Pa]
V [float] Molar volume, [m^3/mol]
quick [bool, optional] Whether to use a SymPy cse-derived expression (3x faster) or indi-
vidual formulas
Returns
T [float] Temperature, [K]

1.1.1.11.47 Notes

If S2 is set to 0, the solution is the same as in the SRK EOS, and that is used. Otherwise, newton’s method
must be used to solve for T. There are 8 roots of T in that case, six of them real. No guarantee can be made
regarding which root will be obtained.
class thermo.eos.TWUPR(Tc, Pc, omega, T=None, P=None, V=None)
Bases: thermo.eos.PR
Class for solving the Twu [1] variant of the Peng-Robinson cubic equation of state for a pure compound. Sub-
classes PR, which provides the methods for solving the EOS and calculating its assorted relevant thermodynamic
properties. Solves the EOS on initialization.
Implemented methods here are a_alpha_and_derivatives, which sets a_alpha and its first and second derivatives,
and solve_T, which from a specified P and V obtains T.

118 Chapter 1. thermo


thermo Documentation, Release 0.1

Two of T, P, and V are needed to solve the EOS.


𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑣 − 𝑏 𝑣(𝑣 + 𝑏) + 𝑏(𝑣 − 𝑏)
𝑅2 𝑇𝑐2
𝑎 = 0.45724
𝑃𝑐
𝑅𝑇𝑐
𝑏 = 0.07780
𝑃𝑐
𝛼 = 𝛼 + 𝜔(𝛼 − 𝛼(0) )
(0) (1)

𝛼(𝑖) = 𝑇𝑟𝑁 (𝑀 −1) exp[𝐿(1 − 𝑇𝑟𝑁 𝑀 )]

For sub-critical conditions:


L0, M0, N0 = 0.125283, 0.911807, 1.948150;
L1, M1, N1 = 0.511614, 0.784054, 2.812520
For supercritical conditions:
L0, M0, N0 = 0.401219, 4.963070, -0.2;
L1, M1, N1 = 0.024955, 1.248089, -8.
Parameters
Tc [float] Critical temperature, [K]
Pc [float] Critical pressure, [Pa]
omega [float] Acentric factor, [-]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]

1.1.1.11.48 Notes

Claimed to be more accurate than the PR, PR78 and PRSV equations.
There is no analytical solution for T. There are multiple possible solutions for T under certain conditions; no
guaranteed are provided regarding which solution is obtained.

1.1.1.11.49 References

[1]

1.1.1.11.50 Examples

>>> eos = TWUPR(Tc=507.6, Pc=3025000, omega=0.2975, T=299., P=1E6)


>>> eos.V_l, eos.H_dep_l, eos.S_dep_l
(0.0001301754975832378, -31652.72639160809, -74.11282530917981)

1.1. thermo package 119


thermo Documentation, Release 0.1

1.1.1.11.51 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for this EOS.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Method to calculate T from a specified P and V for the
PR EOS.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

derivatives_and_departures
main_derivatives_and_departures
to_TP

a_alpha_and_derivatives(T, full=True, quick=True)


Method to calculate a_alpha and its first and second derivatives for this EOS. Returns a_alpha,
da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documentation. Uses
the set values of Tc, omega, and a.
Because of its similarity for the TWUSRK EOS, this has been moved to an external
TWU_a_alpha_common function. See it for further documentation.
class thermo.eos.TWUSRK(Tc, Pc, omega, T=None, P=None, V=None)
Bases: thermo.eos.SRK
Class for solving the Soave-Redlich-Kwong cubic equation of state for a pure compound. Subclasses CU-
BIC_EOS, which provides the methods for solving the EOS and calculating its assorted relevant thermodynamic
properties. Solves the EOS on initialization.
Implemented methods here are a_alpha_and_derivatives, which sets a_alpha and its first and second derivatives,
and solve_T, which from a specified P and V obtains T.

120 Chapter 1. thermo


thermo Documentation, Release 0.1

Two of T, P, and V are needed to solve the EOS.


𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑉 − 𝑏 𝑉 (𝑉 + 𝑏)
𝑅2 (𝑇𝑐 )2 0.42748 · 𝑅2 (𝑇𝑐 )2
(︂ )︂
𝑎= √ =
9( 3 2 − 1)𝑃𝑐 𝑃𝑐
(︃ √ )︃
3
( 2 − 1) 𝑅𝑇𝑐 0.08664 · 𝑅𝑇𝑐
𝑏= =
3 𝑃𝑐 𝑃𝑐
𝛼 = 𝛼(0) + 𝜔(𝛼(1) − 𝛼(0) )
𝛼(𝑖) = 𝑇𝑟𝑁 (𝑀 −1) exp[𝐿(1 − 𝑇𝑟𝑁 𝑀 )]
For sub-critical conditions:
L0, M0, N0 = 0.141599, 0.919422, 2.496441
L1, M1, N1 = 0.500315, 0.799457, 3.291790
For supercritical conditions:
L0, M0, N0 = 0.441411, 6.500018, -0.20
L1, M1, N1 = 0.032580, 1.289098, -8.0
Parameters
Tc [float] Critical temperature, [K]
Pc [float] Critical pressure, [Pa]
omega [float] Acentric factor, [-]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]

1.1.1.11.52 Notes

There is no analytical solution for T. There are multiple possible solutions for T under certain conditions; no
guaranteed are provided regarding which solution is obtained.

1.1.1.11.53 References

[1]

1.1.1.11.54 Examples

>>> eos = TWUSRK(Tc=507.6, Pc=3025000, omega=0.2975, T=299., P=1E6)


>>> eos.phase, eos.V_l, eos.H_dep_l, eos.S_dep_l
('l', 0.00014689217317770398, -31612.591872087483, -74.02294100343829)

1.1.1.11.55 Methods

1.1. thermo package 121


thermo Documentation, Release 0.1

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for this EOS.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Method to calculate T from a specified P and V for the
SRK EOS.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

derivatives_and_departures
main_derivatives_and_departures
to_TP

a_alpha_and_derivatives(T, full=True, quick=True)


Method to calculate a_alpha and its first and second derivatives for this EOS. Returns a_alpha,
da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documentation. Uses
the set values of Tc, omega, and a.
Because of its similarity for the TWUPR EOS, this has been moved to an external TWU_a_alpha_common
function. See it for further documentation.
class thermo.eos.ALPHA_FUNCTIONS
Bases: thermo.eos.GCEOS
Basic class with a number of attached alpha functions for different applications, all of which have no parameters
attached. These alpha functions should be used for fitting purposes; new EOSs should have their alpha func-
tions added here. The first and second derivatives should also be implemented. Efficient implementations are
discouraged but possible.
All parameters should be in self.alpha_function_coeffs. This object is inspired by the work of [1], where most
of the alpha functions have been found.

1.1.1.11.56 References

[1]

122 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.11.57 Examples

Swap out the default alpha function from the SRK EOS, replace it the same, a new method that takes a manually
specified coefficient.

>>> eos = SRK(Tc=507.6, Pc=3025000, omega=0.2975, T=299., P=1E6)


>>> [eos.m, eos.a_alpha_and_derivatives(299)]
[0.9326878999999999, (3.7271789178606376, -0.007332989159328508, 1.
˓→947612023379061e-05)]

>>> class SRK_Soave_1972(SRK):


... a_alpha_and_derivatives = ALPHA_FUNCTIONS.Soave_1972
>>> SRK_Soave_1972.alpha_function_coeffs = [0.9326878999999999]
>>> a = SRK_Soave_1972(Tc=507.6, Pc=3025000, omega=0.2975, T=299., P=1E6)
>>> a.a_alpha_and_derivatives(299)
(3.7271789178606376, -0.007332989159328508, 1.947612023379061e-05)

1.1.1.11.58 Methods

Almeida(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Almeida et al.
Androulakis(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Androulakis et al.
Chen_Yang(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Hamid and Yang (2017) [1].
Coquelet(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Coquelet et al.
Gasem(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Gasem (2001) [1].
Gibbons_Laughton(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Gibbons and Laughton (1984)
[1].
Haghtalab(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Haghtalab et al.
Harmens_Knapp(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Harmens and Knapp (1980)
[1].
Heyen(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Heyen (1980) [1].
Hvap(T) Method to calculate enthalpy of vaporization for a pure
fluid from an equation of state, without iteration.
Mathias(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Mathias (1983) [1].
Mathias_Copeman(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Mathias and Copeman (1983)
[1].
Melhem(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Melhem et al.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
Continued on next page

1.1. thermo package 123


thermo Documentation, Release 0.1

Table 1.13 – continued from previous page


Saffari(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Saffari and Zahedi (2013) [1].
Schwartzentruber(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Schwartzentruber et al.
Soave_1972(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Soave (1972) [1].
Soave_1984(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Soave (1984) [1].
Soave_1993(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Soave (1983) [1].
Trebble_Bishnoi(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Trebble and Bishnoi (1987) [1].
Twu(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Twu et al.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
Yu_Lu(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives according to Yu and Lu (1987) [1].
a_alpha_and_derivatives(T[, full, quick]) Dummy method to calculate a_alpha and its first and
second derivatives.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Generic method to calculate T from a specified P and V.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

derivatives_and_departures
main_derivatives_and_departures
to_TP

static Almeida(T, full=True, quick=True)


Method to calculate a_alpha and its first and second derivatives according to Almeida et al. (1991) [1].
Returns a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more doc-
umentation. Three coefficients needed.
𝑐2 −1
𝛼 = 𝑒𝑐1 (− 𝑇 𝑐 +1)| 𝑇 𝑐 −1| +𝑐3 (−1+ 𝑇𝑇𝑐 )
𝑇 𝑇

1.1.1.11.59 References

[1]

124 Chapter 1. thermo


thermo Documentation, Release 0.1

static Androulakis(T, full=True, quick=True)


Method to calculate a_alpha and its first and second derivatives according to Androulakis et al. (1989)
[1]. Returns a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more
documentation. Three coefficients needed.
(︃ (︂ )︂ 2 )︃ (︃ (︂ )︂ 2 )︃2 (︃ (︂ )︂ 2 )︃3
𝑇 3 𝑇 3 𝑇 3
𝛼 = 𝑐1 − + 1 + 𝑐2 − + 1 + 𝑐3 − +1 +1
𝑇𝑐 𝑇𝑐 𝑇𝑐

1.1.1.11.60 References

[1]
static Chen_Yang(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Hamid and Yang (2017)
[1]. Returns a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more
documentation. Seven coefficients needed.
(︃ )︃
log ( 𝑇𝑇𝑐 ) +1
−𝑐3 (− 𝑇𝑇𝑐𝑐2 +𝑐1 )
𝛼=𝑒

1.1.1.11.61 References

[1]
static Coquelet(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Coquelet et al. (2004) [1].
Returns a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more doc-
umentation. Three coefficients needed.
(︂ (︁ √ )︁2 (︁ √ )︁3 )︂2
𝑐1 (− 𝑇𝑇𝑐 +1) 𝑐2 − 𝑇𝑇𝑐 +1 +𝑐3 − 𝑇𝑇𝑐 +1 +1
𝛼=𝑒

1.1.1.11.62 References

[1]
static Gasem(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Gasem (2001) [1]. Returns
a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documenta-
tion. Three coefficients needed.
𝑐3 𝑇 𝑐2
𝛼 = 𝑒(−( 𝑇 𝑐 ) +1)( +𝑐1 )
𝑇
𝑇𝑐

1.1.1.11.63 References

[1]
static Gibbons_Laughton(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Gibbons and Laughton (1984)
[1]. Returns a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more
documentation. Two coefficients needed.
(︂ )︂ (︃√︂ )︃
𝑇 𝑇
𝛼 = 𝑐1 − 1 + 𝑐2 −1 +1
𝑇𝑐 𝑇𝑐

1.1. thermo package 125


thermo Documentation, Release 0.1

1.1.1.11.64 References

[1]
static Haghtalab(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Haghtalab et al. (2010)
[1]. Returns a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more
documentation. Three coefficients needed.
(︃ )︃
log ( 𝑇𝑇𝑐 ) +1
−𝑐3 (− 𝑇𝑇𝑐𝑐2 +𝑐1 )
𝛼=𝑒

1.1.1.11.65 References

[1]
static Harmens_Knapp(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Harmens and Knapp (1980)
[1]. Returns a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more
documentation. Two coefficients needed.
(︃ (︃ √︂ )︃ (︂ )︂ )︃2
𝑇 𝑇𝑐
𝛼 = 𝑐1 − + 1 − 𝑐2 1 − +1
𝑇𝑐 𝑇

1.1.1.11.66 References

[1]
static Heyen(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Heyen (1980) [1]. Returns
a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documenta-
tion. Two coefficients needed.
𝑐2
𝛼 = 𝑒𝑐1 (−( 𝑇 𝑐 ) +1)
𝑇

1.1.1.11.67 References

[1]
static Mathias(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Mathias (1983) [1]. Returns
a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documenta-
tion. Two coefficients needed.
(︃ (︃ √︂ )︃ (︂ )︂ (︂ )︂ )︃2
𝑇 𝑇 𝑇
𝛼 = 𝑐1 − + 1 − 𝑐2 − + 0.7 − +1 +1
𝑇𝑐 𝑇𝑐 𝑇𝑐

1.1.1.11.68 References

[1]

126 Chapter 1. thermo


thermo Documentation, Release 0.1

static Mathias_Copeman(T, full=True, quick=True)


Method to calculate a_alpha and its first and second derivatives according to Mathias and Copeman (1983)
[1]. Returns a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more
documentation. Three coefficients needed.
⎛ (︃ √︂ )︃ (︃ √︂ )︃2 (︃ √︂ )︃3 ⎞2
𝑇 𝑇 𝑇
𝛼 = ⎝𝑐1 − + 1 + 𝑐2 − + 1 + 𝑐3 − + 1 + 1⎠
𝑇𝑐 𝑇𝑐 𝑇𝑐

1.1.1.11.69 References

[1]
static Melhem(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Melhem et al. (1989) [1].
Returns a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more doc-
umentation. Two coefficients needed.
(︁ √ )︁2
𝑐1 (− 𝑇𝑇𝑐 +1)+𝑐2 − 𝑇𝑇𝑐 +1
𝛼=𝑒

1.1.1.11.70 References

[1]
static Saffari(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Saffari and Zahedi (2013)
[1]. Returns a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more
documentation. Three coefficients needed.
(︁ √ )︁
𝑇 𝑐1
𝑇 𝑐 +𝑐2 log ( 𝑇 𝑐 )+𝑐3 −
𝑇 𝑇
𝑇 𝑐 +1
𝛼=𝑒

1.1.1.11.71 References

[1]
static Schwartzentruber(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Schwartzentruber et al. (1990)
[1]. Returns a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more
documentation. Three coefficients needed.
(︃ (︃ √︂ )︃ (︃ √︂ )︃ (︂ )︃2
𝑇 2 𝑐3
)︂
𝑇 𝑇 𝑇 𝑐2
𝛼 = 𝑐4 − +1 − − +1 + + 𝑐1 + 1
𝑇𝑐 𝑇𝑐 𝑇 𝑐2 𝑇𝑐

1.1.1.11.72 References

[1]
static Soave_1972(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Soave (1972) [1]. Returns

1.1. thermo package 127


thermo Documentation, Release 0.1

a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documen-


tation. Same as SRK.a_alpha_and_derivatives but slower and requiring alpha_function_coeffs to be set.
One coefficient needed.
(︃ (︃ √︂ )︃ )︃2
𝑇
𝛼 = 𝑐1 − +1 +1
𝑇𝑐

1.1.1.11.73 References

[1]
static Soave_1984(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Soave (1984) [1]. Returns
a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documenta-
tion. Two coefficients needed.
(︂ )︂ (︂ )︂
𝑇 𝑇𝑐
𝛼 = 𝑐1 − + 1 + 𝑐2 −1 + +1
𝑇𝑐 𝑇

1.1.1.11.74 References

[1]
static Soave_1993(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Soave (1983) [1]. Returns
a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documenta-
tion. Two coefficient needed.
(︂ )︂ (︃ √︂ )︃2
𝑇 𝑇
𝛼 = 𝑐1 − + 1 + 𝑐2 − +1 +1
𝑇𝑐 𝑇𝑐

1.1.1.11.75 References

[1]
static Trebble_Bishnoi(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Trebble and Bishnoi (1987)
[1]. Returns a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more
documentation. One coefficient needed.

𝛼 = 𝑒𝑐1 (− 𝑇 𝑐 +1)
𝑇

1.1.1.11.76 References

[1]
static Twu(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Twu et al. (1991) [1]. Returns
a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documenta-
tion. Three coefficients needed.
(︂ )︂𝑐3 (𝑐2 −1)
𝑇 𝑐2 𝑐3
𝑒𝑐1 (−( 𝑇 𝑐 ) +1)
𝑇
𝛼=
𝑇𝑐

128 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.11.77 References

[1]
static Yu_Lu(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives according to Yu and Lu (1987) [1]. Returns
a_alpha, da_alpha_dT, and d2a_alpha_dT2. See GCEOS.a_alpha_and_derivatives for more documenta-
tion. Four coefficients needed.
(︂ )︂
𝑇 2 𝑐3 𝑇 𝑐2
𝑐4 (− 𝑇𝑇𝑐 +1) 𝑇 𝑐2
+ 𝑇𝑐 +𝑐1
𝛼 = 10

1.1.1.11.78 References

[1]
class thermo.eos.GCEOS_DUMMY(T=None, P=None, **kwargs)
Bases: thermo.eos.GCEOS
Attributes
Pc
Tc
omega

1.1.1.11.79 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Dummy method to calculate a_alpha and its first and
second derivatives.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Generic method to calculate T from a specified P and V.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

1.1. thermo package 129


thermo Documentation, Release 0.1

derivatives_and_departures
main_derivatives_and_departures
to_TP

Pc = None
Tc = None
omega = None

1.1.1.12 thermo.eos_mix module

class thermo.eos_mix.GCEOSMIX
Bases: thermo.eos.GCEOS
Class for solving a generic pressure-explicit three-parameter cubic equation of state for a mixture. Does not
implement any parameters itself; must be subclassed by a mixture equation of state class which subclasses
it. No routines for partial molar properties for a generic cubic equation of state have yet been implemented,
although that would be desireable. The only partial molar property which is currently used is fugacity, which
must be implemented in each mixture EOS that subclasses this.

𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑉 − 𝑏 𝑉 2 + 𝛿𝑉 + 𝜖
Main methods are fugacities, solve_T, and a_alpha_and_derivatives.
fugacities is a helper method intended as a common interface for setting fugacities of each species in each phase;
it calls fugacity_coefficients to actually calculate them, but that is not implemented here. This should be used
when performing flash calculations, where fugacities are needed repeatedly. The fugacities change as a function
of liquid/gas phase composition, but the entire EOS need not be solved to recalculate them.
solve_T is a wrapper around GCEOS’s solve_T; the only difference is to use half the average mixture’s critical
temperature as the initial guess.
a_alpha_and_derivatives implements the Van der Waals mixing rules for a mixture. It calls
a_alpha_and_derivatives from the pure-component EOS for each species via multiple inheritance.

1.1.1.12.1 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for an EOS with the Van der Waals mixing
rules.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
Continued on next page

130 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.15 – continued from previous page


dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
fugacities([xs, ys]) Helper method for calculating fugacity coefficients for
any phases present, using either the overall mole frac-
tions for both phases or using specified mole fractions
for each phase.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Generic method to calculate T from a specified P and V.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

TDP_Michelsen
TPD
d_TPD_dy
derivatives_and_departures
fugacities_partial_derivatives
fugacities_partial_derivatives_2
main_derivatives_and_departures
to_TP
to_TP_zs

TDP_Michelsen(Zz, Zy, zs, ys)


TPD(Zz, Zy, zs, ys)
a_alpha_and_derivatives(T, full=True, quick=True)
Method to calculate a_alpha and its first and second derivatives for an EOS with the Van der Waals mixing
rules. Uses the parent class’s interface to compute pure component values. Returns a_alpha, da_alpha_dT,
and d2a_alpha_dT2. Calls setup_a_alpha_and_derivatives before calling a_alpha_and_derivatives for
each species, which typically sets a and Tc. Calls cleanup_a_alpha_and_derivatives to remove the set
properties after the calls are done.
For use in solve_T this returns only a_alpha if full is False.
∑︁ ∑︁
𝑎𝛼 = 𝑧𝑖 𝑧𝑗 (𝑎𝛼)𝑖𝑗
𝑖 𝑗
√︁
(𝑎𝛼)𝑖𝑗 = (1 − 𝑘𝑖𝑗 ) (𝑎𝛼)𝑖 (𝑎𝛼)𝑗

Parameters
T [float] Temperature, [K]
full [bool, optional] If False, calculates and returns only a_alpha
quick [bool, optional] Only the quick variant is implemented; it is little faster anyhow
Returns
a_alpha [float] Coefficient calculated by EOS-specific method, [J^2/mol^2/Pa]

1.1. thermo package 131


thermo Documentation, Release 0.1

da_alpha_dT [float] Temperature derivative of coefficient calculated by EOS-specific


method, [J^2/mol^2/Pa/K]
d2a_alpha_dT2 [float] Second temperature derivative of coefficient calculated by EOS-
specific method, [J^2/mol^2/Pa/K**2]

1.1.1.12.2 Notes

The exact expressions can be obtained with the following SymPy expression below, commented out for
brevity.

>>> from sympy import *


>>> a_alpha_i, a_alpha_j, kij, T = symbols('a_alpha_i, a_alpha_j, kij, T')
>>> a_alpha_ij = (1-kij)*sqrt(a_alpha_i(T)*a_alpha_j(T))
>>> #diff(a_alpha_ij, T)
>>> #diff(a_alpha_ij, T, T)

d_TPD_dy(Zz, Zy, zs, ys)


fugacities(xs=None, ys=None)
Helper method for calculating fugacity coefficients for any phases present, using either the overall mole
fractions for both phases or using specified mole fractions for each phase.
Requires fugacity_coefficients to be implemented by each subclassing EOS.
In addition to setting fugacities_l and/or fugacities_g, this also sets the fugacity coefficients phis_l and/or
phis_g.

𝑓ˆ𝑔
𝜑ˆ𝑔𝑖 = 𝑖
𝑥𝑖 𝑃
𝑓ˆ𝑙
𝜑ˆ𝑙𝑖 = 𝑖
𝑥𝑖 𝑃
Parameters
xs [list[float], optional] Liquid-phase mole fractions of each species, [-]
ys [list[float], optional] Vapor-phase mole fractions of each species, [-]

1.1.1.12.3 Notes

It is helpful to check that fugacity_coefficients has been implemented correctly using the following expres-
sion, from [1].
[︂ ]︂
ˆ 𝜕(𝑛 log 𝜑)
ln 𝜑𝑖 =
𝜕𝑛𝑖 𝑇,𝑃,𝑛𝑗 ,𝑉𝑡

For reference, several expressions for fugacity of a component are as follows, shown in [1] and [2].
∫︁ 𝑃 (︃ ˆ )︃
𝑉 𝑖 1
ln 𝜑ˆ𝑖 = − 𝑑𝑃
0 𝑅𝑇 𝑃
∫︁ ∞ [︂ ]︂
1 𝜕𝑃 1
ln 𝜑ˆ𝑖 = − 𝑑𝑉 − ln 𝑍
𝑉 𝑅𝑇 𝜕𝑛𝑖 𝑉

132 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.12.4 References

[1], [2]
fugacities_partial_derivatives(xs=None, ys=None)
fugacities_partial_derivatives_2(xs=None, ys=None)
solve_T(P, V, quick=True)
Generic method to calculate T from a specified P and V. Provides SciPy’s newton solver, and it-
erates to solve the general equation for P, recalculating a_alpha as a function of temperature using
a_alpha_and_derivatives each iteration.
Parameters
P [float] Pressure, [Pa]
V [float] Molar volume, [m^3/mol]
quick [bool, optional] Unimplemented, although it may be possible to derive explicit ex-
pressions as done for many pure-component EOS
Returns
T [float] Temperature, [K]
to_TP_zs(T, P, zs)
class thermo.eos_mix.PRMIX(Tcs, Pcs, omegas, zs, kijs=None, T=None, P=None, V=None)
Bases: thermo.eos_mix.GCEOSMIX, thermo.eos.PR
Class for solving the Peng-Robinson cubic equation of state for a mixture of any number of compounds. Sub-
classes PR. Solves the EOS on initialization and calculates fugacities for all components in all phases.
The implemented method here is fugacity_coefficients, which implements the formula for fugacity coefficients
in a mixture as given in [1]. Two of T, P, and V are needed to solve the EOS.

𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑣 − 𝑏 𝑣(𝑣 + 𝑏) + 𝑏(𝑣 − 𝑏)
∑︁ ∑︁
𝑎𝛼 = 𝑧𝑖 𝑧𝑗 (𝑎𝛼)𝑖𝑗
𝑖 𝑗
√︁
(𝑎𝛼)𝑖𝑗 = (1 − 𝑘𝑖𝑗 ) (𝑎𝛼)𝑖 (𝑎𝛼)𝑗
∑︁
𝑏= 𝑧𝑖 𝑏𝑖
𝑖
𝑅2 𝑇𝑐,𝑖
2
𝑎𝑖 = 0.45724
𝑃𝑐,𝑖
𝑅𝑇𝑐,𝑖
𝑏𝑖 = 0.07780
𝑃𝑐,𝑖
𝛼(𝑇 )𝑖 = [1 + 𝜅𝑖 (1 − 𝑇𝑟,𝑖 )]2
√︀

𝜅𝑖 = 0.37464 + 1.54226𝜔𝑖 − 0.26992𝜔𝑖2

Parameters
Tcs [float] Critical temperatures of all compounds, [K]
Pcs [float] Critical pressures of all compounds, [Pa]
omegas [float] Acentric factors of all compounds, [-]
zs [float] Overall mole fractions of all species, [-]

1.1. thermo package 133


thermo Documentation, Release 0.1

kijs [list[list[float]], optional] n*n size list of lists with binary interaction parameters for the Van
der Waals mixing rules, default all 0 [-]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]

1.1.1.12.5 Notes

For P-V initializations, SciPy’s newton solver is used to find T.

1.1.1.12.6 References

[1], [2]

1.1.1.12.7 Examples

T-P initialization, nitrogen-methane at 115 K and 1 MPa:

>>> eos = PRMIX(T=115, P=1E6, Tcs=[126.1, 190.6], Pcs=[33.94E5, 46.04E5],


˓→omegas=[0.04, 0.011], zs=[0.5, 0.5], kijs=[[0,0],[0,0]])

>>> eos.V_l, eos.V_g


(3.625735065042031e-05, 0.0007006656856469095)
>>> eos.fugacities_l, eos.fugacities_g
([793860.8382114634, 73468.55225303846], [436530.9247009119, 358114.63827532396])

1.1.1.12.8 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for an EOS with the Van der Waals mixing
rules.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
cleanup_a_alpha_and_derivatives() Removes properties set by
setup_a_alpha_and_derivatives; run by
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
Continued on next page

134 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.16 – continued from previous page


fugacities([xs, ys]) Helper method for calculating fugacity coefficients for
any phases present, using either the overall mole frac-
tions for both phases or using specified mole fractions
for each phase.
fugacity_coefficients(Z, zs) Literature formula for calculating fugacity coefficients
for each species in a mixture.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
setup_a_alpha_and_derivatives(i[, T]) Sets a, kappa, and Tc for a specific component be-
fore the pure-species EOS’s a_alpha_and_derivatives
method is called.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Generic method to calculate T from a specified P and V.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

TDP_Michelsen
TPD
d_TPD_dy
derivatives_and_departures
fugacities_partial_derivatives
fugacities_partial_derivatives_2
main_derivatives_and_departures
to_TP
to_TP_zs

a_alpha_mro = -4
cleanup_a_alpha_and_derivatives()
Removes properties set by setup_a_alpha_and_derivatives; run by GCEOSMIX.a_alpha_and_derivatives
after a_alpha is calculated for every component
fugacity_coefficients(Z, zs)
Literature formula for calculating fugacity coefficients for each species in a mixture. Verified numerically.
Applicable to most derivatives of the Peng-Robinson equation of state as well. Called by fugacities on
initialization, or by a solver routine which is performing a flash calculation.
[︃ ]︃ [︃ √ ]︃
𝐵 𝑖 𝐴 𝐵 𝑖 2 ∑︁ 𝑍 + (1 + 2)𝐵
ln 𝜑ˆ𝑖 = (𝑍 − 1) − ln(𝑍 − 𝐵) + √ − 𝑦𝑖 (𝑎𝛼)𝑖𝑗 log √
𝐵 2 2𝐵 𝐵 𝑎𝛼 𝑖 𝑍 − ( 2 − 1)𝐵
(𝑎𝛼)𝑃
𝐴=
𝑅2 𝑇 2
𝑏𝑃
𝐵=
𝑅𝑇
Parameters
Z [float] Compressibility of the mixture for a desired phase, [-]
zs [list[float], optional] List of mole factions, either overall or in a specific phase, [-]
Returns

1.1. thermo package 135


thermo Documentation, Release 0.1

phis [float] Fugacity coefficient for each species, [-]

1.1.1.12.9 References

[1], [2]
setup_a_alpha_and_derivatives(i, T=None)
Sets a, kappa, and Tc for a specific component before the pure-species EOS’s a_alpha_and_derivatives
method is called. Both are called by GCEOSMIX.a_alpha_and_derivatives for every component.
class thermo.eos_mix.SRKMIX(Tcs, Pcs, omegas, zs, kijs=None, T=None, P=None, V=None)
Bases: thermo.eos_mix.GCEOSMIX, thermo.eos.SRK
Class for solving the Soave-Redlich-Kwong cubic equation of state for a mixture of any number of compounds.
Subclasses SRK. Solves the EOS on initialization and calculates fugacities for all components in all phases.
The implemented method here is fugacity_coefficients, which implements the formula for fugacity coefficients
in a mixture as given in [1]. Two of T, P, and V are needed to solve the EOS.

𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑉 − 𝑏 𝑉 (𝑉 + 𝑏)
∑︁ ∑︁
𝑎𝛼 = 𝑧𝑖 𝑧𝑗 (𝑎𝛼)𝑖𝑗
𝑖 𝑗
√︁
(𝑎𝛼)𝑖𝑗 = (1 − 𝑘𝑖𝑗 ) (𝑎𝛼)𝑖 (𝑎𝛼)𝑗
∑︁
𝑏= 𝑧𝑖 𝑏𝑖
𝑖
(︃ )︃
2 2
𝑅 (𝑇𝑐,𝑖 ) 0.42748 · 𝑅 (𝑇𝑐,𝑖 )2
2
𝑎𝑖 = √ =
9( 3 2 − 1)𝑃𝑐,𝑖 𝑃𝑐,𝑖
(︃ √ )︃
3
( 2 − 1) 𝑅𝑇𝑐,𝑖 0.08664 · 𝑅𝑇𝑐,𝑖
𝑏𝑖 = =
3 𝑃𝑐,𝑖 𝑃𝑐,𝑖
[︃ (︃ √︃ )︃]︃2
𝑇
𝛼(𝑇 )𝑖 = 1 + 𝑚𝑖 1 −
𝑇𝑐,𝑖
𝑚𝑖 = 0.480 + 1.574𝜔𝑖 − 0.176𝜔𝑖2

Parameters
Tcs [float] Critical temperatures of all compounds, [K]
Pcs [float] Critical pressures of all compounds, [Pa]
omegas [float] Acentric factors of all compounds, [-]
zs [float] Overall mole fractions of all species, [-]
kijs [list[list[float]], optional] n*n size list of lists with binary interaction parameters for the Van
der Waals mixing rules, default all 0 [-]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]

136 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.12.10 Notes

For P-V initializations, SciPy’s newton solver is used to find T.

1.1.1.12.11 References

[1], [2], [3]

1.1.1.12.12 Examples

T-P initialization, nitrogen-methane at 115 K and 1 MPa:

>>> SRK_mix = SRKMIX(T=115, P=1E6, Tcs=[126.1, 190.6], Pcs=[33.94E5, 46.04E5],


˓→omegas=[0.04, 0.011], zs=[0.5, 0.5], kijs=[[0,0],[0,0]])

>>> SRK_mix.V_l, SRK_mix.V_g


(4.104755570185169e-05, 0.0007110155639819185)
>>> SRK_mix.fugacities_l, SRK_mix.fugacities_g
([817841.6430546861, 72382.81925202614], [442137.12801246037, 361820.79211909405])

1.1.1.12.13 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for an EOS with the Van der Waals mixing
rules.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
cleanup_a_alpha_and_derivatives() Removes properties set by
setup_a_alpha_and_derivatives; run by
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
fugacities([xs, ys]) Helper method for calculating fugacity coefficients for
any phases present, using either the overall mole frac-
tions for both phases or using specified mole fractions
for each phase.
fugacity_coefficients(Z, zs) Literature formula for calculating fugacity coefficients
for each species in a mixture.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
Continued on next page

1.1. thermo package 137


thermo Documentation, Release 0.1

Table 1.17 – continued from previous page


setup_a_alpha_and_derivatives(i[, T]) Sets a, m, and Tc for a specific component before the
pure-species EOS’s a_alpha_and_derivatives method is
called.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Generic method to calculate T from a specified P and V.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

TDP_Michelsen
TPD
d_TPD_dy
derivatives_and_departures
fugacities_partial_derivatives
fugacities_partial_derivatives_2
main_derivatives_and_departures
to_TP
to_TP_zs

a_alpha_mro = -4
cleanup_a_alpha_and_derivatives()
Removes properties set by setup_a_alpha_and_derivatives; run by GCEOSMIX.a_alpha_and_derivatives
after a_alpha is calculated for every component
fugacity_coefficients(Z, zs)
Literature formula for calculating fugacity coefficients for each species in a mixture. Verified numerically.
Applicable to most derivatives of the SRK equation of state as well. Called by fugacities on initialization,
or by a solver routine which is performing a flash calculation.
[︃ ]︃ (︂ )︂
ˆ 𝐵𝑖 𝐴 𝐵𝑖 2 ∑︁ 𝐵
ln 𝜑𝑖 = (𝑍 − 1) − ln(𝑍 − 𝐵) + − 𝑦𝑖 (𝑎𝛼)𝑖𝑗 ln 1 +
𝐵 𝐵 𝐵 𝑎𝛼 𝑖 𝑍
𝑎𝛼𝑃
𝐴=
𝑅2 𝑇 2
𝑏𝑃
𝐵=
𝑅𝑇
Parameters
Z [float] Compressibility of the mixture for a desired phase, [-]
zs [list[float], optional] List of mole factions, either overall or in a specific phase, [-]
Returns
phis [float] Fugacity coefficient for each species, [-]

1.1.1.12.14 References

[1], [2]
setup_a_alpha_and_derivatives(i, T=None)
Sets a, m, and Tc for a specific component before the pure-species EOS’s a_alpha_and_derivatives method
is called. Both are called by GCEOSMIX.a_alpha_and_derivatives for every component.

138 Chapter 1. thermo


thermo Documentation, Release 0.1

class thermo.eos_mix.PR78MIX(Tcs, Pcs, omegas, zs, kijs=None, T=None, P=None, V=None)


Bases: thermo.eos_mix.PRMIX
Class for solving the Peng-Robinson cubic equation of state for a mixture of any number of compounds ac-
cording to the 1978 variant. Subclasses PR. Solves the EOS on initialization and calculates fugacities for all
components in all phases.
Two of T, P, and V are needed to solve the EOS.
𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑣 − 𝑏 𝑣(𝑣 + 𝑏) + 𝑏(𝑣 − 𝑏)
∑︁ ∑︁
𝑎𝛼 = 𝑧𝑖 𝑧𝑗 (𝑎𝛼)𝑖𝑗
𝑖 𝑗
√︁
(𝑎𝛼)𝑖𝑗 = (1 − 𝑘𝑖𝑗 ) (𝑎𝛼)𝑖 (𝑎𝛼)𝑗
∑︁
𝑏= 𝑧𝑖 𝑏𝑖
𝑖
𝑅2 𝑇𝑐,𝑖
2
𝑎𝑖 = 0.45724
𝑃𝑐,𝑖
𝑅𝑇𝑐,𝑖
𝑏𝑖 = 0.07780
𝑃𝑐,𝑖
𝛼(𝑇 )𝑖 = [1 + 𝜅𝑖 (1 − 𝑇𝑟,𝑖 )]2
√︀

𝜅𝑖 = 0.37464 + 1.54226𝜔𝑖 − 0.26992𝜔𝑖2 if 𝜔𝑖 ≤ 0.491


𝜅𝑖 = 0.379642 + 1.48503𝜔𝑖 − 0.164423𝜔𝑖2 + 0.016666𝜔𝑖3 if 𝜔𝑖 > 0.491

Parameters
Tcs [float] Critical temperatures of all compounds, [K]
Pcs [float] Critical pressures of all compounds, [Pa]
omegas [float] Acentric factors of all compounds, [-]
zs [float] Overall mole fractions of all species, [-]
kijs [list[list[float]], optional] n*n size list of lists with binary interaction parameters for the Van
der Waals mixing rules, default all 0 [-]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]

1.1.1.12.15 Notes

This variant is recommended over the original.

1.1.1.12.16 References

[1], [2]

1.1. thermo package 139


thermo Documentation, Release 0.1

1.1.1.12.17 Examples

T-P initialization, nitrogen-methane at 115 K and 1 MPa, with modified acentric factors to show the difference
between PRMIX

>>> eos = PR78MIX(T=115, P=1E6, Tcs=[126.1, 190.6], Pcs=[33.94E5, 46.04E5],


˓→omegas=[0.6, 0.7], zs=[0.5, 0.5], kijs=[[0,0],[0,0]])

>>> eos.V_l, eos.V_g


(3.239642793468725e-05, 0.0005043378493002219)
>>> eos.fugacities_l, eos.fugacities_g
([833048.4511980312, 6160.908815331656], [460717.2776793945, 279598.90103207604])

1.1.1.12.18 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for an EOS with the Van der Waals mixing
rules.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
cleanup_a_alpha_and_derivatives() Removes properties set by
setup_a_alpha_and_derivatives; run by
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
fugacities([xs, ys]) Helper method for calculating fugacity coefficients for
any phases present, using either the overall mole frac-
tions for both phases or using specified mole fractions
for each phase.
fugacity_coefficients(Z, zs) Literature formula for calculating fugacity coefficients
for each species in a mixture.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
setup_a_alpha_and_derivatives(i[, T]) Sets a, kappa, and Tc for a specific component be-
fore the pure-species EOS’s a_alpha_and_derivatives
method is called.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Generic method to calculate T from a specified P and V.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

140 Chapter 1. thermo


thermo Documentation, Release 0.1

TDP_Michelsen
TPD
d_TPD_dy
derivatives_and_departures
fugacities_partial_derivatives
fugacities_partial_derivatives_2
main_derivatives_and_departures
to_TP
to_TP_zs

a_alpha_mro = -4
class thermo.eos_mix.VDWMIX(Tcs, Pcs, zs, kijs=None, T=None, P=None, V=None)
Bases: thermo.eos_mix.GCEOSMIX, thermo.eos.VDW
Class for solving the Van der Waals cubic equation of state for a mixture of any number of compounds. Sub-
classes VDW. Solves the EOS on initialization and calculates fugacities for all components in all phases.
The implemented method here is fugacity_coefficients, which implements the formula for fugacity coefficients
in a mixture as given in [1]. Two of T, P, and V are needed to solve the EOS.
𝑅𝑇 𝑎
𝑃 = − 2
𝑉 −𝑏 𝑉
∑︁ ∑︁
𝑎= 𝑧𝑖 𝑧𝑗 𝑎𝑖𝑗
𝑖 𝑗
∑︁
𝑏= 𝑧𝑖 𝑏𝑖
𝑖

𝑎𝑖𝑗 = (1 − 𝑘𝑖𝑗 ) 𝑎𝑖 𝑎𝑗
27 (𝑅𝑇𝑐,𝑖 )2
𝑎𝑖 =
64 𝑃𝑐,𝑖
𝑅𝑇𝑐,𝑖
𝑏𝑖 =
8𝑃𝑐,𝑖

Parameters
Tcs [float] Critical temperatures of all compounds, [K]
Pcs [float] Critical pressures of all compounds, [Pa]
zs [float] Overall mole fractions of all species, [-]
kijs [list[list[float]], optional] n*n size list of lists with binary interaction parameters for the Van
der Waals mixing rules, default all 0 [-]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]

1.1.1.12.19 Notes

For P-V initializations, SciPy’s newton solver is used to find T.

1.1. thermo package 141


thermo Documentation, Release 0.1

1.1.1.12.20 References

[1], [2]

1.1.1.12.21 Examples

T-P initialization, nitrogen-methane at 115 K and 1 MPa:

>>> eos = VDWMIX(T=115, P=1E6, Tcs=[126.1, 190.6], Pcs=[33.94E5, 46.04E5], zs=[0.


˓→5, 0.5], kijs=[[0,0],[0,0]])

>>> eos.V_l, eos.V_g


(5.881367851416652e-05, 0.0007770869741895236)
>>> eos.fugacities_l, eos.fugacities_g
([854533.2669205057, 207126.84972762014], [448470.7363380735, 397826.543999929])

Attributes
omega

1.1.1.12.22 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for an EOS with the Van der Waals mixing
rules.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
cleanup_a_alpha_and_derivatives() Removes properties set by
setup_a_alpha_and_derivatives; run by
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
fugacities([xs, ys]) Helper method for calculating fugacity coefficients for
any phases present, using either the overall mole frac-
tions for both phases or using specified mole fractions
for each phase.
fugacity_coefficients(Z, zs) Literature formula for calculating fugacity coefficients
for each species in a mixture.
main_derivatives_and_departures(T, P, V, Re-implementation of derivatives and excess property
b, . . . ) calculations, as ZeroDivisionError errors occur with the
general solution.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
Continued on next page

142 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.19 – continued from previous page


set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
setup_a_alpha_and_derivatives(i[, T]) Sets a for a specific component before the pure-species
EOS’s a_alpha_and_derivatives method is called.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Generic method to calculate T from a specified P and V.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

TDP_Michelsen
TPD
d_TPD_dy
derivatives_and_departures
fugacities_partial_derivatives
fugacities_partial_derivatives_2
to_TP
to_TP_zs

a_alpha_mro = -4
cleanup_a_alpha_and_derivatives()
Removes properties set by setup_a_alpha_and_derivatives; run by GCEOSMIX.a_alpha_and_derivatives
after a_alpha is calculated for every component
fugacity_coefficients(Z, zs)
Literature formula for calculating fugacity coefficients for each species in a mixture. Verified numerically.
Called by fugacities on initialization, or by a solver routine which is performing a flash calculation.
[︂ (︂ )︂]︂ √
𝑏𝑖 𝑏 2 𝑎𝑎𝑖
ln 𝜑ˆ𝑖 = − ln 𝑍 1 − −
𝑉 −𝑏 𝑉 𝑅𝑇 𝑉
Parameters
Z [float] Compressibility of the mixture for a desired phase, [-]
zs [list[float], optional] List of mole factions, either overall or in a specific phase, [-]
Returns
phis [float] Fugacity coefficient for each species, [-]

1.1.1.12.23 References

[1]
setup_a_alpha_and_derivatives(i, T=None)
Sets a for a specific component before the pure-species EOS’s a_alpha_and_derivatives method is called.
Both are called by GCEOSMIX.a_alpha_and_derivatives for every component.
class thermo.eos_mix.PRSVMIX(Tcs, Pcs, omegas, zs, kijs=None, T=None, P=None, V=None,
kappa1s=None)
Bases: thermo.eos_mix.PRMIX, thermo.eos.PRSV
Class for solving the Peng-Robinson-Stryjek-Vera equations of state for a mixture as given in [1]. Subclasses
PRMIX and PRSV. Solves the EOS on initialization and calculates fugacities for all components in all phases.

1.1. thermo package 143


thermo Documentation, Release 0.1

Inherits the method of calculating fugacity coefficients from PRMIX. Two of T, P, and V are needed to solve the
EOS.
𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑣 − 𝑏 𝑣(𝑣 + 𝑏) + 𝑏(𝑣 − 𝑏)
∑︁ ∑︁
𝑎𝛼 = 𝑧𝑖 𝑧𝑗 (𝑎𝛼)𝑖𝑗
𝑖 𝑗
√︁
(𝑎𝛼)𝑖𝑗 = (1 − 𝑘𝑖𝑗 ) (𝑎𝛼)𝑖 (𝑎𝛼)𝑗
∑︁
𝑏= 𝑧𝑖 𝑏𝑖
𝑖
𝑅2 𝑇𝑐,𝑖
2
𝑎𝑖 = 0.45724
𝑃𝑐,𝑖
𝑅𝑇𝑐,𝑖
𝑏𝑖 = 0.07780
𝑃𝑐,𝑖
𝛼(𝑇 )𝑖 = [1 + 𝜅𝑖 (1 − 𝑇𝑟,𝑖 )]2
√︀

0.5
𝜅𝑖 = 𝜅0,𝑖 + 𝜅1,𝑖 (1 + 𝑇𝑟,𝑖 )(0.7 − 𝑇𝑟,𝑖 )
𝜅0,𝑖 = 0.378893 + 1.4897153𝜔𝑖 − 0.17131848𝜔𝑖2 + 0.0196554𝜔𝑖3

Parameters
Tcs [float] Critical temperatures of all compounds, [K]
Pcs [float] Critical pressures of all compounds, [Pa]
omegas [float] Acentric factors of all compounds, [-]
zs [float] Overall mole fractions of all species, [-]
kijs [list[list[float]], optional] n*n size list of lists with binary interaction parameters for the Van
der Waals mixing rules, default all 0 [-]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]
kappa1s [list[float], optional] Fit parameter; available in [1] for over 90 compounds, [-]

1.1.1.12.24 Notes

[1] recommends that kappa1 be set to 0 for Tr > 0.7. This is not done by default; the class boolean
kappa1_Tr_limit may be set to True and the problem re-solved with that specified if desired. kappa1_Tr_limit
is not supported for P-V inputs.
For P-V initializations, SciPy’s newton solver is used to find T.
[2] and [3] are two more resources documenting the PRSV EOS. [4] lists kappa values for 69 additional com-
pounds. See also PRSV2. Note that tabulated kappa values should be used with the critical parameters used in
their fits. Both [1] and [4] only considered vapor pressure in fitting the parameter.

1.1.1.12.25 References

[1], [2], [3], [4]

144 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.12.26 Examples

P-T initialization, two-phase, nitrogen and methane

>>> eos = PRSVMIX(T=115, P=1E6, Tcs=[126.1, 190.6], Pcs=[33.94E5, 46.04E5],


˓→omegas=[0.04, 0.011], zs=[0.5, 0.5], kijs=[[0,0],[0,0]])

>>> eos.phase, eos.V_l, eos.H_dep_l, eos.S_dep_l


('l/g', 3.6235523883756384e-05, -6349.003406339954, -49.12403359687132)

1.1.1.12.27 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for an EOS with the Van der Waals mixing
rules.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
cleanup_a_alpha_and_derivatives() Removes properties set by
setup_a_alpha_and_derivatives; run by
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
fugacities([xs, ys]) Helper method for calculating fugacity coefficients for
any phases present, using either the overall mole frac-
tions for both phases or using specified mole fractions
for each phase.
fugacity_coefficients(Z, zs) Literature formula for calculating fugacity coefficients
for each species in a mixture.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
setup_a_alpha_and_derivatives(i[, T]) Sets a, kappa0, kappa1, and Tc for a spe-
cific component before the pure-species EOS’s
a_alpha_and_derivatives method is called.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Generic method to calculate T from a specified P and V.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

1.1. thermo package 145


thermo Documentation, Release 0.1

TDP_Michelsen
TPD
d_TPD_dy
derivatives_and_departures
fugacities_partial_derivatives
fugacities_partial_derivatives_2
main_derivatives_and_departures
to_TP
to_TP_zs

a_alpha_mro = -5
cleanup_a_alpha_and_derivatives()
Removes properties set by setup_a_alpha_and_derivatives; run by GCEOSMIX.a_alpha_and_derivatives
after a_alpha is calculated for every component
setup_a_alpha_and_derivatives(i, T=None)
Sets a, kappa0, kappa1, and Tc for a specific component before the pure-species EOS’s
a_alpha_and_derivatives method is called. Both are called by GCEOSMIX.a_alpha_and_derivatives for
every component.
class thermo.eos_mix.PRSV2MIX(Tcs, Pcs, omegas, zs, kijs=None, T=None, P=None, V=None,
kappa1s=None, kappa2s=None, kappa3s=None)
Bases: thermo.eos_mix.PRMIX, thermo.eos.PRSV2
Class for solving the Peng-Robinson-Stryjek-Vera 2 equations of state for a Mixture as given in [1]. Subclasses
PRMIX and PRSV2. Solves the EOS on initialization and calculates fugacities for all components in all phases.
Inherits the method of calculating fugacity coefficients from PRMIX. Two of T, P, and V are needed to solve the
EOS.
𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑣 − 𝑏 𝑣(𝑣 + 𝑏) + 𝑏(𝑣 − 𝑏)
∑︁ ∑︁
𝑎𝛼 = 𝑧𝑖 𝑧𝑗 (𝑎𝛼)𝑖𝑗
𝑖 𝑗
√︁
(𝑎𝛼)𝑖𝑗 = (1 − 𝑘𝑖𝑗 ) (𝑎𝛼)𝑖 (𝑎𝛼)𝑗
∑︁
𝑏= 𝑧𝑖 𝑏𝑖
𝑖
𝑅2 𝑇𝑐,𝑖
2
𝑎𝑖 = 0.45724
𝑃𝑐,𝑖
𝑅𝑇𝑐,𝑖
𝑏𝑖 = 0.07780
𝑃𝑐,𝑖
𝛼(𝑇 )𝑖 = [1 + 𝜅𝑖 (1 − 𝑇𝑟,𝑖 )]2
√︀

0.5 0.5
𝜅𝑖 = 𝜅0,𝑖 + [𝜅1,𝑖 + 𝜅2,𝑖 (𝜅3,𝑖 − 𝑇𝑟,𝑖 )(1 − 𝑇𝑟,𝑖 )](1 + 𝑇𝑟,𝑖 )(0.7 − 𝑇𝑟,𝑖 )
𝜅0,𝑖 = 0.378893 + 1.4897153𝜔𝑖 − 0.17131848𝜔𝑖2 + 0.0196554𝜔𝑖3

Parameters
Tcs [float] Critical temperatures of all compounds, [K]
Pcs [float] Critical pressures of all compounds, [Pa]
omegas [float] Acentric factors of all compounds, [-]
zs [float] Overall mole fractions of all species, [-]

146 Chapter 1. thermo


thermo Documentation, Release 0.1

kijs [list[list[float]], optional] n*n size list of lists with binary interaction parameters for the Van
der Waals mixing rules, default all 0 [-]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]
kappa1s [list[float], optional] Fit parameter; available in [1] for over 90 compounds, [-]
kappa2s [list[float], optional] Fit parameter; available in [1] for over 90 compounds, [-]
kappa3s [list[float], optional] Fit parameter; available in [1] for over 90 compounds, [-]

1.1.1.12.28 Notes

For P-V initializations, SciPy’s newton solver is used to find T.


Note that tabulated kappa values should be used with the critical parameters used in their fits. [1] considered
only vapor pressure in fitting the parameter.

1.1.1.12.29 References

[1]

1.1.1.12.30 Examples

T-P initialization, nitrogen-methane at 115 K and 1 MPa:

>>> eos = PRSV2MIX(T=115, P=1E6, Tcs=[126.1, 190.6], Pcs=[33.94E5, 46.04E5],


˓→omegas=[0.04, 0.011], zs=[0.5, 0.5], kijs=[[0,0],[0,0]])

>>> eos.V_l, eos.V_g


(3.6235523883756384e-05, 0.0007002421492037558)
>>> eos.fugacities_l, eos.fugacities_g
([794057.5831840535, 72851.22327178411], [436553.65618350444, 357878.1106688994])

1.1.1.12.31 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for an EOS with the Van der Waals mixing
rules.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
Continued on next page

1.1. thermo package 147


thermo Documentation, Release 0.1

Table 1.21 – continued from previous page


cleanup_a_alpha_and_derivatives() Removes properties set by
setup_a_alpha_and_derivatives; run by
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
fugacities([xs, ys]) Helper method for calculating fugacity coefficients for
any phases present, using either the overall mole frac-
tions for both phases or using specified mole fractions
for each phase.
fugacity_coefficients(Z, zs) Literature formula for calculating fugacity coefficients
for each species in a mixture.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
setup_a_alpha_and_derivatives(i[, T]) Sets a, kappa, kappa0, kappa1, kappa2, kappa3 and Tc
for a specific component before the pure-species EOS’s
a_alpha_and_derivatives method is called.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Generic method to calculate T from a specified P and V.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

TDP_Michelsen
TPD
d_TPD_dy
derivatives_and_departures
fugacities_partial_derivatives
fugacities_partial_derivatives_2
main_derivatives_and_departures
to_TP
to_TP_zs

a_alpha_mro = -5
cleanup_a_alpha_and_derivatives()
Removes properties set by setup_a_alpha_and_derivatives; run by GCEOSMIX.a_alpha_and_derivatives
after a_alpha is calculated for every component
setup_a_alpha_and_derivatives(i, T=None)
Sets a, kappa, kappa0, kappa1, kappa2, kappa3 and Tc for a specific component be-
fore the pure-species EOS’s a_alpha_and_derivatives method is called. Both are called by
GCEOSMIX.a_alpha_and_derivatives for every component.
class thermo.eos_mix.TWUPRMIX(Tcs, Pcs, omegas, zs, kijs=None, T=None, P=None, V=None)
Bases: thermo.eos_mix.PRMIX, thermo.eos.TWUPR
Class for solving the Twu [1] variant of the Peng-Robinson cubic equation of state for a mixture. Subclasses
TWUPR. Solves the EOS on initialization and calculates fugacities for all components in all phases.

148 Chapter 1. thermo


thermo Documentation, Release 0.1

Two of T, P, and V are needed to solve the EOS.


𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑣 − 𝑏 𝑣(𝑣 + 𝑏) + 𝑏(𝑣 − 𝑏)
∑︁ ∑︁
𝑎𝛼 = 𝑧𝑖 𝑧𝑗 (𝑎𝛼)𝑖𝑗
𝑖 𝑗
√︁
(𝑎𝛼)𝑖𝑗 = (1 − 𝑘𝑖𝑗 ) (𝑎𝛼)𝑖 (𝑎𝛼)𝑗
∑︁
𝑏= 𝑧𝑖 𝑏𝑖
𝑖
𝑅2 𝑇𝑐,𝑖
2
𝑎𝑖 = 0.45724
𝑃𝑐,𝑖
𝑅𝑇𝑐,𝑖
𝑏𝑖 = 0.07780
𝑃𝑐,𝑖
(0) (1) (0)
𝛼𝑖 = 𝛼𝑖 + 𝜔𝑖 (𝛼𝑖 − 𝛼𝑖 )
𝑁 (𝑀 −1)
𝛼(0 or 1) = 𝑇𝑟,𝑖 𝑁𝑀
exp[𝐿(1 − 𝑇𝑟,𝑖 )]

For sub-critical conditions:


L0, M0, N0 = 0.125283, 0.911807, 1.948150;
L1, M1, N1 = 0.511614, 0.784054, 2.812520
For supercritical conditions:
L0, M0, N0 = 0.401219, 4.963070, -0.2;
L1, M1, N1 = 0.024955, 1.248089, -8.
Parameters
Tcs [float] Critical temperatures of all compounds, [K]
Pcs [float] Critical pressures of all compounds, [Pa]
omegas [float] Acentric factors of all compounds, [-]
zs [float] Overall mole fractions of all species, [-]
kijs [list[list[float]], optional] n*n size list of lists with binary interaction parameters for the Van
der Waals mixing rules, default all 0 [-]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]

1.1.1.12.32 Notes

For P-V initializations, SciPy’s newton solver is used to find T. Claimed to be more accurate than the PR, PR78
and PRSV equations.

1.1.1.12.33 References

[1]

1.1. thermo package 149


thermo Documentation, Release 0.1

1.1.1.12.34 Examples

T-P initialization, nitrogen-methane at 115 K and 1 MPa:

>>> eos = TWUPRMIX(T=115, P=1E6, Tcs=[126.1, 190.6], Pcs=[33.94E5, 46.04E5],


˓→omegas=[0.04, 0.011], zs=[0.5, 0.5], kijs=[[0,0],[0,0]])

>>> eos.V_l, eos.V_g


(3.624569813157017e-05, 0.0007004398944116553)
>>> eos.fugacities_l, eos.fugacities_g
([792155.022163319, 73305.88829726777], [436468.9677642441, 358049.24955730926])

1.1.1.12.35 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for an EOS with the Van der Waals mixing
rules.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
cleanup_a_alpha_and_derivatives() Removes properties set by
setup_a_alpha_and_derivatives; run by
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
fugacities([xs, ys]) Helper method for calculating fugacity coefficients for
any phases present, using either the overall mole frac-
tions for both phases or using specified mole fractions
for each phase.
fugacity_coefficients(Z, zs) Literature formula for calculating fugacity coefficients
for each species in a mixture.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
setup_a_alpha_and_derivatives(i[, T]) Sets a, omega, and Tc for a specific component be-
fore the pure-species EOS’s a_alpha_and_derivatives
method is called.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Generic method to calculate T from a specified P and V.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

150 Chapter 1. thermo


thermo Documentation, Release 0.1

TDP_Michelsen
TPD
d_TPD_dy
derivatives_and_departures
fugacities_partial_derivatives
fugacities_partial_derivatives_2
main_derivatives_and_departures
to_TP
to_TP_zs

a_alpha_mro = -5
cleanup_a_alpha_and_derivatives()
Removes properties set by setup_a_alpha_and_derivatives; run by GCEOSMIX.a_alpha_and_derivatives
after a_alpha is calculated for every component
setup_a_alpha_and_derivatives(i, T=None)
Sets a, omega, and Tc for a specific component before the pure-species EOS’s a_alpha_and_derivatives
method is called. Both are called by GCEOSMIX.a_alpha_and_derivatives for every component.
class thermo.eos_mix.TWUSRKMIX(Tcs, Pcs, omegas, zs, kijs=None, T=None, P=None, V=None)
Bases: thermo.eos_mix.SRKMIX, thermo.eos.TWUSRK
Class for solving the Twu variant of the Soave-Redlich-Kwong cubic equation of state for a mixture. Subclasses
TWUSRK. Solves the EOS on initialization and calculates fugacities for all components in all phases.
Two of T, P, and V are needed to solve the EOS.
𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑉 − 𝑏 𝑉 (𝑉 + 𝑏)
(︃ )︃
𝑅2 (𝑇𝑐,𝑖 )2 0.42748 · 𝑅2 (𝑇𝑐,𝑖 )2
𝑎𝑖 = √
3
=
9( 2 − 1)𝑃𝑐,𝑖 𝑃𝑐,𝑖
(︃ √ )︃
( 3 2 − 1) 𝑅𝑇𝑐,𝑖 0.08664 · 𝑅𝑇𝑐,𝑖
𝑏𝑖 = =
3 𝑃𝑐,𝑖 𝑃𝑐,𝑖
∑︁ ∑︁
𝑎𝛼 = 𝑧𝑖 𝑧𝑗 (𝑎𝛼)𝑖𝑗
𝑖 𝑗
√︁
(𝑎𝛼)𝑖𝑗 = (1 − 𝑘𝑖𝑗 ) (𝑎𝛼)𝑖 (𝑎𝛼)𝑗
∑︁
𝑏= 𝑧𝑖 𝑏𝑖
𝑖
(0,𝑖) (1,𝑖)
𝛼𝑖 = 𝛼 + 𝜔𝑖 (𝛼 − 𝛼(0,𝑖) )
𝑁 (𝑀 −1)
𝛼(0 or 1, i) = 𝑇𝑟,𝑖 𝑁𝑀
exp[𝐿(1 − 𝑇𝑟,𝑖 )]

For sub-critical conditions:


L0, M0, N0 = 0.141599, 0.919422, 2.496441
L1, M1, N1 = 0.500315, 0.799457, 3.291790
For supercritical conditions:
L0, M0, N0 = 0.441411, 6.500018, -0.20
L1, M1, N1 = 0.032580, 1.289098, -8.0
Parameters

1.1. thermo package 151


thermo Documentation, Release 0.1

Tcs [float] Critical temperatures of all compounds, [K]


Pcs [float] Critical pressures of all compounds, [Pa]
omegas [float] Acentric factors of all compounds, [-]
zs [float] Overall mole fractions of all species, [-]
kijs [list[list[float]], optional] n*n size list of lists with binary interaction parameters for the Van
der Waals mixing rules, default all 0 [-]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]

1.1.1.12.36 Notes

For P-V initializations, SciPy’s newton solver is used to find T. Claimed to be more accurate than the SRK
equation.

1.1.1.12.37 References

[1]

1.1.1.12.38 Examples

T-P initialization, nitrogen-methane at 115 K and 1 MPa:

>>> eos = TWUSRKMIX(T=115, P=1E6, Tcs=[126.1, 190.6], Pcs=[33.94E5, 46.04E5],


˓→omegas=[0.04, 0.011], zs=[0.5, 0.5], kijs=[[0,0],[0,0]])

>>> eos.V_l, eos.V_g


(4.1087913616390855e-05, 0.000711707084027679)
>>> eos.fugacities_l, eos.fugacities_g
([809692.8308266959, 74093.63881572774], [441783.43148985505, 362470.31741077645])

1.1.1.12.39 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for an EOS with the Van der Waals mixing
rules.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
Continued on next page

152 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.23 – continued from previous page


cleanup_a_alpha_and_derivatives() Removes properties set by
setup_a_alpha_and_derivatives; run by
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
fugacities([xs, ys]) Helper method for calculating fugacity coefficients for
any phases present, using either the overall mole frac-
tions for both phases or using specified mole fractions
for each phase.
fugacity_coefficients(Z, zs) Literature formula for calculating fugacity coefficients
for each species in a mixture.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
setup_a_alpha_and_derivatives(i[, T]) Sets a, omega, and Tc for a specific component be-
fore the pure-species EOS’s a_alpha_and_derivatives
method is called.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Generic method to calculate T from a specified P and V.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

TDP_Michelsen
TPD
d_TPD_dy
derivatives_and_departures
fugacities_partial_derivatives
fugacities_partial_derivatives_2
main_derivatives_and_departures
to_TP
to_TP_zs

a_alpha_mro = -5
cleanup_a_alpha_and_derivatives()
Removes properties set by setup_a_alpha_and_derivatives; run by GCEOSMIX.a_alpha_and_derivatives
after a_alpha is calculated for every component
setup_a_alpha_and_derivatives(i, T=None)
Sets a, omega, and Tc for a specific component before the pure-species EOS’s a_alpha_and_derivatives
method is called. Both are called by GCEOSMIX.a_alpha_and_derivatives for every component.
class thermo.eos_mix.APISRKMIX(Tcs, Pcs, zs, omegas=None, kijs=None, T=None, P=None,
V=None, S1s=None, S2s=None)
Bases: thermo.eos_mix.SRKMIX, thermo.eos.APISRK
Class for solving the Refinery Soave-Redlich-Kwong cubic equation of state for a mixture of any number of
compounds, as shown in the API Databook [1]. Subclasses APISRK. Solves the EOS on initialization and
calculates fugacities for all components in all phases.

1.1. thermo package 153


thermo Documentation, Release 0.1

Two of T, P, and V are needed to solve the EOS.


𝑅𝑇 𝑎𝛼(𝑇 )
𝑃 = −
𝑉 − 𝑏 𝑉 (𝑉 + 𝑏)
∑︁ ∑︁
𝑎𝛼 = 𝑧𝑖 𝑧𝑗 (𝑎𝛼)𝑖𝑗
𝑖 𝑗
√︁
(𝑎𝛼)𝑖𝑗 = (1 − 𝑘𝑖𝑗 ) (𝑎𝛼)𝑖 (𝑎𝛼)𝑗
∑︁
𝑏= 𝑧𝑖 𝑏𝑖
𝑖
(︃ )︃
2 2
𝑅 (𝑇𝑐,𝑖 ) 0.42748 · 𝑅 (𝑇𝑐,𝑖 )2
2
𝑎𝑖 = √ =
9( 3 2 − 1)𝑃𝑐,𝑖 𝑃𝑐,𝑖
(︃ √ )︃
3
( 2 − 1) 𝑅𝑇𝑐,𝑖 0.08664 · 𝑅𝑇𝑐,𝑖
𝑏𝑖 = =
3 𝑃𝑐,𝑖 𝑃𝑐,𝑖
[︃ √︀ ]︃2
(︁ √︀ )︁ 1 − 𝑇𝑟,𝑖
𝛼(𝑇 )𝑖 = 1 + 𝑆1,𝑖 1 − 𝑇𝑟,𝑖 + 𝑆2,𝑖 √︀
𝑇𝑟,𝑖
𝑆1,𝑖 = 0.48508 + 1.55171𝜔𝑖 − 0.15613𝜔𝑖2 if S1 is not tabulated

Parameters
Tcs [float] Critical temperatures of all compounds, [K]
Pcs [float] Critical pressures of all compounds, [Pa]
omegas [float] Acentric factors of all compounds, [-]
zs [float] Overall mole fractions of all species, [-]
kijs [list[list[float]], optional] n*n size list of lists with binary interaction parameters for the Van
der Waals mixing rules, default all 0 [-]
T [float, optional] Temperature, [K]
P [float, optional] Pressure, [Pa]
V [float, optional] Molar volume, [m^3/mol]
S1s [float, optional] Fit constant or estimated from acentric factor if not provided [-]
S2s [float, optional] Fit constant or 0 if not provided [-]

1.1.1.12.40 Notes

For P-V initializations, SciPy’s newton solver is used to find T.

1.1.1.12.41 References

[1]

1.1.1.12.42 Examples

T-P initialization, nitrogen-methane at 115 K and 1 MPa:

154 Chapter 1. thermo


thermo Documentation, Release 0.1

>>> eos = APISRKMIX(T=115, P=1E6, Tcs=[126.1, 190.6], Pcs=[33.94E5, 46.04E5],


˓→omegas=[0.04, 0.011], zs=[0.5, 0.5], kijs=[[0,0],[0,0]])

>>> eos.V_l, eos.V_g


(4.1015909205567394e-05, 0.0007104685894929316)
>>> eos.fugacities_l, eos.fugacities_g
([817882.3033490371, 71620.48238123357], [442158.29113191745, 361519.7987757053])

1.1.1.12.43 Methods

Hvap(T) Method to calculate enthalpy of vaporization for a pure


fluid from an equation of state, without iteration.
Psat(T[, polish]) Generic method to calculate vapor pressure for a speci-
fied T.
V_g_sat(T) Method to calculate molar volume of the vapor phase
along the saturation line.
V_l_sat(T) Method to calculate molar volume of the liquid phase
along the saturation line.
a_alpha_and_derivatives(T[, full, quick]) Method to calculate a_alpha and its first and second
derivatives for an EOS with the Van der Waals mixing
rules.
check_sufficient_inputs() Method to an exception if none of the pairs (T, P), (T,
V), or (P, V) are given.
cleanup_a_alpha_and_derivatives() Removes properties set by
setup_a_alpha_and_derivatives; run by
dPsat_dT(T) Generic method to calculate the temperature derivative
of vapor pressure for a specified T.
fugacities([xs, ys]) Helper method for calculating fugacity coefficients for
any phases present, using either the overall mole frac-
tions for both phases or using specified mole fractions
for each phase.
fugacity_coefficients(Z, zs) Literature formula for calculating fugacity coefficients
for each species in a mixture.
set_from_PT(Vs) Counts the number of real volumes in Vs, and deter-
mines what to do.
set_properties_from_solution(T, P, V, b, Sets all interesting properties which can be calculated
...) from an EOS alone.
setup_a_alpha_and_derivatives(i[, T]) Sets a, S1, S2 and Tc for a specific component before the
pure-species EOS’s a_alpha_and_derivatives method is
called.
solve() First EOS-generic method; should be called by all spe-
cific EOSs.
solve_T(P, V[, quick]) Generic method to calculate T from a specified P and V.
volume_solutions(T, P, b, delta, epsilon, . . . ) Solution of this form of the cubic EOS in terms of vol-
umes.

1.1. thermo package 155


thermo Documentation, Release 0.1

TDP_Michelsen
TPD
d_TPD_dy
derivatives_and_departures
fugacities_partial_derivatives
fugacities_partial_derivatives_2
main_derivatives_and_departures
to_TP
to_TP_zs

a_alpha_mro = -5
cleanup_a_alpha_and_derivatives()
Removes properties set by setup_a_alpha_and_derivatives; run by GCEOSMIX.a_alpha_and_derivatives
after a_alpha is calculated for every component
setup_a_alpha_and_derivatives(i, T=None)
Sets a, S1, S2 and Tc for a specific component before the pure-species EOS’s a_alpha_and_derivatives
method is called. Both are called by GCEOSMIX.a_alpha_and_derivatives for every component.

1.1.1.13 thermo.environment module

thermo.environment.GWP(CASRN, AvailableMethods=False, Method=None)


This function handles the retrieval of a chemical’s Global Warming Potential, relative to CO2. 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.
Returns the GWP for the 100yr outlook by default.
Parameters
CASRN [string] CASRN [-]
Returns
GWP [float] Global warming potential, [(impact/mass chemical)/(impact/mass CO2)]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain GWP with the given inputs
Other Parameters
Method [string, optional] The method name to use. Accepted methods are IPCC (2007) 100yr’,
‘IPCC (2007) 100yr-SAR’, ‘IPCC (2007) 20yr’, and ‘IPCC (2007) 500yr’. All valid values
are also held in the list GWP_methods.
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain the GWP for the desired chemical, and will return methods instead of the GWP

1.1.1.13.1 Notes

All data is from [1], the official source. Several chemicals are available in [1] are not included here as they do
not have a CAS. Methods are ‘IPCC (2007) 100yr’, ‘IPCC (2007) 100yr-SAR’, ‘IPCC (2007) 20yr’, and ‘IPCC
(2007) 500yr’.

156 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.13.2 References

[1]

1.1.1.13.3 Examples

Methane, 100-yr outlook

>>> GWP(CASRN='74-82-8')
25.0

thermo.environment.ODP(CASRN, AvailableMethods=False, Method=None)


This function handles the retrieval of a chemical’s Ozone Depletion Potential, relative to CFC-11 (trichloroflu-
oromethane). 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.
Returns the ODP of a chemical according to [2] when a method is not specified. If a range is provided in [2],
the highest value is returned.
Parameters
CASRN [string] CASRN [-]
Returns
ODP [float or str] Ozone Depletion potential, [(impact/mass chemical)/(impact/mass CFC-11)];
if method selected has string in it, this will be returned as a string regardless of if a range is
given or a number
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain ODP with the given inputs
Other Parameters
Method [string, optional] The method name to use. Accepted methods are ‘ODP2 Max’,
‘ODP2 Min’, ‘ODP2 string’, ‘ODP2 logarithmic average’, and methods for older values
are ‘ODP1 Max’, ‘ODP1 Min’, ‘ODP1 string’, and ‘ODP1 logarithmic average’. All valid
values are also held in the list ODP_methods.
Method [string, optional] A string for the method name to use, as defined by constants in
ODP_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain the ODP for the desired chemical, and will return methods instead of the ODP

1.1.1.13.4 Notes

Values are tabulated only for a small number of halogenated hydrocarbons, responsible for the largest impact.
The original values of ODP as defined in the Montreal Protocol are also available, as methods with the ODP1
prefix.
All values are somewhat emperical, as actual reaction rates of chemicals with ozone depend on temperature
which depends on latitude, longitude, time of day, weather, and the concentrations of other pollutants.
All data is from [1]. Several mixtures listed in [1] are not included here as they are not pure species. Methods
for values in [2] are ‘ODP2 Max’, ‘ODP2 Min’, ‘ODP2 string’, ‘ODP2 logarithmic average’, and methods for
older values are ‘ODP1 Max’, ‘ODP1 Min’, ‘ODP1 string’, and ‘ODP1 logarithmic average’.

1.1. thermo package 157


thermo Documentation, Release 0.1

1.1.1.13.5 References

[1], [2]

1.1.1.13.6 Examples

Dichlorotetrafluoroethane, according to [2].

>>> ODP(CASRN='76-14-2')
0.58

thermo.environment.logP(CASRN, AvailableMethods=False, Method=None)


This function handles the retrieval of a chemical’s octanol-water partition coefficient. 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
CASRN [string] CASRN [-]
Returns
logP [float] Octanol-water partition coefficient, [-]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain logP with the given inputs
Other Parameters
Method [string, optional] The method name to use. Accepted methods are ‘SYRRES’, or
‘CRC’, All valid values are also held in the list logP_methods.
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain the logP for the desired chemical, and will return methods instead of the logP

1.1.1.13.7 Notes

(︃ )︃
𝑢𝑛−𝑖𝑜𝑛𝑖𝑧𝑒𝑑
[𝑠𝑜𝑙𝑢𝑡𝑒]𝑜𝑐𝑡𝑎𝑛𝑜𝑙
log 𝑃𝑜𝑐𝑡/𝑤𝑎𝑡 = log 𝑢𝑛−𝑖𝑜𝑛𝑖𝑧𝑒𝑑
[𝑠𝑜𝑙𝑢𝑡𝑒]𝑤𝑎𝑡𝑒𝑟

1.1.1.13.8 References

[1], [2]

1.1.1.13.9 Examples

>>> logP('67-56-1')
-0.74

158 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.14 thermo.heat_capacity module

thermo.heat_capacity.Lastovka_Shaw(T, similarity_variable, cyclic_aliphatic=False)


Calculate ideal-gas constant-pressure heat capacitiy with the similarity variable concept and method as shown
in [1].
(︃ )︃ (︂ )︂2
0 𝐴 1 − 𝐴 2 (𝐶11 + 𝐶12 𝛼) exp(−(𝐶11 + 𝐶12 𝛼)/𝑇 )
𝐶 𝑝 = 𝐴2 + + (𝐵11 + 𝐵12 𝛼) −
1 + exp( 𝛼−𝐴
𝐴4
3
) 𝑇 [1 − exp(−(𝐶11 + 𝐶12 𝛼)/𝑇 )]2
(︂ )︂2
(𝐶21 + 𝐶22 𝛼) exp(−(𝐶21 + 𝐶22 𝛼)/𝑇 )
+(𝐵21 + 𝐵22 𝛼) −
𝑇 [1 − exp(−(𝐶21 + 𝐶22 𝛼)/𝑇 )]2

Parameters
T [float] Temperature of gas [K]
similarity_variable [float] similarity variable as defined in [1], [mol/g]
Returns
Cpg [float] Gas constant-pressure heat capacitiy, [J/kg/K]

1.1.1.14.1 Notes

Original model is in terms of J/g/K. Note that the model is for predicting mass heat capacity, not molar heat
capacity like most other methods!
A1 = 0.58, A2 = 1.25, A3 = 0.17338003, A4 = 0.014, B11 = 0.73917383, B12 = 8.88308889, C11 = 1188.28051,
C12 = 1813.04613, B21 = 0.0483019, B22 = 4.35656721, C21 = 2897.01927, C22 = 5987.80407.

1.1.1.14.2 References

[1]

1.1.1.14.3 Examples

>>> Lastovka_Shaw(1000.0, 0.1333)


2467.113309084757

thermo.heat_capacity.Lastovka_Shaw_integral(T, similarity_variable,
cyclic_aliphatic=False)
Calculate the integral of ideal-gas constant-pressure heat capacitiy with the similarity variable concept and
method as shown in [1].
Parameters
T [float] Temperature of gas [K]
similarity_variable [float] similarity variable as defined in [1], [mol/g]
Returns
H [float] Difference in enthalpy from 0 K, [J/kg]
See also:
Lastovka_Shaw, Lastovka_Shaw_integral_over_T

1.1. thermo package 159


thermo Documentation, Release 0.1

1.1.1.14.4 Notes

Original model is in terms of J/g/K. Note that the model is for predicting mass heat capacity, not molar heat
capacity like most other methods! Integral was computed with SymPy.

1.1.1.14.5 References

[1]

1.1.1.14.6 Examples

>>> Lastovka_Shaw_integral(300.0, 0.1333)


5283095.816018478

thermo.heat_capacity.Lastovka_Shaw_integral_over_T(T, similarity_variable,
cyclic_aliphatic=False)
Calculate the integral over temperature of ideal-gas constant-pressure heat capacitiy with the similarity variable
concept and method as shown in [1].
Parameters
T [float] Temperature of gas [K]
similarity_variable [float] similarity variable as defined in [1], [mol/g]
Returns
S [float] Difference in entropy from 0 K, [J/kg/K]
See also:
Lastovka_Shaw, Lastovka_Shaw_integral

1.1.1.14.7 Notes

Original model is in terms of J/g/K. Note that the model is for predicting mass heat capacity, not molar heat
capacity like most other methods! Integral was computed with SymPy.

1.1.1.14.8 References

[1]

1.1.1.14.9 Examples

>>> Lastovka_Shaw_integral_over_T(300.0, 0.1333)


3609.791928945323

thermo.heat_capacity.TRCCp(T, a0, a1, a2, a3, a4, a5, a6, a7)


Calculates ideal gas heat capacity using the model developed in [1].

160 Chapter 1. thermo


thermo Documentation, Release 0.1

The ideal gas heat capacity is given by:

𝐶𝑝 = 𝑅 𝑎0 + (𝑎1 /𝑇 2 ) exp(−𝑎2 /𝑇 ) + 𝑎3 𝑦 2 + (𝑎4 − 𝑎5 /(𝑇 − 𝑎7 )2 )𝑦 𝑗


(︀ )︀

𝑇 − 𝑎7
𝑦= for 𝑇 > 𝑎7 otherwise 0
𝑇 + 𝑎6
Parameters
T [float] Temperature [K]
a1-a7 [float] Coefficients
Returns
Cp [float] Ideal gas heat capacity , [J/mol/K]

1.1.1.14.10 Notes

j is set to 8. Analytical integrals are available for this expression.

1.1.1.14.11 References

[1]

1.1.1.14.12 Examples

>>> TRCCp(300, 4.0, 7.65E5, 720., 3.565, -0.052, -1.55E6, 52., 201.)
42.06525682312236

thermo.heat_capacity.TRCCp_integral(T, a0, a1, a2, a3, a4, a5, a6, a7, I=0)
Integrates ideal gas heat capacity using the model developed in [1]. Best used as a delta only.
The difference in enthalpy with respect to 0 K is given by:

𝐻(𝑇 ) − 𝐻 𝑟𝑒𝑓
[︂ {︂ (︂ )︂ (︂ )︂}︂ 𝑅𝑇
1 1
𝑦 + 𝑎4 3𝑦 2 + (5/3)𝑦 3 + 𝑦 4 + (3/5)𝑦 5 +
{︀
ℎ(𝑇 ) = (𝑎5 + 𝑎7 ) (2𝑎3 + 8𝑎4 ) ln(1 − 𝑦) + 𝑎3 1 + + 𝑎4 7 +
1−𝑦 1−𝑦

Parameters
T [float] Temperature [K]
a1-a7 [float] Coefficients
I [float, optional] Integral offset
Returns
H-H(0) [float] Difference in enthalpy from 0 K , [J/mol]

1.1. thermo package 161


thermo Documentation, Release 0.1

1.1.1.14.13 Notes

Analytical integral as provided in [1] and verified with numerical integration.

1.1.1.14.14 References

[1]

1.1.1.14.15 Examples

>>> TRCCp_integral(298.15, 4.0, 7.65E5, 720., 3.565, -0.052, -1.55E6, 52.,


... 201., 1.2)
10802.532600592816

thermo.heat_capacity.TRCCp_integral_over_T(T, a0, a1, a2, a3, a4, a5, a6, a7, J=0)
Integrates ideal gas heat capacity over T using the model developed in [1]. Best used as a delta only.
The difference in ideal-gas entropy with respect to 0 K is given by:

𝑆∘
=𝐽+
𝑅
[︃{︃ )︂ (︂ )︂4 }︃ (︂ )︂2 7
{︃(︂ )︂6−𝑖 }︃
𝑎4 𝑎27 − 𝑎5 𝑎4 𝑎27 − 𝑎5 𝑦𝑖
(︂ (︂ )︂ ∑︁ )︂ (︂
𝑎7 𝑎7 𝑇 + 𝑎6 −𝑎7
𝑠(𝑇 ) = 𝑎3 + ln 𝑧 + (𝑎3 + 𝑎4 ) ln + − 𝑎4
𝑎26 𝑎6 𝑎6 𝑎6 + 𝑎7 𝑖=1
𝑎26 𝑎6 𝑖

Parameters
T [float] Temperature [K]
a1-a7 [float] Coefficients
J [float, optional] Integral offset
Returns
S-S(0) [float] Difference in entropy from 0 K , [J/mol/K]

1.1.1.14.16 Notes

Analytical integral as provided in [1] and verified with numerical integration.

1.1.1.14.17 References

[1]

162 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.14.18 Examples

>>> TRCCp_integral_over_T(300, 4.0, 124000, 245, 50.539, -49.469,


... 220440000, 560, 78)
213.80148972435018

thermo.heat_capacity.heat_capacity_gas_methods = ['TRC Thermodynamics of Organic Compounds


Holds all methods available for the HeatCapacityGas class, for use in iterating over them.
class thermo.heat_capacity.HeatCapacityGas(CASRN=”, MW=None, similar-
ity_variable=None)
Bases: thermo.utils.TDependentProperty
Class for dealing with gas heat capacity as a function of temperature. Consists of two coefficient-based methods,
two constant methods, one tabular source, one simple estimator, and the external library CoolProp.
Parameters
CASRN [str, optional] The CAS number of the chemical
MW [float, optional] Molecular weight, [g/mol]
similarity_variable [float, optional] similarity variable, n_atoms/MW, [mol/g]
See also:
TRCCp, Lastovka_Shaw, Rowlinson_Poling, Rowlinson_Bondi

1.1.1.14.19 Notes

A string holding each method’s name is assigned to the following variables in this module, intended
as the most convenient way to refer to a method. To iterate over all methods, use the list stored in
heat_capacity_gas_methods.
TRCIG: A rigorous expression derived in [1] for modeling gas heat capacity. Coefficients for 1961 chemicals
are available.
POLING: Simple polynomials in [2] not suitable for extrapolation. Data is available for 308 chemicals.
COOLPROP: CoolProp external library; with select fluids from its library. Range is limited to that of the
equations of state it uses, as described in [3]. Very slow.
LASTOVKA_SHAW: A basic estimation method using the similarity variable concept; requires only molec-
ular structure, so is very convenient. See Lastovka_Shaw for details.
CRCSTD: Constant values tabulated in [4] at 298.15 K; data is available for 533 gases.
POLING_CONST: Constant values in [2] at 298.15 K; available for 348 gases.
VDI_TABULAR: Tabular data up to the critical point available in [5]. Note that this data is along the saturation
curve.

1.1.1.14.20 References

[1], [2], [3], [4], [5]


Attributes
T_cached
interpolation_T

1.1. thermo package 163


thermo Documentation, Release 0.1

interpolation_property
interpolation_property_inv
method

1.1.1.14.21 Methods

T_dependent_property(T) Method to calculate the property with sanity checking


and without specifying a specific method.
T_dependent_property_derivative(T[, or- Method to obtain a derivative of a property with respect
der]) to temperature, of a given order.
T_dependent_property_integral(T1, T2) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
T_dependent_property_integral_over_T(T1, Method to calculate the integral of a property over tem-
T2) perature with respect to temperature, using a specified
method.
__call__(T) Convenience method to calculate the property; calls
T_dependent_property.
calculate(T, method) Method to calculate surface tension of a liquid at tem-
perature T with a given method.
calculate_derivative(T, method[, order]) Method to calculate a derivative of a property with re-
spect to temperature, of a given order using a specified
method.
calculate_integral(T1, T2, method) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
calculate_integral_over_T(T1, T2, method) Method to calculate the integral of a property over tem-
perature with respect to temperature, using a specified
method.
interpolate(T, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data.
load_all_methods() Method which picks out coefficients for the specified
chemical from the various dictionaries and DataFrames
storing it.
plot_T_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) according to either a specified list of methods, or user
methods (if set), or all methods.
select_valid_methods(T) Method to obtain a sorted list of methods which are
valid at T according to test_method_validity.
set_tabular_data(Ts, properties[, name, . . . ]) Method to set tabular data to be used for interpolation.
set_user_methods(user_methods[, forced]) Method used to select certain property methods as hav-
ing a higher priority than were set by default.
solve_prop(goal[, reset_method]) Method to solve for the temperature at which a property
is at a specified value.
test_method_validity(T, method) Method to test the validity of a specified method for a
given temperature.
test_property_validity(prop) Method to test the validity of a calculated property.

extrapolate_tabular

Tmax = None

164 Chapter 1. thermo


thermo Documentation, Release 0.1

Maximum temperature at which no method can calculate the surface tension above.
Tmin = None
Minimum temperature at which no method can calculate the surface tension under.
all_methods = None
Set of all methods available for a given CASRN and properties; filled by load_all_methods.
calculate(T, method)
Method to calculate surface tension of a liquid at temperature T with a given method.
This method has no exception handling; see T_dependent_property for that.
Parameters
T [float] Temperature at which to calculate heat capacity, [K]
method [str] Method name to use
Returns
Cp [float] Calculated heat capacity, [J/mol/K]
calculate_integral(T1, T2, method)
Method to calculate the integral of a property with respect to temperature, using a specified method. Im-
plements the analytical integrals of all available methods except for tabular data.
Parameters
T1 [float] Lower limit of integration, [K]
T2 [float] Upper limit of integration, [K]
method [str] Method for which to find the integral
Returns
integral [float] Calculated integral of the property over the given range, [units*K]
calculate_integral_over_T(T1, T2, method)
Method to calculate the integral of a property over temperature with respect to temperature, using a speci-
fied method. Implements the analytical integrals of all available methods except for tabular data.
Parameters
T1 [float] Lower limit of integration, [K]
T2 [float] Upper limit of integration, [K]
method [str] Method for which to find the integral
Returns
integral [float] Calculated integral of the property over the given range, [units]
interpolation_T = None
No interpolation transformation by default.
interpolation_property = None
No interpolation transformation by default.
interpolation_property_inv = None
No interpolation transformation by default.
load_all_methods()
Method which picks out coefficients for the specified chemical from the various dictionaries and

1.1. thermo package 165


thermo Documentation, Release 0.1

DataFrames storing it. All data is stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods for which the data exists for.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'gas heat capacity'
property_max = 10000.0
Maximum valid of Heat capacity; arbitrarily set. For fluids very near the critical point, this value can be
obscenely high.
property_min = 0
Heat capacities have a minimum value of 0 at 0 K.
ranked_methods = ['TRC Thermodynamics of Organic Compounds in the Gas State (1994)', 'P
Default rankings of the available methods.
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by
T_dependent_property.
tabular_data = None
tabular_data, dict: Stored (Ts, properties) for any tabular data; indexed by provided or autogenerated name.
tabular_data_interpolators = None
tabular_data_interpolators, dict: Stored (extrapolator, spline) tuples which are interp1d instances for
each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_property, interpola-
tion_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had
been created is no longer used.
tabular_extrapolation_permitted = True
Allow tabular extrapolation by default; gases are fairly linear in heat capacity at high temperatures even if
not low temperatures.
test_method_validity(T, method)
Method to test the validity of a specified method for a given temperature.
‘TRC’ and ‘Poling’ both have minimum and maimum temperatures. The constant temperatures in POL-
ING_CONST and CRCSTD are considered valid for 50 degrees around their specified temperatures.
Lastovka_Shaw is considered valid for the whole range of temperatures.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.
Parameters
T [float] Temperature at which to determine the validity of the method, [K]
method [str] Name of the method to test
Returns
validity [bool] Whether or not a specifid method is valid
units = 'J/mol/K'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by T_dependent_property.
thermo.heat_capacity.Rowlinson_Poling(T, Tc, omega, Cpgm)
Calculate liquid constant-pressure heat capacitiy with the [1] CSP method.

166 Chapter 1. thermo


thermo Documentation, Release 0.1

This equation is not terrible accurate.


The heat capacity of a liquid is given by:

𝐶𝑝𝐿 − 𝐶𝑝𝑔 6.3(1 − 𝑇𝑟 )1/3


[︂ ]︂
0.49 0.4355
= 1.586 + + 𝜔 4.2775 + +
𝑅 1 − 𝑇𝑟 𝑇𝑟 1 − 𝑇𝑟

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
omega [float] Acentric factor for fluid, [-]
Cpgm [float] Constant-pressure gas heat capacity, [J/mol/K]
Returns
Cplm [float] Liquid constant-pressure heat capacitiy, [J/mol/K]

1.1.1.14.22 Notes

Poling compared 212 substances, and found error at 298K larger than 10% for 18 of them, mostly associating.
Of the other 194 compounds, AARD is 2.5%.

1.1.1.14.23 References

[1]

1.1.1.14.24 Examples

>>> Rowlinson_Poling(350.0, 435.5, 0.203, 91.21)


143.80194441498296

thermo.heat_capacity.Rowlinson_Bondi(T, Tc, omega, Cpgm)


Calculate liquid constant-pressure heat capacitiy with the CSP method shown in [1].
The heat capacity of a liquid is given by:

𝐶𝑝𝐿 − 𝐶𝑝𝑖𝑔
= 1.45 + 0.45(1 − 𝑇𝑟 )−1 + 0.25𝜔[17.11 + 25.2(1 − 𝑇𝑟 )1/3 𝑇𝑟−1 + 1.742(1 − 𝑇𝑟 )−1 ]
𝑅
Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
omega [float] Acentric factor for fluid, [-]
Cpgm [float] Constant-pressure gas heat capacity, [J/mol/K]
Returns
Cplm [float] Liquid constant-pressure heat capacitiy, [J/mol/K]

1.1. thermo package 167


thermo Documentation, Release 0.1

1.1.1.14.25 Notes

Less accurate than Rowlinson_Poling.

1.1.1.14.26 References

[1], [2], [3]

1.1.1.14.27 Examples

>>> Rowlinson_Bondi(T=373.28, Tc=535.55, omega=0.323, Cpgm=119.342)


175.39760730048116

thermo.heat_capacity.Dadgostar_Shaw(T, similarity_variable)
Calculate liquid constant-pressure heat capacitiy with the similarity variable concept and method as shown in
[1].

𝐶𝑝 = 24.5(𝑎11 𝛼 + 𝑎12 𝛼2 ) + (𝑎21 𝛼 + 𝑎22 𝛼2 )𝑇 + (𝑎31 𝛼 + 𝑎32 𝛼2 )𝑇 2

Parameters
T [float] Temperature of liquid [K]
similarity_variable [float] similarity variable as defined in [1], [mol/g]
Returns
Cpl [float] Liquid constant-pressure heat capacitiy, [J/kg/K]

1.1.1.14.28 Notes

Many restrictions on its use.


Original model is in terms of J/g/K. Note that the model is for predicting mass heat capacity, not molar heat
capacity like most other methods!
a11 = -0.3416; a12 = 2.2671; a21 = 0.1064; a22 = -0.3874l; a31 = -9.8231E-05; a32 = 4.182E-04

1.1.1.14.29 References

[1]

1.1.1.14.30 Examples

>>> Dadgostar_Shaw(355.6, 0.139)


1802.5291501191516

thermo.heat_capacity.Zabransky_quasi_polynomial(T, Tc, a1, a2, a3, a4, a5, a6)


Calculates liquid heat capacity using the model developed in [1].
𝑚
𝐶 𝐴2 ∑︁
= 𝐴1 ln(1 − 𝑇𝑟 ) + + 𝐴𝑗+3 𝑇𝑟𝑗
𝑅 1 − 𝑇𝑟 𝑗=0

168 Chapter 1. thermo


thermo Documentation, Release 0.1

Parameters
T [float] Temperature [K]
Tc [float] Critical temperature of fluid, [K]
a1-a6 [float] Coefficients
Returns
Cp [float] Liquid heat capacity, [J/mol/K]

1.1.1.14.31 Notes

Used only for isobaric heat capacities, not saturation heat capacities. Designed for reasonable extrapolation
behavior caused by using the reduced critical temperature. Used by the authors of [1] when critical temperature
was available for the fluid. Analytical integrals are available for this expression.

1.1.1.14.32 References

[1]

1.1.1.14.33 Examples

>>> Zabransky_quasi_polynomial(330, 591.79, -3.12743, 0.0857315, 13.7282, 1.28971,


˓→ 6.42297, 4.10989)

165.4728226923247

thermo.heat_capacity.Zabransky_quasi_polynomial_integral(T, Tc, a1, a2, a3, a4, a5,


a6)
Calculates the integral of liquid heat capacity using the quasi-polynomial model developed in [1].
Parameters
T [float] Temperature [K]
a1-a6 [float] Coefficients
Returns
H [float] Difference in enthalpy from 0 K, [J/mol]

1.1.1.14.34 Notes

The analytical integral was derived with SymPy; it is a simple polynomial plus some logarithms.

1.1.1.14.35 References

[1]

1.1. thermo package 169


thermo Documentation, Release 0.1

1.1.1.14.36 Examples

>>> H2 = Zabransky_quasi_polynomial_integral(300, 591.79, -3.12743,


... 0.0857315, 13.7282, 1.28971, 6.42297, 4.10989)
>>> H1 = Zabransky_quasi_polynomial_integral(200, 591.79, -3.12743,
... 0.0857315, 13.7282, 1.28971, 6.42297, 4.10989)
>>> H2 - H1
14662.026406892925

thermo.heat_capacity.Zabransky_quasi_polynomial_integral_over_T(T, Tc, a1, a2,


a3, a4, a5, a6)
Calculates the integral of liquid heat capacity over T using the quasi-polynomial model developed in [1].
Parameters
T [float] Temperature [K]
a1-a6 [float] Coefficients
Returns
S [float] Difference in entropy from 0 K, [J/mol/K]

1.1.1.14.37 Notes

The analytical integral was derived with Sympy. It requires the Polylog(2,x) function, which is unimplemented
in SciPy. A very accurate numerical approximation was implemented as thermo.utils.polylog2. Rela-
tively slow due to the use of that special function.

1.1.1.14.38 References

[1]

1.1.1.14.39 Examples

>>> S2 = Zabransky_quasi_polynomial_integral_over_T(300, 591.79, -3.12743,


... 0.0857315, 13.7282, 1.28971, 6.42297, 4.10989)
>>> S1 = Zabransky_quasi_polynomial_integral_over_T(200, 591.79, -3.12743,
... 0.0857315, 13.7282, 1.28971, 6.42297, 4.10989)
>>> S2 - S1
59.16997291893654

thermo.heat_capacity.Zabransky_cubic(T, a1, a2, a3, a4)


Calculates liquid heat capacity using the model developed in [1].
3 (︂ )︂𝑗
𝐶 ∑︁ 𝑇
= 𝐴𝑗+1
𝑅 𝑗=0
100

Parameters
T [float] Temperature [K]
a1-a4 [float] Coefficients
Returns

170 Chapter 1. thermo


thermo Documentation, Release 0.1

Cp [float] Liquid heat capacity, [J/mol/K]

1.1.1.14.40 Notes

Most often form used in [1]. Analytical integrals are available for this expression.

1.1.1.14.41 References

[1]

1.1.1.14.42 Examples

>>> Zabransky_cubic(298.15, 20.9634, -10.1344, 2.8253, -0.256738)


75.31462591538556

thermo.heat_capacity.Zabransky_cubic_integral(T, a1, a2, a3, a4)


Calculates the integral of liquid heat capacity using the model developed in [1].
Parameters
T [float] Temperature [K]
a1-a4 [float] Coefficients
Returns
H [float] Difference in enthalpy from 0 K, [J/mol]

1.1.1.14.43 Notes

The analytical integral was derived with Sympy; it is a simple polynomial.

1.1.1.14.44 References

[1]

1.1.1.14.45 Examples

>>> Zabransky_cubic_integral(298.15, 20.9634, -10.1344, 2.8253, -0.256738)


31051.679845520586

thermo.heat_capacity.Zabransky_cubic_integral_over_T(T, a1, a2, a3, a4)


Calculates the integral of liquid heat capacity over T using the model developed in [1].
Parameters
T [float] Temperature [K]
a1-a4 [float] Coefficients
Returns
S [float] Difference in entropy from 0 K, [J/mol/K]

1.1. thermo package 171


thermo Documentation, Release 0.1

1.1.1.14.46 Notes

The analytical integral was derived with Sympy; it is a simple polynomial, plus a logarithm

1.1.1.14.47 References

[1]

1.1.1.14.48 Examples

>>> Zabransky_cubic_integral_over_T(298.15, 20.9634, -10.1344, 2.8253,


... -0.256738)
24.73245695987246

class thermo.heat_capacity.Zabransky_quasipolynomial(CAS, name, uncertainty, Tmin,


Tmax, Tc, coeffs)
Bases: object
Quasi-polynomial object for calculating the heat capacity of a chemical. Implements the enthalpy and entropy
integrals as well.
𝑚
𝐶 𝐴2 ∑︁
= 𝐴1 ln(1 − 𝑇𝑟 ) + + 𝐴𝑗+3 𝑇𝑟𝑗
𝑅 1 − 𝑇𝑟 𝑗=0

Parameters
CAS [str] CAS number.
name [str] Name of the chemical as given in [1].
uncertainty [str] Uncertainty class of the heat capacity as given in [1].
Tmin [float] Minimum temperature any experimental data was available at.
Tmax [float] Maximum temperature any experimental data was available at.
Tc [float] Critical temperature of the chemical, as used in the formula.
coeffs [list[float]] Six coefficients for the equation.

1.1.1.14.49 References

[1]
Attributes
CAS
Tc
Tmax
Tmin
coeffs
name
uncertainty

172 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.14.50 Methods

calculate(T) Method to actually calculate heat capacity as a function


of temperature.
calculate_integral(T1, T2) Method to compute the enthalpy integral of heat capac-
ity from T1 to T2.
calculate_integral_over_T(T1, T2) Method to compute the entropy integral of heat capacity
from T1 to T2.

CAS
CAS number.
Tc
Critical temperature of the chemical, as used in the formula.
Tmax
Maximum temperature any experimental data was available at.
Tmin
Minimum temperature any experimental data was available at.
calculate(T)
Method to actually calculate heat capacity as a function of temperature.
Parameters
T [float] Temperature, [K]
Returns
Cp [float] Liquid heat capacity as T, [J/mol/K]
calculate_integral(T1, T2)
Method to compute the enthalpy integral of heat capacity from T1 to T2.

Parameters
T1 [float] Initial temperature, [K]
T2 [float] Final temperature, [K]
Returns
dH [float] Enthalpy difference between T1 and T2, [J/mol]

calculate_integral_over_T(T1, T2)
Method to compute the entropy integral of heat capacity from T1 to T2.

Parameters
T1 [float] Initial temperature, [K]
T2 [float] Final temperature, [K]
Returns
dS [float] Entropy difference between T1 and T2, [J/mol/K]

coeffs
Six coefficients for the equation.

1.1. thermo package 173


thermo Documentation, Release 0.1

name
Name of the chemical.
uncertainty
Uncertainty class of the heat capacity.
class thermo.heat_capacity.Zabransky_spline(CAS, name, uncertainty)
Bases: object
Implementation of the cubic spline method presented in [1] for calculating the heat capacity of a chemical.
Implements the enthalpy and entropy integrals as well.
3 (︂ )︂𝑗
𝐶 ∑︁ 𝑇
= 𝐴𝑗+1
𝑅 𝑗=0
100

Parameters
CAS [str] CAS number.
name [str] Name of the chemical as in [1].
uncertainty [str] Uncertainty class of the heat capacity as in [1].

1.1.1.14.51 References

[1]
Attributes
CAS
Ts
coeff_sets
n
name
uncertainty

1.1.1.14.52 Methods

add_coeffs(Tmin, Tmax, coeffs) Called internally during the parsing of the Zabransky
database, to
calculate(T) Method to actually calculate heat capacity as a function
of temperature.
calculate_integral(T1, T2) Method to compute the enthalpy integral of heat capac-
ity from T1 to T2.
calculate_integral_over_T(T1, T2) Method to compute the entropy integral of heat capacity
from T1 to T2.

CAS
CAS number.
Ts
Temperatures at which the coefficient sets transition.

174 Chapter 1. thermo


thermo Documentation, Release 0.1

add_coeffs(Tmin, Tmax, coeffs)


Called internally during the parsing of the Zabransky database, to add coefficients as they are read one per
line
calculate(T)
Method to actually calculate heat capacity as a function of temperature.
Parameters
T [float] Temperature, [K]
Returns
Cp [float] Liquid heat capacity as T, [J/mol/K]
calculate_integral(T1, T2)
Method to compute the enthalpy integral of heat capacity from T1 to T2. Analytically integrates across the
piecewise spline as necessary.
Parameters
T1 [float] Initial temperature, [K]
T2 [float] Final temperature, [K]
Returns
dS [float] Enthalpy difference between T1 and T2, [J/mol/K]
calculate_integral_over_T(T1, T2)
Method to compute the entropy integral of heat capacity from T1 to T2. Analytically integrates across the
piecewise spline as necessary.
Parameters
T1 [float] Initial temperature, [K]
T2 [float] Final temperature, [K]
Returns
dS [float] Entropy difference between T1 and T2, [J/mol/K]
coeff_sets
Actual coefficients used to describe the chemical.
n
Number of coefficient sets used to describe the chemical.
name
Name of the chemical.
uncertainty
Uncertainty class of the heat capacity.
thermo.heat_capacity.heat_capacity_liquid_methods = ['Zabransky spline, averaged heat capac
Holds all methods available for the HeatCapacityLiquid class, for use in iterating over them.
class thermo.heat_capacity.HeatCapacityLiquid(CASRN=”, MW=None, similar-
ity_variable=None, Tc=None,
omega=None, Cpgm=None)
Bases: thermo.utils.TDependentProperty
Class for dealing with liquid heat capacity as a function of temperature. Consists of six coefficient-based meth-
ods, two constant methods, one tabular source, two CSP methods based on gas heat capacity, one simple esti-
mator, and the external library CoolProp.

1.1. thermo package 175


thermo Documentation, Release 0.1

Parameters
CASRN [str, optional] The CAS number of the chemical
MW [float, optional] Molecular weight, [g/mol]
similarity_variable [float, optional] similarity variable, n_atoms/MW, [mol/g]
Tc [float, optional] Critical temperature, [K]
omega [float, optional] Acentric factor, [-]
Cpgm [float or callable, optional] Idea-gas molar heat capacity at T or callable for the same,
[J/mol/K]
See also:
Zabransky_quasi_polynomial, Zabransky_cubic, Rowlinson_Poling,
Rowlinson_Bondi, Dadgostar_Shaw

1.1.1.14.53 Notes

A string holding each method’s name is assigned to the following variables in this module, intended
as the most convenient way to refer to a method. To iterate over all methods, use the list stored in
heat_capacity_gas_methods.
ZABRANSKY_SPLINE, ZABRANSKY_QUASIPOLYNOMIAL, ZABRANSKY_SPLINE_C, and
ZABRANSKY_QUASIPOLYNOMIAL_C:
Rigorous expressions developed in [1] following critical evaluation of the available data. The
spline methods use the form described in Zabransky_cubic over short ranges with varying
coefficients to obtain a wider range. The quasi-polynomial methods use the form described in
Zabransky_quasi_polynomial, more suitable for extrapolation, and over then entire range.
Respectively, there is data available for 588, 146, 51, and 26 chemicals. ‘C’ denotes constant- pres-
sure data available from more precise experiments. The others are heat capacity values averaged over
a temperature changed.

ZABRANSKY_SPLINE_SAT and ZABRANSKY_QUASIPOLYNOMIAL_SAT: Rigorous expressions


developed in [1] following critical evaluation of the available data. The spline method use the form
described in Zabransky_cubic over short ranges with varying coefficients to obtain a wider range.
The quasi-polynomial method use the form described in Zabransky_quasi_polynomial, more
suitable for extrapolation, and over their entire range. Respectively, there is data available for 203, and 16
chemicals. Note that these methods are for the saturation curve!
VDI_TABULAR: Tabular data up to the critical point available in [5]. Note that this data is along the saturation
curve.
ROWLINSON_POLING: CSP method described in Rowlinson_Poling. Requires a ideal gas heat ca-
pacity value at the same temperature as it is to be calculated.
ROWLINSON_BONDI: CSP method described in Rowlinson_Bondi. Requires a ideal gas heat capacity
value at the same temperature as it is to be calculated.
COOLPROP: CoolProp external library; with select fluids from its library. Range is limited to that of the
equations of state it uses, as described in [3]. Very slow.
DADGOSTAR_SHAW: A basic estimation method using the similarity variable concept; requires only molec-
ular structure, so is very convenient. See Dadgostar_Shaw for details.
POLING_CONST: Constant values in [2] at 298.15 K; available for 245 liquids.

176 Chapter 1. thermo


thermo Documentation, Release 0.1

CRCSTD: Consta values tabulated in [4] at 298.15 K; data is available for 433 liquids.

1.1.1.14.54 References

[1], [2], [3], [4], [5]


Attributes
T_cached
interpolation_T
interpolation_property
interpolation_property_inv
method

1.1.1.14.55 Methods

T_dependent_property(T) Method to calculate the property with sanity checking


and without specifying a specific method.
T_dependent_property_derivative(T[, or- Method to obtain a derivative of a property with respect
der]) to temperature, of a given order.
T_dependent_property_integral(T1, T2) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
T_dependent_property_integral_over_T(T1, Method to calculate the integral of a property over tem-
T2) perature with respect to temperature, using a specified
method.
__call__(T) Convenience method to calculate the property; calls
T_dependent_property.
calculate(T, method) Method to calculate heat capacity of a liquid at temper-
ature T with a given method.
calculate_derivative(T, method[, order]) Method to calculate a derivative of a property with re-
spect to temperature, of a given order using a specified
method.
calculate_integral(T1, T2, method) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
calculate_integral_over_T(T1, T2, method) Method to calculate the integral of a property over tem-
perature with respect to temperature, using a specified
method.
interpolate(T, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data.
load_all_methods() Method which picks out coefficients for the specified
chemical from the various dictionaries and DataFrames
storing it.
plot_T_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) according to either a specified list of methods, or user
methods (if set), or all methods.
select_valid_methods(T) Method to obtain a sorted list of methods which are
valid at T according to test_method_validity.
set_tabular_data(Ts, properties[, name, . . . ]) Method to set tabular data to be used for interpolation.
Continued on next page

1.1. thermo package 177


thermo Documentation, Release 0.1

Table 1.28 – continued from previous page


set_user_methods(user_methods[, forced]) Method used to select certain property methods as hav-
ing a higher priority than were set by default.
solve_prop(goal[, reset_method]) Method to solve for the temperature at which a property
is at a specified value.
test_method_validity(T, method) Method to check the validity of a method.
test_property_validity(prop) Method to test the validity of a calculated property.

extrapolate_tabular

Tmax = None
Maximum temperature at which no method can calculate the heat capacity above.
Tmin = None
Minimum temperature at which no method can calculate the heat capacity under.
all_methods = None
Set of all methods available for a given CASRN and properties; filled by load_all_methods.
calculate(T, method)
Method to calculate heat capacity of a liquid at temperature T with a given method.
This method has no exception handling; see T_dependent_property for that.
Parameters
T [float] Temperature at which to calculate heat capacity, [K]
method [str] Name of the method to use
Returns
Cp [float] Heat capacity of the liquid at T, [J/mol/K]
calculate_integral(T1, T2, method)
Method to calculate the integral of a property with respect to temperature, using a specified method. Im-
plements the analytical integrals of all available methods except for tabular data, the case of multiple
coefficient sets needed to encompass the temperature range of any of the ZABRANSKY methods, and the
CSP methods using the vapor phase properties.
Parameters
T1 [float] Lower limit of integration, [K]
T2 [float] Upper limit of integration, [K]
method [str] Method for which to find the integral
Returns
integral [float] Calculated integral of the property over the given range, [units*K]
calculate_integral_over_T(T1, T2, method)
Method to calculate the integral of a property over temperature with respect to temperature, using a spec-
ified method. Implements the analytical integrals of all available methods except for tabular data, the
case of multiple coefficient sets needed to encompass the temperature range of any of the ZABRANSKY
methods, and the CSP methods using the vapor phase properties.
Parameters
T1 [float] Lower limit of integration, [K]
T2 [float] Upper limit of integration, [K]

178 Chapter 1. thermo


thermo Documentation, Release 0.1

method [str] Method for which to find the integral


Returns
integral [float] Calculated integral of the property over the given range, [units]
interpolation_T = None
No interpolation transformation by default.
interpolation_property = None
No interpolation transformation by default.
interpolation_property_inv = None
No interpolation transformation by default.
load_all_methods()
Method which picks out coefficients for the specified chemical from the various dictionaries and
DataFrames storing it. All data is stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods for which the data exists for.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'Liquid heat capacity'
property_max = 10000.0
Maximum valid of Heat capacity; arbitrarily set. For fluids very near the critical point, this value can be
obscenely high.
property_min = 1
Allow very low heat capacities; arbitrarily set; liquid heat capacity should always be somewhat substantial.
ranked_methods = ['Zabransky spline, averaged heat capacity', 'Zabransky quasipolynomia
Default rankings of the available methods.
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by
T_dependent_property.
tabular_data = None
tabular_data, dict: Stored (Ts, properties) for any tabular data; indexed by provided or autogenerated name.
tabular_data_interpolators = None
tabular_data_interpolators, dict: Stored (extrapolator, spline) tuples which are interp1d instances for
each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_property, interpola-
tion_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had
been created is no longer used.
tabular_extrapolation_permitted = False
Disallow tabular extrapolation by default; higher-temeprature behavior is not well predicted by most ex-
trapolation.
test_method_validity(T, method)
Method to check the validity of a method. Follows the given ranges for all coefficient-based methods. For
the CSP method Rowlinson_Poling, the model is considered valid for all temperatures. The simple
method Dadgostar_Shaw is considered valid for all temperatures. For tabular data, extrapolation out-
side of the range is used if tabular_extrapolation_permitted is set; if it is, the extrapolation
is considered valid for all temperatures.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.

1.1. thermo package 179


thermo Documentation, Release 0.1

Parameters
T [float] Temperature at which to test the method, [K]
method [str] Name of the method to test
Returns
validity [bool] Whether or not a method is valid
units = 'J/mol/K'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by T_dependent_property.
thermo.heat_capacity.Lastovka_solid(T, similarity_variable)
Calculate solid constant-pressure heat capacitiy with the similarity variable concept and method as shown in
[1].
(︂ )︂2
2 𝜃 exp(𝜃/𝑇 )
𝐶𝑝 = 3(𝐴1 𝛼 + 𝐴2 𝛼 )𝑅 + (𝐶1 𝛼 + 𝐶2 𝛼2 )𝑇 + (𝐷1 𝛼 + 𝐷2 𝛼2 )𝑇 2
𝑇 [exp(𝜃/𝑇 ) − 1]2

Parameters
T [float] Temperature of solid [K]
similarity_variable [float] similarity variable as defined in [1], [mol/g]
Returns
Cps [float] Solid constant-pressure heat capacitiy, [J/kg/K]

1.1.1.14.56 Notes

Many restrictions on its use. Trained on data with MW from 12.24 g/mol to 402.4 g/mol, C mass fractions from
61.3% to 95.2%, H mass fractions from 3.73% to 15.2%, N mass fractions from 0 to 15.4%, O mass fractions
from 0 to 18.8%, and S mass fractions from 0 to 29.6%. Recommended for organic compounds with low mass
fractions of hetero-atoms and especially when molar mass exceeds 200 g/mol. This model does not show and
effects of phase transition but should not be used passed the triple point.
Original model is in terms of J/g/K. Note that the model s for predicting mass heat capacity, not molar heat
capacity like most other methods!
A1 = 0.013183; A2 = 0.249381; theta = 151.8675; C1 = 0.026526; C2 = -0.024942; D1 = 0.000025; D2 =
-0.000123.

1.1.1.14.57 References

[1]

1.1.1.14.58 Examples

>>> Lastovka_solid(300, 0.2139)


1682.063629222013

180 Chapter 1. thermo


thermo Documentation, Release 0.1

thermo.heat_capacity.Lastovka_solid_integral(T, similarity_variable)
Integrates solid constant-pressure heat capacitiy with the similarity variable concept and method as shown in
[1].
Uses a explicit form as derived with Sympy.
Parameters
T [float] Temperature of solid [K]
similarity_variable [float] similarity variable as defined in [1], [mol/g]
Returns
H [float] Difference in enthalpy from 0 K, [J/kg]
See also:
Lastovka_solid

1.1.1.14.59 Notes

Original model is in terms of J/g/K. Note that the model is for predicting mass heat capacity, not molar heat
capacity like most other methods!

1.1.1.14.60 References

[1]

1.1.1.14.61 Examples

>>> Lastovka_solid_integral(300, 0.2139)


283246.1242170376

thermo.heat_capacity.Lastovka_solid_integral_over_T(T, similarity_variable)
Integrates over T solid constant-pressure heat capacitiy with the similarity variable concept and method as shown
in [1].
Uses a explicit form as derived with Sympy.
Parameters
T [float] Temperature of solid [K]
similarity_variable [float] similarity variable as defined in [1], [mol/g]
Returns
S [float] Difference in entropy from 0 K, [J/kg/K]
See also:
Lastovka_solid

1.1.1.14.62 Notes

Original model is in terms of J/g/K. Note that the model is for predicting mass heat capacity, not molar heat
capacity like most other methods!

1.1. thermo package 181


thermo Documentation, Release 0.1

1.1.1.14.63 References

[1]

1.1.1.14.64 Examples

>>> Lastovka_solid_integral_over_T(300, 0.2139)


1947.553552666818

thermo.heat_capacity.heat_capacity_solid_methods = ["Perry's Table 2-151", 'CRC Standard Th


Holds all methods available for the HeatCapacitySolid class, for use in iterating over them.
class thermo.heat_capacity.HeatCapacitySolid(CASRN=”, similarity_variable=None,
MW=None)
Bases: thermo.utils.TDependentProperty
Class for dealing with solid heat capacity as a function of temperature. Consists of one temperature-dependent
simple expression, one constant value source, and one simple estimator.
Parameters
similarity_variable [float, optional] similarity variable, n_atoms/MW, [mol/g]
MW [float, optional] Molecular weight, [g/mol]
CASRN [str, optional] The CAS number of the chemical
See also:
Lastovka_solid

1.1.1.14.65 Notes

A string holding each method’s name is assigned to the following variables in this module, intended
as the most convenient way to refer to a method. To iterate over all methods, use the list stored in
heat_capacity_solid_methods.
PERRY151: Simple polynomials with vaious exponents selected for each expression. Coefficients are in units
of calories/mol/K. The full expression is:

𝐶𝑝 = 𝑎 + 𝑏𝑇 + 𝑐/𝑇 2 + 𝑑𝑇 2

Data is available for 284 solids, from [2].


CRCSTD: Values tabulated in [1] at 298.15 K; data is available for 529 solids.
LASTOVKA_S: A basic estimation method using the similarity variable concept; requires only molecular
structure, so is very convenient. See Lastovka_solid for details.

1.1.1.14.66 References

[1], [2]
Attributes
T_cached
interpolation_T

182 Chapter 1. thermo


thermo Documentation, Release 0.1

interpolation_property
interpolation_property_inv
method

1.1.1.14.67 Methods

T_dependent_property(T) Method to calculate the property with sanity checking


and without specifying a specific method.
T_dependent_property_derivative(T[, or- Method to obtain a derivative of a property with respect
der]) to temperature, of a given order.
T_dependent_property_integral(T1, T2) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
T_dependent_property_integral_over_T(T1, Method to calculate the integral of a property over tem-
T2) perature with respect to temperature, using a specified
method.
__call__(T) Convenience method to calculate the property; calls
T_dependent_property.
calculate(T, method) Method to calculate heat capacity of a solid at tempera-
ture T with a given method.
calculate_derivative(T, method[, order]) Method to calculate a derivative of a property with re-
spect to temperature, of a given order using a specified
method.
calculate_integral(T1, T2, method) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
calculate_integral_over_T(T1, T2, method) Method to calculate the integral of a property over tem-
perature with respect to temperature, using a specified
method.
interpolate(T, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data.
load_all_methods() Method which picks out coefficients for the specified
chemical from the various dictionaries and DataFrames
storing it.
plot_T_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) according to either a specified list of methods, or user
methods (if set), or all methods.
select_valid_methods(T) Method to obtain a sorted list of methods which are
valid at T according to test_method_validity.
set_tabular_data(Ts, properties[, name, . . . ]) Method to set tabular data to be used for interpolation.
set_user_methods(user_methods[, forced]) Method used to select certain property methods as hav-
ing a higher priority than were set by default.
solve_prop(goal[, reset_method]) Method to solve for the temperature at which a property
is at a specified value.
test_method_validity(T, method) Method to check the validity of a method.
test_property_validity(prop) Method to test the validity of a calculated property.

extrapolate_tabular

Tmax = None
Maximum temperature at which no method can calculate the heat capacity above.

1.1. thermo package 183


thermo Documentation, Release 0.1

Tmin = None
Minimum temperature at which no method can calculate the heat capacity under.
all_methods = None
Set of all methods available for a given CASRN and properties; filled by load_all_methods.
calculate(T, method)
Method to calculate heat capacity of a solid at temperature T with a given method.
This method has no exception handling; see T_dependent_property for that.
Parameters
T [float] Temperature at which to calculate heat capacity, [K]
method [str] Name of the method to use
Returns
Cp [float] Heat capacity of the solid at T, [J/mol/K]
calculate_integral(T1, T2, method)
Method to calculate the integral of a property with respect to temperature, using a specified method. Im-
plements the analytical integrals of all available methods except for tabular data.
Parameters
T1 [float] Lower limit of integration, [K]
T2 [float] Upper limit of integration, [K]
method [str] Method for which to find the integral
Returns
integral [float] Calculated integral of the property over the given range, [units*K]
calculate_integral_over_T(T1, T2, method)
Method to calculate the integral of a property over temperature with respect to temperature, using a speci-
fied method. Implements the analytical integrals of all available methods except for tabular data.
Parameters
T1 [float] Lower limit of integration, [K]
T2 [float] Upper limit of integration, [K]
method [str] Method for which to find the integral
Returns
integral [float] Calculated integral of the property over the given range, [units]
interpolation_T = None
No interpolation transformation by default.
interpolation_property = None
No interpolation transformation by default.
interpolation_property_inv = None
No interpolation transformation by default.
load_all_methods()
Method which picks out coefficients for the specified chemical from the various dictionaries and
DataFrames storing it. All data is stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods for which the data exists for.

184 Chapter 1. thermo


thermo Documentation, Release 0.1

Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'solid heat capacity'
property_max = 10000.0
Maximum value of Heat capacity; arbitrarily set.
property_min = 0
Heat capacities have a minimum value of 0 at 0 K.
ranked_methods = ["Perry's Table 2-151", 'CRC Standard Thermodynamic Properties of Chem
Default rankings of the available methods.
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by
T_dependent_property.
tabular_data = None
tabular_data, dict: Stored (Ts, properties) for any tabular data; indexed by provided or autogenerated name.
tabular_data_interpolators = None
tabular_data_interpolators, dict: Stored (extrapolator, spline) tuples which are interp1d instances for
each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_property, interpola-
tion_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had
been created is no longer used.
tabular_extrapolation_permitted = True
Allow tabular extrapolation by default; a theoretical solid phase exists for all chemicals at sufficiently high
pressures, although few chemicals could stably exist in those conditions.
test_method_validity(T, method)
Method to check the validity of a method. Follows the given ranges for all coefficient-based methods. For
tabular data, extrapolation outside of the range is used if tabular_extrapolation_permitted is
set; if it is, the extrapolation is considered valid for all temperatures. For the Lastovka_solid method,
it is considered valid under 10000K.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.
Parameters
T [float] Temperature at which to test the method, [K]
method [str] Name of the method to test
Returns
validity [bool] Whether or not a method is valid
units = 'J/mol/K'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by T_dependent_property.
class thermo.heat_capacity.HeatCapacitySolidMixture(CASs=[], HeatCapaci-
tySolids=[])
Bases: thermo.utils.MixtureProperty
Class for dealing with solid heat capacity of a mixture as a function of temperature, pressure, and composition.
Consists only of mole weighted averaging.

1.1. thermo package 185


thermo Documentation, Release 0.1

Parameters
CASs [list[str], optional] The CAS numbers of all species in the mixture
HeatCapacitySolids [list[HeatCapacitySolid], optional] HeatCapacitySolid objects created for
all species in the mixture, normally created by thermo.chemical.Chemical.

1.1.1.14.68 Notes

To iterate over all methods, use the list stored in heat_capacity_solid_mixture_methods.


SIMPLE: Mixing rule described in thermo.utils.mixing_simple.

Attributes
method
prop_cached

1.1.1.14.69 Methods

__call__(T, P, zs, ws) Convenience method to calculate the property; calls


mixture_property.
calculate(T, P, zs, ws, method) Method to calculate heat capacity of a solid mixture at
temperature T, pressure P, mole fractions zs and weight
fractions ws with a given method.
calculate_derivative_P(P, T, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition of a given order using a specified method.
calculate_derivative_T(T, P, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition of a given order using a specified method.
load_all_methods() Method to initialize the object by precomputing any val-
ues which may be used repeatedly and by retrieving
mixture-specific variables.
mixture_property(T, P, zs, ws) Method to calculate the property with sanity checking
and without specifying a specific method.
plot_isobar(P, zs, ws[, Tmin, Tmax, . . . ]) Method to create a plot of the property vs temperature at
a specific pressure and composition according to either
a specified list of methods, or user methods (if set), or
all methods.
plot_isotherm(T, zs, ws[, Pmin, Pmax, . . . ]) Method to create a plot of the property vs pressure at
a specified temperature and composition according to
either a specified list of methods, or the user methods (if
set), or all methods.
plot_property(zs, ws[, Tmin, Tmax, Pmin, . . . ]) Method to create a plot of the property vs temperature
and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
property_derivative_P(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition, of a given order.
Continued on next page

186 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.30 – continued from previous page


property_derivative_T(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition, of a given order.
select_valid_methods(T, P, zs, ws) Method to obtain a sorted list of methods which are
valid at T, P, zs, ws, and possibly Vfls, according to
test_method_validity.
set_user_method(user_methods[, forced]) Method to set the T, P, and composition dependent prop-
erty methods desired for consideration by the user.
test_method_validity(T, P, zs, ws, method) Method to test the validity of a specified method for the
given conditions.
test_property_validity(prop) Method to test the validity of a calculated property.

Tmax = None
Maximum temperature at which no method can calculate the heat capacity above.
Tmin = None
Minimum temperature at which no method can calculate the heat capacity under.
all_methods = None
Set of all methods available for a given set of information; filled by load_all_methods.
calculate(T, P, zs, ws, method)
Method to calculate heat capacity of a solid mixture at temperature T, pressure P, mole fractions zs and
weight fractions ws with a given method.
This method has no exception handling; see mixture_property for that.
Parameters
T [float] Temperature at which to calculate the property, [K]
P [float] Pressure at which to calculate the property, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Name of the method to use
Returns
Cpsm [float] Molar heat capacity of the solid mixture at the given conditions, [J/mol]
load_all_methods()
Method to initialize the object by precomputing any values which may be used repeatedly and by retrieving
mixture-specific variables. All data are stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods which should work to calculate the property.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'Solid heat capacity'
property_max = 10000.0
Maximum value of Heat capacity; arbitrarily set.
property_min = 0
Heat capacities have a minimum value of 0 at 0 K.
ranked_methods = ['SIMPLE']

1.1. thermo package 187


thermo Documentation, Release 0.1

sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by mix-
ture_property.
test_method_validity(T, P, zs, ws, method)
Method to test the validity of a specified method for the given conditions. No methods have implemented
checks or strict ranges of validity.
Parameters
T [float] Temperature at which to check method validity, [K]
P [float] Pressure at which to check method validity, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Method name to use
Returns
validity [bool] Whether or not a specifid method is valid
units = 'J/mol'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by mixture_property.
class thermo.heat_capacity.HeatCapacityGasMixture(CASs=[], HeatCapacityGases=[])
Bases: thermo.utils.MixtureProperty
Class for dealing with the gas heat capacity of a mixture as a function of temperature, pressure, and composition.
Consists only of mole weighted averaging.
Parameters
CASs [list[str], optional] The CAS numbers of all species in the mixture
HeatCapacityGases [list[HeatCapacityGas], optional] HeatCapacityGas objects created for all
species in the mixture, normally created by thermo.chemical.Chemical.

1.1.1.14.70 Notes

To iterate over all methods, use the list stored in heat_capacity_gas_mixture_methods.


SIMPLE: Mixing rule described in thermo.utils.mixing_simple.

Attributes
method
prop_cached

1.1.1.14.71 Methods

__call__(T, P, zs, ws) Convenience method to calculate the property; calls


mixture_property.
Continued on next page

188 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.31 – continued from previous page


calculate(T, P, zs, ws, method) Method to calculate heat capacity of a gas mixture at
temperature T, pressure P, mole fractions zs and weight
fractions ws with a given method.
calculate_derivative_P(P, T, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition of a given order using a specified method.
calculate_derivative_T(T, P, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition of a given order using a specified method.
load_all_methods() Method to initialize the object by precomputing any val-
ues which may be used repeatedly and by retrieving
mixture-specific variables.
mixture_property(T, P, zs, ws) Method to calculate the property with sanity checking
and without specifying a specific method.
plot_isobar(P, zs, ws[, Tmin, Tmax, . . . ]) Method to create a plot of the property vs temperature at
a specific pressure and composition according to either
a specified list of methods, or user methods (if set), or
all methods.
plot_isotherm(T, zs, ws[, Pmin, Pmax, . . . ]) Method to create a plot of the property vs pressure at
a specified temperature and composition according to
either a specified list of methods, or the user methods (if
set), or all methods.
plot_property(zs, ws[, Tmin, Tmax, Pmin, . . . ]) Method to create a plot of the property vs temperature
and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
property_derivative_P(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition, of a given order.
property_derivative_T(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition, of a given order.
select_valid_methods(T, P, zs, ws) Method to obtain a sorted list of methods which are
valid at T, P, zs, ws, and possibly Vfls, according to
test_method_validity.
set_user_method(user_methods[, forced]) Method to set the T, P, and composition dependent prop-
erty methods desired for consideration by the user.
test_method_validity(T, P, zs, ws, method) Method to test the validity of a specified method for the
given conditions.
test_property_validity(prop) Method to test the validity of a calculated property.

Tmax = None
Maximum temperature at which no method can calculate the heat capacity above.
Tmin = None
Minimum temperature at which no method can calculate the heat capacity under.
all_methods = None
Set of all methods available for a given set of information; filled by load_all_methods.
calculate(T, P, zs, ws, method)
Method to calculate heat capacity of a gas mixture at temperature T, pressure P, mole fractions zs and
weight fractions ws with a given method.
This method has no exception handling; see mixture_property for that.

1.1. thermo package 189


thermo Documentation, Release 0.1

Parameters
T [float] Temperature at which to calculate the property, [K]
P [float] Pressure at which to calculate the property, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Name of the method to use
Returns
Cpgm [float] Molar heat capacity of the gas mixture at the given conditions, [J/mol]
load_all_methods()
Method to initialize the object by precomputing any values which may be used repeatedly and by retrieving
mixture-specific variables. All data are stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods which should work to calculate the property.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'Gas heat capacity'
property_max = 10000.0
Maximum valid of Heat capacity; arbitrarily set. For fluids very near the critical point, this value can be
obscenely high.
property_min = 0
Heat capacities have a minimum value of 0 at 0 K.
ranked_methods = ['SIMPLE']
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by mix-
ture_property.
test_method_validity(T, P, zs, ws, method)
Method to test the validity of a specified method for the given conditions. No methods have implemented
checks or strict ranges of validity.
Parameters
T [float] Temperature at which to check method validity, [K]
P [float] Pressure at which to check method validity, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Method name to use
Returns
validity [bool] Whether or not a specifid method is valid
units = 'J/mol'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by mixture_property.

190 Chapter 1. thermo


thermo Documentation, Release 0.1

class thermo.heat_capacity.HeatCapacityLiquidMixture(MWs=[], CASs=[], HeatCa-


pacityLiquids=[])
Bases: thermo.utils.MixtureProperty
Class for dealing with liquid heat capacity of a mixture as a function of temperature, pressure, and composition.
Consists only of mole weighted averaging, and the Laliberte method for aqueous electrolyte solutions.
Parameters
MWs [list[float], optional] Molecular weights of all species in the mixture, [g/mol]
CASs [str, optional] The CAS numbers of all species in the mixture
HeatCapacityLiquids [list[HeatCapacityLiquid], optional] HeatCapacityLiquid objects cre-
ated for all species in the mixture, normally created by thermo.chemical.Chemical.

1.1.1.14.72 Notes

To iterate over all methods, use the list stored in heat_capacity_liquid_mixture_methods.


LALIBERTE: Electrolyte model equation with coefficients; see thermo.electrochem.
Laliberte_heat_capacity for more details.
SIMPLE: Mixing rule described in thermo.utils.mixing_simple.

Attributes
method
prop_cached

1.1.1.14.73 Methods

__call__(T, P, zs, ws) Convenience method to calculate the property; calls


mixture_property.
calculate(T, P, zs, ws, method) Method to calculate heat capacity of a liquid mixture at
temperature T, pressure P, mole fractions zs and weight
fractions ws with a given method.
calculate_derivative_P(P, T, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition of a given order using a specified method.
calculate_derivative_T(T, P, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition of a given order using a specified method.
load_all_methods() Method to initialize the object by precomputing any val-
ues which may be used repeatedly and by retrieving
mixture-specific variables.
mixture_property(T, P, zs, ws) Method to calculate the property with sanity checking
and without specifying a specific method.
plot_isobar(P, zs, ws[, Tmin, Tmax, . . . ]) Method to create a plot of the property vs temperature at
a specific pressure and composition according to either
a specified list of methods, or user methods (if set), or
all methods.
Continued on next page

1.1. thermo package 191


thermo Documentation, Release 0.1

Table 1.32 – continued from previous page


plot_isotherm(T, zs, ws[, Pmin, Pmax, . . . ]) Method to create a plot of the property vs pressure at
a specified temperature and composition according to
either a specified list of methods, or the user methods (if
set), or all methods.
plot_property(zs, ws[, Tmin, Tmax, Pmin, . . . ]) Method to create a plot of the property vs temperature
and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
property_derivative_P(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition, of a given order.
property_derivative_T(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition, of a given order.
select_valid_methods(T, P, zs, ws) Method to obtain a sorted list of methods which are
valid at T, P, zs, ws, and possibly Vfls, according to
test_method_validity.
set_user_method(user_methods[, forced]) Method to set the T, P, and composition dependent prop-
erty methods desired for consideration by the user.
test_method_validity(T, P, zs, ws, method) Method to test the validity of a specified method for the
given conditions.
test_property_validity(prop) Method to test the validity of a calculated property.

Tmax = None
Maximum temperature at which no method can calculate the heat capacity above.
Tmin = None
Minimum temperature at which no method can calculate the heat capacity under.
all_methods = None
Set of all methods available for a given set of information; filled by load_all_methods.
calculate(T, P, zs, ws, method)
Method to calculate heat capacity of a liquid mixture at temperature T, pressure P, mole fractions zs and
weight fractions ws with a given method.
This method has no exception handling; see mixture_property for that.
Parameters
T [float] Temperature at which to calculate the property, [K]
P [float] Pressure at which to calculate the property, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Name of the method to use
Returns
Cplm [float] Molar heat capacity of the liquid mixture at the given conditions, [J/mol]
load_all_methods()
Method to initialize the object by precomputing any values which may be used repeatedly and by retrieving
mixture-specific variables. All data are stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods which should work to calculate the property.

192 Chapter 1. thermo


thermo Documentation, Release 0.1

Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'Liquid heat capacity'
property_max = 10000.0
Maximum valid of Heat capacity; arbitrarily set. For fluids very near the critical point, this value can be
obscenely high.
property_min = 1
Allow very low heat capacities; arbitrarily set; liquid heat capacity should always be somewhat substantial.
ranked_methods = ['Laliberte', 'SIMPLE']
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by mix-
ture_property.
test_method_validity(T, P, zs, ws, method)
Method to test the validity of a specified method for the given conditions. No methods have implemented
checks or strict ranges of validity.
Parameters
T [float] Temperature at which to check method validity, [K]
P [float] Pressure at which to check method validity, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Method name to use
Returns
validity [bool] Whether or not a specifid method is valid
units = 'J/mol'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by mixture_property.

1.1.1.15 thermo.identifiers module

thermo.identifiers.checkCAS(CASRN)
Checks if a CAS number is valid. Returns False if the parser cannot parse the given string..
Parameters
CASRN [string] A three-piece, dash-separated set of numbers
Returns
result [bool] Boolean value if CASRN was valid. If parsing fails, return False also.

1.1.1.15.1 Notes

Check method is according to Chemical Abstract Society. However, no lookup to their service is performed;
therefore, this function cannot detect false positives.

1.1. thermo package 193


thermo Documentation, Release 0.1

Function also does not support additional separators, apart from ‘-‘.
CAS numbers up to the series 1 XXX XXX-XX-X are now being issued.
A long can hold CAS numbers up to 2 147 483-64-7

1.1.1.15.2 Examples

>>> checkCAS('7732-18-5')
True
>>> checkCAS('77332-18-5')
False

thermo.identifiers.CAS_from_any(ID, autoload=False)
Looks up the CAS number of a chemical by searching and testing for the string being any of the following types
of chemical identifiers:
• Name, in IUPAC form or common form or a synonym registered in PubChem
• InChI name, prefixed by ‘InChI=1S/’ or ‘InChI=1/’
• InChI key, prefixed by ‘InChIKey=’
• PubChem CID, prefixed by ‘PubChem=’
• SMILES (prefix with ‘SMILES=’ to ensure smiles parsing; ex. ‘C’ will return Carbon as it is an element
whereas the SMILES interpretation for ‘C’ is methane)
• CAS number (obsolete numbers may point to the current number)
If the input is an ID representing an element, the following additional inputs may be specified as
• Atomic symbol (ex ‘Na’)
• Atomic number (as a string)

Parameters
ID [str] One of the name formats described above
Returns
CASRN [string] A three-piece, dash-separated set of numbers

1.1.1.15.3 Notes

An exception is raised if the name cannot be identified. The PubChem database includes a wide variety of other
synonyms, but these may not be present for all chemcials.

1.1.1.15.4 Examples

>>> CAS_from_any('water')
'7732-18-5'
>>> CAS_from_any('InChI=1S/C2H6O/c1-2-3/h3H,2H2,1H3')
'64-17-5'
>>> CAS_from_any('CCCCCCCCCC')
'124-18-5'
>>> CAS_from_any('InChIKey=LFQSCWFLJHTTHZ-UHFFFAOYSA-N')

194 Chapter 1. thermo


thermo Documentation, Release 0.1

'64-17-5'
>>> CAS_from_any('pubchem=702')
'64-17-5'
>>> CAS_from_any('O') # only elements can be specified by symbol
'17778-80-2'

thermo.identifiers.PubChem(CASRN)
Given a CASRN in the database, obtain the PubChem database number of the compound.
Parameters
CASRN [string] Valid CAS number in PubChem database [-]
Returns
pubchem [int] PubChem database id, as an integer [-]

1.1.1.15.5 Notes

CASRN must be an indexing key in the pubchem database.

1.1.1.15.6 References

[1]

1.1.1.15.7 Examples

>>> PubChem('7732-18-5')
962

thermo.identifiers.MW(CASRN)
Given a CASRN in the database, obtain the Molecular weight of the compound, if it is in the database.
Parameters
CASRN [string] Valid CAS number in PubChem database
Returns
MolecularWeight [float]

1.1.1.15.8 Notes

CASRN must be an indexing key in the pubchem database. No MW Calculation is performed; nor are any
historical isotopic corrections applied.

1.1.1.15.9 References

[1]

1.1. thermo package 195


thermo Documentation, Release 0.1

1.1.1.15.10 Examples

>>> MW('7732-18-5')
18.01528

thermo.identifiers.formula(CASRN)

>>> formula('7732-18-5')
'H2O'

thermo.identifiers.smiles(CASRN)

>>> smiles('7732-18-5')
'O'

thermo.identifiers.InChI(CASRN)

>>> InChI('7732-18-5')
'H2O/h1H2'

thermo.identifiers.InChI_Key(CASRN)

>>> InChI_Key('7732-18-5')
'XLYOFNOQVPJJNP-UHFFFAOYSA-N'

thermo.identifiers.IUPAC_name(CASRN)

>>> IUPAC_name('7732-18-5')
'oxidane'

thermo.identifiers.name(CASRN)

>>> name('7732-18-5')
'water'

thermo.identifiers.synonyms(CASRN)

>>> synonyms('98-00-0')
['furan-2-ylmethanol', 'furfuryl alcohol', '2-furanmethanol', '2-furancarbinol',
˓→'2-furylmethanol', '2-furylcarbinol', '98-00-0', '2-furanylmethanol',

˓→'furfuranol', 'furan-2-ylmethanol', '2-furfuryl alcohol', '5-hydroxymethylfuran

˓→', 'furfural alcohol', 'alpha-furylcarbinol', '2-hydroxymethylfuran',

˓→'furfuralcohol', 'furylcarbinol', 'furyl alcohol', '2-(hydroxymethyl)furan',

˓→'furan-2-yl-methanol', 'furfurylalcohol', 'furfurylcarb', 'methanol, (2-furyl)-

˓→', '2-furfurylalkohol', 'furan-2-methanol', '2-furane-methanol', '2-

˓→furanmethanol, homopolymer', '(2-furyl)methanol', '2-hydroxymethylfurane',

˓→'furylcarbinol (van)', '2-furylmethan-1-ol', '25212-86-6', '93793-62-5',

˓→'furanmethanol', 'polyfurfuryl alcohol', 'pffa', 'poly(furfurylalcohol)', 'poly-

˓→furfuryl alcohol', '(fur-2-yl)methanol', '.alpha.-furylcarbinol', '2-

˓→hydroxymethyl-furan', 'poly(furfuryl alcohol)', '.alpha.-furfuryl alcohol',

˓→'agn-pc-04y237', 'h159', 'omega-hydroxypoly(furan-2,5-diylmethylene)', '(2-

˓→furyl)-methanol (furfurylalcohol)', '40795-25-3', '88161-36-8']

196 Chapter 1. thermo


thermo Documentation, Release 0.1

thermo.identifiers.mixture_from_any(ID)
Looks up a string which may represent a mixture in the database of thermo to determine the key by which the
composition of that mixture can be obtained in the dictionary _MixtureDict.
Parameters
ID [str] A string or 1-element list containing the name which may represent a mixture.
Returns
key [str] Key for access to the data on the mixture in _MixtureDict.

1.1.1.15.11 Notes

White space, ‘-‘, and upper case letters are removed in the search.

1.1.1.15.12 Examples

>>> mixture_from_any('R512A')
'R512A'
>>> mixture_from_any([u'air'])
'Air'

1.1.1.16 thermo.interface module

thermo.interface.REFPROP(T, Tc, sigma0, n0, sigma1=0, n1=0, sigma2=0, n2=0)


Calculates air-liquid surface tension using the REFPROP [1] regression-based method. Relatively recent, and
most accurate.
(︂ )︂𝑛0 (︂ )︂𝑛1 (︂ )︂𝑛2
𝑇 𝑇 𝑇
𝜎(𝑇 ) = 𝜎0 1 − + 𝜎1 1 − + 𝜎2 1 −
𝑇𝑐 𝑇𝑐 𝑇𝑐

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
sigma0 [float] First emperical coefficient of a fluid
n0 [float] First emperical exponent of a fluid
sigma1 [float, optional] Second emperical coefficient of a fluid.
n1 [float, optional] Second emperical exponent of a fluid.
sigma1 [float, optional] Third emperical coefficient of a fluid.
n2 [float, optional] Third emperical exponent of a fluid.
Returns
sigma [float] Liquid surface tension, N/m

1.1. thermo package 197


thermo Documentation, Release 0.1

1.1.1.16.1 Notes

Function as implemented in [1]. No example necessary; results match literature values perfectly. Form of
function returns imaginary results when T > Tc; None is returned if this is the case.

1.1.1.16.2 References

[1]

1.1.1.16.3 Examples

Parameters for water at 298.15 K

>>> REFPROP(298.15, 647.096, -0.1306, 2.471, 0.2151, 1.233)


0.07205503890847453

thermo.interface.Somayajulu(T, Tc, A, B, C)
Calculates air-water surface tension using the [1] emperical (parameter-regressed) method. Well regressed, no
recent data.

𝜎 = 𝑎𝑋 5/4 + 𝑏𝑋 9/4 + 𝑐𝑋 13/4 𝑋 = (𝑇𝑐 − 𝑇 )/𝑇𝑐

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
A [float] Regression parameter
B [float] Regression parameter
C [float] Regression parameter
Returns
sigma [float] Liquid surface tension, N/m

1.1.1.16.4 Notes

Presently untested, but matches expected values. Internal units are mN/m. Form of function returns imaginary
results when T > Tc; None is returned if this is the case. Function is claimed valid from the triple to the critical
point. Results can be evaluated beneath the triple point.

1.1.1.16.5 References

[1]

1.1.1.16.6 Examples

Water at 300 K

198 Chapter 1. thermo


thermo Documentation, Release 0.1

>>> Somayajulu(300, 647.126, 232.713514, -140.18645, -4.890098)


0.07166386387996757

thermo.interface.Jasper(T, a, b)
Calculates surface tension of a fluid given two parameters, a linear fit in Celcius from [1] with data reprinted in
[2].

𝜎 = 𝑎 − 𝑏𝑇

Parameters
T [float] Temperature of fluid, [K]
a [float] Parameter for equation. Chemical specific.
b [float] Parameter for equation. Chemical specific.
Returns
sigma: float Surface tension [N/m]

1.1.1.16.7 Notes

Internal units are mN/m, and degrees Celcius. This function has been checked against several references.

1.1.1.16.8 References

[1], [2]

1.1.1.16.9 Examples

>>> Jasper(298.15, 24, 0.0773)


0.0220675

thermo.interface.Brock_Bird(T, Tb, Tc, Pc)


Calculates air-water surface tension using the [1] emperical method. Old and tested.

𝜎 = 𝑃𝑐2/3 𝑇𝑐1/3 𝑄(1 − 𝑇𝑟 )11/9


[︂ ]︂
𝑇𝑏𝑟 ln(𝑃𝑐 /1.01325)
𝑄 = 0.1196 1 + − 0.279
1 − 𝑇𝑏𝑟

Parameters
T [float] Temperature of fluid [K]
Tb [float] Boiling temperature of the fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
Returns
sigma [float] Liquid surface tension, N/m

1.1. thermo package 199


thermo Documentation, Release 0.1

1.1.1.16.10 Notes

Numerous arrangements of this equation are available. This is DIPPR Procedure 7A: Method for the Surface
Tension of Pure, Nonpolar, Nonhydrocarbon Liquids The exact equation is not in the original paper. If the
equation yields a negative result, return None.

1.1.1.16.11 References

[1]

1.1.1.16.12 Examples

p-dichloribenzene at 412.15 K, from DIPPR; value differs due to a slight difference in method.

>>> Brock_Bird(412.15, 447.3, 685, 3.952E6)


0.02208448325192495

Chlorobenzene from Poling, as compared with a % error value at 293 K.

>>> Brock_Bird(293.15, 404.75, 633.0, 4530000.0)


0.032985686413713036

thermo.interface.Pitzer(T, Tc, Pc, omega)


Calculates air-water surface tension using the correlation derived by [1] from the works of [2] and [3]. Based
on critical property CSP methods.
[︂ ]︂2/3
1.86 + 1.18𝜔 3.75 + 0.91𝜔
𝜎 = 𝑃𝑐2/3 𝑇𝑐1/3 (1 − 𝑇𝑟 )11/9
19.05 0.291 − 0.08𝜔

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
omega [float] Acentric factor for fluid, [-]
Returns
sigma [float] Liquid surface tension, N/m

1.1.1.16.13 Notes

The source of this equation has not been reviewed. Internal units of presure are bar, surface tension of mN/m.

1.1.1.16.14 References

[1], [2], [3]

200 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.16.15 Examples

Chlorobenzene from Poling, as compared with a % error value at 293 K.


>>> Pitzer(293., 633.0, 4530000.0, 0.249)
0.03458453513446387

thermo.interface.Sastri_Rao(T, Tb, Tc, Pc, chemicaltype=None)


Calculates air-water surface tension using the correlation derived by [1] based on critical property CSP methods
and chemical classes.
[︂ ]︂𝑚
1 − 𝑇𝑟
𝜎 = 𝐾𝑃𝑐𝑥 𝑇𝑏𝑦 𝑇𝑐𝑧
1 − 𝑇𝑏𝑟
Parameters
T [float] Temperature of fluid [K]
Tb [float] Boiling temperature of the fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
Returns
sigma [float] Liquid surface tension, N/m

1.1.1.16.16 Notes

The source of this equation has not been reviewed. Internal units of presure are bar, surface tension of mN/m.

1.1.1.16.17 References

[1]

1.1.1.16.18 Examples

Chlorobenzene from Poling, as compared with a % error value at 293 K.


>>> Sastri_Rao(293.15, 404.75, 633.0, 4530000.0)
0.03234567739694441

thermo.interface.Zuo_Stenby(T, Tc, Pc, omega)


Calculates air-water surface tension using the reference fluids methods of [1].

𝜔 − 𝜔 (1)
𝜎 (1) = 40.520(1 − 𝑇𝑟 )1.287 𝜎 (2) = 52.095(1 − 𝑇𝑟 )1.21548 𝜎𝑟 = 𝜎𝑟(1) + (𝜎 (2) − 𝜎𝑟(1) )𝜎 = 𝑇𝑐1/3 𝑃𝑐2/3 [exp (𝜎𝑟 ) − 1]
𝜔 (2) − 𝜔 (1) 𝑟
Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
omega [float] Acentric factor for fluid, [-]

1.1. thermo package 201


thermo Documentation, Release 0.1

Returns
sigma [float] Liquid surface tension, N/m

1.1.1.16.19 Notes

Presently untested. Have not personally checked the sources. I strongly believe it is broken. The reference
values for methane and n-octane are from the DIPPR database.

1.1.1.16.20 References

[1]

1.1.1.16.21 Examples

Chlorobenzene

>>> Zuo_Stenby(293., 633.0, 4530000.0, 0.249)


0.03345569011871088

thermo.interface.Hakim_Steinberg_Stiel(T, Tc, Pc, omega, StielPolar=0)


Calculates air-water surface tension using the reference fluids methods of [1].
(︂ )︂𝑚
1 − 𝑇𝑟
𝜎 = 4.60104 × 10−7 𝑃𝑐2/3 𝑇𝑐1/3 𝑄𝑝
0.4
𝑄𝑝 = 0.1574 + 0.359𝜔 − 1.769𝜒 − 13.69𝜒2 − 0.51𝜔 2 + 1.298𝜔𝜒
𝑚 = 1.21 + 0.5385𝜔 − 14.61𝜒 − 32.07𝜒2 − 1.65𝜔 2 + 22.03𝜔𝜒

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
omega [float] Acentric factor for fluid, [-]
StielPolar [float, optional] Stiel Polar Factor, [-]
Returns
sigma [float] Liquid surface tension, N/m

1.1.1.16.22 Notes

Original equation for m and Q are used. Internal units are atm and mN/m.

1.1.1.16.23 References

[1]

202 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.16.24 Examples

1-butanol, as compared to value in CRC Handbook of 0.02493.

>>> Hakim_Steinberg_Stiel(298.15, 563.0, 4414000.0, 0.59, StielPolar=-0.07872)


0.021907902575190447

thermo.interface.Miqueu(T, Tc, Vc, omega)


Calculates air-water surface tension using the methods of [1].
(︂ )︂2/3
𝑁𝑎
𝜎 = 𝑘𝑇𝑐 (4.35 + 4.14𝜔)𝑡1.26 (1 + 0.19𝑡0.5 − 0.487𝑡)
𝑉𝑐

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Vc [float] Critical volume of fluid [m^3/mol]
omega [float] Acentric factor for fluid, [-]
Returns
sigma [float] Liquid surface tension, N/m

1.1.1.16.25 Notes

Uses Avogadro’s constant and the Boltsman constant. Internal units of volume are mL/mol and mN/m. However,
either a typo is in the article or author’s work, or my value of k is off by 10; this is corrected nonetheless. Created
with 31 normal fluids, none polar or hydrogen bonded. Has an AARD of 3.5%.

1.1.1.16.26 References

[1]

1.1.1.16.27 Examples

Bromotrifluoromethane, 2.45 mN/m

>>> Miqueu(300., 340.1, 0.000199, 0.1687)


0.003474099603581931

thermo.interface.Aleem(T, MW, Tb, rhol, Hvap_Tb, Cpl)


Calculates vapor-liquid surface tension using the correlation derived by [1] based on critical property CSP
methods.
𝑀 𝑊 1/3 2/3
𝜎=𝜑 1/3
𝜌𝑙 [𝐻𝑣𝑎𝑝 + 𝐶𝑝,𝑙 (𝑇𝑏 − 𝑇 )]
6𝑁𝐴
𝜑 = 1 − 0.0047𝑀 𝑊 + 6.8 × 10−6 𝑀 𝑊 2

Parameters
T [float] Temperature of fluid [K]

1.1. thermo package 203


thermo Documentation, Release 0.1

MW [float] Molecular weight [g/mol]


Tb [float] Boiling temperature of the fluid [K]
rhol [float] Liquid density at T and P [kg/m^3]
Hvap_Tb [float] Mass enthalpy of vaporization at the normal boiling point [kg/m^3]
Cpl [float] Liquid heat capacity of the chemical at T [J/kg/K]
Returns
sigma [float] Liquid-vapor surface tension [N/m]

1.1.1.16.28 Notes

Internal units of molecuar weight are kg/mol. This model is dimensionally consistent.
This model does not use the critical temperature. After it predicts a surface tension of 0 at a sufficiently high tem-
perature, it returns negative results. The temperature at which this occurs (the “predicted” critical temperature)
can be calculated as follows:
𝐻𝑣𝑎𝑝
𝜎 = 0 → 𝑇𝑐,𝑝𝑟𝑒𝑑𝑖𝑐𝑡𝑒𝑑 at 𝑇𝑏 +
𝐶𝑝𝑙
Because of its dependence on density, it has the potential to model the effect of pressure on surface tension.
Claims AAD of 4.3%. Developed for normal alkanes. Total of 472 data points. Behaves worse for higher
alkanes. Behaves very poorly overall.

1.1.1.16.29 References

[1]

1.1.1.16.30 Examples

Methane at 90 K
>>> Aleem(T=90, MW=16.04246, Tb=111.6, rhol=458.7, Hvap_Tb=510870.,
... Cpl=2465.)
0.01669970221165325

thermo.interface.surface_tension_methods = ['REFPROP', 'SOMAYAJULU2', 'SOMAYAJULU', 'VDI_PP


Holds all methods available for the SurfaceTension class, for use in iterating over them.
class thermo.interface.SurfaceTension(MW=None, Tb=None, Tc=None, Pc=None,
Vc=None, Zc=None, omega=None, StielPolar=None,
Hvap_Tb=None, CASRN=”, Vml=None, Cpl=None)
Bases: thermo.utils.TDependentProperty
Class for dealing with surface tension as a function of temperature. Consists of three coefficient-based methods
and four data sources, one source of tabular information, and five corresponding-states estimators.
Parameters
Tb [float, optional] Boiling point, [K]
MW [float, optional] Molecular weight, [g/mol]
Tc [float, optional] Critical temperature, [K]

204 Chapter 1. thermo


thermo Documentation, Release 0.1

Pc [float, optional] Critical pressure, [Pa]


Vc [float, optional] Critical volume, [m^3/mol]
Zc [float, optional] Critical compressibility
omega [float, optional] Acentric factor, [-]
StielPolar [float, optional] Stiel polar factor
Hvap_Tb [float] Mass enthalpy of vaporization at the normal boiling point [kg/m^3]
CASRN [str, optional] The CAS number of the chemical
Vml [float or callable, optional] Liquid molar volume at a given temperature and pressure or
callable for the same, [m^3/mol]
Cpl [float or callable, optional] Mass heat capacity of the fluid at a pressure and temperature or
or callable for the same, [J/kg/K]
See also:
REFPROP, Somayajulu, Jasper, Brock_Bird, Sastri_Rao, Pitzer, Zuo_Stenby, Miqueu,
Aleem

1.1.1.16.31 Notes

To iterate over all methods, use the list stored in surface_tension_methods.


STREFPROP: The REFPROP coefficient-based method, documented in the function REFPROP for 115 fluids
from [5].
SOMAYAJULU and SOMAYAJULU2: The Somayajulu coefficient-based method, documented in the func-
tion Somayajulu. Both methods have data for 64 fluids. The first data set if from [1], and the second
from [2]. The later, revised coefficients should be used prefered.
JASPER: Fit with a single temperature coefficient from Jaspen (1972) as documented in the function Jasper.
Data for 522 fluids is available, as shown in [4] but originally in [3].
BROCK_BIRD: CSP method documented in Brock_Bird. Most popular estimation method; from 1955.
SASTRI_RAO: CSP method documented in Sastri_Rao. Second most popular estimation method; from
1995.
PITZER: CSP method documented in Pitzer; from 1958.
ZUO_STENBY: CSP method documented in Zuo_Stenby; from 1997.
MIQUEU: CSP method documented in Miqueu.
ALEEM: CSP method documented in Aleem.
VDI_TABULAR: Tabular data in [6] along the saturation curve; interpolation is as set by the user or the
default.

1.1.1.16.32 References

[1], [2], [3], [4], [5], [6]


Attributes
T_cached

1.1. thermo package 205


thermo Documentation, Release 0.1

interpolation_T
interpolation_property
interpolation_property_inv
method

1.1.1.16.33 Methods

T_dependent_property(T) Method to calculate the property with sanity checking


and without specifying a specific method.
T_dependent_property_derivative(T[, or- Method to obtain a derivative of a property with respect
der]) to temperature, of a given order.
T_dependent_property_integral(T1, T2) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
T_dependent_property_integral_over_T(T1, Method to calculate the integral of a property over tem-
T2) perature with respect to temperature, using a specified
method.
__call__(T) Convenience method to calculate the property; calls
T_dependent_property.
calculate(T, method) Method to calculate surface tension of a liquid at tem-
perature T with a given method.
calculate_derivative(T, method[, order]) Method to calculate a derivative of a property with re-
spect to temperature, of a given order using a specified
method.
calculate_integral(T1, T2, method) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
calculate_integral_over_T(T1, T2, method) Method to calculate the integral of a property over tem-
perature with respect to temperature, using a specified
method.
interpolate(T, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data.
load_all_methods() Method which picks out coefficients for the specified
chemical from the various dictionaries and DataFrames
storing it.
plot_T_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) according to either a specified list of methods, or user
methods (if set), or all methods.
select_valid_methods(T) Method to obtain a sorted list of methods which are
valid at T according to test_method_validity.
set_tabular_data(Ts, properties[, name, . . . ]) Method to set tabular data to be used for interpolation.
set_user_methods(user_methods[, forced]) Method used to select certain property methods as hav-
ing a higher priority than were set by default.
solve_prop(goal[, reset_method]) Method to solve for the temperature at which a property
is at a specified value.
test_method_validity(T, method) Method to check the validity of a method.
test_property_validity(prop) Method to test the validity of a calculated property.

extrapolate_tabular

Tmax = None

206 Chapter 1. thermo


thermo Documentation, Release 0.1

Maximum temperature at which no method can calculate the surface tension above.
Tmin = None
Minimum temperature at which no method can calculate the surface tension under.
all_methods = None
Set of all methods available for a given CASRN and properties; filled by load_all_methods.
calculate(T, method)
Method to calculate surface tension of a liquid at temperature T with a given method.
This method has no exception handling; see T_dependent_property for that.
Parameters
T [float] Temperature at which to calculate surface tension, [K]
method [str] Name of the method to use
Returns
sigma [float] Surface tension of the liquid at T, [N/m]
interpolation_T = None
No interpolation transformation by default.
interpolation_property = None
No interpolation transformation by default.
interpolation_property_inv = None
No interpolation transformation by default.
load_all_methods()
Method which picks out coefficients for the specified chemical from the various dictionaries and
DataFrames storing it. All data is stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods for which the data exists for.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'Surface tension'
property_max = 4.0
Maximum valid value of surface tension. Set to roughly twice that of cobalt at its melting point.
property_min = 0
Mimimum valid value of surface tension. This occurs at the critical point exactly.
ranked_methods = ['REFPROP', 'SOMAYAJULU2', 'SOMAYAJULU', 'VDI_PPDS', 'VDI_TABULAR', 'J
Default rankings of the available methods.
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by
T_dependent_property.
tabular_data = None
tabular_data, dict: Stored (Ts, properties) for any tabular data; indexed by provided or autogenerated name.
tabular_data_interpolators = None
tabular_data_interpolators, dict: Stored (extrapolator, spline) tuples which are interp1d instances for
each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_property, interpola-
tion_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had
been created is no longer used.

1.1. thermo package 207


thermo Documentation, Release 0.1

tabular_extrapolation_permitted = True
Allow tabular extrapolation by default; values below 0 will be obtained at high temperatures.
test_method_validity(T, method)
Method to check the validity of a method. Follows the given ranges for all coefficient-based methods. For
CSP methods, the models are considered valid from 0 K to the critical point. For tabular data, extrapolation
outside of the range is used if tabular_extrapolation_permitted is set; if it is, the extrapolation
is considered valid for all temperatures.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.
Parameters
T [float] Temperature at which to test the method, [K]
method [str] Name of the method to test
Returns
validity [bool] Whether or not a method is valid
units = 'N/m'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by T_dependent_property.
thermo.interface.Winterfeld_Scriven_Davis(xs, sigmas, rhoms)
Calculates surface tension of a liquid mixture according to mixing rules in [1] and also in [2].
∑︁ ∑︁ 1 √
𝜎𝑀 = 𝐿2
(𝑥𝑖 𝑉𝑖 ) (𝑥𝑗 𝑉𝑗 ) 𝜎𝑖 · 𝜎𝑗
𝑖 𝑗
𝑉 𝐿

Parameters
xs [array-like] Mole fractions of all components, [-]
sigmas [array-like] Surface tensions of all components, [N/m]
rhoms [array-like] Molar densities of all components, [mol/m^3]
Returns
sigma [float] Air-liquid surface tension of mixture, [N/m]

1.1.1.16.34 Notes

DIPPR Procedure 7C: Method for the Surface Tension of Nonaqueous Liquid Mixtures
Becomes less accurate as liquid-liquid critical solution temperature is approached. DIPPR Evaluation: 3-4%
AARD, from 107 nonaqueous binary systems, 1284 points. Internally, densities are converted to kmol/m^3.
The Amgat function is used to obtain liquid mixture density in this equation.
Raises a ZeroDivisionError if either molar volume are zero, and a ValueError if a surface tensions of a pure
component is negative.

1.1.1.16.35 References

[1], [2]

208 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.16.36 Examples

>>> Winterfeld_Scriven_Davis([0.1606, 0.8394], [0.01547, 0.02877],


... [8610., 15530.])
0.024967388450439824

thermo.interface.Diguilio_Teja(T, xs, sigmas_Tb, Tbs, Tcs)


Calculates surface tension of a liquid mixture according to mixing rules in [1].
𝑇
𝜎 = 1.002855(𝑇 * )1.118091 𝜎𝑟
𝑇𝑏
(𝑇𝑐 /𝑇 ) − 1
𝑇* =
(𝑇𝑐 /𝑇𝑏 ) − 1
∑︁
𝜎𝑟 = 𝑥𝑖 𝜎𝑖
∑︁
𝑇𝑏 = 𝑥𝑖 𝑇𝑏,𝑖
∑︁
𝑇𝑐 = 𝑥𝑖 𝑇𝑐,𝑖

Parameters
T [float] Temperature of fluid [K]
xs [array-like] Mole fractions of all components
sigmas_Tb [array-like] Surface tensions of all components at the boiling point, [N/m]
Tbs [array-like] Boiling temperatures of all components, [K]
Tcs [array-like] Critical temperatures of all components, [K]
Returns
sigma [float] Air-liquid surface tension of mixture, [N/m]

1.1.1.16.37 Notes

Simple model, however it has 0 citations. Gives similar results to the Winterfeld_Scriven_Davis model.
Raises a ValueError if temperature is greater than the mixture’s critical temperature or if the given temperature
is negative, or if the mixture’s boiling temperature is higher than its critical temperature.
[1] claims a 4.63 percent average absolute error on 21 binary and 4 ternary non-aqueous systems. [1] also
considered Van der Waals mixing rules for Tc, but found it provided a higher error of 5.58%

1.1.1.16.38 References

[1]

1.1.1.16.39 Examples

>>> Diguilio_Teja(T=298.15, xs=[0.1606, 0.8394],


... sigmas_Tb=[0.01424, 0.02530], Tbs=[309.21, 312.95], Tcs=[469.7, 508.0])
0.025716823875045505

1.1. thermo package 209


thermo Documentation, Release 0.1

class thermo.interface.SurfaceTensionMixture(MWs=[], Tbs=[], Tcs=[], CASs=[], Sur-


faceTensions=[], VolumeLiquids=[])
Bases: thermo.utils.MixtureProperty
Class for dealing with surface tension of a mixture as a function of temperature, pressure, and composition.
Consists of two mixing rules specific to surface tension, and mole weighted averaging.
Prefered method is Winterfeld_Scriven_Davis which requires mole fractions, pure component surface
tensions, and the molar density of each pure component. Diguilio_Teja is of similar accuracy, but requires
the surface tensions of pure components at their boiling points, as well as boiling points and critical points and
mole fractions. An ideal mixing rule based on mole fractions, SIMPLE, is also available and is still relatively
accurate.
Parameters
MWs [list[float], optional] Molecular weights of all species in the mixture, [g/mol]
Tbs [list[float], optional] Boiling points of all species in the mixture, [K]
Tcs [list[float], optional] Critical temperatures of all species in the mixture, [K]
CASs [list[str], optional] The CAS numbers of all species in the mixture
SurfaceTensions [list[SurfaceTension], optional] SurfaceTension objects created for all species
in the mixture, normally created by thermo.chemical.Chemical.
VolumeLiquids [list[VolumeLiquid], optional] VolumeLiquid objects created for all species in
the mixture, normally created by thermo.chemical.Chemical.
See also:
Winterfeld_Scriven_Davis, Diguilio_Teja

1.1.1.16.40 Notes

To iterate over all methods, use the list stored in surface_tension_mixture_methods.


WINTERFELDSCRIVENDAVIS: Mixing rule described in Winterfeld_Scriven_Davis.
DIGUILIOTEJA: Mixing rule described in Diguilio_Teja.
SIMPLE: Mixing rule described in thermo.utils.mixing_simple.

1.1.1.16.41 References

[1]
Attributes
method
prop_cached

1.1.1.16.42 Methods

__call__(T, P, zs, ws) Convenience method to calculate the property; calls


mixture_property.
Continued on next page

210 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.34 – continued from previous page


calculate(T, P, zs, ws, method) Method to calculate surface tension of a liquid mix-
ture at temperature T, pressure P, mole fractions zs and
weight fractions ws with a given method.
calculate_derivative_P(P, T, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition of a given order using a specified method.
calculate_derivative_T(T, P, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition of a given order using a specified method.
load_all_methods() Method to initialize the object by precomputing any val-
ues which may be used repeatedly and by retrieving
mixture-specific variables.
mixture_property(T, P, zs, ws) Method to calculate the property with sanity checking
and without specifying a specific method.
plot_isobar(P, zs, ws[, Tmin, Tmax, . . . ]) Method to create a plot of the property vs temperature at
a specific pressure and composition according to either
a specified list of methods, or user methods (if set), or
all methods.
plot_isotherm(T, zs, ws[, Pmin, Pmax, . . . ]) Method to create a plot of the property vs pressure at
a specified temperature and composition according to
either a specified list of methods, or the user methods (if
set), or all methods.
plot_property(zs, ws[, Tmin, Tmax, Pmin, . . . ]) Method to create a plot of the property vs temperature
and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
property_derivative_P(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition, of a given order.
property_derivative_T(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition, of a given order.
select_valid_methods(T, P, zs, ws) Method to obtain a sorted list of methods which are
valid at T, P, zs, ws, and possibly Vfls, according to
test_method_validity.
set_user_method(user_methods[, forced]) Method to set the T, P, and composition dependent prop-
erty methods desired for consideration by the user.
test_method_validity(T, P, zs, ws, method) Method to test the validity of a specified method for the
given conditions.
test_property_validity(prop) Method to test the validity of a calculated property.

Tmax = None
Maximum temperature at which no method can calculate the surface tension above.
Tmin = None
Minimum temperature at which no method can calculate the surface tension under.
all_methods = None
Set of all methods available for a given set of information; filled by load_all_methods.
calculate(T, P, zs, ws, method)
Method to calculate surface tension of a liquid mixture at temperature T, pressure P, mole fractions zs and
weight fractions ws with a given method.
This method has no exception handling; see mixture_property for that.

1.1. thermo package 211


thermo Documentation, Release 0.1

Parameters
T [float] Temperature at which to calculate the property, [K]
P [float] Pressure at which to calculate the property, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Name of the method to use
Returns
sigma [float] Surface tension of the liquid at given conditions, [N/m]
load_all_methods()
Method to initialize the object by precomputing any values which may be used repeatedly and by retrieving
mixture-specific variables. All data are stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods which should work to calculate the property.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'Surface tension'
property_max = 4.0
Maximum valid value of surface tension. Set to roughly twice that of cobalt at its melting point.
property_min = 0
Mimimum valid value of surface tension. This occurs at the critical point exactly.
ranked_methods = ['Winterfeld, Scriven, and Davis (1978)', 'Diguilio and Teja (1988)',
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by mix-
ture_property.
test_method_validity(T, P, zs, ws, method)
Method to test the validity of a specified method for the given conditions. No methods have implemented
checks or strict ranges of validity.
Parameters
T [float] Temperature at which to check method validity, [K]
P [float] Pressure at which to check method validity, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Method name to use
Returns
validity [bool] Whether or not a specifid method is valid
units = 'N/m'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by mixture_property.

212 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.17 thermo.joback module

thermo.joback.smarts_fragment(catalog, rdkitmol=None, smi=None)


Fragments a molecule into a set of unique groups and counts as specified by the catalog. The molecule can
either be an rdkit molecule object, or a smiles string which will be parsed by rdkit. Returns a dictionary of
groups and their counts according to the indexes of the catalog provided.
Parameters
catalog [dict] Dictionary indexed by keys pointing to smarts strings, [-]
rdkitmol [mol, optional] Molecule as rdkit object, [-]
smi [str, optional] Smiles string representing a chemical, [-]
Returns
counts [dict] Dictionaty of integer counts of the found groups only, indexed by the same keys
used by the catalog [-]
success [bool] Whether or not molecule was fully and uniquely fragmented, [-]
status [str] A string holding an explanation of why the molecule failed to be fragmented, if it
fails; ‘OK’ if it suceeds.

1.1.1.17.1 Notes

Raises an exception if rdkit is not installed, or smi or rdkitmol is not defined.

1.1.1.17.2 Examples

Acetone:

>>> smarts_fragment(catalog=J_BIGGS_JOBACK_SMARTS_id_dict, smi='CC(=O)C')


({24: 1, 1: 2}, True, 'OK')

Sodium sulfate, (Na2O4S):

>>> smarts_fragment(catalog=J_BIGGS_JOBACK_SMARTS_id_dict, smi='[O-]S(=O)(=O)[O-].


˓→[Na+].[Na+]')

({29: 4}, False, 'Did not match all atoms present')

Propionic anhydride (C6H10O3):

>>> smarts_fragment(catalog=J_BIGGS_JOBACK_SMARTS_id_dict, smi='CCC(=O)OC(=O)CC')


({1: 2, 2: 2, 28: 2}, False, 'Matched some atoms repeatedly: [4]')

class thermo.joback.Joback(mol, atom_count=None, MW=None, Tb=None)


Bases: object
Class for performing chemical property estimations with the Joback group contribution method as described
in [1] and [2]. This is a very common method with low accuracy but wide applicability. This routine can be
used with either its own automatic fragmentation routine, or user specified groups. It is applicable to organic
compounds only, and has only 41 groups with no interactions between them. Each method’s documentation
describes its accuracy. The automatic fragmentation routine is possible only because of the development of
SMARTS expressions to match the Joback groups by Dr. Jason Biggs. The list of SMARTS expressions was
posted publically on the RDKit mailing list.

1.1. thermo package 213


thermo Documentation, Release 0.1

Parameters
mol [rdkitmol or smiles str] Input molecule for the analysis, [-]
atom_count [int, optional] The total number of atoms including hydrogen in the molecule; this
will be counted by rdkit if it not provided, [-]
MW [float, optional] Molecular weight of the molecule; this will be calculated by rdkit if not
provided, [g/mol]
Tb [float, optional] An experimentally known boiling temperature for the chemical; this in-
creases the accuracy of the calculated critical point if provided. [K]

1.1.1.17.3 Notes

Be sure to check the status of the automatic fragmentation; not all chemicals with the Joback method are appli-
cable.
Approximately 68% of chemcials in the thermo database seem to be able to be estimated with the Joback
method.

1.1.1.17.4 References

[1], [2]

1.1.1.17.5 Examples

Analysis of Acetone:
>>> J = Joback('CC(=O)C')
>>> J.Hfus(J.counts)
5125.0
>>> J.Cpig(350)
84.69109750000001
>>> J.status
'OK'

All properties can be obtained in one go with the estimate method:


>>> pprint(J.estimate())
{'Cpig': <bound method Joback.Cpig of <thermo.joback.Joback object at 0x...>>,
'Cpig_coeffs': [7.520000000000003,
0.26084,
-0.0001207,
1.545999999999998e-08],
'Gf': -154540.00000000003,
'Hf': -217829.99999999997,
'Hfus': 5125.0,
'Hvap': 29018.0,
'Pc': 4802499.604994407,
'Tb': 322.11,
'Tc': 500.5590049525365,
'Tm': 173.5,
'Vc': 0.0002095,
'mul': <bound method Joback.mul of <thermo.joback.Joback object at 0x...>>,
'mul_coeffs': [839.1099999999998, -14.99]}

214 Chapter 1. thermo


thermo Documentation, Release 0.1

The results for propionic anhydride (if the status is not OK) should not be used.

>>> J = Joback('CCC(=O)OC(=O)CC')
>>> J.status
'Matched some atoms repeatedly: [4]'
>>> J.Cpig(300)
175.85999999999999

None of the routines need to use the automatic routine; they can be used manually too:

>>> Joback.Tb({1: 2, 24: 1})


322.11

Attributes
calculated_Cpig_coeffs
calculated_mul_coeffs

1.1.1.17.6 Methods

Cpig(T) Computes ideal-gas heat capacity at a specified temper-


ature of an organic compound using the Joback method
as a function of chemical structure only.
Cpig_coeffs(counts) Computes the ideal-gas polynomial heat capacity coeffi-
cients of an organic compound using the Joback method
as a function of chemical structure only.
Gf(counts) Estimates the ideal-gas Gibbs energy of formation at
298.15 K of an organic compound using the Joback
method as a function of chemical structure only.
Hf(counts) Estimates the ideal-gas enthalpy of formation at 298.15
K of an organic compound using the Joback method as
a function of chemical structure only.
Hfus(counts) Estimates the enthalpy of fusion of an organic com-
pound at its melting point using the Joback method as
a function of chemical structure only.
Hvap(counts) Estimates the enthalpy of vaporization of an organic
compound at its normal boiling point using the Joback
method as a function of chemical structure only.
Pc(counts, atom_count) Estimates the critcal pressure of an organic compound
using the Joback method as a function of chemical struc-
ture only.
Tb(counts) Estimates the normal boiling temperature of an organic
compound using the Joback method as a function of
chemical structure only.
Tc(counts[, Tb]) Estimates the critcal temperature of an organic com-
pound using the Joback method as a function of chem-
ical structure only, or optionally improved by using an
experimental boiling point.
Tm(counts) Estimates the melting temperature of an organic com-
pound using the Joback method as a function of chemi-
cal structure only.
Continued on next page

1.1. thermo package 215


thermo Documentation, Release 0.1

Table 1.35 – continued from previous page


Vc(counts) Estimates the critcal volume of an organic compound
using the Joback method as a function of chemical struc-
ture only.
estimate() Method to compute all available properties with the
Joback method; returns their results as a dict.
mul(T) Computes liquid viscosity at a specified temperature of
an organic compound using the Joback method as a
function of chemical structure only.
mul_coeffs(counts) Computes the liquid phase viscosity Joback coefficients
of an organic compound using the Joback method as a
function of chemical structure only.

Cpig(T)
Computes ideal-gas heat capacity at a specified temperature of an organic compound using the Joback
method as a function of chemical structure only.
[︃ ]︃ [︃ ]︃ [︃ ]︃
∑︁ ∑︁ ∑︁ ∑︁
𝑖𝑔 −4 2 −7
𝐶𝑝 = 𝑎𝑖 − 37.93 + 𝑏𝑖 + 0.210 𝑇 + 𝑐𝑖 − 3.91 · 10 𝑇 + 𝑑𝑖 + 2.06 · 10 𝑇3
𝑖 𝑖 𝑖 𝑖

Parameters
T [float] Temperature, [K]
Returns
Cpig [float] Ideal-gas heat capacity, [J/mol/K]

1.1.1.17.7 Examples

>>> J = Joback('CC(=O)C')
>>> J.Cpig(300)
75.32642000000001

static Cpig_coeffs(counts)
Computes the ideal-gas polynomial heat capacity coefficients of an organic compound using the Joback
method as a function of chemical structure only.
[︃ ]︃ [︃ ]︃ [︃ ]︃
∑︁ ∑︁ ∑︁ ∑︁
𝑖𝑔 −4 2 −7
𝐶𝑝 = 𝑎𝑖 − 37.93 + 𝑏𝑖 + 0.210 𝑇 + 𝑐𝑖 − 3.91 · 10 𝑇 + 𝑑𝑖 + 2.06 · 10 𝑇3
𝑖 𝑖 𝑖 𝑖

288 compounds were used by Joback in this determination. No overall error was reported.
The ideal gas heat capacity values used in developing the heat capacity polynomials used 9 data points
between 298 K and 1000 K.
Parameters
counts [dict] Dictionary of Joback groups present (numerically indexed) and their counts,
[-]
Returns
coefficients [list[float]] Coefficients which will result in a calculated heat capacity in in units
of J/mol/K, [-]

216 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.17.8 Examples

>>> c = Joback.Cpig_coeffs({1: 2, 24: 1})


>>> c
[7.520000000000003, 0.26084, -0.0001207, 1.545999999999998e-08]
>>> Cp = lambda T : c[0] + c[1]*T + c[2]*T**2 + c[3]*T**3
>>> Cp(300)
75.32642000000001

static Gf(counts)
Estimates the ideal-gas Gibbs energy of formation at 298.15 K of an organic compound using the Joback
method as a function of chemical structure only.
∑︁
𝐺𝑓 𝑜𝑟𝑚𝑎𝑡𝑖𝑜𝑛 = 53.88 + 𝐺𝑓,𝑖

In the above equation, Gibbs energy of formation is calculated in kJ/mol; it is converted to J/mol here.
328 compounds were used by Joback in this determination, with an absolute average error of 2.0 kcal/mol,
standard devaition 4.37 kcal/mol, and AARE of 15.7%.
Parameters
counts [dict] Dictionary of Joback groups present (numerically indexed) and their counts,
[-]
Returns
Gf [float] Estimated ideal-gas Gibbs energy of formation at 298.15 K, [J/mol]

1.1.1.17.9 Examples

>>> Joback.Gf({1: 2, 24: 1})


-154540.00000000003

static Hf(counts)
Estimates the ideal-gas enthalpy of formation at 298.15 K of an organic compound using the Joback
method as a function of chemical structure only.
∑︁
𝐻𝑓 𝑜𝑟𝑚𝑎𝑡𝑖𝑜𝑛 = 68.29 + 𝐻𝑓,𝑖
𝑖

In the above equation, enthalpy of formation is calculated in kJ/mol; it is converted to J/mol here.
370 compounds were used by Joback in this determination, with an absolute average error of 2.2 kcal/mol,
standard devaition 2.0 kcal/mol, and AARE of 15.2%.
Parameters
counts [dict] Dictionary of Joback groups present (numerically indexed) and their counts,
[-]
Returns
Hf [float] Estimated ideal-gas enthalpy of formation at 298.15 K, [J/mol]

1.1.1.17.10 Examples

1.1. thermo package 217


thermo Documentation, Release 0.1

>>> Joback.Hf({1: 2, 24: 1})


-217829.99999999997

static Hfus(counts)
Estimates the enthalpy of fusion of an organic compound at its melting point using the Joback method as
a function of chemical structure only.
∑︁
∆𝐻𝑓 𝑢𝑠 = −0.88 + 𝐻𝑓 𝑢𝑠,𝑖
𝑖

In the above equation, enthalpy of fusion is calculated in kJ/mol; it is converted to J/mol here.
For 155 compounds tested by Joback, the absolute average error was 485.2 cal/mol and standard deviation
was 661.4 cal/mol; the average relative error was 38.7%.
Parameters
counts [dict] Dictionary of Joback groups present (numerically indexed) and their counts,
[-]
Returns
Hfus [float] Estimated enthalpy of fusion of the compound at its melting point, [J/mol]

1.1.1.17.11 Examples

>>> Joback.Hfus({1: 2, 24: 1})


5125.0

static Hvap(counts)
Estimates the enthalpy of vaporization of an organic compound at its normal boiling point using the Joback
method as a function of chemical structure only.
∑︁
∆𝐻𝑣𝑎𝑝 = 15.30 + 𝐻𝑣𝑎𝑝,𝑖
𝑖

In the above equation, enthalpy of fusion is calculated in kJ/mol; it is converted to J/mol here.
For 368 compounds tested by Joback, the absolute average error was 303.5 cal/mol and standard deviation
was 429 cal/mol; the average relative error was 3.88%.
Parameters
counts [dict] Dictionary of Joback groups present (numerically indexed) and their counts,
[-]
Returns
Hvap [float] Estimated enthalpy of vaporization of the compound at its normal boiling point,
[J/mol]

1.1.1.17.12 Examples

>>> Joback.Hvap({1: 2, 24: 1})


29018.0

218 Chapter 1. thermo


thermo Documentation, Release 0.1

static Pc(counts, atom_count)


Estimates the critcal pressure of an organic compound using the Joback method as a function of chemical
structure only. This correlation was developed using the actual number of atoms forming the molecule as
well.
[︃ ]︃−2
∑︁
𝑃𝑐 = 0.113 + 0.0032𝑁𝐴 − 𝑃𝑐,𝑖
𝑖

In the above equation, critical pressure is calculated in bar; it is converted to Pa here.


392 compounds were used by Joback in this determination, with an absolute average error of 2.06 bar,
standard devaition 3.2 bar, and AARE of 5.2%.
Parameters
counts [dict] Dictionary of Joback groups present (numerically indexed) and their counts,
[-]
atom_count [int] Total number of atoms (including hydrogens) in the molecule, [-]
Returns
Pc [float] Estimated critical pressure, [Pa]

1.1.1.17.13 Examples

>>> Joback.Pc({1: 2, 24: 1}, 10)


4802499.604994407

static Tb(counts)
Estimates the normal boiling temperature of an organic compound using the Joback method as a function
of chemical structure only.
∑︁
𝑇𝑏 = 198.2 + 𝑇𝑏,𝑖
𝑖

For 438 compounds tested by Joback, the absolute average error was 12.91 K and standard deviation was
17.85 K; the average relative error was 3.6%.
Parameters
counts [dict] Dictionary of Joback groups present (numerically indexed) and their counts,
[-]
Returns
Tb [float] Estimated normal boiling temperature, [K]

1.1.1.17.14 Examples

>>> Joback.Tb({1: 2, 24: 1})


322.11

static Tc(counts, Tb=None)


Estimates the critcal temperature of an organic compound using the Joback method as a function of chem-
ical structure only, or optionally improved by using an experimental boiling point. If the experimental

1.1. thermo package 219


thermo Documentation, Release 0.1

boiling point is not provided it will be estimated with the Joback method as well.
⎡ (︃ )︃2 ⎤−1
∑︁ ∑︁
𝑇𝑐 = 𝑇𝑏 ⎣0.584 + 0.965 𝑇𝑐,𝑖 − 𝑇𝑐,𝑖 ⎦
𝑖 𝑖

For 409 compounds tested by Joback, the absolute average error was 4.76 K and standard deviation was
6.94 K; the average relative error was 0.81%.
Appendix BI of Joback’s work lists 409 estimated critical temperatures.
Parameters
counts [dict] Dictionary of Joback groups present (numerically indexed) and their counts,
[-]
Tb [float, optional] Experimental normal boiling temperature, [K]
Returns
Tc [float] Estimated critical temperature, [K]

1.1.1.17.15 Examples

>>> Joback.Tc({1: 2, 24: 1}, Tb=322.11)


500.5590049525365

static Tm(counts)
Estimates the melting temperature of an organic compound using the Joback method as a function of
chemical structure only.
∑︁
𝑇𝑚 = 122.5 + 𝑇𝑚,𝑖
𝑖

For 388 compounds tested by Joback, the absolute average error was 22.6 K and standard deviation was
24.68 K; the average relative error was 11.2%.
Parameters
counts [dict] Dictionary of Joback groups present (numerically indexed) and their counts,
[-]
Returns
Tm [float] Estimated melting temperature, [K]

1.1.1.17.16 Examples

>>> Joback.Tm({1: 2, 24: 1})


173.5

static Vc(counts)
Estimates the critcal volume of an organic compound using the Joback method as a function of chemical
structure only.
∑︁
𝑉𝑐 = 17.5 + 𝑉𝑐,𝑖
𝑖

In the above equation, critical volume is calculated in cm^3/mol; it is converted to m^3/mol here.

220 Chapter 1. thermo


thermo Documentation, Release 0.1

310 compounds were used by Joback in this determination, with an absolute average error of 7.54
cm^3/mol, standard devaition 13.16 cm^3/mol, and AARE of 2.27%.
Parameters
counts [dict] Dictionary of Joback groups present (numerically indexed) and their counts,
[-]
Returns
Vc [float] Estimated critical volume, [m^3/mol]

1.1.1.17.17 Examples

>>> Joback.Vc({1: 2, 24: 1})


0.0002095

calculated_Cpig_coeffs = None
calculated_mul_coeffs = None
estimate()
Method to compute all available properties with the Joback method; returns their results as a dict. For the
tempearture dependent values Cpig and mul, both the coefficients and objects to perform calculations are
returned.
mul(T)
Computes liquid viscosity at a specified temperature of an organic compound using the Joback method as
a function of chemical structure only.
(︃ ∑︀ )︃
𝑖 𝜇𝑎 − 597.82
∑︁
𝜇𝑙𝑖𝑞 = MW exp + 𝜇𝑏 − 11.202
𝑇 𝑖

Parameters
T [float] Temperature, [K]
Returns
mul [float] Liquid viscosity, [Pa*s]

1.1.1.17.18 Examples

>>> J = Joback('CC(=O)C')
>>> J.mul(300)
0.0002940378347162687

static mul_coeffs(counts)
Computes the liquid phase viscosity Joback coefficients of an organic compound using the Joback method
as a function of chemical structure only.
(︃ ∑︀ )︃
𝑖 𝜇𝑎 − 597.82
∑︁
𝜇𝑙𝑖𝑞 = MW exp + 𝜇𝑏 − 11.202
𝑇 𝑖

288 compounds were used by Joback in this determination. No overall error was reported.
The liquid viscosity data used was specified to be at “several temperatures for each compound” only. A
small and unspecified number of compounds were used in this estimation.

1.1. thermo package 221


thermo Documentation, Release 0.1

Parameters
counts [dict] Dictionary of Joback groups present (numerically indexed) and their counts,
[-]
Returns
coefficients [list[float]] Coefficients which will result in a liquid viscosity in in units of Pa*s,
[-]

1.1.1.17.19 Examples

>>> mu_ab = Joback.mul_coeffs({1: 2, 24: 1})


>>> mu_ab
[839.1099999999998, -14.99]
>>> MW = 58.041864812
>>> mul = lambda T : MW*exp(mu_ab[0]/T + mu_ab[1])
>>> mul(300)
0.0002940378347162687

1.1.1.18 thermo.law module

thermo.law.legal_status(CASRN, Method=None, AvailableMethods=False, CASi=None)


Looks up the legal status of a chemical 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
CASRN [string] CASRN [-]
Returns
status [str or dict] Legal status information [-]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain legal status with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in le-
gal_status_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain the legal status for the desired chemical, and will return methods instead of the
status
CASi [int, optional] CASRN as an integer, used internally [-]

1.1.1.18.1 Notes

Supported methods are:


• DSL: Canada Domestic Substance List, [1]. As extracted on Feb 11, 2015 from a html list. This list is
updated continuously, so this version will always be somewhat old. Strictly speaking, there are multiple
lists but they are all bundled together here. A chemical may be ‘Listed’, or be on the ‘Non-Domestic
Substances List (NDSL)’, or be on the list of substances with ‘Significant New Activity (SNAc)’, or be on

222 Chapter 1. thermo


thermo Documentation, Release 0.1

the DSL but with a ‘Ministerial Condition pertaining to this substance’, or have been removed from the
DSL, or have had a Ministerial prohibition for the substance.
• TSCA: USA EPA Toxic Substances Control Act Chemical Inventory, [2]. This list is as extracted on
2016-01. It is believed this list is updated on a periodic basis (> 6 month). A chemical may simply be
‘Listed’, or may have certain flags attached to it. All these flags are described in the dict TSCA_flags.
• EINECS: European INventory of Existing Commercial chemical Substances, [3]. As extracted from a
spreadsheet dynamically generated at [1]. This list was obtained March 2015; a more recent revision
already exists.
• NLP: No Longer Polymers, a list of chemicals with special regulatory exemptions in EINECS. Also de-
scribed at [3].
• SPIN: Substances Prepared in Nordic Countries. Also a boolean data type. Retrieved 2015-03 from [4].
Other methods which could be added are:
• Australia: AICS Australian Inventory of Chemical Substances
• China: Inventory of Existing Chemical Substances Produced or Imported in China (IECSC)
• Europe: REACH List of Registered Substances
• India: List of Hazardous Chemicals
• Japan: ENCS: Inventory of existing and new chemical substances
• Korea: Existing Chemicals Inventory (KECI)
• Mexico: INSQ National Inventory of Chemical Substances in Mexico
• New Zealand: Inventory of Chemicals (NZIoC)
• Philippines: PICCS Philippines Inventory of Chemicals and Chemical Substances

1.1.1.18.2 References

[1], [2], [3], [4]

1.1.1.18.3 Examples

>>> pprint(legal_status('64-17-5'))
{'DSL': 'LISTED',
'EINECS': 'LISTED',
'NLP': 'UNLISTED',
'SPIN': 'LISTED',
'TSCA': 'LISTED'}

thermo.law.economic_status(CASRN, Method=None, AvailableMethods=False)


Look up the economic status of a chemical.
This API is considered experimental, and is expected to be removed in a future release in favor of a more
complete object-oriented interface.

>>> pprint(economic_status(CASRN='98-00-0'))
["US public: {'Manufactured': 0.0, 'Imported': 10272.711, 'Exported': 184.127}",
u'10,000 - 100,000 tonnes per annum',
'OECD HPV Chemicals']

1.1. thermo package 223


thermo Documentation, Release 0.1

>>> economic_status(CASRN='13775-50-3') # SODIUM SESQUISULPHATE


[]
>>> economic_status(CASRN='98-00-0', Method='OECD high production volume chemicals
˓→')

'OECD HPV Chemicals'


>>> economic_status(CASRN='98-01-1', Method='European Chemicals Agency Total
˓→Tonnage Bands')

[u'10,000 - 100,000 tonnes per annum']

thermo.law.load_economic_data()
thermo.law.load_law_data()

1.1.1.19 thermo.lennard_jones module

thermo.lennard_jones.Stockmayer(Tm=None, Tb=None, Tc=None, Zc=None, omega=None,


CASRN=”, AvailableMethods=False, Method=None)
This function handles the retrieval or calculation a chemical’s Stockmayer parameter. Values are available from
one source with lookup based on CASRNs, or can be estimated from 7 CSP methods. Will automatically select
a data source to use if no Method is provided; returns None if the data is not available.
Prefered sources are ‘Magalhães, Lito, Da Silva, and Silva (2013)’ for common chemicals which had valies
listed in that source, and the CSP method Tee, Gotoh, and Stewart CSP with Tc, omega (1966) for chemicals
which don’t.
Parameters
Tm [float, optional] Melting temperature of fluid [K]
Tb [float, optional] Boiling temperature of fluid [K]
Tc [float, optional] Critical temperature, [K]
Zc [float, optional] Critical compressibility, [-]
omega [float, optional] Acentric factor of compound, [-]
CASRN [string, optional] CASRN [-]
Returns
epsilon_k [float] Lennard-Jones depth of potential-energy minimum over k, [K]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain epsilon with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in Stock-
mayer_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain epsilon for the desired chemical, and will return methods instead of epsilon

1.1.1.19.1 Notes

These values are somewhat rough, as they attempt to pigeonhole a chemical into L-J behavior.
The tabulated data is from [2], for 322 chemicals.

224 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.19.2 References

[1], [2]

1.1.1.19.3 Examples

>>> Stockmayer(CASRN='64-17-5')
1291.41

thermo.lennard_jones.molecular_diameter(Tc=None, Pc=None, Vc=None, Zc=None,


omega=None, Vm=None, Vb=None, CASRN=”,
AvailableMethods=False, Method=None)
This function handles the retrieval or calculation a chemical’s L-J molecular diameter. Values are available from
one source with lookup based on CASRNs, or can be estimated from 9 CSP methods. Will automatically select
a data source to use if no Method is provided; returns None if the data is not available.
Prefered sources are ‘Magalhães, Lito, Da Silva, and Silva (2013)’ for common chemicals which had valies
listed in that source, and the CSP method Tee, Gotoh, and Stewart CSP with Tc, Pc, omega (1966) for chemicals
which don’t.
Parameters
Tc [float, optional] Critical temperature, [K]
Pc [float, optional] Critical pressure, [Pa]
Vc [float, optional] Critical volume, [m^3/mol]
Zc [float, optional] Critical compressibility, [-]
omega [float, optional] Acentric factor of compound, [-]
Vm [float, optional] Molar volume of liquid at the melting point of the fluid [K]
Vb [float, optional] Molar volume of liquid at the boiling point of the fluid [K]
CASRN [string, optional] CASRN [-]
Returns
sigma [float] Lennard-Jones molecular diameter, [Angstrom]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain epsilon with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in molec-
ular_diameter_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain sigma for the desired chemical, and will return methods instead of sigma

1.1.1.19.4 Notes

These values are somewhat rough, as they attempt to pigeonhole a chemical into L-J behavior.
The tabulated data is from [2], for 322 chemicals.

1.1. thermo package 225


thermo Documentation, Release 0.1

1.1.1.19.5 References

[1], [2]

1.1.1.19.6 Examples

>>> molecular_diameter(CASRN='64-17-5')
4.23738

thermo.lennard_jones.sigma_Flynn(Vc)
Calculates Lennard-Jones molecular diameter. Uses critical volume. CSP method by [1] as reported in [2].

𝜎 = 0.561(𝑉𝑐1/3 )5/4

Parameters
Vc [float] Critical volume of fluid [m^3/mol]
Returns
sigma [float] Lennard-Jones molecular diameter, [Angstrom]

1.1.1.19.7 Notes

Vc is originally in units of mL/mol.

1.1.1.19.8 References

[1], [2]

1.1.1.19.9 Examples

>>> sigma_Flynn(0.000268)
5.2506948422196285

thermo.lennard_jones.sigma_Bird_Stewart_Lightfoot_critical_2(Tc, Pc)
Calculates Lennard-Jones molecular diameter. Uses critical temperature and pressure. CSP method by [1].

𝜎 = 2.44(𝑇𝑐 /𝑃𝑐 )1/3

Parameters
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
Returns
sigma [float] Lennard-Jones molecular diameter, [Angstrom]

1.1.1.19.10 Notes

Original units of critical pressure are atmospheres.

226 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.19.11 References

[1]

1.1.1.19.12 Examples

>>> sigma_Bird_Stewart_Lightfoot_critical_2(560.1, 4550000)


5.658657684653222

thermo.lennard_jones.sigma_Bird_Stewart_Lightfoot_critical_1(Vc)
Calculates Lennard-Jones molecular diameter. Uses critical volume. CSP method by [1].

𝜎 = 0.841𝑉𝑐1/3

Parameters
Vc [float] Critical volume of fluid [m^3/mol]
Returns
sigma [float] Lennard-Jones molecular diameter, [Angstrom]

1.1.1.19.13 Notes

Original units of Vc are mL/mol.

1.1.1.19.14 References

[1]

1.1.1.19.15 Examples

>>> sigma_Bird_Stewart_Lightfoot_critical_1(0.000268)
5.422184116631474

thermo.lennard_jones.sigma_Bird_Stewart_Lightfoot_boiling(Vb)
Calculates Lennard-Jones molecular diameter. Uses molar volume of liquid at boiling. CSP method by [1].
1/3
𝜎 = 1.166𝑉𝑏,𝑙𝑖𝑞

Parameters
Vb [float] Boiling molar volume of liquid [m^3/mol]
Returns
sigma [float] Lennard-Jones collision integral, [Angstrom]

1.1.1.19.16 Notes

Original units of Vb are mL/mol.

1.1. thermo package 227


thermo Documentation, Release 0.1

1.1.1.19.17 References

[1]

1.1.1.19.18 Examples

>>> sigma_Bird_Stewart_Lightfoot_boiling(0.0001015)
5.439018856944655

thermo.lennard_jones.sigma_Bird_Stewart_Lightfoot_melting(Vm)
Calculates Lennard-Jones molecular diameter. Uses molar volume of a liquid at its melting point. CSP method
by [1].
1/3
𝜎 = 1.222𝑉𝑚,𝑠𝑜𝑙

Parameters
Vm [float] Melting molar volume of a liquid at its melting point [m^3/mol]
Returns
sigma [float] Lennard-Jones molecular diameter, [Angstrom]

1.1.1.19.19 Notes

Original units of Vm are mL/mol.

1.1.1.19.20 References

[1]

1.1.1.19.21 Examples

>>> sigma_Bird_Stewart_Lightfoot_melting(8.8e-05)
5.435407341351406

thermo.lennard_jones.sigma_Stiel_Thodos(Vc, Zc)
Calculates Lennard-Jones molecular diameter. Uses critical volume and compressibility. CSP method by [1].

𝜎 = 0.1866𝑉𝑐1/3 𝑍𝑐−6/5

Parameters
Vc [float] Critical volume of fluid [m^3/mol]
Zc [float] Critical compressibility of fluid, [-]
Returns
sigma [float] Lennard-Jones molecular diameter, [Angstrom]

228 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.19.22 Notes

Vc is originally in units of mL/mol.

1.1.1.19.23 References

[1]

1.1.1.19.24 Examples

Monofluorobenzene

>>> sigma_Stiel_Thodos(0.000271, 0.265)


5.94300853971033

thermo.lennard_jones.sigma_Tee_Gotoh_Steward_1(Tc, Pc)
Calculates Lennard-Jones molecular diameter. Uses critical temperature and pressure. CSP method by [1].
(︂ )︂1/3
𝑇𝑐
𝜎 = 2.3647
𝑃𝑐

Parameters
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
Returns
sigma [float] Lennard-Jones molecular diameter, [Angstrom]

1.1.1.19.25 Notes

Original units of Pc are atm. Further regressions with other parameters were performed in [1] but are not
included here, except for sigma_Tee_Gotoh_Steward_2.

1.1.1.19.26 References

[1]

1.1.1.19.27 Examples

>>> sigma_Tee_Gotoh_Steward_1(560.1, 4550000)


5.48402779790962

thermo.lennard_jones.sigma_Tee_Gotoh_Steward_2(Tc, Pc, omega)


Calculates Lennard-Jones molecular diameter. Uses critical temperature, pressure, and acentric factor. CSP
method by [1].
(︂ )︂1/3
𝑇𝑐
𝜎 = (2.3551 − 0.0874𝜔)
𝑃𝑐

1.1. thermo package 229


thermo Documentation, Release 0.1

Parameters
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
omega [float] Acentric factor for fluid, [-]
Returns
sigma [float] Lennard-Jones molecular diameter, [Angstrom]

1.1.1.19.28 Notes

Original units of Pc are atm. Further regressions with other parameters were performed in [1] but are not
included here, except for sigma_Tee_Gotoh_Steward_1.

1.1.1.19.29 References

[1]

1.1.1.19.30 Examples

>>> sigma_Tee_Gotoh_Steward_2(560.1, 4550000, 0.245)


5.412104867264477

thermo.lennard_jones.sigma_Silva_Liu_Macedo(Tc, Pc)
Calculates Lennard-Jones molecular diameter. Uses critical temperature and pressure. CSP method by [1].
(︂ )︂ (︂ )︂2
3 𝑇𝑐 𝑇𝑐
𝜎𝐿𝐽 = 0.17791 + 11.779 − 0.049029
𝑃𝑐 𝑃𝑐

Parameters
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
Returns
sigma [float] Lennard-Jones molecular diameter, [Angstrom]

1.1.1.19.31 Notes

Pc is originally in bar. An excellent paper. None is returned if the polynomial returns a negative number, as in
the case of 1029.13 K and 3.83 bar.

1.1.1.19.32 References

[1]

230 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.19.33 Examples

>>> sigma_Silva_Liu_Macedo(560.1, 4550000)


5.164483998730177

thermo.lennard_jones.epsilon_Flynn(Tc)
Calculates Lennard-Jones depth of potential-energy minimum. Uses critical temperature. CSP method by [1]
as reported in [2].

𝜖/𝑘 = 1.77𝑇𝑐5/6

Parameters
Tc [float] Critical temperature of fluid [K]
Returns
epsilon_k [float] Lennard-Jones depth of potential-energy minimum over k, [K]

1.1.1.19.34 References

[1], [2]

1.1.1.19.35 Examples

>>> epsilon_Flynn(560.1)
345.2984087011443

thermo.lennard_jones.epsilon_Bird_Stewart_Lightfoot_critical(Tc)
Calculates Lennard-Jones depth of potential-energy minimum. Uses critical temperature. CSP method by [1].

𝜖/𝑘 = 0.77𝑇𝑐

Parameters
Tc [float] Critical temperature of fluid [K]
Returns
epsilon_k [float] Lennard-Jones depth of potential-energy minimum over k, [K]

1.1.1.19.36 References

[1]

1.1.1.19.37 Examples

>>> epsilon_Bird_Stewart_Lightfoot_critical(560.1)
431.27700000000004

thermo.lennard_jones.epsilon_Bird_Stewart_Lightfoot_boiling(Tb)
Calculates Lennard-Jones depth of potential-energy minimum. Uses boiling temperature. CSP method by [1].

𝜖/𝑘 = 1.15𝑇𝑏

1.1. thermo package 231


thermo Documentation, Release 0.1

Parameters
Tb [float] Boiling temperature [K]
Returns
epsilon_k [float] Lennard-Jones depth of potential-energy minimum over k, [K]

1.1.1.19.38 References

[1]

1.1.1.19.39 Examples

>>> epsilon_Bird_Stewart_Lightfoot_boiling(357.85)
411.5275

thermo.lennard_jones.epsilon_Bird_Stewart_Lightfoot_melting(Tm)
Calculates Lennard-Jones depth of potential-energy minimum. Uses melting temperature. CSP method by [1].

𝜖/𝑘 = 1.92𝑇𝑚

Parameters
Tm [float] Melting temperature [K]
Returns
epsilon_k [float] Lennard-Jones depth of potential-energy minimum over k, [K]

1.1.1.19.40 References

[1]

1.1.1.19.41 Examples

>>> epsilon_Bird_Stewart_Lightfoot_melting(231.15)
443.808

thermo.lennard_jones.epsilon_Stiel_Thodos(Tc, Zc)
Calculates Lennard-Jones depth of potential-energy minimum. Uses Critical temperature and critical compress-
ibility. CSP method by [1].

𝜖/𝑘 = 65.3𝑇𝑐 𝑍𝑐3.6

Parameters
Tc [float] Critical temperature of fluid [K]
Zc [float] Critical compressibility of fluid, [-]
Returns
epsilon_k [float] Lennard-Jones depth of potential-energy minimum over k, [K]

232 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.19.42 References

[1]

1.1.1.19.43 Examples

Fluorobenzene

>>> epsilon_Stiel_Thodos(358.5, 0.265)


196.3755830305783

thermo.lennard_jones.epsilon_Tee_Gotoh_Steward_1(Tc)
Calculates Lennard-Jones depth of potential-energy minimum. Uses Critical temperature. CSP method by [1].

𝜖/𝑘 = 0.7740𝑇𝑐

Parameters
Tc [float] Critical temperature of fluid [K]
Returns
epsilon_k [float] Lennard-Jones depth of potential-energy minimum over k, [K]

1.1.1.19.44 Notes

Further regressions with other parameters were performed in [1] but are not included here, except for ep-
silon_Tee_Gotoh_Steward_2.

1.1.1.19.45 References

[1]

1.1.1.19.46 Examples

>>> epsilon_Tee_Gotoh_Steward_1(560.1)
433.5174

thermo.lennard_jones.epsilon_Tee_Gotoh_Steward_2(Tc, omega)
Calculates Lennard-Jones depth of potential-energy minimum. Uses critical temperature and acentric factor.
CSP method by [1].

𝜖/𝑘 = (0.7915 + 0.1693𝜔)𝑇𝑐

Parameters
Tc [float] Critical temperature of fluid [K]
omega [float] Acentric factor for fluid, [-]
Returns
epsilon_k [float] Lennard-Jones depth of potential-energy minimum over k, [K]

1.1. thermo package 233


thermo Documentation, Release 0.1

1.1.1.19.47 Notes

Further regressions with other parameters were performed in [1] but are not included here, except for ep-
silon_Tee_Gotoh_Steward_1.

1.1.1.19.48 References

[1]

1.1.1.19.49 Examples

>>> epsilon_Tee_Gotoh_Steward_2(560.1, 0.245)


466.55125785

thermo.lennard_jones.collision_integral_Neufeld_Janzen_Aziz(Tstar, l=1, s=1)


Calculates Lennard-Jones collision integral for any of 16 values of (l,j) for the wide range of 0.3 < Tstar < 100.
Values are accurate to 0.1 % of actual values, but the calculation of actual values is computationally intensive
and so these simplifications are used, developed in [1].
𝐴 𝐶 𝐸 𝐺
Ω𝐷 = *𝐵
+ + + + 𝑅𝑇 *𝐵 sin(𝑆𝑇 *𝑊 − 𝑃 )
𝑇 exp(𝐷𝑇 ) exp(𝐹 𝑇 ) exp(𝐻𝑇 * )
* *

Parameters
Tstar [float] Reduced temperature of the fluid [-]
l [int] term
s [int] term
Returns
Omega [float] Collision integral of A and B

1.1.1.19.50 Notes

Acceptable pairs of (l,s) are (1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (3,
3), (3, 4), (3, 5), and (4, 4).
𝑘𝑏 𝑇
𝑇* =
𝜖
Results are very similar to those of the more modern formulation, collision_integral_Kim_Monroe.
Calculations begin to yield overflow errors in some values of (l, 2) after Tstar = 75, beginning with (1, 7). Also
susceptible are (1, 5) and (1, 6).

1.1.1.19.51 References

[1]

234 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.19.52 Examples

>>> collision_integral_Neufeld_Janzen_Aziz(100, 1, 1)
0.516717697672334

thermo.lennard_jones.collision_integral_Kim_Monroe(Tstar, l=1, s=1)


Calculates Lennard-Jones collision integral for any of 16 values of (l,j) for the wide range of 0.3 < Tstar < 400.
Values are accurate to 0.007 % of actual values, but the calculation of actual values is computationally intensive
and so these simplifications are used, developed in [1].
6
[︃ (𝑙,𝑠) ]︃
(𝑙,𝑠)* (𝑙,𝑠)
∑︁ 𝐵𝑘 (𝑙,𝑠) * 𝑘
Ω =𝐴 + + 𝐶𝑘 (ln 𝑇 )
(𝑇 * )𝑘
𝑘=1

Parameters
Tstar [float] Reduced temperature of the fluid [-]
l [int] term
s [int] term
Returns
Omega [float] Collision integral of A and B

1.1.1.19.53 Notes

Acceptable pairs of (l,s) are (1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (1, 7), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (3,
3), (3, 4), (3, 5), and (4, 4).
𝑘𝑏 𝑇
𝑇* =
𝜖

1.1.1.19.54 References

[1]

1.1.1.19.55 Examples

>>> collision_integral_Kim_Monroe(400, 1, 1)
0.4141818082392228

thermo.lennard_jones.Tstar(T, epsilon_k=None, epsilon=None)


This function calculates the parameter Tstar as needed in performing collision integral calculations.
𝑘𝑇
𝑇* =
𝜖
Parameters
epsilon_k [float, optional] Lennard-Jones depth of potential-energy minimum over k, [K]
epsilon [float, optional] Lennard-Jones depth of potential-energy minimum [J]
Returns
Tstar [float] Dimentionless temperature for calculating collision integral, [-]

1.1. thermo package 235


thermo Documentation, Release 0.1

1.1.1.19.56 Notes

Tabulated values are normally listed as epsilon/k. k is the Boltzman constant, with units of J/K.

1.1.1.19.57 References

[1]

1.1.1.19.58 Examples

>>> Tstar(T=318.2, epsilon_k=308.43)


1.0316765554582887

1.1.1.20 thermo.miscdata module

thermo.miscdata.VDI_tabular_data(CASRN, prop)
This function retrieves the tabular data available for a given chemical and a given property. Lookup is based on
CASRNs. Length of data returned varies between chemicals. All data is at saturation condition from [1].
Function has data for 58 chemicals.
Parameters
CASRN [string] CASRN [-]
prop [string] Property [-]
Returns
Ts [list] Temperatures where property data is available, [K]
props [list] Properties at each temperature, [various]

1.1.1.20.1 Notes

The available properties are ‘P’, ‘Density (l)’, ‘Density (g)’, ‘Hvap’, ‘Cp (l)’, ‘Cp (g)’, ‘Mu (l)’, ‘Mu (g)’, ‘K
(l)’, ‘K (g)’, ‘Pr (l)’, ‘Pr (g)’, ‘sigma’, ‘Beta’, ‘Volume (l)’, and ‘Volume (g)’.
Data is available for all properties and all chemicals; surface tension data was missing for mercury, but added as
estimated from the a/b coefficients listed in Jasper (1972) to simplify the function.

1.1.1.20.2 References

[1]

1.1.1.20.3 Examples

>>> VDI_tabular_data('67-56-1', 'Mu (g)')


([337.63, 360.0, 385.0, 410.0, 435.0, 460.0, 500.0], [1.11e-05, 1.18e-05, 1.27e-
˓→05, 1.36e-05, 1.46e-05, 1.59e-05, 2.04e-05])

236 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.21 thermo.mixture module

class thermo.mixture.Mixture(IDs, zs=None, ws=None, Vfls=None, Vfgs=None, T=298.15,


P=101325, Vf_TP=(None, None))
Bases: object
Creates a Mixture object which contains basic information such as molecular weight and the structure of the
species, as well as thermodynamic and transport properties as a function of temperature and pressure.
The components of the mixture must be specified by specifying the names of the chemicals; the composition
can be specified by providing any one of the following parameters:
• Mass fractions ws
• Mole fractions zs
• Liquid volume fractions (based on pure component densities) Vfls
• Gas volume fractions (based on pure component densities) Vfgs
If volume fractions are provided, by default the pure component volumes are calculated at the specified T and
P. To use another reference temperature and pressure specify it as a tuple for the argument Vf_TP.
Parameters
IDs [list] List of chemical identifiers - names, CAS numbers, SMILES or InChi strings can all
be recognized and may be mixed [-]
zs [list, optional] Mole fractions of all components in the mixture [-]
ws [list, optional] Mass fractions of all components in the mixture [-]
Vfls [list, optional] Volume fractions of all components as a hypothetical liquid phase based on
pure component densities [-]
Vfgs [list, optional] Volume fractions of all components as a hypothetical gas phase based on
pure component densities [-]
T [float, optional] Temperature of the chemical (default 298.15 K), [K]
P [float, optional] Pressure of the chemical (default 101325 Pa) [Pa]
Vf_TP [tuple(2, float), optional] The (T, P) at which the volume fractions are specified to be at,
[K] and [Pa]

1.1.1.21.1 Examples

Creating Mixture objects:


>>> Mixture(['water', 'ethanol'], Vfls=[.6, .4], T=300, P=1E5)
<Mixture, components=['water', 'ethanol'], mole fractions=[0.8299, 0.1701], T=300.
˓→00 K, P=100000 Pa>

Attributes
MW [float] Mole-weighted average molecular weight all chemicals in the mixture, [g/mol]
MWs [list of float] Molecular weights of all chemicals in the mixture, [g/mol]
Tms [list of float] Melting temperatures of all chemicals in the mixture, [K]
Tbs [list of float] Boiling temperatures of all chemicals in the mixture, [K]
Tcs [list of float] Critical temperatures of all chemicals in the mixture, [K]

1.1. thermo package 237


thermo Documentation, Release 0.1

Pcs [list of float] Critical pressures of all chemicals in the mixture, [Pa]
Vcs [list of float] Critical volumes of all chemicals in the mixture, [m^3/mol]
Zcs [list of float] Critical compressibilities of all chemicals in the mixture, [-]
rhocs [list of float] Critical densities of all chemicals in the mixture, [kg/m^3]
rhocms [list of float] Critical molar densities of all chemicals in the mixture, [mol/m^3]
omegas [list of float] Acentric factors of all chemicals in the mixture, [-]
StielPolars [list of float] Stiel Polar factors of all chemicals in the mixture, see thermo.
acentric.StielPolar for the definition, [-]
Tts [list of float] Triple temperatures of all chemicals in the mixture, [K]
Pts [list of float] Triple pressures of all chemicals in the mixture, [Pa]
Hfuss [list of float] Enthalpy of fusions of all chemicals in the mixture, [J/kg]
Hfusms [list of float] Molar enthalpy of fusions of all chemicals in the mixture, [J/mol]
Hsubs [list of float] Enthalpy of sublimations of all chemicals in the mixture, [J/kg]
Hsubms [list of float] Molar enthalpy of sublimations of all chemicals in the mixture, [J/mol]
Hfs [list of float] Enthalpy of formations of all chemicals in the mixture, [J/mol]
Hcs [list of float] Molar enthalpy of combustions of all chemicals in the mixture, [J/mol]
Tflashs [list of float] Flash points of all chemicals in the mixture, [K]
Tautoignitions [list of float] Autoignition points of all chemicals in the mixture, [K]
LFLs [list of float] Lower flammability limits of the gases in an atmosphere at STP, mole frac-
tions, [-]
UFLs [list of float] Upper flammability limit of the gases in an atmosphere at STP, mole frac-
tions, [-]
TWAs [list of list of tuple(quantity, unit)] Time-Weighted Average limits on worker exposure
to dangerous chemicals.
STELs [list of tuple(quantity, unit)] Short-term Exposure limits on worker exposure to danger-
ous chemicals.
Ceilings [list of tuple(quantity, unit)] Ceiling limits on worker exposure to dangerous chemi-
cals.
Skins [list of bool] Whether or not each of the chemicals can be absorbed through the skin.
Carcinogens [list of str or dict] Carcinogen status information for each chemical in the mixture.
dipoles [list of float] Dipole moments of all chemicals in the mixture in debye,
[3.33564095198e-30 ampere*second^2]
Stockmayers [list of float] Lennard-Jones depth of potential-energy minimum over k for all
chemicals in the mixture, [K]
molecular_diameters [list of float] Lennard-Jones molecular diameters of all chemicals in the
mixture, [angstrom]
GWPs [list of float] Global warming potentials (default 100-year outlook) (impact/mass chem-
ical)/(impact/mass CO2) of all chemicals in the mixture, [-]
ODPs [list of float] Ozone Depletion potentials (impact/mass chemical)/(impact/mass CFC-11),
of all chemicals in the mixture, [-]

238 Chapter 1. thermo


thermo Documentation, Release 0.1

logPs [list of float] Octanol-water partition coefficients of all chemicals in the mixture, [-]
Psat_298s [list of float] Vapor pressure of the chemicals in the mixture at 298.15 K, [Pa]
phase_STPs [list of str] Phase of the chemicals in the mixture at 298.15 K and 101325 Pa; one
of ‘s’, ‘l’, ‘g’, or ‘l/g’.
Vml_Tbs [list of float] Molar volumes of the chemicals in the mixture as liquids at their normal
boiling points, [m^3/mol]
Vml_Tms [list of float] Molar volumes of the chemicals in the mixture as liquids at their melt-
ing points, [m^3/mol]
Vml_STPs [list of float] Molar volume of the chemicals in the mixture as liquids at 298.15 K
and 101325 Pa, [m^3/mol]
Vmg_STPs [list of float] Molar volume of the chemicals in the mixture as gases at 298.15 K
and 101325 Pa, [m^3/mol]
Hvap_Tbms [list of float] Molar enthalpies of vaporization of the chemicals in the mixture at
their normal boiling points, [J/mol]
Hvap_Tbs [list of float] Mass enthalpies of vaporization of the chemicals in the mixture at their
normal boiling points, [J/kg]
alpha Thermal diffusivity of the mixture at its current temperature, pressure, and phase in
units of [m^2/s].
alphag Thermal diffusivity of the gas phase of the mixture if one exists at its current temper-
ature and pressure, in units of [m^2/s].
alphags Pure component thermal diffusivities of the chemicals in the mixture in the gas phase
at the current temperature and pressure, in units of [m^2/s].
alphal Thermal diffusivity of the liquid phase of the mixture if one exists at its current tem-
perature and pressure, in units of [m^2/s].
alphals Pure component thermal diffusivities of the chemicals in the mixture in the liquid
phase at the current temperature and pressure, in units of [m^2/s].
atom_fractions Dictionary of atomic fractions for each atom in the mixture.
atom_fractionss List of dictionaries of atomic fractions for all chemicals in the mixture.
atomss List of dictionaries of atom counts for all chemicals in the mixture.
Bvirial Second virial coefficient of the gas phase of the mixture at its current temperature,
pressure, and composition in units of [mol/m^3].
charges Charges for all chemicals in the mixture, [faraday].
Cp Mass heat capacity of the mixture at its current phase and temperature, in units of [J/kg/K].
Cpg Gas-phase heat capacity of the mixture at its current temperature , and composition in units
of [J/kg/K].
Cpgm Gas-phase heat capacity of the mixture at its current temperature and composition, in
units of [J/mol/K].
Cpgms Gas-phase ideal gas heat capacity of the chemicals at its current temperature, in units
of [J/mol/K].
Cpgs Gas-phase pure component heat capacity of the chemicals in the mixture at its current
temperature, in units of [J/kg/K].

1.1. thermo package 239


thermo Documentation, Release 0.1

Cpl Liquid-phase heat capacity of the mixture at its current temperature and composition, in
units of [J/kg/K].
Cplm Liquid-phase heat capacity of the mixture at its current temperature and composition, in
units of [J/mol/K].
Cplms Liquid-phase pure component heat capacity of the chemicals in the mixture at its current
temperature, in units of [J/mol/K].
Cpls Liquid-phase pure component heat capacity of the chemicals in the mixture at its current
temperature, in units of [J/kg/K].
Cpm Molar heat capacity of the mixture at its current phase and temperature, in units of
[J/mol/K].
Cps Solid-phase heat capacity of the mixture at its current temperature and composition, in
units of [J/kg/K].
Cpsm Solid-phase heat capacity of the mixture at its current temperature and composition, in
units of [J/mol/K].
Cpsms Solid-phase pure component heat capacity of the chemicals in the mixture at its current
temperature, in units of [J/mol/K].
Cpss Solid-phase pure component heat capacity of the chemicals in the mixture at its current
temperature, in units of [J/kg/K].
Cvg Gas-phase ideal-gas contant-volume heat capacity of the mixture at its current temperature,
in units of [J/kg/K].
Cvgm Gas-phase ideal-gas contant-volume heat capacity of the mixture at its current tempera-
ture and composition, in units of [J/mol/K].
Cvgms Gas-phase pure component ideal-gas contant-volume heat capacities of the chemicals
in the mixture at its current temperature, in units of [J/mol/K].
Cvgs Gas-phase pure component ideal-gas contant-volume heat capacities of the chemicals in
the mixture at its current temperature, in units of [J/kg/K].
economic_statuses List of dictionaries of the economic status for all chemicals in the
mixture.
eos Equation of state object held by the mixture.
formulas Chemical formulas for all chemicals in the mixture.
Hvapms Pure component enthalpies of vaporization of the chemicals in the mixture at its cur-
rent temperature, in units of [J/mol].
Hvaps Enthalpy of vaporization of the chemicals in the mixture at its current temperature, in
units of [J/kg].
InChI_Keys InChI keys for all chemicals in the mixture.
InChIs InChI strings for all chemicals in the mixture.
isentropic_exponent Gas-phase ideal-gas isentropic exponent of the mixture at its cur-
rent temperature, [dimensionless].
isentropic_exponents Gas-phase pure component ideal-gas isentropic exponent of the
chemicals in the mixture at its current temperature, [dimensionless].
isobaric_expansion Isobaric (constant-pressure) expansion of the mixture at its current
phase, temperature, and pressure in units of [1/K].

240 Chapter 1. thermo


thermo Documentation, Release 0.1

isobaric_expansion_gs Pure component isobaric (constant-pressure) expansions of the


chemicals in the mixture in the gas phase at its current temperature and pressure, in units of
[1/K].
isobaric_expansion_ls Pure component isobaric (constant-pressure) expansions of the
chemicals in the mixture in the liquid phase at its current temperature and pressure, in units
of [1/K].
IUPAC_names IUPAC names for all chemicals in the mixture.
JT Joule Thomson coefficient of the mixture at its current phase, temperature, and pressure in
units of [K/Pa].
JTg Joule Thomson coefficient of the gas phase of the mixture if one exists at its current tem-
perature and pressure, in units of [K/Pa].
JTgs Pure component Joule Thomson coefficients of the chemicals in the mixture in the gas
phase at its current temperature and pressure, in units of [K/Pa].
JTl Joule Thomson coefficient of the liquid phase of the mixture if one exists at its current
temperature and pressure, in units of [K/Pa].
JTls Pure component Joule Thomson coefficients of the chemicals in the mixture in the liquid
phase at its current temperature and pressure, in units of [K/Pa].
k Thermal conductivity of the mixture at its current phase, temperature, and pressure in units
of [W/m/K].
kg Thermal conductivity of the mixture in the gas phase at its current temperature, pressure,
and composition in units of [Pa*s].
kgs Pure component thermal conductivies of the chemicals in the mixture in the gas phase at
its current temperature and pressure, in units of [W/m/K].
kl Thermal conductivity of the mixture in the liquid phase at its current temperature, pressure,
and composition in units of [Pa*s].
kls Pure component thermal conductivities of the chemicals in the mixture in the liquid phase
at its current temperature and pressure, in units of [W/m/K].
legal_statuses List of dictionaries of the legal status for all chemicals in the mixture.
mass_fractions Dictionary of mass fractions for each atom in the mixture.
mass_fractionss List of dictionaries of mass fractions for all chemicals in the mixture.
mu Viscosity of the mixture at its current phase, temperature, and pressure in units of [Pa*s].
mug Viscosity of the mixture in the gas phase at its current temperature, pressure, and compo-
sition in units of [Pa*s].
mugs Pure component viscosities of the chemicals in the mixture in the gas phase at its current
temperature and pressure, in units of [Pa*s].
mul Viscosity of the mixture in the liquid phase at its current temperature, pressure, and com-
position in units of [Pa*s].
muls Pure component viscosities of the chemicals in the mixture in the liquid phase at its
current temperature and pressure, in units of [Pa*s].
nu Kinematic viscosity of the the mixture at its current temperature, pressure, and phase in
units of [m^2/s].
nug Kinematic viscosity of the gas phase of the mixture if one exists at its current temperature
and pressure, in units of [m^2/s].

1.1. thermo package 241


thermo Documentation, Release 0.1

nugs Pure component kinematic viscosities of the gas phase of the chemicals in the mixture at
its current temperature and pressure, in units of [m^2/s].
nul Kinematic viscosity of the liquid phase of the mixture if one exists at its current tempera-
ture and pressure, in units of [m^2/s].
nuls Pure component kinematic viscosities of the liquid phase of the chemicals in the mixture
at its current temperature and pressure, in units of [m^2/s].
permittivites Pure component relative permittivities of the chemicals in the mixture at its
current temperature, [dimensionless].
Pr Prandtl number of the mixture at its current temperature, pressure, and phase; [dimension-
less].
Prg Prandtl number of the gas phase of the mixture if one exists at its current temperature and
pressure, [dimensionless].
Prgs Pure component Prandtl numbers of the gas phase of the chemicals in the mixture at its
current temperature and pressure, [dimensionless].
Prl Prandtl number of the liquid phase of the mixture if one exists at its current temperature
and pressure, [dimensionless].
Prls Pure component Prandtl numbers of the liquid phase of the chemicals in the mixture at
its current temperature and pressure, [dimensionless].
Psats Pure component vapor pressures of the chemicals in the mixture at its current tempera-
ture, in units of [Pa].
PSRK_groups List of dictionaries of PSRK subgroup: count groups for each chemical in the
mixture.
PubChems PubChem Component ID numbers for all chemicals in the mixture.
rho Mass density of the mixture at its current phase and temperature and pressure, in units of
[kg/m^3].
rhog Gas-phase mass density of the mixture at its current temperature, pressure, and compo-
sition in units of [kg/m^3].
rhogm Molar density of the mixture in the gas phase at the current temperature, pressure, and
composition in units of [mol/m^3].
rhogms Pure component molar densities of the chemicals in the gas phase at the current tem-
perature and pressure, in units of [mol/m^3].
rhogm_STP Molar density of the mixture in the gas phase at 298.15 K and 101.325 kPa, and
the current composition, in units of [mol/m^3].
rhogs Pure-component gas-phase mass densities of the chemicals in the mixture at its current
temperature and pressure, in units of [kg/m^3].
rhog_STP Gas-phase mass density of the mixture at 298.15 K and 101.325 kPa, and the cur-
rent composition in units of [kg/m^3].
rhol Liquid-phase mass density of the mixture at its current temperature, pressure, and com-
position in units of [kg/m^3].
rholm Molar density of the mixture in the liquid phase at the current temperature, pressure,
and composition in units of [mol/m^3].
rholms Pure component molar densities of the chemicals in the mixture in the liquid phase at
the current temperature and pressure, in units of [mol/m^3].

242 Chapter 1. thermo


thermo Documentation, Release 0.1

rholm_STP Molar density of the mixture in the liquid phase at 298.15 K and 101.325 kPa,
and the current composition, in units of [mol/m^3].
rhols Pure-component liquid-phase mass density of the chemicals in the mixture at its current
temperature and pressure, in units of [kg/m^3].
rhol_STP Liquid-phase mass density of the mixture at 298.15 K and 101.325 kPa, and the
current composition in units of [kg/m^3].
rhom Molar density of the mixture at its current phase and temperature and pressure, in units
of [mol/m^3].
rhosms Pure component molar densities of the chemicals in the solid phase at the current
temperature and pressure, in units of [mol/m^3].
rhoss Pure component solid-phase mass density of the chemicals in the mixture at its current
temperature, in units of [kg/m^3].
ringss List of ring counts for all chemicals in the mixture.
sigma Surface tension of the mixture at its current temperature and composition, in units of
[N/m].
sigmas Pure component surface tensions of the chemicals in the mixture at its current temper-
ature, in units of [N/m].
smiless SMILES strings for all chemicals in the mixture.
solubility_parameters Pure component solubility parameters of the chemicals in the
mixture at its current temperature and pressure, in units of [Pa^0.5].
synonymss Lists of synonyms for all chemicals in the mixture.
UNIFAC_Dortmund_groups List of dictionaries of Dortmund UNIFAC subgroup: count
groups for each chemcial in the mixture.
UNIFAC_groups List of dictionaries of UNIFAC subgroup: count groups for each chemical
in the mixture.
Vm Molar volume of the mixture at its current phase and temperature and pressure, in units of
[m^3/mol].
Vmg Gas-phase molar volume of the mixture at its current temperature, pressure, and composi-
tion in units of [mol/m^3].
Vmgs Pure component gas-phase molar volumes of the chemicals in the mixture at its current
temperature and pressure, in units of [mol/m^3].
Vmg_STP Gas-phase molar volume of the mixture at 298.15 K and 101.325 kPa, and the current
composition in units of [mol/m^3].
Vml Liquid-phase molar volume of the mixture at its current temperature, pressure, and com-
position in units of [mol/m^3].
Vmls Pure component liquid-phase molar volumes of the chemicals in the mixture at its current
temperature and pressure, in units of [mol/m^3].
Vml_STP Liquid-phase molar volume of the mixture at 298.15 K and 101.325 kPa, and the
current composition in units of [mol/m^3].
Vmss Pure component solid-phase molar volumes of the chemicals in the mixture at its current
temperature, in units of [mol/m^3].
Z Compressibility factor of the mixture at its current phase and temperature and pressure, [di-
mensionless].

1.1. thermo package 243


thermo Documentation, Release 0.1

Zg Compressibility factor of the mixture in the gas phase at the current temperature, pressure,
and composition, [dimensionless].
Zgs Pure component compressibility factors of the chemicals in the mixture in the gas phase at
the current temperature and pressure, [dimensionless].
Zg_STP Gas-phase compressibility factor of the mixture at 298.15 K and 101.325 kPa, and the
current composition, [dimensionless].
Zl Compressibility factor of the mixture in the liquid phase at the current temperature, pressure,
and composition, [dimensionless].
Zls Pure component compressibility factors of the chemicals in the liquid phase at the current
temperature and pressure, [dimensionless].
Zl_STP Liquid-phase compressibility factor of the mixture at 298.15 K and 101.325 kPa, and
the current composition, [dimensionless].
Zss Pure component compressibility factors of the chemicals in the mixture in the solid phase
at the current temperature and pressure, [dimensionless].

1.1.1.21.2 Methods

Vfgs([T, P]) Volume fractions of all species in a hypothetical pure-


gas phase at the current or specified temperature and
pressure.
Vfls([T, P]) Volume fractions of all species in a hypothetical pure-
liquid phase at the current or specified temperature and
pressure.
draw_2d([Hs]) Interface for drawing a 2D image of all the molecules in
the mixture.

Bond
Capillary
Grashof
Jakob
Peclet_heat
Reynolds
Weber
calculate
calculate_PH
calculate_PS
calculate_TH
calculate_TS
set_Chemical_property_objects
set_TP
set_TP_sources
set_chemical_TP
set_chemical_constants
set_constant_sources
set_constants
set_eos
set_phase

244 Chapter 1. thermo


thermo Documentation, Release 0.1

API
API gravity of the hypothetical liquid phase of the mixture, [degrees]. The reference condition is water at
15.6 °C (60 °F) and 1 atm (rho=999.016 kg/m^3, standardized).

1.1.1.21.3 Examples

>>> Mixture(['hexane', 'decane'], ws=[0.5, 0.5]).API


71.35326639656284

Bond(L=None)
Bvirial
Second virial coefficient of the gas phase of the mixture at its current temperature, pressure, and composi-
tion in units of [mol/m^3].
This property uses the object-oriented interface thermo.volume.VolumeGasMixture, converting
its result with thermo.utils.B_from_Z.

1.1.1.21.4 Examples

>>> Mixture(['hexane'], ws=[1], T=300, P=1E5).Bvirial


-0.0014869761738013018

Capillary(V=None)
Cp
Mass heat capacity of the mixture at its current phase and temperature, in units of [J/kg/K].

1.1.1.21.5 Examples

>>> w = Mixture(['water'], ws=[1])


>>> w.Cp, w.phase
(4180.597021827336, 'l')
>>> Pd = Mixture(['palladium'], ws=[1])
>>> Pd.Cp, Pd.phase
(234.26767209171211, 's')

Cpg
Gas-phase heat capacity of the mixture at its current temperature , and composition in units of [J/kg/K].
For calculation of this property at other temperatures or compositions, or specifying manually the
method used to calculate it, and more - see the object oriented interface thermo.heat_capacity.
HeatCapacityGasMixture; each Mixture instance creates one to actually perform the calculations.
Note that that interface provides output in molar units.

1.1.1.21.6 Examples

>>> Mixture(['oxygen', 'nitrogen'], ws=[.4, .6], T=350, P=1E6).Cpg


995.8911053614883

Cpgm
Gas-phase heat capacity of the mixture at its current temperature and composition, in units of [J/mol/K].

1.1. thermo package 245


thermo Documentation, Release 0.1

For calculation of this property at other temperatures or compositions, or specifying manually the
method used to calculate it, and more - see the object oriented interface thermo.heat_capacity.
HeatCapacityGasMixture; each Mixture instance creates one to actually perform the calculations.

1.1.1.21.7 Examples

>>> Mixture(['oxygen', 'nitrogen'], ws=[.4, .6], T=350, P=1E6).Cpgm


29.361044582498046

Cpgms
Gas-phase ideal gas heat capacity of the chemicals at its current temperature, in units of [J/mol/K].

1.1.1.21.8 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).Cpgms


[89.55804092586159, 111.70390334788907]

Cpgs
Gas-phase pure component heat capacity of the chemicals in the mixture at its current temperature, in units
of [J/kg/K].

1.1.1.21.9 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).Cpgs


[1146.5360555565146, 1212.3488046342566]

Cpl
Liquid-phase heat capacity of the mixture at its current temperature and composition, in units of [J/kg/K].
For calculation of this property at other temperatures or compositions, or specifying manually the
method used to calculate it, and more - see the object oriented interface thermo.heat_capacity.
HeatCapacityLiquidMixture; each Mixture instance creates one to actually perform the calcula-
tions. Note that that interface provides output in molar units.

1.1.1.21.10 Examples

>>> Mixture(['water', 'sodium chloride'], ws=[.9, .1], T=301.5).Cpl


3735.4604049449786

Cplm
Liquid-phase heat capacity of the mixture at its current temperature and composition, in units of [J/mol/K].
For calculation of this property at other temperatures or compositions, or specifying manually the
method used to calculate it, and more - see the object oriented interface thermo.heat_capacity.
HeatCapacityLiquidMixture; each Mixture instance creates one to actually perform the calcula-
tions.

246 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.21.11 Examples

>>> Mixture(['toluene', 'decane'], ws=[.9, .1], T=300).Cplm


168.29157865567112

Cplms
Liquid-phase pure component heat capacity of the chemicals in the mixture at its current temperature, in
units of [J/mol/K].

1.1.1.21.12 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).Cplms


[140.9113971170526, 163.62584810669068]

Cpls
Liquid-phase pure component heat capacity of the chemicals in the mixture at its current temperature, in
units of [J/kg/K].

1.1.1.21.13 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).Cpls


[1803.9697581961016, 1775.869915141704]

Cpm
Molar heat capacity of the mixture at its current phase and temperature, in units of [J/mol/K]. Available
only if single phase.

1.1.1.21.14 Examples

>>> Mixture(['ethylbenzene'], ws=[1], T=550, P=3E6).Cpm


294.18449553310046

Cps
Solid-phase heat capacity of the mixture at its current temperature and composition, in units of [J/kg/K].
For calculation of this property at other temperatures or compositions, or specifying manually the
method used to calculate it, and more - see the object oriented interface thermo.heat_capacity.
HeatCapacitySolidMixture; each Mixture instance creates one to actually perform the calcula-
tions. Note that that interface provides output in molar units.

1.1.1.21.15 Examples

>>> Mixture(['silver', 'platinum'], ws=[0.95, 0.05]).Cps


229.55145722105294

Cpsm
Solid-phase heat capacity of the mixture at its current temperature and composition, in units of [J/mol/K].
For calculation of this property at other temperatures or compositions, or specifying manually the

1.1. thermo package 247


thermo Documentation, Release 0.1

method used to calculate it, and more - see the object oriented interface thermo.heat_capacity.
HeatCapacitySolidMixture; each Mixture instance creates one to actually perform the calcula-
tions.

1.1.1.21.16 Examples

>>> Mixture(['silver', 'platinum'], ws=[0.95, 0.05]).Cpsm


25.32745719036059

Cpsms
Solid-phase pure component heat capacity of the chemicals in the mixture at its current temperature, in
units of [J/mol/K].

1.1.1.21.17 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).Cpsms


[109.77384365511931, 135.22614707678474]

Cpss
Solid-phase pure component heat capacity of the chemicals in the mixture at its current temperature, in
units of [J/kg/K].

1.1.1.21.18 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).Cpss


[1405.341925822248, 1467.6412627521154]

Cvg
Gas-phase ideal-gas contant-volume heat capacity of the mixture at its current temperature, in units of
[J/kg/K]. Subtracts R from the ideal-gas heat capacity; does not include pressure-compensation from an
equation of state.

1.1.1.21.19 Examples

>>> Mixture(['water'], ws=[1], T=520).Cvg


1506.1471795798861

Cvgm
Gas-phase ideal-gas contant-volume heat capacity of the mixture at its current temperature and compo-
sition, in units of [J/mol/K]. Subtracts R from the ideal-gas heat capacity; does not include pressure-
compensation from an equation of state.

1.1.1.21.20 Examples

>>> Mixture(['water'], ws=[1], T=520).Cvgm


27.13366316134193

248 Chapter 1. thermo


thermo Documentation, Release 0.1

Cvgms
Gas-phase pure component ideal-gas contant-volume heat capacities of the chemicals in the mixture at its
current temperature, in units of [J/mol/K]. Subtracts R from the ideal-gas heat capacities; does not include
pressure-compensation from an equation of state.

1.1.1.21.21 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).Cvgms


[81.2435811258616, 103.38944354788907]

Cvgs
Gas-phase pure component ideal-gas contant-volume heat capacities of the chemicals in the mixture at its
current temperature, in units of [J/kg/K]. Subtracts R from the ideal-gas heat capacity; does not include
pressure-compensation from an equation of state.

1.1.1.21.22 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).Cvgs


[1040.093040003431, 1122.1100117398266]

Grashof(Tw=None, L=None)
H = None
Hm = None
Hvapms
Pure component enthalpies of vaporization of the chemicals in the mixture at its current temperature, in
units of [J/mol].

1.1.1.21.23 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).Hvapms


[32639.806783391632, 36851.7902195611]

Hvaps
Enthalpy of vaporization of the chemicals in the mixture at its current temperature, in units of [J/kg].

1.1.1.21.24 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).Hvaps


[417859.9144942896, 399961.16950519773]

IUPAC_names
IUPAC names for all chemicals in the mixture.

1.1.1.21.25 Examples

>>> Mixture(['1-hexene', '1-nonene'], zs=[.7, .3]).IUPAC_names


['hex-1-ene', 'non-1-ene']

1.1. thermo package 249


thermo Documentation, Release 0.1

InChI_Keys
InChI keys for all chemicals in the mixture.

1.1.1.21.26 Examples

>>> Mixture(['1-nonene'], zs=[1]).InChI_Keys


['JRZJOMJEPLMPRA-UHFFFAOYSA-N']

InChIs
InChI strings for all chemicals in the mixture.

1.1.1.21.27 Examples

>>> Mixture(['methane', 'ethane', 'propane', 'butane'],


... zs=[0.25, 0.25, 0.25, 0.25]).InChIs
['CH4/h1H4', 'C2H6/c1-2/h1-2H3', 'C3H8/c1-3-2/h3H2,1-2H3', 'C4H10/c1-3-4-2/h3-
˓→4H2,1-2H3']

JT
Joule Thomson coefficient of the mixture at its current phase, temperature, and pressure in units of [K/Pa].
Available only if single phase.
(︂ )︂ [︂ (︂ )︂ ]︂
𝜕𝑇 1 𝜕𝑉 𝑉
𝜇𝐽𝑇 = = 𝑇 −𝑉 = (𝛽𝑇 − 1)
𝜕𝑃 𝐻 𝐶𝑝 𝜕𝑇 𝑃 𝐶𝑝

1.1.1.21.28 Examples

>>> Mixture(['water'], ws=[1]).JT


-2.2150394958666412e-07

JTg
Joule Thomson coefficient of the gas phase of the mixture if one exists at its current temperature and
pressure, in units of [K/Pa].
(︂ )︂ [︂ (︂ )︂ ]︂
𝜕𝑇 1 𝜕𝑉 𝑉
𝜇𝐽𝑇 = = 𝑇 −𝑉 = (𝛽𝑇 − 1)
𝜕𝑃 𝐻 𝐶𝑝 𝜕𝑇 𝑃 𝐶𝑝

1.1.1.21.29 Examples

>>> Mixture(['dodecane'], ws=[1], T=400, P=1000).JTg


5.4089897835384913e-05

JTgs
Pure component Joule Thomson coefficients of the chemicals in the mixture in the gas phase at its current
temperature and pressure, in units of [K/Pa].
(︂ )︂ [︂ (︂ )︂ ]︂
𝜕𝑇 1 𝜕𝑉 𝑉
𝜇𝐽𝑇 = = 𝑇 −𝑉 = (𝛽𝑇 − 1)
𝜕𝑃 𝐻 𝐶𝑝 𝜕𝑇 𝑃 𝐶𝑝

250 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.21.30 Examples

>>> Mixture(['benzene', 'hexane'], ws=[0.5, 0.5], T=320).JTgs


[6.0940046688790938e-05, 4.1290005523287549e-05]

JTl
Joule Thomson coefficient of the liquid phase of the mixture if one exists at its current temperature and
pressure, in units of [K/Pa].
(︂ )︂ [︂ (︂ )︂ ]︂
𝜕𝑇 1 𝜕𝑉 𝑉
𝜇𝐽𝑇 = = 𝑇 −𝑉 = (𝛽𝑇 − 1)
𝜕𝑃 𝐻 𝐶𝑝 𝜕𝑇 𝑃 𝐶𝑝

1.1.1.21.31 Examples

>>> Mixture(['dodecane'], ws=[1], T=400).JTl


-3.193910574559279e-07

JTls
Pure component Joule Thomson coefficients of the chemicals in the mixture in the liquid phase at its
current temperature and pressure, in units of [K/Pa].
(︂ )︂ [︂ (︂ )︂ ]︂
𝜕𝑇 1 𝜕𝑉 𝑉
𝜇𝐽𝑇 = = 𝑇 −𝑉 = (𝛽𝑇 − 1)
𝜕𝑃 𝐻 𝐶𝑝 𝜕𝑇 𝑃 𝐶𝑝

1.1.1.21.32 Examples

>>> Mixture(['benzene', 'hexane'], ws=[0.5, 0.5], T=320).JTls


[-3.8633730709853161e-07, -3.464395792560331e-07]

Jakob(Tw=None)
PSRK_groups
List of dictionaries of PSRK subgroup: count groups for each chemical in the mixture. Uses the PSRK
subgroups, as determined by DDBST’s online service.

1.1.1.21.33 Examples

>>> pprint(Mixture(['1-pentanol', 'decane'], ws=[0.5, 0.5]).PSRK_groups)


[{1: 1, 2: 4, 14: 1}, {1: 2, 2: 8}]

Peclet_heat(V=None, D=None)
Pr
Prandtl number of the mixture at its current temperature, pressure, and phase; [dimensionless]. Available
only if single phase.
𝐶𝑝 𝜇
𝑃𝑟 =
𝑘

1.1. thermo package 251


thermo Documentation, Release 0.1

1.1.1.21.34 Examples

>>> Mixture(['acetone'], ws=[1]).Pr


4.450368847076066

Prg
Prandtl number of the gas phase of the mixture if one exists at its current temperature and pressure, [di-
mensionless].
𝐶𝑝 𝜇
𝑃𝑟 =
𝑘

1.1.1.21.35 Examples

>>> Mixture(['NH3'], ws=[1]).Prg


0.8472637319330079

Prgs
Pure component Prandtl numbers of the gas phase of the chemicals in the mixture at its current temperature
and pressure, [dimensionless].
𝐶𝑝 𝜇
𝑃𝑟 =
𝑘

1.1.1.21.36 Examples

>>> Mixture(['benzene', 'hexane'], ws=[0.5, 0.5], T=320).Prgs


[0.7810364900059606, 0.7843703955226016]

Prl
Prandtl number of the liquid phase of the mixture if one exists at its current temperature and pressure,
[dimensionless].
𝐶𝑝 𝜇
𝑃𝑟 =
𝑘

1.1.1.21.37 Examples

>>> Mixture(['nitrogen'], ws=[1], T=70).Prl


2.7655015690791696

Prls
Pure component Prandtl numbers of the liquid phase of the chemicals in the mixture at its current temper-
ature and pressure, [dimensionless].
𝐶𝑝 𝜇
𝑃𝑟 =
𝑘

1.1.1.21.38 Examples

252 Chapter 1. thermo


thermo Documentation, Release 0.1

>>> Mixture(['benzene', 'hexane'], ws=[0.5, 0.5], T=320).Prls


[6.13542244155373, 5.034509376420631]

Psats
Pure component vapor pressures of the chemicals in the mixture at its current temperature, in units of [Pa].

1.1.1.21.39 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).Psats


[32029.25774454549, 10724.419010511821]

PubChems
PubChem Component ID numbers for all chemicals in the mixture.

1.1.1.21.40 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5]).PubChems


[241, 1140]

R_specific
Specific gas constant of the mixture, in units of [J/kg/K].

1.1.1.21.41 Examples

>>> Mixture(['N2', 'O2'], zs=[0.79, .21]).R_specific


288.1928437986195

Reynolds(V=None, D=None)
SG
Specific gravity of the mixture, [dimensionless].
For gas-phase conditions, this is calculated at 15.6 °C (60 °F) and 1 atm for the mixture and the reference
fluid, air. For liquid and solid phase conditions, this is calculated based on a reference fluid of water at 4°C
at 1 atm, but the with the liquid or solid mixture’s density at the currently specified conditions.

1.1.1.21.42 Examples

>>> Mixture('MTBE').SG
0.7428160596603596

SGg
Specific gravity of a hypothetical gas phase of the mixture, . [dimensionless]. The reference condition is air
at 15.6 °C (60 °F) and 1 atm (rho=1.223 kg/m^3). The definition for gases uses the compressibility factor
of the reference gas and the mixture both at the reference conditions, not the conditions of the mixture.

1.1. thermo package 253


thermo Documentation, Release 0.1

1.1.1.21.43 Examples

>>> Mixture('argon').SGg
1.3800407778218216

SGl
Specific gravity of a hypothetical liquid phase of the mixture at the specified temperature and pressure,
[dimensionless]. The reference condition is water at 4 °C and 1 atm (rho=999.017 kg/m^3). For liquids,
SG is defined that the reference chemical’s T and P are fixed, but the chemical itself varies with the
specified T and P.

1.1.1.21.44 Examples

>>> Mixture('water', ws=[1], T=365).SGl


0.9650065522428539

SGs
Specific gravity of a hypothetical solid phase of the mixture at the specified temperature and pressure,
[dimensionless]. The reference condition is water at 4 °C and 1 atm (rho=999.017 kg/m^3). The SG
varries with temperature and pressure but only very slightly.
UNIFAC_Dortmund_groups
List of dictionaries of Dortmund UNIFAC subgroup: count groups for each chemcial in the mixture. Uses
the Dortmund UNIFAC subgroups, as determined by DDBST’s online service.

1.1.1.21.45 Examples

>>> pprint(Mixture(['1-pentanol', 'decane'], ws=[0.5, 0.5]).UNIFAC_Dortmund_


˓→groups)

[{1: 1, 2: 4, 14: 1}, {1: 2, 2: 8}]

UNIFAC_groups
List of dictionaries of UNIFAC subgroup: count groups for each chemical in the mixture. Uses the original
UNIFAC subgroups, as determined by DDBST’s online service.

1.1.1.21.46 Examples

>>> pprint(Mixture(['1-pentanol', 'decane'], ws=[0.5, 0.5]).UNIFAC_groups)


[{1: 1, 2: 4, 14: 1}, {1: 2, 2: 8}]

V_over_F = None
Vfgs(T=None, P=None)
Volume fractions of all species in a hypothetical pure-gas phase at the current or specified temperature and
pressure. If temperature or pressure are specified, the non-specified property is assumed to be that of the
mixture. Note this is a method, not a property. Volume fractions are calculated based on pure species
volumes only.

254 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.21.47 Examples

>>> Mixture(['sulfur hexafluoride', 'methane'], zs=[.2, .9], T=315).Vfgs()


[0.18062059238682632, 0.8193794076131737]

>>> S = Mixture(['sulfur hexafluoride', 'methane'], zs=[.1, .9])


>>> S.Vfgs(P=1E2)
[0.0999987466608421, 0.9000012533391578]

Vfls(T=None, P=None)
Volume fractions of all species in a hypothetical pure-liquid phase at the current or specified temperature
and pressure. If temperature or pressure are specified, the non-specified property is assumed to be that of
the mixture. Note this is a method, not a property. Volume fractions are calculated based on pure species
volumes only.

1.1.1.21.48 Examples

>>> Mixture(['hexane', 'pentane'], zs=[.5, .5], T=315).Vfls()


[0.5299671144566751, 0.47003288554332484]

>>> S = Mixture(['hexane', 'decane'], zs=[0.25, 0.75])


>>> S.Vfls(298.16, 101326)
[0.18301434895886864, 0.8169856510411313]

Vm
Molar volume of the mixture at its current phase and temperature and pressure, in units of [m^3/mol].
Available only if single phase.

1.1.1.21.49 Examples

>>> Mixture(['ethylbenzene'], ws=[1], T=550, P=3E6).Vm


0.00017758024401627633

Vmg
Gas-phase molar volume of the mixture at its current temperature, pressure, and composition in units
of [mol/m^3]. For calculation of this property at other temperatures or pressures or compositions, or
specifying manually the method used to calculate it, and more - see the object oriented interface thermo.
volume.VolumeGasMixture; each Mixture instance creates one to actually perform the calculations.

1.1.1.21.50 Examples

>>> Mixture(['hexane'], ws=[1], T=300, P=2E5).Vmg


0.010888694235142216

Vmg_STP
Gas-phase molar volume of the mixture at 298.15 K and 101.325 kPa, and the current composition in units
of [mol/m^3].

1.1. thermo package 255


thermo Documentation, Release 0.1

1.1.1.21.51 Examples

>>> Mixture(['nitrogen'], ws=[1]).Vmg_STP


0.023832508854853822

Vmgs
Pure component gas-phase molar volumes of the chemicals in the mixture at its current temperature and
pressure, in units of [mol/m^3].

1.1.1.21.52 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).Vmgs


[0.024929001982294974, 0.024150186467130488]

Vml
Liquid-phase molar volume of the mixture at its current temperature, pressure, and composition in units
of [mol/m^3]. For calculation of this property at other temperatures or pressures or compositions, or spec-
ifying manually the method used to calculate it, and more - see the object oriented interface thermo.
volume.VolumeLiquidMixture; each Mixture instance creates one to actually perform the calcu-
lations.

1.1.1.21.53 Examples

>>> Mixture(['cyclobutane'], ws=[1], T=225).Vml


7.42395423425395e-05

Vml_STP
Liquid-phase molar volume of the mixture at 298.15 K and 101.325 kPa, and the current composition in
units of [mol/m^3].

1.1.1.21.54 Examples

>>> Mixture(['cyclobutane'], ws=[1]).Vml_STP


8.143327329133706e-05

Vmls
Pure component liquid-phase molar volumes of the chemicals in the mixture at its current temperature and
pressure, in units of [mol/m^3].

1.1.1.21.55 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).Vmls


[9.188896727673715e-05, 0.00010946199496993461]

Vms = None
Vmss
Pure component solid-phase molar volumes of the chemicals in the mixture at its current temperature, in
units of [mol/m^3].

256 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.21.56 Examples

>>> Mixture(['iron'], ws=[1], T=320).Vmss


[7.09593392630242e-06]

Weber(V=None, D=None)
Z
Compressibility factor of the mixture at its current phase and temperature and pressure, [dimensionless].
Available only if single phase.

1.1.1.21.57 Examples

>>> Mixture(['MTBE'], ws=[1], T=900, P=1E-2).Z


0.9999999999056376

Zg
Compressibility factor of the mixture in the gas phase at the current temperature, pressure, and composi-
tion, [dimensionless].
Utilizes the object oriented interface and thermo.volume.VolumeGasMixture to perform the ac-
tual calculation of molar volume.

1.1.1.21.58 Examples

>>> Mixture(['hexane'], ws=[1], T=300, P=1E5).Zg


0.9403859376888882

Zg_STP
Gas-phase compressibility factor of the mixture at 298.15 K and 101.325 kPa, and the current composition,
[dimensionless].

1.1.1.21.59 Examples

>>> Mixture(['nitrogen'], ws=[1]).Zg_STP


0.9995520809691023

Zgs
Pure component compressibility factors of the chemicals in the mixture in the gas phase at the current
temperature and pressure, [dimensionless].

1.1.1.21.60 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).Zgs


[0.9493743379816593, 0.9197146081359057]

Zl
Compressibility factor of the mixture in the liquid phase at the current temperature, pressure, and compo-
sition, [dimensionless].

1.1. thermo package 257


thermo Documentation, Release 0.1

Utilizes the object oriented interface and thermo.volume.VolumeLiquidMixture to perform the


actual calculation of molar volume.

1.1.1.21.61 Examples

>>> Mixture(['water'], ws=[1]).Zl


0.0007385375470263454

Zl_STP
Liquid-phase compressibility factor of the mixture at 298.15 K and 101.325 kPa, and the current compo-
sition, [dimensionless].

1.1.1.21.62 Examples

>>> Mixture(['cyclobutane'], ws=[1]).Zl_STP


0.0033285083663950068

Zls
Pure component compressibility factors of the chemicals in the liquid phase at the current temperature and
pressure, [dimensionless].

1.1.1.21.63 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).Zls


[0.0034994191720201235, 0.004168655010037687]

Zss
Pure component compressibility factors of the chemicals in the mixture in the solid phase at the current
temperature and pressure, [dimensionless].

1.1.1.21.64 Examples

>>> Mixture(['palladium'], ws=[1]).Zss


[0.00036248477437931853]

alpha
Thermal diffusivity of the mixture at its current temperature, pressure, and phase in units of [m^2/s].
Available only if single phase.

𝑘
𝛼=
𝜌𝐶𝑝

1.1.1.21.65 Examples

>>> Mixture(['furfural'], ws=[1]).alpha


7.672866198927953e-08

258 Chapter 1. thermo


thermo Documentation, Release 0.1

alphag
Thermal diffusivity of the gas phase of the mixture if one exists at its current temperature and pressure, in
units of [m^2/s].
𝑘
𝛼=
𝜌𝐶𝑝

1.1.1.21.66 Examples

>>> Mixture(['ammonia'], ws=[1]).alphag


1.6931865425158556e-05

alphags
Pure component thermal diffusivities of the chemicals in the mixture in the gas phase at the current tem-
perature and pressure, in units of [m^2/s].

𝑘
𝛼=
𝜌𝐶𝑝

1.1.1.21.67 Examples

>>> Mixture(['benzene', 'hexane'], ws=[0.5, 0.5], T=320).alphags


[3.3028044028118324e-06, 2.4413332489215457e-06]

alphal
Thermal diffusivity of the liquid phase of the mixture if one exists at its current temperature and pressure,
in units of [m^2/s].
𝑘
𝛼=
𝜌𝐶𝑝

1.1.1.21.68 Examples

>>> Mixture(['nitrogen'], ws=[1], T=70).alphal


9.504101801042264e-08

alphals
Pure component thermal diffusivities of the chemicals in the mixture in the liquid phase at the current
temperature and pressure, in units of [m^2/s].

𝑘
𝛼=
𝜌𝐶𝑝

1.1.1.21.69 Examples

>>> Mixture(['benzene', 'hexane'], ws=[0.5, 0.5], T=320).alphals


[8.732683564481583e-08, 7.57355434073289e-08]

atom_fractions
Dictionary of atomic fractions for each atom in the mixture.

1.1. thermo package 259


thermo Documentation, Release 0.1

1.1.1.21.70 Examples

>>> Mixture(['CO2', 'O2'], zs=[0.5, 0.5]).atom_fractions


{'C': 0.2, 'O': 0.8}

atom_fractionss
List of dictionaries of atomic fractions for all chemicals in the mixture.

1.1.1.21.71 Examples

>>> Mixture(['oxygen', 'nitrogen'], zs=[.5, .5]).atom_fractionss


[{'O': 1.0}, {'N': 1.0}]

atomss
List of dictionaries of atom counts for all chemicals in the mixture.

1.1.1.21.72 Examples

>>> Mixture(['nitrogen', 'oxygen'], zs=[.01, .99]).atomss


[{'N': 2}, {'O': 2}]

calculate(T=None, P=None)
calculate_PH(P, H)
calculate_PS(P, S)
calculate_TH(T, H)
calculate_TS(T, S)
charge_balance
Charge imbalance of the mixture, in units of [faraday]. Mixtures meeting the electroneutrality condition
will have an imbalance of 0.

1.1.1.21.73 Examples

>>> Mixture(['Na+', 'Cl-', 'water'], zs=[.01, .01, .98]).charge_balance


0.0

charges
Charges for all chemicals in the mixture, [faraday].

1.1.1.21.74 Examples

>>> Mixture(['water', 'sodium ion', 'chloride ion'], zs=[.9, .05, .05]).


˓→charges

[0, 1, -1]

conductivity = None

260 Chapter 1. thermo


thermo Documentation, Release 0.1

draw_2d(Hs=False)
Interface for drawing a 2D image of all the molecules in the mixture. Requires an HTML5 browser, and
the libraries RDKit and IPython. An exception is raised if either of these libraries is absent.
Parameters
Hs [bool] Whether or not to show hydrogen

1.1.1.21.75 Examples

Mixture([‘natural gas’]).draw_2d()
economic_statuses
List of dictionaries of the economic status for all chemicals in the mixture.

1.1.1.21.76 Examples

>>> pprint(Mixture(['o-xylene', 'm-xylene'], zs=[.5, .5]).economic_statuses)


[["US public: {'Manufactured': 0.0, 'Imported': 0.0, 'Exported': 0.0}",
u'100,000 - 1,000,000 tonnes per annum',
'OECD HPV Chemicals'],
["US public: {'Manufactured': 39.805, 'Imported': 0.0, 'Exported': 0.0}",
u'100,000 - 1,000,000 tonnes per annum',
'OECD HPV Chemicals']]

eos
Equation of state object held by the mixture. See : obj:thermo.eos_mix for a full listing.
eos_in_a_box = []
formulas
Chemical formulas for all chemicals in the mixture.

1.1.1.21.77 Examples

>>> Mixture(['ethanol', 'trichloroethylene', 'furfuryl alcohol'],


... ws=[0.5, 0.2, 0.3]).formulas
['C2H6O', 'C2HCl3', 'C5H6O2']

isentropic_exponent
Gas-phase ideal-gas isentropic exponent of the mixture at its current temperature, [dimensionless]. Does
not include pressure-compensation from an equation of state.

1.1.1.21.78 Examples

>>> Mixture(['hydrogen'], ws=[1]).isentropic_exponent


1.405237786321222

isentropic_exponents
Gas-phase pure component ideal-gas isentropic exponent of the chemicals in the mixture at its current
temperature, [dimensionless].
Does not include pressure-compensation from an equation of state.

1.1. thermo package 261


thermo Documentation, Release 0.1

1.1.1.21.79 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).isentropic_exponents


[1.1023398979313739, 1.080418846592871]

isobaric_expansion
Isobaric (constant-pressure) expansion of the mixture at its current phase, temperature, and pressure in
units of [1/K]. Available only if single phase.
(︂ )︂
1 𝜕𝑉
𝛽=
𝑉 𝜕𝑇 𝑃

1.1.1.21.80 Examples

>>> Mixture(['water'], ws=[1], T=647.1, P=22048320.0).isobaric_expansion


0.34074205839222449

isobaric_expansion_g = None
isobaric_expansion_gs
Pure component isobaric (constant-pressure) expansions of the chemicals in the mixture in the gas phase
at its current temperature and pressure, in units of [1/K].
(︂ )︂
1 𝜕𝑉
𝛽=
𝑉 𝜕𝑇 𝑃

1.1.1.21.81 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).isobaric_expansion_


˓→gs

[0.0038091518363900499, 0.0043556759306508453]

isobaric_expansion_l = None
isobaric_expansion_ls
Pure component isobaric (constant-pressure) expansions of the chemicals in the mixture in the liquid phase
at its current temperature and pressure, in units of [1/K].
(︂ )︂
1 𝜕𝑉
𝛽=
𝑉 𝜕𝑇 𝑃

1.1.1.21.82 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).isobaric_expansion_


˓→ls

[0.0012736035771253886, 0.0011234157437069571]

k
Thermal conductivity of the mixture at its current phase, temperature, and pressure in units of [W/m/K].
Available only if single phase.

262 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.21.83 Examples

>>> Mixture(['ethanol'], ws=[1], T=300).kl


0.16313594741877802

kg
Thermal conductivity of the mixture in the gas phase at its current temperature, pressure, and composition
in units of [Pa*s].
For calculation of this property at other temperatures and pressures, or specifying manually the method
used to calculate it, and more - see the object oriented interface thermo.thermal_conductivity.
ThermalConductivityGasMixture; each Mixture instance creates one to actually perform the
calculations.

1.1.1.21.84 Examples

>>> Mixture(['water'], ws=[1], T=500).kg


0.036035173297862676

kgs
Pure component thermal conductivies of the chemicals in the mixture in the gas phase at its current tem-
perature and pressure, in units of [W/m/K].

1.1.1.21.85 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).kgs


[0.011865404482987936, 0.010981336502491088]

kl
Thermal conductivity of the mixture in the liquid phase at its current temperature, pressure, and composi-
tion in units of [Pa*s].
For calculation of this property at other temperatures and pressures, or specifying manually the method
used to calculate it, and more - see the object oriented interface thermo.thermal_conductivity.
ThermalConductivityLiquidMixture; each Mixture instance creates one to actually perform the
calculations.

1.1.1.21.86 Examples

>>> Mixture(['water'], ws=[1], T=320).kl


0.6369957248212118

kls
Pure component thermal conductivities of the chemicals in the mixture in the liquid phase at its current
temperature and pressure, in units of [W/m/K].

1.1.1.21.87 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).kls


[0.13391538485205587, 0.12429339088930591]

1.1. thermo package 263


thermo Documentation, Release 0.1

ks = None
legal_statuses
List of dictionaries of the legal status for all chemicals in the mixture.

1.1.1.21.88 Examples

>>> pprint(Mixture(['oxygen', 'nitrogen'], zs=[.5, .5]).legal_statuses)


[{'DSL': 'LISTED',
'EINECS': 'LISTED',
'NLP': 'UNLISTED',
'SPIN': 'LISTED',
'TSCA': 'LISTED'},
{'DSL': 'LISTED',
'EINECS': 'LISTED',
'NLP': 'UNLISTED',
'SPIN': 'LISTED',
'TSCA': 'LISTED'}]

mass_fractions
Dictionary of mass fractions for each atom in the mixture.

1.1.1.21.89 Examples

>>> Mixture(['CO2', 'O2'], zs=[0.5, 0.5]).mass_fractions


{'C': 0.15801826905745822, 'O': 0.8419817309425419}

mass_fractionss
List of dictionaries of mass fractions for all chemicals in the mixture.

1.1.1.21.90 Examples

>>> Mixture(['oxygen', 'nitrogen'], zs=[.5, .5]).mass_fractionss


[{'O': 1.0}, {'N': 1.0}]

mu
Viscosity of the mixture at its current phase, temperature, and pressure in units of [Pa*s]. Available only
if single phase.

1.1.1.21.91 Examples

>>> Mixture(['ethanol'], ws=[1], T=400).mu


1.1853097849748213e-05

mug
Viscosity of the mixture in the gas phase at its current temperature, pressure, and composition in units of
[Pa*s].
For calculation of this property at other temperatures and pressures, or specifying manually the
method used to calculate it, and more - see the object oriented interface thermo.viscosity.
ViscosityGasMixture; each Mixture instance creates one to actually perform the calculations.

264 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.21.92 Examples

>>> Mixture(['water'], ws=[1], T=500).mug


1.7298722343367148e-05

mugs
Pure component viscosities of the chemicals in the mixture in the gas phase at its current temperature and
pressure, in units of [Pa*s].

1.1.1.21.93 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).mugs


[8.082880451060605e-06, 7.442602145854158e-06]

mul
Viscosity of the mixture in the liquid phase at its current temperature, pressure, and composition in units
of [Pa*s].
For calculation of this property at other temperatures and pressures, or specifying manually the
method used to calculate it, and more - see the object oriented interface thermo.viscosity.
ViscosityLiquidMixture; each Mixture instance creates one to actually perform the calculations.

1.1.1.21.94 Examples

>>> Mixture(['water'], ws=[1], T=320).mul


0.0005767262693751547

muls
Pure component viscosities of the chemicals in the mixture in the liquid phase at its current temperature
and pressure, in units of [Pa*s].

1.1.1.21.95 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).muls


[0.00045545522798131764, 0.00043274394349114754]

nu
Kinematic viscosity of the the mixture at its current temperature, pressure, and phase in units of [m^2/s].
Available only if single phase.
𝜇
𝜈=
𝜌

1.1.1.21.96 Examples

>>> Mixture(['argon'], ws=[1]).nu


1.3846930410865003e-05

1.1. thermo package 265


thermo Documentation, Release 0.1

nug
Kinematic viscosity of the gas phase of the mixture if one exists at its current temperature and pressure, in
units of [m^2/s].
𝜇
𝜈=
𝜌

1.1.1.21.97 Examples

>>> Mixture(['methane'], ws=[1], T=115).nug


2.5057767760931785e-06

nugs
Pure component kinematic viscosities of the gas phase of the chemicals in the mixture at its current tem-
perature and pressure, in units of [m^2/s].
𝜇
𝜈=
𝜌

1.1.1.21.98 Examples

>>> Mixture(['benzene', 'hexane'], ws=[0.5, 0.5], T=320).nugs


[2.579610757948387e-06, 1.9149095260590705e-06]

nul
Kinematic viscosity of the liquid phase of the mixture if one exists at its current temperature and pressure,
in units of [m^2/s].
𝜇
𝜈=
𝜌

1.1.1.21.99 Examples

>>> Mixture(['methane'], ws=[1], T=110).nul


2.85818467411866e-07

nuls
Pure component kinematic viscosities of the liquid phase of the chemicals in the mixture at its current
temperature and pressure, in units of [m^2/s].
𝜇
𝜈=
𝜌

1.1.1.21.100 Examples

>>> Mixture(['benzene', 'hexane'], ws=[0.5, 0.5], T=320).nuls


[5.357870271650772e-07, 3.8129130341250897e-07]

permittivites
Pure component relative permittivities of the chemicals in the mixture at its current temperature, [dimen-
sionless].

266 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.21.101 Examples

>>> Mixture(['benzene', 'hexane'], ws=[0.5, 0.5], T=320).permittivites


[2.23133472, 1.8508128]

phase = None
rho
Mass density of the mixture at its current phase and temperature and pressure, in units of [kg/m^3]. Avail-
able only if single phase.

1.1.1.21.102 Examples

>>> Mixture(['decane'], ws=[1], T=550, P=2E6).rho


498.6549441720744

rhog
Gas-phase mass density of the mixture at its current temperature, pressure, and composition in units of
[kg/m^3]. For calculation of this property at other temperatures, pressures, or compositions or specifying
manually the method used to calculate it, and more - see the object oriented interface thermo.volume.
VolumeGasMixture; each Mixture instance creates one to actually perform the calculations. Note that
that interface provides output in molar units.

1.1.1.21.103 Examples

>>> Mixture(['hexane'], ws=[1], T=300, P=2E5).rhog


7.914205150685313

rhog_STP
Gas-phase mass density of the mixture at 298.15 K and 101.325 kPa, and the current composition in units
of [kg/m^3].

1.1.1.21.104 Examples

>>> Mixture(['nitrogen'], ws=[1]).rhog_STP


1.145534453639403

rhogm
Molar density of the mixture in the gas phase at the current temperature, pressure, and composition in units
of [mol/m^3].
Utilizes the object oriented interface and thermo.volume.VolumeGasMixture to perform the ac-
tual calculation of molar volume.

1.1.1.21.105 Examples

>>> Mixture(['water'], ws=[1], T=500).rhogm


24.467426039789093

1.1. thermo package 267


thermo Documentation, Release 0.1

rhogm_STP
Molar density of the mixture in the gas phase at 298.15 K and 101.325 kPa, and the current composition,
in units of [mol/m^3].

1.1.1.21.106 Examples

>>> Mixture(['nitrogen'], ws=[1]).rhogm_STP


40.892374850585895

rhogms
Pure component molar densities of the chemicals in the gas phase at the current temperature and pressure,
in units of [mol/m^3].

1.1.1.21.107 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).rhogms


[40.11392035309789, 41.407547778608084]

rhogs
Pure-component gas-phase mass densities of the chemicals in the mixture at its current temperature and
pressure, in units of [kg/m^3].

1.1.1.21.108 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).rhogs


[3.1333721283939258, 3.8152260283954584]

rhol
Liquid-phase mass density of the mixture at its current temperature, pressure, and composition in units
of [kg/m^3]. For calculation of this property at other temperatures, pressures, compositions or specifying
manually the method used to calculate it, and more - see the object oriented interface thermo.volume.
VolumeLiquidMixture; each Mixture instance creates one to actually perform the calculations. Note
that that interface provides output in molar units.

1.1.1.21.109 Examples

>>> Mixture(['o-xylene'], ws=[1], T=297).rhol


876.9946785618097

rhol_STP
Liquid-phase mass density of the mixture at 298.15 K and 101.325 kPa, and the current composition in
units of [kg/m^3].

1.1.1.21.110 Examples

>>> Mixture(['cyclobutane'], ws=[1]).rhol_STP


688.9851989526821

268 Chapter 1. thermo


thermo Documentation, Release 0.1

rholm
Molar density of the mixture in the liquid phase at the current temperature, pressure, and composition in
units of [mol/m^3].
Utilizes the object oriented interface and thermo.volume.VolumeLiquidMixture to perform the
actual calculation of molar volume.

1.1.1.21.111 Examples

>>> Mixture(['water'], ws=[1], T=300).rholm


55317.352773503124

rholm_STP
Molar density of the mixture in the liquid phase at 298.15 K and 101.325 kPa, and the current composition,
in units of [mol/m^3].

1.1.1.21.112 Examples

>>> Mixture(['water'], ws=[1]).rholm_STP


55344.59086372442

rholms
Pure component molar densities of the chemicals in the mixture in the liquid phase at the current temper-
ature and pressure, in units of [mol/m^3].

1.1.1.21.113 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).rholms


[10882.699301520635, 9135.590853014008]

rhols
Pure-component liquid-phase mass density of the chemicals in the mixture at its current temperature and
pressure, in units of [kg/m^3].

1.1.1.21.114 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).rhols


[850.0676666084917, 841.7389069631628]

rhom
Molar density of the mixture at its current phase and temperature and pressure, in units of [mol/m^3].
Available only if single phase.

1.1.1.21.115 Examples

>>> Mixture(['1-hexanol'], ws=[1]).rhom


7853.086232143972

rhos = None

1.1. thermo package 269


thermo Documentation, Release 0.1

rhosms
Pure component molar densities of the chemicals in the solid phase at the current temperature and pressure,
in units of [mol/m^3].

1.1.1.21.116 Examples

>>> Mixture(['iron'], ws=[1], T=320).rhosms


[140925.7767033753]

rhoss
Pure component solid-phase mass density of the chemicals in the mixture at its current temperature, in
units of [kg/m^3].

1.1.1.21.117 Examples

>>> Mixture(['iron'], ws=[1], T=320).rhoss


[7869.999999999994]

ringss
List of ring counts for all chemicals in the mixture.

1.1.1.21.118 Examples

>>> Mixture(['Docetaxel', 'Paclitaxel'], zs=[.5, .5]).ringss


[6, 7]

set_Chemical_property_objects()
set_TP(T=None, P=None)
set_TP_sources()
set_chemical_TP()
set_chemical_constants()
set_constant_sources()
set_constants()
set_eos(T, P, eos=<class ’thermo.eos_mix.PRMIX’>)
set_phase()
sigma
Surface tension of the mixture at its current temperature and composition, in units of [N/m].
For calculation of this property at other temperatures, or specifying manually the method used to calculate
it, and more - see the object oriented interface thermo.interface.SurfaceTensionMixture;
each Mixture instance creates one to actually perform the calculations.

270 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.21.119 Examples

>>> Mixture(['water'], ws=[1], T=300, P=1E5).sigma


0.07176932405246211

sigmas
Pure component surface tensions of the chemicals in the mixture at its current temperature, in units of
[N/m].

1.1.1.21.120 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5], T=320).sigmas


[0.02533469712937521, 0.025254723406585546]

similarity_variables
Similarity variables for all chemicals in the mixture, see thermo.elements.
similarity_variable for the definition, [mol/g]

1.1.1.21.121 Examples

>>> Mixture(['benzene', 'toluene'], ws=[0.5, 0.5]).similarity_variables


[0.15362587797189262, 0.16279853724428964]

smiless
SMILES strings for all chemicals in the mixture.

1.1.1.21.122 Examples

>>> Mixture(['methane', 'ethane', 'propane', 'butane'],


... zs=[0.25, 0.25, 0.25, 0.25]).smiless
['C', 'CC', 'CCC', 'CCCC']

solubility_parameters
Pure component solubility parameters of the chemicals in the mixture at its current temperature and pres-
sure, in units of [Pa^0.5].
√︂
∆𝐻𝑣𝑎𝑝 − 𝑅𝑇
𝛿=
𝑉𝑚

1.1.1.21.123 Examples

>>> Mixture(['benzene', 'hexane'], ws=[0.5, 0.5], T=320).solubility_parameters


[18062.51359608708, 14244.12852702228]

synonymss
Lists of synonyms for all chemicals in the mixture.

1.1. thermo package 271


thermo Documentation, Release 0.1

1.1.1.21.124 Examples

>>> Mixture(['Tetradecene', 'Pentadecene'], zs=[.1, .9]).synonymss


[['tetradec-2-ene', 'tetradecene', '2-tetradecene', 'tetradec-2-ene', '26952-
˓→13-6', '35953-53-8', '1652-97-7'], ['pentadec-1-ene', '1-pentadecene',

˓→'pentadecene,1-', 'pentadec-1-ene', '13360-61-7', 'pentadecene']]

xs = None
ys = None

1.1.1.22 thermo.permittivity module

thermo.permittivity.permittivity_IAPWS(T, rho)
Calculate the relative permittivity of pure water as a function of. temperature and density. Assumes the 1997
IAPWS [1] formulation.

1 + 𝐴 + 5𝐵 + (9 + 2𝐴 + 18𝐵 + 𝐴2 + 10𝐴𝐵 + 9𝐵 2 )0.5


𝜖(𝜌, 𝑇 ) =
4(1 − 𝐵)
𝑁𝐴 𝜇2 𝜌𝑔
𝐴(𝜌, 𝑇 ) =
𝑀 𝜖0 𝑘𝑇
𝑁𝐴 𝛼𝜌
𝐵(𝜌) =
3𝑀 𝜖0
11 (︂ )︂−1.2
∑︁ 647.096 −1
𝑔(𝛿, 𝜏 ) = 1 + 𝑛𝑖 𝛿 𝐼𝑖 𝜏 𝐽𝑖 + 𝑛12 𝛿 𝜏 −1
𝑖=1
228
𝛿 = 𝜌/(322 kg/m3 )
𝜏 = 𝑇 /647.096K

Parameters
T [float] Temperature of water [K]
rho [float] Mass density of water at T and P [kg/m^3]
Returns
epsilon [float] Relative permittivity of water at T and rho, [-]

1.1.1.22.1 Notes

Validity:
273.15 < T < 323.15 K for 0 < P < iceVI melting pressure at T or 1000 MPa, whichever is smaller.
323.15 < T < 873.15 K 0 < p < 600 MPa.
Coefficients:
ih = [1, 1, 1, 2, 3, 3, 4, 5, 6, 7, 10]; jh = [0.25, 1, 2.5, 1.5, 1.5, 2.5, 2, 2, 5, 0.5, 10]; Nh = [0.978224486826,
-0.957771379375, 0.237511794148, 0.714692244396,
-0.298217036956, -0.108863472196, 0.949327488264E-1, -.980469816509E-2, 0.165167634970E-
4, 0.937359795772E-4, -0.12317921872E-9];
polarizability = 1.636E-40 dipole = 6.138E-30

272 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.22.2 References

[1]

1.1.1.22.3 Examples

>>> permittivity_IAPWS(373., 958.46)


55.56584297721836

class thermo.permittivity.Permittivity(CASRN=”)
Bases: thermo.utils.TDependentProperty
Class for dealing with liquid permittivity as a function of temperature. Consists of one temperature-dependent
simple expression and one constant value source.
Parameters
CASRN [str, optional] The CAS number of the chemical

1.1.1.22.4 Notes

To iterate over all methods, use the list stored in permittivity_methods.


CRC: Simple polynomials for calculating permittivity over a specified temperature range only. The full ex-
pression is:

𝜖𝑟 = 𝐴 + 𝐵𝑇 + 𝐶𝑇 2 + 𝐷𝑇 3

Not all chemicals use all terms; in fact, few do. Data is available for 759 liquids, from [1].
CRC_CONSTANT: Constant permittivity values at specified temperatures only. Data is from [1], and is
available for 1303 liquids.

1.1.1.22.5 References

[1]
Attributes
T_cached
interpolation_T
interpolation_property
interpolation_property_inv
method

1.1.1.22.6 Methods

T_dependent_property(T) Method to calculate the property with sanity checking


and without specifying a specific method.
Continued on next page

1.1. thermo package 273


thermo Documentation, Release 0.1

Table 1.37 – continued from previous page


T_dependent_property_derivative(T[, or- Method to obtain a derivative of a property with respect
der]) to temperature, of a given order.
T_dependent_property_integral(T1, T2) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
T_dependent_property_integral_over_T(T1, Method to calculate the integral of a property over tem-
T2) perature with respect to temperature, using a specified
method.
__call__(T) Convenience method to calculate the property; calls
T_dependent_property.
calculate(T, method) Method to calculate permittivity of a liquid at tempera-
ture T with a given method.
calculate_derivative(T, method[, order]) Method to calculate a derivative of a property with re-
spect to temperature, of a given order using a specified
method.
calculate_integral(T1, T2, method) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
calculate_integral_over_T(T1, T2, method) Method to calculate the integral of a property over tem-
perature with respect to temperature, using a specified
method.
interpolate(T, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data.
load_all_methods() Method which picks out coefficients for the specified
chemical from the various dictionaries and DataFrames
storing it.
plot_T_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) according to either a specified list of methods, or user
methods (if set), or all methods.
select_valid_methods(T) Method to obtain a sorted list of methods which are
valid at T according to test_method_validity.
set_tabular_data(Ts, properties[, name, . . . ]) Method to set tabular data to be used for interpolation.
set_user_methods(user_methods[, forced]) Method used to select certain property methods as hav-
ing a higher priority than were set by default.
solve_prop(goal[, reset_method]) Method to solve for the temperature at which a property
is at a specified value.
test_method_validity(T, method) Method to check the validity of a method.
test_property_validity(prop) Method to test the validity of a calculated property.

extrapolate_tabular

Tmax = None
Maximum temperature at which no method can calculate the permittivity above.
Tmin = None
Minimum temperature at which no method can calculate the permittivity under.
all_methods = None
Set of all methods available for a given CASRN and properties; filled by load_all_methods.
calculate(T, method)
Method to calculate permittivity of a liquid at temperature T with a given method.
This method has no exception handling; see T_dependent_property for that.
Parameters

274 Chapter 1. thermo


thermo Documentation, Release 0.1

T [float] Temperature at which to calculate relative permittivity, [K]


method [str] Name of the method to use
Returns
epsilon [float] Relative permittivity of the liquid at T, [-]
interpolation_T = None
No interpolation transformation by default.
interpolation_property = None
No interpolation transformation by default.
interpolation_property_inv = None
No interpolation transformation by default.
load_all_methods()
Method which picks out coefficients for the specified chemical from the various dictionaries and
DataFrames storing it. All data is stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods for which the data exists for.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'relative permittivity'
property_max = 1000
Maximum valid of permittivity; highest in the data available is ~240.
property_min = 1
Relative permittivity must always be larger than 1; nothing is better than a vacuum.
ranked_methods = ['CRC', 'CRC_CONSTANT']
Default rankings of the available methods.
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by
T_dependent_property.
tabular_data = None
tabular_data, dict: Stored (Ts, properties) for any tabular data; indexed by provided or autogenerated name.
tabular_data_interpolators = None
tabular_data_interpolators, dict: Stored (extrapolator, spline) tuples which are interp1d instances for
each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_property, interpola-
tion_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had
been created is no longer used.
tabular_extrapolation_permitted = True
Allow tabular extrapolation by default.
test_method_validity(T, method)
Method to check the validity of a method. Follows the given ranges for all coefficient-based methods. For
tabular data, extrapolation outside of the range is used if tabular_extrapolation_permitted is
set; if it is, the extrapolation is considered valid for all temperatures.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.
Parameters
T [float] Temperature at which to test the method, [K]

1.1. thermo package 275


thermo Documentation, Release 0.1

method [str] Name of the method to test


Returns
validity [bool] Whether or not a method is valid
units = '-'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by T_dependent_property.

1.1.1.23 thermo.phase_change module

thermo.phase_change.Tb(CASRN, AvailableMethods=False, Method=None, IgnoreMeth-


ods=[’PSAT_DEFINITION’])
This function handles the retrieval of a chemical’s boiling point. Lookup is based on CASRNs. Will automati-
cally select a data source to use if no Method is provided; returns None if the data is not available.
Prefered sources are ‘CRC Physical Constants, organic’ for organic chemicals, and ‘CRC Physical Constants,
inorganic’ for inorganic chemicals. Function has data for approximately 13000 chemicals.
Parameters
CASRN [string] CASRN [-]
Returns
Tb [float] Boiling temperature, [K]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain Tb with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in
Tb_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain Tb for the desired chemical, and will return methods instead of Tb
IgnoreMethods [list, optional] A list of methods to ignore in obtaining the full list of methods,
useful for for performance reasons and ignoring inaccurate methods

1.1.1.23.1 Notes

A total of four methods are available for this function. They are:
• ‘CRC_ORG’, a compillation of data on organics as published in [1].
• ‘CRC_INORG’, a compillation of data on inorganic as published in [1].
• ‘YAWS’, a large compillation of data from a variety of sources; no data points are sourced in the work of
[2].
• ‘PSAT_DEFINITION’, calculation of boiling point from a vapor pressure calculation. This is normally
off by a fraction of a degree even in the best cases. Listed in IgnoreMethods by default for performance
reasons.

276 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.23.2 References

[1], [2]

1.1.1.23.3 Examples

>>> Tb('7732-18-5')
373.124

thermo.phase_change.Tm(CASRN, AvailableMethods=False, Method=None, IgnoreMethods=[])


This function handles the retrieval of a chemical’s melting point. Lookup is based on CASRNs. Will automati-
cally select a data source to use if no Method is provided; returns None if the data is not available.
Prefered sources are ‘Open Notebook Melting Points’, with backup sources ‘CRC Physical Constants, organic’
for organic chemicals, and ‘CRC Physical Constants, inorganic’ for inorganic chemicals. Function has data for
approximately 14000 chemicals.
Parameters
CASRN [string] CASRN [-]
Returns
Tm [float] Melting temperature, [K]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain Tm with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in
Tm_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain Tm for the desired chemical, and will return methods instead of Tm
IgnoreMethods [list, optional] A list of methods to ignore in obtaining the full list of methods

1.1.1.23.4 Notes

A total of three sources are available for this function. They are:
• ‘OPEN_NTBKM, a compillation of data on organics as published in [1] as Open Notebook Melting Points;
Averaged (median) values were used when multiple points were available. For more information on this
invaluable and excellent collection, see http://onswebservices.wikispaces.com/meltingpoint.
• ‘CRC_ORG’, a compillation of data on organics as published in [2].
• ‘CRC_INORG’, a compillation of data on inorganic as published in [2].

1.1.1.23.5 References

[1], [2]

1.1. thermo package 277


thermo Documentation, Release 0.1

1.1.1.23.6 Examples

>>> Tm(CASRN='7732-18-5')
273.15

thermo.phase_change.Clapeyron(T, Tc, Pc, dZ=1, Psat=101325)


Calculates enthalpy of vaporization at arbitrary temperatures using the Clapeyron equation.
The enthalpy of vaporization is given by:
ln(𝑃𝑐 /𝑃 𝑠𝑎𝑡)
∆𝐻𝑣𝑎𝑝 = 𝑅𝑇 ∆𝑍
(1 − 𝑇𝑟 )
Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
dZ [float] Change in compressibility factor between liquid and gas, []
Psat [float] Saturation pressure of fluid [Pa], optional
Returns
Hvap [float] Enthalpy of vaporization, [J/mol]

1.1.1.23.7 Notes

No original source is available for this equation. [1] claims this equation overpredicts enthalpy by several
percent. Under Tr = 0.8, dZ = 1 is a reasonable assumption. This equation is most accurate at the normal boiling
point.
Internal units are bar.
WARNING: I believe it possible that the adjustment for pressure may be incorrect

1.1.1.23.8 References

[1]

1.1.1.23.9 Examples

Problem from Perry’s examples.


>>> Clapeyron(T=294.0, Tc=466.0, Pc=5.55E6)
26512.354585061985

thermo.phase_change.Pitzer(T, Tc, omega)


Calculates enthalpy of vaporization at arbitrary temperatures using a fit by [2] to the work of Pitzer [1]; requires
a chemical’s critical temperature and acentric factor.
The enthalpy of vaporization is given by:
∆𝑣𝑎𝑝 𝐻
= 7.08(1 − 𝑇𝑟 )0.354 + 10.95𝜔(1 − 𝑇𝑟 )0.456
𝑅𝑇𝑐

278 Chapter 1. thermo


thermo Documentation, Release 0.1

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
omega [float] Acentric factor [-]
Returns
Hvap [float] Enthalpy of vaporization, [J/mol]

1.1.1.23.10 Notes

This equation is listed in [3], page 2-487 as method #2 for estimating Hvap. This cites [2].
The recommended range is 0.6 to 1 Tr. Users should expect up to 5% error. T must be under Tc, or an exception
is raised.
The original article has been reviewed and found to have a set of tabulated values which could be used instead
of the fit function to provide additional accuracy.

1.1.1.23.11 References

[1], [2], [3]

1.1.1.23.12 Examples

Example as in [3], p2-487; exp: 37.51 kJ/mol

>>> Pitzer(452, 645.6, 0.35017)


36696.736640106414

thermo.phase_change.SMK(T, Tc, omega)


Calculates enthalpy of vaporization at arbitrary temperatures using a the work of [1]; requires a chemical’s
critical temperature and acentric factor.
The enthalpy of vaporization is given by:
)︂(𝑅1) (︂ )︂ [︃(︂ )︂(𝑅2) (︂ )︂(𝑅1) ]︃
𝜔 − 𝜔 (𝑅1)
(︂
∆𝐻𝑣𝑎𝑝 ∆𝐻𝑣𝑎𝑝 ∆𝐻𝑣𝑎𝑝 ∆𝐻𝑣𝑎𝑝
= + −
𝑅𝑇𝑐 𝑅𝑇𝑐 𝜔 (𝑅2) − 𝜔 (𝑅1) 𝑅𝑇𝑐 𝑅𝑇𝑐
(︂ )︂(𝑅1)
∆𝐻𝑣𝑎𝑝
= 6.537𝜏 1/3 − 2.467𝜏 5/6 − 77.251𝜏 1.208 + 59.634𝜏 + 36.009𝜏 2 − 14.606𝜏 3
𝑅𝑇𝑐
(︂ )︂(𝑅2) (︂ )︂(𝑅1)
∆𝐻𝑣𝑎𝑝 ∆𝐻𝑣𝑎𝑝
− = −0.133𝜏 1/3 − 28.215𝜏 5/6 − 82.958𝜏 1.208 + 99.00𝜏 + 19.105𝜏 2 − 2.796𝜏 3
𝑅𝑇𝑐 𝑅𝑇𝑐
𝜏 = 1 − 𝑇 /𝑇𝑐

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
omega [float] Acentric factor [-]
Returns

1.1. thermo package 279


thermo Documentation, Release 0.1

Hvap [float] Enthalpy of vaporization, [J/mol]

1.1.1.23.13 Notes

The original article has been reviewed and found to have coefficients with slightly more precision. Additionally,
the form of the equation is slightly different, but numerically equivalent.
The refence fluids are:
𝜔0 = benzene = 0.212
𝜔1 = carbazole = 0.461
A sample problem in the article has been verified. The numerical result presented by the author requires high
numerical accuracy to obtain.

1.1.1.23.14 References

[1]

1.1.1.23.15 Examples

Problem in [1]:
>>> SMK(553.15, 751.35, 0.302)
39866.17647797959

thermo.phase_change.MK(T, Tc, omega)


Calculates enthalpy of vaporization at arbitrary temperatures using a the work of [1]; requires a chemical’s
critical temperature and acentric factor.
The enthalpy of vaporization is given by:
(0) (1)
∆𝐻𝑣𝑎𝑝 = ∆𝐻𝑣𝑎𝑝 + 𝜔∆𝐻𝑣𝑎𝑝 + 𝜔 2 ∆𝐻𝑣𝑎𝑝
(2)

(𝑖)
∆𝐻𝑣𝑎𝑝 (𝑗) (𝑗) (𝑗) (𝑗) (𝑗)
= 𝑏(𝑗) 𝜏 1/3 + 𝑏2 𝜏 5/6 + 𝑏3 𝜏 1.2083 + 𝑏4 𝜏 + 𝑏5 𝜏 2 + 𝑏6 𝜏 3
𝑅𝑇𝑐
𝜏 = 1 − 𝑇 /𝑇𝑐

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
omega [float] Acentric factor [-]
Returns
Hvap [float] Enthalpy of vaporization, [J/mol]

1.1.1.23.16 Notes

The original article has been reviewed. A total of 18 coefficients are used:
WARNING: The correlation has been implemented as described in the article, but its results seem different and
with some error. Its results match with other functions however.

280 Chapter 1. thermo


thermo Documentation, Release 0.1

Has poor behavior for low-temperature use.

1.1.1.23.17 References

[1]

1.1.1.23.18 Examples

Problem in article for SMK function.

>>> MK(553.15, 751.35, 0.302)


38727.993546377205

thermo.phase_change.Velasco(T, Tc, omega)


Calculates enthalpy of vaporization at arbitrary temperatures using a the work of [1]; requires a chemical’s
critical temperature and acentric factor.
The enthalpy of vaporization is given by:

∆𝑣𝑎𝑝 𝐻 = 𝑅𝑇𝑐 (7.2729 + 10.4962𝜔 + 0.6061𝜔 2 )(1 − 𝑇𝑟 )0.38

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
omega [float] Acentric factor [-]
Returns
Hvap [float] Enthalpy of vaporization, [J/mol]

1.1.1.23.19 Notes

The original article has been reviewed. It is regressed from enthalpy of vaporization values at 0.7Tr, from 121
fluids in REFPROP 9.1. A value in the article was read to be similar, but slightly too low from that calculated
here.

1.1.1.23.20 References

[1]

1.1.1.23.21 Examples

From graph, in [1] for perfluoro-n-heptane.

>>> Velasco(333.2, 476.0, 0.5559)


33299.41734936356

1.1. thermo package 281


thermo Documentation, Release 0.1

thermo.phase_change.Riedel(Tb, Tc, Pc)


Calculates enthalpy of vaporization at the boiling point, using the Ridel [1] CSP method. Required information
are critical temperature and pressure, and boiling point. Equation taken from [2] and [3].
The enthalpy of vaporization is given by:
ln 𝑃𝑐 − 1.013
∆𝑣𝑎𝑝 𝐻 = 1.093𝑇𝑏 𝑅
0.930 − 𝑇𝑏𝑟
Parameters
Tb [float] Boiling temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
Returns
Hvap [float] Enthalpy of vaporization at the normal boiling point, [J/mol]

1.1.1.23.22 Notes

This equation has no example calculation in any source. The source has not been verified. It is equation 4-144
in Perry’s. Perry’s also claims that errors seldom surpass 5%.
[2] is the source of example work here, showing a calculation at 0.0% error.
Internal units of pressure are bar.

1.1.1.23.23 References

[1], [2], [3]

1.1.1.23.24 Examples

Pyridine, 0.0% err vs. exp: 35090 J/mol; from Poling [2].
>>> Riedel(388.4, 620.0, 56.3E5)
35089.78989646058

thermo.phase_change.Chen(Tb, Tc, Pc)


Calculates enthalpy of vaporization using the Chen [1] correlation and a chemical’s critical temperature, pres-
sure and boiling point.
The enthalpy of vaporization is given by:
3.978𝑇𝑟 − 3.958 + 1.555 ln 𝑃𝑐
∆𝐻𝑣𝑏 = 𝑅𝑇𝑏
1.07 − 𝑇𝑟
Parameters
Tb [float] Boiling temperature of the fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
Returns
Hvap [float] Enthalpy of vaporization, [J/mol]

282 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.23.25 Notes

The formulation presented in the original article is similar, but uses units of atm and calorie instead. The form
in [2] has adjusted for this. A method for estimating enthalpy of vaporization at other conditions has also been
developed, but the article is unclear on its implementation. Based on the Pitzer correlation.
Internal units: bar and K

1.1.1.23.26 References

[1], [2]

1.1.1.23.27 Examples

Same problem as in Perry’s examples.

>>> Chen(294.0, 466.0, 5.55E6)


26705.893506174052

thermo.phase_change.Liu(Tb, Tc, Pc)


Calculates enthalpy of vaporization at the normal boiling point using the Liu [1] correlation, and a chemical’s
critical temperature, pressure and boiling point.
The enthalpy of vaporization is given by:
]︂0.0627
(1 − 𝑇𝑏𝑟 )0.38 ln(𝑃𝑐 /𝑃𝐴 )
[︂
𝑇𝑏
∆𝐻𝑣𝑎𝑝 = 𝑅𝑇𝑏
220 1 − 𝑇𝑏𝑟 + 0.38𝑇𝑏𝑟 ln 𝑇𝑏𝑟

Parameters
Tb [float] Boiling temperature of the fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
Returns
Hvap [float] Enthalpy of vaporization, [J/mol]

1.1.1.23.28 Notes

This formulation can be adjusted for lower boiling points, due to the use of a rationalized pressure relationship.
The formulation is taken from the original article.
A correction for alcohols and organic acids based on carbon number, which only modifies the boiling point, is
available but not implemented.
No sample calculations are available in the article.
Internal units: Pa and K

1.1.1.23.29 References

[1]

1.1. thermo package 283


thermo Documentation, Release 0.1

1.1.1.23.30 Examples

Same problem as in Perry’s examples

>>> Liu(294.0, 466.0, 5.55E6)


26378.566319606754

thermo.phase_change.Vetere(Tb, Tc, Pc, F=1)


Calculates enthalpy of vaporization at the boiling point, using the Vetere [1] CSP method. Required information
are critical temperature and pressure, and boiling point. Equation taken from [2].
The enthalpy of vaporization is given by:
[︁ ]︁
∆𝐻𝑣𝑎𝑝 𝜏𝑏0.38 ln 𝑃𝑐 − 0.513 + 0.5066 2
𝑃𝑐 𝑇𝑏𝑟
=
𝑅𝑇𝑏 𝜏𝑏 + 𝐹 (1 − 𝜏𝑏0.38 ) ln 𝑇𝑏𝑟

Parameters
Tb [float] Boiling temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
F [float, optional] Constant for a fluid, [-]
Returns
Hvap [float] Enthalpy of vaporization at the boiling point, [J/mol]

1.1.1.23.31 Notes

The equation cannot be found in the original source. It is believed that a second article is its source, or that
DIPPR staff have altered the formulation.
Internal units of pressure are bar.

1.1.1.23.32 References

[1], [2]

1.1.1.23.33 Examples

Example as in [2], p2-487; exp: 25.73

>>> Vetere(294.0, 466.0, 5.55E6)


26363.430021286465

thermo.phase_change.Watson(T, Hvap_ref, T_Ref, Tc, exponent=0.38)


Adjusts enthalpy of vaporization of enthalpy for another temperature, for one temperature.
thermo.phase_change.enthalpy_vaporization_methods = ['DIPPR_PERRY_8E', 'VDI_PPDS', 'COOLPRO
Holds all methods available for the EnthalpyVaporization class, for use in iterating over them.

284 Chapter 1. thermo


thermo Documentation, Release 0.1

class thermo.phase_change.EnthalpyVaporization(CASRN=”, Tb=None, Tc=None,


Pc=None, omega=None, similar-
ity_variable=None, Psat=None,
Zl=None, Zg=None)
Bases: thermo.utils.TDependentProperty
Class for dealing with heat of vaporization as a function of temperature. Consists of three constant value data
sources, one source of tabular information, three coefficient-based methods, nine corresponding-states estima-
tors, and the external library CoolProp.
Parameters
Tb [float, optional] Boiling point, [K]
Tc [float, optional] Critical temperature, [K]
Pc [float, optional] Critical pressure, [Pa]
omega [float, optional] Acentric factor, [-]
similarity_variable [float, optional] similarity variable, n_atoms/MW, [mol/g]
Psat [float or callable, optional] Vapor pressure at T or callable for the same, [Pa]
Zl [float or callable, optional] Compressibility of liquid at T or callable for the same, [-]
Zg [float or callable, optional] Compressibility of gas at T or callable for the same, [-]
CASRN [str, optional] The CAS number of the chemical
See also:
MK, SMK, Velasco, Clapeyron, Riedel, Chen, Vetere, Liu, Watson

1.1.1.23.34 Notes

To iterate over all methods, use the list stored in enthalpy_vaporization_methods.


CLAPEYRON: The Clapeyron fundamental model desecribed in Clapeyron. This is the model which uses
Zl, Zg, and Psat, all of which must be set at each temperature change to allow recalculation of the heat of
vaporization.
MORGAN_KOBAYASHI: The MK CSP model equation documented in MK.
SIVARAMAN_MAGEE_KOBAYASHI: The SMK CSP model equation documented in SMK.
VELASCO: The Velasco CSP model equation documented in Velasco.
PITZER: The Pitzer CSP model equation documented in Pitzer.
RIEDEL: The Riedel CSP model equation, valid at the boiling point only, documented in Riedel. This is
adjusted with the Watson equation unless Tc is not available.
CHEN: The Chen CSP model equation, valid at the boiling point only, documented in Chen. This is adjusted
with the Watson equation unless Tc is not available.
VETERE: The Vetere CSP model equation, valid at the boiling point only, documented in Vetere. This is
adjusted with the Watson equation unless Tc is not available.
LIU: The Liu CSP model equation, valid at the boiling point only, documented in Liu. This is adjusted with
the Watson equation unless Tc is not available.
CRC_HVAP_TB: The constant value available in [4] at the normal boiling point. This is adusted with the
Watson equation unless Tc is not available. Data is available for 707 chemicals.

1.1. thermo package 285


thermo Documentation, Release 0.1

CRC_HVAP_298: The constant value available in [4] at 298.15 K. This is adusted with the Watson equation
unless Tc is not available. Data is available for 633 chemicals.
GHARAGHEIZI_HVAP_298: The constant value available in [5] at 298.15 K. This is adusted with the
Watson equation unless Tc is not available. Data is available for 2730 chemicals.
COOLPROP: CoolProp external library; with select fluids from its library. Range is limited to that of the
equations of state it uses, as described in [3]. Very slow but accurate.
VDI_TABULAR: Tabular data in [4] along the saturation curve; interpolation is as set by the user or the
default.
VDI_PPDS: Coefficients for a equation form developed by the PPDS, published openly in [3]. Extrapolates
poorly at low temperatures.
DIPPR_PERRY_8E: A collection of 344 coefficient sets from the DIPPR database published openly in [6].
Provides temperature limits for all its fluids. thermo.dippr.EQ106 is used for its fluids.
ALIBAKHSHI: One-constant limited temperature range regression method presented in [7], with constants
for ~2000 chemicals from the DIPPR database. Valid up to 100 K below the critical point, and 50 K under
the boiling point.

1.1.1.23.35 References

[1], [2], [3], [4], [5], [6], [7]


Attributes
T_cached
interpolation_T
interpolation_property
interpolation_property_inv
method

1.1.1.23.36 Methods

T_dependent_property(T) Method to calculate the property with sanity checking


and without specifying a specific method.
T_dependent_property_derivative(T[, or- Method to obtain a derivative of a property with respect
der]) to temperature, of a given order.
T_dependent_property_integral(T1, T2) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
T_dependent_property_integral_over_T(T1, Method to calculate the integral of a property over tem-
T2) perature with respect to temperature, using a specified
method.
__call__(T) Convenience method to calculate the property; calls
T_dependent_property.
calculate(T, method) Method to calculate heat of vaporization of a liquid at
temperature T with a given method.
calculate_derivative(T, method[, order]) Method to calculate a derivative of a property with re-
spect to temperature, of a given order using a specified
method.
Continued on next page

286 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.38 – continued from previous page


calculate_integral(T1, T2, method) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
calculate_integral_over_T(T1, T2, method) Method to calculate the integral of a property over tem-
perature with respect to temperature, using a specified
method.
interpolate(T, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data.
load_all_methods() Method which picks out coefficients for the specified
chemical from the various dictionaries and DataFrames
storing it.
plot_T_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) according to either a specified list of methods, or user
methods (if set), or all methods.
select_valid_methods(T) Method to obtain a sorted list of methods which are
valid at T according to test_method_validity.
set_tabular_data(Ts, properties[, name, . . . ]) Method to set tabular data to be used for interpolation.
set_user_methods(user_methods[, forced]) Method used to select certain property methods as hav-
ing a higher priority than were set by default.
solve_prop(goal[, reset_method]) Method to solve for the temperature at which a property
is at a specified value.
test_method_validity(T, method) Method to check the validity of a method.
test_property_validity(prop) Method to test the validity of a calculated property.

extrapolate_tabular

CSP_methods = ['MORGAN_KOBAYASHI', 'SIVARAMAN_MAGEE_KOBAYASHI', 'VELASCO', 'PITZER']


Tmax = None
Maximum temperature at which no method can calculate the heat of vaporization above.
Tmin = None
Minimum temperature at which no method can calculate the heat of vaporization under.
Watson_exponent = 0.38
Exponent used in the Watson equation
all_methods = None
Set of all methods available for a given CASRN and properties; filled by load_all_methods.
boiling_methods = ['RIEDEL', 'CHEN', 'VETERE', 'LIU']
calculate(T, method)
Method to calculate heat of vaporization of a liquid at temperature T with a given method.
This method has no exception handling; see T_dependent_property for that.
Parameters
T [float] Temperature at which to calculate heat of vaporization, [K]
method [str] Name of the method to use
Returns
Hvap [float] Heat of vaporization of the liquid at T, [J/mol]
interpolation_T = None
No interpolation transformation by default.

1.1. thermo package 287


thermo Documentation, Release 0.1

interpolation_property = None
No interpolation transformation by default.
interpolation_property_inv = None
No interpolation transformation by default.
load_all_methods()
Method which picks out coefficients for the specified chemical from the various dictionaries and
DataFrames storing it. All data is stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods for which the data exists for.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'Enthalpy of vaporization'
property_max = 1000000.0
Maximum valid of heat of vaporization. Set to twice the value in the available data.
property_min = 0
Mimimum valid value of heat of vaporization. This occurs at the critical point exactly.
ranked_methods = ['COOLPROP', 'DIPPR_PERRY_8E', 'VDI_PPDS', 'MORGAN_KOBAYASHI', 'SIVARA
Default rankings of the available methods.
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by
T_dependent_property.
tabular_data = None
tabular_data, dict: Stored (Ts, properties) for any tabular data; indexed by provided or autogenerated name.
tabular_data_interpolators = None
tabular_data_interpolators, dict: Stored (extrapolator, spline) tuples which are interp1d instances for
each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_property, interpola-
tion_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had
been created is no longer used.
tabular_extrapolation_permitted = True
Allow tabular extrapolation by default; values below 0 will be obtained at high temperatures.
test_method_validity(T, method)
Method to check the validity of a method. For CSP methods, the models are considered valid
from 0 K to the critical point. For tabular data, extrapolation outside of the range is used if
tabular_extrapolation_permitted is set; if it is, the extrapolation is considered valid for all
temperatures.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.
The constant methods CRC_HVAP_TB, CRC_HVAP_298, and GHARAGHEIZI_HVAP are adjusted
for temperature dependence according to the Watson equation, with a temperature exponent as set in
Watson_exponent, usually regarded as 0.38. However, if Tc is not set, then the adjustment cannot be
made. In that case the methods are considered valid for within 5 K of their boiling point or 298.15 K as
appropriate.
Parameters
T [float] Temperature at which to test the method, [K]
method [str] Name of the method to test

288 Chapter 1. thermo


thermo Documentation, Release 0.1

Returns
validity [bool] Whether or not a method is valid
units = 'J/mol'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by T_dependent_property.
thermo.phase_change.Hfus(T=298.15, P=101325, MW=None, AvailableMethods=False,
Method=None, CASRN=”)
This function handles the calculation of a chemical’s enthalpy of fusion. Generally this, is used by the chemical
class, as all parameters are passed. Calling the function directly works okay.
Enthalpy of fusion is a weak function of pressure, and its effects are neglected.
This API is considered experimental, and is expected to be removed in a future release in favor of a more
complete object-oriented interface.
thermo.phase_change.Hsub(T=298.15, P=101325, MW=None, AvailableMethods=False,
Method=None, CASRN=”)
This function handles the calculation of a chemical’s enthalpy of sublimation. Generally this, is used by the
chemical class, as all parameters are passed.
This API is considered experimental, and is expected to be removed in a future release in favor of a more
complete object-oriented interface.
thermo.phase_change.Tliquidus(Tms=None, ws=None, xs=None, CASRNs=None, AvailableMeth-
ods=False, Method=None)
This function handles the retrival of a mixtures’s liquidus point.
This API is considered experimental, and is expected to be removed in a future release in favor of a more
complete object-oriented interface.

>>> Tliquidus(Tms=[250.0, 350.0], xs=[0.5, 0.5])


350.0
>>> Tliquidus(Tms=[250, 350], xs=[0.5, 0.5], Method='Simple')
300.0
>>> Tliquidus(Tms=[250, 350], xs=[0.5, 0.5], AvailableMethods=True)
['Maximum', 'Simple', 'None']

1.1.1.24 thermo.reaction module

thermo.reaction.Hf(CASRN, AvailableMethods=False, Method=None)


This function handles the retrieval of a chemical’s standard-phase heat of formation. The lookup is based on
CASRNs. Selects the only data source available (‘API TDB’) if the chemical is in it. Returns None if the data
is not available.
Function has data for 571 chemicals.
Parameters
CASRN [string] CASRN [-]
Returns
Hf [float] Standard-state heat of formation, [J/mol]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain Hf with the given inputs
Other Parameters

1.1. thermo package 289


thermo Documentation, Release 0.1

Method [string, optional] A string for the method name to use, as defined by constants in
Hf_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain Hf for the desired chemical, and will return methods instead of Hf

1.1.1.24.1 Notes

Only one source of information is available to this function. it is:


• ‘API_TDB’, a compilation of heats of formation of unspecified phase. Not the original data, but as repro-
duced in [1]. Some chemicals with duplicated CAS numbers were removed.

1.1.1.24.2 References

[1]

1.1.1.24.3 Examples

>>> Hf(CASRN='7732-18-5')
-241820.0

thermo.reaction.Hf_l(CASRN, AvailableMethods=False, Method=None)


This function handles the retrieval of a chemical’s liquid standard phase heat of formation. The lookup is based
on CASRNs. Selects the only data source available, Active Thermochemical Tables (l), if the chemical is in it.
Returns None if the data is not available.
Function has data for 34 chemicals.
Parameters
CASRN [string] CASRN [-]
Returns
Hfl [float] Liquid standard-state heat of formation, [J/mol]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain Hf(l) with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in
Hf_l_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain Hf(l) for the desired chemical, and will return methods instead of Hf(l)

1.1.1.24.4 Notes

Only one source of information is available to this function. It is:


• ‘ATCT_L’, the Active Thermochemical Tables version 1.112.

290 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.24.5 References

[1]

1.1.1.24.6 Examples

>>> Hf_l('67-56-1')
-238400.0

thermo.reaction.Hf_g(CASRN, AvailableMethods=False, Method=None)


This function handles the retrieval of a chemical’s gas heat of formation. 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.
Prefered sources are ‘Active Thermochemical Tables (g)’ for high accuracy, and ‘TRC’ for less accuracy but
more chemicals. Function has data for approximately 2000 chemicals.
Parameters
CASRN [string] CASRN [-]
Returns
_Hfg [float] Gas phase heat of formation, [J/mol]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain Hf(g) with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in
Hf_g_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain Hf(g) for the desired chemical, and will return methods instead of Hf(g)

1.1.1.24.7 Notes

Sources are:
• ‘ATCT_G’, the Active Thermochemical Tables version 1.112.
• ‘TRC’, from a 1994 compilation.

1.1.1.24.8 References

[1], [2]

1.1.1.24.9 Examples

>>> Hf_g('67-56-1')
-200700.0

1.1. thermo package 291


thermo Documentation, Release 0.1

1.1.1.25 thermo.refractivity module

thermo.refractivity.refractive_index(CASRN, T=None, AvailableMethods=False,


Method=None, full_info=True)
This function handles the retrieval of a chemical’s refractive index. Lookup is based on CASRNs. Will auto-
matically select a data source to use if no Method is provided; returns None if the data is not available.
Function has data for approximately 4500 chemicals.
Parameters
CASRN [string] CASRN [-]
Returns
RI [float] Refractive Index on the Na D line, [-]
T [float, only returned if full_info == True] Temperature at which refractive index reading was
made
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain RI with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in
RI_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain RI for the desired chemical, and will return methods instead of RI
full_info [bool, optional] If True, function will return the temperature at which the refractive
index reading was made

1.1.1.25.1 Notes

Only one source is available in this function. It is:


• ‘CRC’, a compillation of Organic RI data in [1].

1.1.1.25.2 References

[1]

1.1.1.25.3 Examples

>>> refractive_index(CASRN='64-17-5')
(1.3611, 293.15)

thermo.refractivity.polarizability_from_RI(RI, Vm)
Returns the polarizability of a fluid given its molar volume and refractive index.
(︂ )︂ (︂ 2 )︂
3 𝑛 −1
𝛼= 𝑉𝑚
4𝜋𝑁𝐴 𝑛2 + 2

Parameters
RI [float] Refractive Index on Na D line, [-]

292 Chapter 1. thermo


thermo Documentation, Release 0.1

Vm [float] Molar volume of fluid, [m^3/mol]


Returns
alpha [float] Polarizability [m^3]

1.1.1.25.4 Notes

This Lorentz-Lorentz-expression is most correct when van der Waals interactions dominate. Alternate conver-
sions have been suggested. This is often expressed in units of cm^3 or Angstrom^3. To convert to these units,
multiply by 1E9 or 1E30 respectively.

1.1.1.25.5 References

[1]

1.1.1.25.6 Examples

>>> polarizability_from_RI(1.3611, 5.8676E-5)


5.147658123614415e-30

thermo.refractivity.molar_refractivity_from_RI(RI, Vm)
Returns the molar refractivity of a fluid given its molar volume and refractive index.
(︂ 2 )︂
𝑛 −1
𝑅𝑚 = 𝑉𝑚
𝑛2 + 2

Parameters
RI [float] Refractive Index on Na D line, [-]
Vm [float] Molar volume of fluid, [m^3/mol]
Returns
Rm [float] Molar refractivity [m^3/mol]

1.1.1.25.7 References

[1]

1.1.1.25.8 Examples

>>> molar_refractivity_from_RI(1.3611, 5.8676E-5)


1.2985217089649597e-05

thermo.refractivity.RI_from_molar_refractivity(Rm, Vm)
Returns the refractive index of a fluid given its molar volume and molar refractivity.
√︂
−2𝑅𝑚 − 𝑉𝑚
𝑅𝐼 =
𝑅𝑚 − 𝑉𝑚
Parameters

1.1. thermo package 293


thermo Documentation, Release 0.1

Rm [float] Molar refractivity [m^3/mol]


Vm [float] Molar volume of fluid, [m^3/mol]
Returns
RI [float] Refractive Index on Na D line, [-]

1.1.1.25.9 References

[1]

1.1.1.25.10 Examples

>>> RI_from_molar_refractivity(1.2985e-5, 5.8676E-5)


1.3610932757685672

1.1.1.26 thermo.safety module

thermo.safety.ppmv_to_mgm3(ppmv, MW, T=298.15, P=101325.0)


Converts a concentration in ppmv to units of mg/m^3. Used in industrial toxicology.
𝑚𝑔 𝑝𝑝𝑚𝑣 · 𝑃 𝑀 𝑊
3
= ·
𝑚 𝑅𝑇 1000
Parameters
ppmv [float] Concentratoin of a component in a gas mixure [parts per million, volumetric]
MW [float] Molecular weight of the trace gas [g/mol]
T [float, optional] Temperature of the gas at which the ppmv is reported
P [float, optional] Pressure of the gas at which the ppmv is reported
Returns
mgm3 [float] Concentration of a substance in an ideal gas mixture [mg/m^3]

1.1.1.26.1 Notes

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

1.1.1.26.2 References

[1]

1.1.1.26.3 Examples

>>> ppmv_to_mgm3(1, 40)


1.6349623351068687

294 Chapter 1. thermo


thermo Documentation, Release 0.1

thermo.safety.mgm3_to_ppmv(mgm3, MW, T=298.15, P=101325.0)


Converts a concentration in mg/m^3 to units of ppmv. Used in industrial toxicology.
1000𝑅𝑇 𝑚𝑔
𝑝𝑝𝑚𝑣 = ·
𝑀 𝑊 · 𝑃 𝑚3
Parameters
mgm3 [float] Concentration of a substance in an ideal gas mixture [mg/m^3]
MW [float] Molecular weight of the trace gas [g/mol]
T [float, optional] Temperature of the gas at which the ppmv is reported
P [float, optional] Pressure of the gas at which the ppmv is reported
Returns
ppmv [float] Concentration of a component in a gas mixure [parts per million, volumetric]

1.1.1.26.4 Notes

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

1.1.1.26.5 References

[1]

1.1.1.26.6 Examples

>>> mgm3_to_ppmv(1.635, 40)


1.0000230371625833

thermo.safety.TWA(CASRN, AvailableMethods=False, Method=None)


This function handles the retrieval of Time-Weighted Average limits on worker exposure to dangerous chemi-
cals.
This API is considered experimental, and is expected to be removed in a future release in favor of a more
complete object-oriented interface.
>>> TWA('98-00-0')
(10.0, 'ppm')
>>> TWA('1303-00-0')
(5.0742430905659505e-05, 'ppm')
>>> TWA('7782-42-5', AvailableMethods=True)
['Ontario Limits', 'None']

thermo.safety.STEL(CASRN, AvailableMethods=False, Method=None)


This function handles the retrieval of Short-term Exposure Limit on worker exposure to dangerous chemicals.
This API is considered experimental, and is expected to be removed in a future release in favor of a more
complete object-oriented interface.
>>> STEL('67-64-1')
(750.0, 'ppm')
>>> STEL('7664-38-2')
(0.7489774978301237, 'ppm')

1.1. thermo package 295


thermo Documentation, Release 0.1

>>> STEL('55720-99-5')
(2.0, 'mg/m^3')
>>> STEL('86290-81-5', AvailableMethods=True)
['Ontario Limits', 'None']

thermo.safety.Ceiling(CASRN, AvailableMethods=False, Method=None)


This function handles the retrieval of Ceiling limits on worker exposure to dangerous chemicals.
This API is considered experimental, and is expected to be removed in a future release in favor of a more
complete object-oriented interface.

>>> Ceiling('75-07-0')
(25.0, 'ppm')
>>> Ceiling('1395-21-7')
(6e-05, 'mg/m^3')
>>> Ceiling('7572-29-4', AvailableMethods=True)
['Ontario Limits', 'None']

thermo.safety.Skin(CASRN, AvailableMethods=False, Method=None)


This function handles the retrieval of whether or not a chemical can be absorbed through the skin, relevant to
chemical safety calculations.
This API is considered experimental, and is expected to be removed in a future release in favor of a more
complete object-oriented interface.

>>> Skin('108-94-1')
True
>>> Skin('1395-21-7')
False
>>> Skin('7572-29-4', AvailableMethods=True)
['Ontario Limits', 'None']

thermo.safety.Carcinogen(CASRN, AvailableMethods=False, Method=None)


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
CASRN [string] CASRN [-]
Returns
status [str or dict] Carcinogen status information [-]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain carcinogen status with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in Car-
cinogen_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain if a chemical is listed as carcinogenic, and will return methods instead of the status

1.1.1.26.7 Notes

Supported methods are:

296 Chapter 1. thermo


thermo Documentation, Release 0.1

• IARC: International Agency for Research on Cancer, [1]. As extracted with a last update of February 22,
2016. Has listing information of 843 chemicals with CAS numbers. Chemicals without CAS numbers not
included here. If two listings for the same CAS were available, that closest to the CAS number 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 226 chemicals.

1.1.1.26.8 References

[1], [2]

1.1.1.26.9 Examples

>>> Carcinogen('61-82-5')
{'National Toxicology Program 13th Report on Carcinogens': 'Reasonably Anticipated
˓→', 'International Agency for Research on Cancer': 'Not classifiable as to its

˓→carcinogenicity to humans (3)'}

thermo.safety.Tflash(CASRN, AvailableMethods=False, Method=None)


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.
Prefered 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.
Parameters
CASRN [string] CASRN [-]
Returns
Tflash [float] Flash point of the chemical, [K]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain Tflash with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in
Tflash_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain Tflash for the desired chemical, and will return methods instead of Tflash

1.1.1.26.10 Notes

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

1.1.1.26.11 References

[1], [2], [3]

1.1. thermo package 297


thermo Documentation, Release 0.1

1.1.1.26.12 Examples

>>> Tflash(CASRN='64-17-5')
285.15

thermo.safety.Tautoignition(CASRN, AvailableMethods=False, Method=None)


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.
Prefered source is ‘IEC 60079-20-1 (2010)’ [1], with the secondary source ‘NFPA 497 (2008)’ [2] having very
similar data.
Parameters
CASRN [string] CASRN [-]
Returns
Tautoignition [float] Autoignition point of the chemical, [K]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain Tautoignition with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in Tau-
toignition_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain Tautoignition for the desired chemical, and will return methods instead of Tau-
toignition

1.1.1.26.13 References

[1], [2]

1.1.1.26.14 Examples

>>> Tautoignition(CASRN='71-43-2')
771.15

thermo.safety.LFL(Hc=None, atoms={}, CASRN=”, AvailableMethods=False, Method=None)


This function handles the retrieval or calculation of a chemical’s Lower 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.
Prefered 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.
Parameters
Hc [float, optional] Heat of combustion of gas [J/mol]
atoms [dict, optional] Dictionary of atoms and atom counts
CASRN [string, optional] CASRN [-]

298 Chapter 1. thermo


thermo Documentation, Release 0.1

Returns
LFL [float] Lower flammability limit of the gas in an atmosphere at STP, [mole fraction]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain LFL with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in
LFL_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain the Lower Flammability Limit for the desired chemical, and will return methods
instead of Lower Flammability Limit.

1.1.1.26.15 References

[1], [2]

1.1.1.26.16 Examples

>>> LFL(CASRN='71-43-2')
0.012

thermo.safety.UFL(Hc=None, atoms={}, CASRN=”, AvailableMethods=False, Method=None)


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.
Prefered 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.
Parameters
Hc [float, optional] Heat of combustion of gas [J/mol]
atoms [dict, optional] Dictionary of atoms and atom counts
CASRN [string, optional] CASRN [-]
Returns
UFL [float] Upper flammability limit of the gas in an atmosphere at STP, [mole fraction]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain UFL with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in
UFL_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain the Upper Flammability Limit for the desired chemical, and will return methods
instead of Upper Flammability Limit.

1.1. thermo package 299


thermo Documentation, Release 0.1

1.1.1.26.17 References

[1], [2]

1.1.1.26.18 Examples

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

thermo.safety.fire_mixing(ys=None, FLs=None)
Crowl, Daniel A., and Joseph F. Louvar. Chemical Process Safety: Fundamentals with Applications. 2E. Upper
Saddle River, N.J: Prentice Hall, 2001.

>>> fire_mixing(ys=normalize([0.0024, 0.0061, 0.0015]), FLs=[.012, .053, .031])


0.02751172136637643
>>> fire_mixing(ys=normalize([0.0024, 0.0061, 0.0015]), FLs=[.075, .15, .32])
0.12927551844869378

thermo.safety.LFL_mixture(ys=None, LFLs=None, CASRNs=None, AvailableMethods=False,


Method=None)
Inert gases are ignored.
This API is considered experimental, and is expected to be removed in a future release in favor of a more
complete object-oriented interface.

>>> LFL_mixture(ys=normalize([0.0024, 0.0061, 0.0015]), LFLs=[.012, .053, .031])


0.02751172136637643
>>> LFL_mixture(LFLs=[None, None, None, None, None, None, None, None, None, None,
˓→None, None, None, None, 0.025, 0.06, 0.073, 0.020039, 0.011316], ys=[0.05, 0.05,

˓→ 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.10, 0.05, 0.05, 0.05, 0.05, 0.05,

˓→0.05, 0.05, 0.05, 0.05], CASRNs=['7440-37-1', '124-38-9', '7440-59-7', '7440-01-

˓→9', '7727-37-9', '7440-63-3', '10102-43-9', '7782-44-7', '132259-10-0', '7439-

˓→90-9', '10043-92-2', '7732-18-5', '7782-50-5', '7782-41-4', '67-64-1', '67-56-1

˓→', '75-52-5', '590-19-2', '277-10-1'])

0.023964903630937385

thermo.safety.UFL_mixture(ys=None, UFLs=None, CASRNs=None, AvailableMethods=False,


Method=None)
Inert gases are ignored.
This API is considered experimental, and is expected to be removed in a future release in favor of a more
complete object-oriented interface.

>>> UFL_mixture(ys=normalize([0.0024, 0.0061, 0.0015]), UFLs=[.075, .15, .32])


0.12927551844869378
>>> LFL_mixture(LFLs=[None, None, None, None, None, None, None, None, None, None,
˓→None, None, None, None, 0.143, 0.36, 0.63, 0.1097, 0.072], ys=[0.05, 0.05, 0.05,

˓→ 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.10, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05,

˓→0.05, 0.05, 0.05], CASRNs=['7440-37-1', '124-38-9', '7440-59-7', '7440-01-9',

˓→'7727-37-9', '7440-63-3', '10102-43-9', '7782-44-7', '132259-10-0', '7439-90-9',

˓→ '10043-92-2', '7732-18-5', '7782-50-5', '7782-41-4', '67-64-1', '67-56-1', '75-

˓→52-5', '590-19-2', '277-10-1'])

0.14550641757359664

thermo.safety.Suzuki_LFL(Hc=None)
Calculates lower flammability limit, using the Suzuki [1] correlation. Uses heat of combustion only.

300 Chapter 1. thermo


thermo Documentation, Release 0.1

The lower flammability limit of a gas is air is:


−3.42
LFL = + 0.569∆𝐻𝑐∘ + 0.0538∆𝐻𝑐∘2 + 1.80
∆𝐻𝑐∘
Parameters
Hc [float] Heat of combustion of gas [J/mol]
Returns
LFL [float] Lower flammability limit, mole fraction [-]

1.1.1.26.19 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.

1.1.1.26.20 References

[1]

1.1.1.26.21 Examples

Pentane, 1.5 % LFL in literature


>>> Suzuki_LFL(-3536600)
0.014276107095811815

thermo.safety.Suzuki_UFL(Hc=None)
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∆𝐻𝑐∘ + 0.567∆𝐻𝑐∘2 + 23.5

Parameters
Hc [float] Heat of combustion of gas [J/mol]
Returns
UFL [float] Upper flammability limit, mole fraction

1.1.1.26.22 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.

1.1. thermo package 301


thermo Documentation, Release 0.1

1.1.1.26.23 References

[1]

1.1.1.26.24 Examples

Pentane, literature 7.8% UFL


>>> Suzuki_UFL(-3536600)
0.0831119493052

thermo.safety.Crowl_Louvar_LFL(atoms)
Calculates lower flammability limit, using the Crowl-Louvar [1] correlation. Uses molecular formula only.
The lower flammability limit of a gas is air is:
𝑥
𝐶𝑚 𝐻𝑥 𝑂𝑦 + 𝑧𝑂2 → 𝑚𝐶𝑂2 + 𝐻2 𝑂
2
0.55
LFL =
4.76𝑚 + 1.19𝑥 − 2.38𝑦 + 1
Parameters
atoms [dict] Dictionary of atoms and atom counts
Returns
LFL [float] Lower flammability limit, mole fraction

1.1.1.26.25 Notes

Coefficient of 0.55 taken from [2]

1.1.1.26.26 References

[1], [2]

1.1.1.26.27 Examples

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


>>> Crowl_Louvar_LFL({'H': 14, 'C': 6})
0.011899610558199915

thermo.safety.Crowl_Louvar_UFL(atoms)
Calculates upper flammability limit, using the Crowl-Louvar [1] correlation. Uses molecular formula only.
The upper flammability limit of a gas is air is:
𝑥
𝐶𝑚 𝐻𝑥 𝑂𝑦 + 𝑧𝑂2 → 𝑚𝐶𝑂2 + 𝐻2 𝑂
2
3.5
UFL =
4.76𝑚 + 1.19𝑥 − 2.38𝑦 + 1
Parameters

302 Chapter 1. thermo


thermo Documentation, Release 0.1

atoms [dict] Dictionary of atoms and atom counts


Returns
UFL [float] Upper flammability limit, mole fraction

1.1.1.26.28 Notes

Coefficient of 3.5 taken from [2]

1.1.1.26.29 References

[1], [2]

1.1.1.26.30 Examples

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

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


0.07572479446127219

thermo.safety.NFPA_combustible_classification(Tflash, Tb=None, Psat_100F=None)

1.1.1.27 thermo.solubility module

thermo.solubility.solubility_parameter(T=298.15, Hvapm=None, Vml=None, CASRN=”,


AvailableMethods=False, Method=None)
This function handles the calculation of a chemical’s solubility parameter. Calculation is a function of tempera-
ture, but is not always presented as such. No lookup values are available; either Hvapm, Vml, and T are provided
or the calculation cannot be performed.
√︂
∆𝐻𝑣𝑎𝑝 − 𝑅𝑇
𝛿=
𝑉𝑚
Parameters
T [float] Temperature of the fluid [k]
Hvapm [float] Heat of vaporization [J/mol/K]
Vml [float] Specific volume of the liquid [m^3/mol]
CASRN [str, optional] CASRN of the fluid, not currently used [-]
Returns
delta [float] Solubility parameter, [Pa^0.5]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain the solubility parameter with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in solu-
bility_parameter_methods

1.1. thermo package 303


thermo Documentation, Release 0.1

AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain the solubility parameter for the desired chemical, and will return methods instead
of the solubility parameter

1.1.1.27.1 Notes

Undefined past the critical point. For convenience, if Hvap is not defined, an error is not raised; None is returned
instead. Also for convenience, if Hvapm is less than RT, None is returned to avoid taking the root of a negative
number.
This parameter is often given in units of cal/ml, which is 2045.48 times smaller than the value returned here.

1.1.1.27.2 References

[1]

1.1.1.27.3 Examples

Pentane at STP
>>> solubility_parameter(T=298.2, Hvapm=26403.3, Vml=0.000116055)
14357.681538173534

thermo.solubility.solubility_eutectic(T, Tm, Hm, Cpl=0, Cps=0, gamma=1)


Returns the maximum solubility of a solute in a solvent.
(︂ )︂
𝐿 𝐿 ∆𝐻𝑚,𝑖 𝑇 ∆𝐶𝑝,𝑖 (𝑇𝑚,𝑖 − 𝑇 ) ∆𝐶𝑝,𝑖 𝑇𝑚
ln 𝑥𝑖 𝛾𝑖 = 1− − + ln
𝑅𝑇 𝑇𝑚,𝑖 𝑅𝑇 𝑅 𝑇
𝐿 𝑆
∆𝐶𝑝,𝑖 = 𝐶𝑝,𝑖 − 𝐶𝑝,𝑖
Parameters
T [float] Temperature of the system [K]
Tm [float] Melting temperature of the solute [K]
Hm [float] Heat of melting at the melting temperature of the solute [J/mol]
Cpl [float, optional] Molar heat capacity of the solute as a liquid [J/mol/K]
Cpls: float, optional Molar heat capacity of the solute as a solid [J/mol/K]
gamma [float, optional] Activity coefficient of the solute as a liquid [-]
Returns
x [float] Mole fraction of solute at maximum solubility [-]

1.1.1.27.4 Notes

gamma is of the solute in liquid phase

1.1.1.27.5 References

[1]

304 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.27.6 Examples

From [1], matching example

>>> solubility_eutectic(T=260., Tm=278.68, Hm=9952., Cpl=0, Cps=0, gamma=3.0176)


0.24340068761677464

thermo.solubility.Tm_depression_eutectic(Tm, Hm, x=None, M=None, MW=None)


Returns the freezing point depression caused by a solute in a solvent. Can use either the mole fraction of the
solute or its molality and the molecular weight of the solvent. Assumes ideal system behavior.
2
𝑅𝑇𝑚 𝑥
∆𝑇𝑚 =
∆𝐻𝑚
2
𝑅𝑇𝑚 (𝑀 𝑊 )𝑀
∆𝑇𝑚 =
1000∆𝐻𝑚
Parameters
Tm [float] Melting temperature of the solute [K]
Hm [float] Heat of melting at the melting temperature of the solute [J/mol]
x [float, optional] Mole fraction of the solute [-]
M [float, optional] Molality [mol/kg]
MW: float, optional Molecular weight of the solvent [g/mol]
Returns
dTm [float] Freezing point depression [K]

1.1.1.27.7 Notes

MW is the molecular weight of the solvent. M is the molality of the solute.

1.1.1.27.8 References

[1]

1.1.1.27.9 Examples

From [1], matching example.

>>> Tm_depression_eutectic(353.35, 19110, .02)


1.0864594900639515

1.1.1.28 thermo.stream module

class thermo.stream.Stream(IDs, zs=None, ws=None, Vfls=None, Vfgs=None, ns=None, ms=None,


Qls=None, Qgs=None, n=None, m=None, Q=None, T=298.15,
P=101325, V_TP=(None, None))
Bases: thermo.mixture.Mixture
Creates a Stream object which is useful for modeling mass and energy balances.

1.1. thermo package 305


thermo Documentation, Release 0.1

Streams have five variables. The flow rate, composition, and components are mandatory; temperature and
pressure have defaults of 298.15 K and 101325 Pa.
• The components
• The composition
• The flow rate
• The temperature
• The pressure
The composition and flow rate may be specified together or separately. The options for specifying them are:
• Mole fractions zs
• Mass fractions ws
• Liquid standard volume fractions Vfls
• Gas standard volume fractions Vfgs
• Mole flow rates ns
• Mass flow rates ms
• Liquid flow rates Qls (based on pure component volumes at the T and P specified by V_TP)
• Gas flow rates Qgs (based on pure component volumes at the T and P specified by V_TP)
If only the composition is specified by providing any of zs, ws, Vfls or Vfgs, the flow rate must be specified by
providing one of these:
• Mole flow rate n
• Mass flow rate m
• Volumetric flow rate Q at the provided T and P

Parameters
IDs [list] List of chemical identifiers - names, CAS numbers, SMILES or InChi strings can all
be recognized and may be mixed [-]
zs [list, optional] Mole fractions of all components in the stream [-]
ws [list, optional] Mass fractions of all components in the stream [-]
Vfls [list, optional] Volume fractions of all components as a hypothetical liquid phase based on
pure component densities [-]
Vfgs [list, optional] Volume fractions of all components as a hypothetical gas phase based on
pure component densities [-]
ns [list, optional] Mole flow rates of each component [mol/s]
ms [list, optional] Mass flow rates of each component [kg/s]
Qls [list, optional] Liquid flow rates of all components as a hypothetical liquid phase based on
pure component densities [m^3/s]
Qgs [list, optional] Gas flow rates of all components as a hypothetical gas phase based on pure
component densities [m^3/s]
n [float, optional] Total mole flow rate of all components in the stream [mol/s]
m [float, optional] Total mass flow rate of all components in the stream [kg/s]

306 Chapter 1. thermo


thermo Documentation, Release 0.1

Q [float, optional] Total volumetric flow rate of all components in the stream based on the
temperature and pressure specified by T and P [m^3/s]
T [float, optional] Temperature of the chemical (default 298.15 K), [K]
P [float, optional] Pressure of the chemical (default 101325 Pa) [Pa]
Vf_TP [tuple(2, float), optional] The (T, P) at which the volume fractions are specified to be at,
[K] and [Pa]

1.1.1.28.1 Examples

Creating Stream objects:


A stream of vodka with volume fractions 60% liquid, 40% ethanol, 1 kg/s:
>>> from thermo import Stream
>>> Stream(['water', 'ethanol'], Vfls=[.6, .4], T=300, P=1E5, m=1)
<Stream, components=['water', 'ethanol'], mole fractions=[0.8299, 0.1701], mole
˓→flow=43.8839741023 mol/s, T=300.00 K, P=100000 Pa>

A stream of air at 400 K and 1 bar, flow rate of 1 mol/s:


>>> Stream('air', T=400, P=1e5, n=1)
<Stream, components=['nitrogen', 'argon', 'oxygen'], mole fractions=[0.7812, 0.
˓→0092, 0.2096], mole flow=1 mol/s, T=400.00 K, P=100000 Pa>

A flow of 1 L/s of 10 wt% phosphoric acid at 320 K:


>>> Stream(['water', 'phosphoric acid'], ws=[.9, .1], T=320, P=1E5, Q=0.001)
<Stream, components=['water', 'phosphoric acid'], mole fractions=[0.98, 0.02],
˓→mole flow=53.2136286991 mol/s, T=320.00 K, P=100000 Pa>

Instead of specifying the composition and flow rate separately, they can be specified as a list of flow rates in the
appropriate units.
80 kg/s of furfuryl alcohol/water solution:
>>> Stream(['furfuryl alcohol', 'water'], ms=[50, 30])
<Stream, components=['furfuryl alcohol', 'water'], mole fractions=[0.2343, 0.
˓→7657], mole flow=2174.93735951 mol/s, T=298.15 K, P=101325 Pa>

A stream of 100 mol/s of 400 K, 1 MPa argon:


>>> Stream(['argon'], ns=[100], T=400, P=1E6)
<Stream, components=['argon'], mole fractions=[1.0], mole flow=100 mol/s, T=400.
˓→00 K, P=1000000 Pa>

A large stream of vinegar, 8 volume %:


>>> Stream(['Acetic acid', 'water'], Qls=[1, 1/.088])
<Stream, components=['acetic acid', 'water'], mole fractions=[0.0269, 0.9731],
˓→mole flow=646268.518749 mol/s, T=298.15 K, P=101325 Pa>

A very large stream of 100 m^3/s of steam at 500 K and 2 MPa:


>>> Stream(['water'], Qls=[100], T=500, P=2E6)
<Stream, components=['water'], mole fractions=[1.0], mole flow=4617174.33613 mol/
˓→s, T=500.00 K, P=2000000 Pa>

1.1. thermo package 307


thermo Documentation, Release 0.1

A real example of a stream from a pulp mill:

>>> Stream(['Methanol', 'Sulphuric acid', 'sodium chlorate', 'Water', 'Chlorine


˓→dioxide', 'Sodium chloride', 'Carbon dioxide', 'Formic Acid', 'sodium sulfate',

˓→'Chlorine'], T=365.2, P=70900, ns=[0.3361749, 11.5068909, 16.8895876, 7135.

˓→9902928, 1.8538332, 0.0480655, 0.0000000, 2.9135162, 205.7106922, 0.0012694])

<Stream, components=['methanol', 'sulfuric acid', 'sodium chlorate', 'water',


˓→'chlorine dioxide', 'sodium chloride', 'carbon dioxide', 'formic acid', 'sodium

˓→sulfate', 'chlorine'], mole fractions=[0.0, 0.0016, 0.0023, 0.9676, 0.0003, 0.0,

˓→ 0.0, 0.0004, 0.0279, 0.0], mole flow=7375.2503227 mol/s, T=365.20 K, P=70900

˓→Pa>

Attributes
API API gravity of the hypothetical liquid phase of the mixture, [degrees].
Bvirial Second virial coefficient of the gas phase of the mixture at its current temperature,
pressure, and composition in units of [mol/m^3].
Cp Mass heat capacity of the mixture at its current phase and temperature, in units of [J/kg/K].
Cpg Gas-phase heat capacity of the mixture at its current temperature , and composition in units
of [J/kg/K].
Cpgm Gas-phase heat capacity of the mixture at its current temperature and composition, in
units of [J/mol/K].
Cpgms Gas-phase ideal gas heat capacity of the chemicals at its current temperature, in units
of [J/mol/K].
Cpgs Gas-phase pure component heat capacity of the chemicals in the mixture at its current
temperature, in units of [J/kg/K].
Cpl Liquid-phase heat capacity of the mixture at its current temperature and composition, in
units of [J/kg/K].
Cplm Liquid-phase heat capacity of the mixture at its current temperature and composition, in
units of [J/mol/K].
Cplms Liquid-phase pure component heat capacity of the chemicals in the mixture at its current
temperature, in units of [J/mol/K].
Cpls Liquid-phase pure component heat capacity of the chemicals in the mixture at its current
temperature, in units of [J/kg/K].
Cpm Molar heat capacity of the mixture at its current phase and temperature, in units of
[J/mol/K].
Cps Solid-phase heat capacity of the mixture at its current temperature and composition, in
units of [J/kg/K].
Cpsm Solid-phase heat capacity of the mixture at its current temperature and composition, in
units of [J/mol/K].
Cpsms Solid-phase pure component heat capacity of the chemicals in the mixture at its current
temperature, in units of [J/mol/K].
Cpss Solid-phase pure component heat capacity of the chemicals in the mixture at its current
temperature, in units of [J/kg/K].
Cvg Gas-phase ideal-gas contant-volume heat capacity of the mixture at its current temperature,
in units of [J/kg/K].

308 Chapter 1. thermo


thermo Documentation, Release 0.1

Cvgm Gas-phase ideal-gas contant-volume heat capacity of the mixture at its current tempera-
ture and composition, in units of [J/mol/K].
Cvgms Gas-phase pure component ideal-gas contant-volume heat capacities of the chemicals
in the mixture at its current temperature, in units of [J/mol/K].
Cvgs Gas-phase pure component ideal-gas contant-volume heat capacities of the chemicals in
the mixture at its current temperature, in units of [J/kg/K].
H
Hm
Hvapms Pure component enthalpies of vaporization of the chemicals in the mixture at its cur-
rent temperature, in units of [J/mol].
Hvaps Enthalpy of vaporization of the chemicals in the mixture at its current temperature, in
units of [J/kg].
IUPAC_names IUPAC names for all chemicals in the mixture.
InChI_Keys InChI keys for all chemicals in the mixture.
InChIs InChI strings for all chemicals in the mixture.
JT Joule Thomson coefficient of the mixture at its current phase, temperature, and pressure in
units of [K/Pa].
JTg Joule Thomson coefficient of the gas phase of the mixture if one exists at its current tem-
perature and pressure, in units of [K/Pa].
JTgs Pure component Joule Thomson coefficients of the chemicals in the mixture in the gas
phase at its current temperature and pressure, in units of [K/Pa].
JTl Joule Thomson coefficient of the liquid phase of the mixture if one exists at its current
temperature and pressure, in units of [K/Pa].
JTls Pure component Joule Thomson coefficients of the chemicals in the mixture in the liquid
phase at its current temperature and pressure, in units of [K/Pa].
PSRK_groups List of dictionaries of PSRK subgroup: count groups for each chemical in the
mixture.
Pr Prandtl number of the mixture at its current temperature, pressure, and phase; [dimension-
less].
Prg Prandtl number of the gas phase of the mixture if one exists at its current temperature and
pressure, [dimensionless].
Prgs Pure component Prandtl numbers of the gas phase of the chemicals in the mixture at its
current temperature and pressure, [dimensionless].
Prl Prandtl number of the liquid phase of the mixture if one exists at its current temperature
and pressure, [dimensionless].
Prls Pure component Prandtl numbers of the liquid phase of the chemicals in the mixture at
its current temperature and pressure, [dimensionless].
Psats Pure component vapor pressures of the chemicals in the mixture at its current tempera-
ture, in units of [Pa].
PubChems PubChem Component ID numbers for all chemicals in the mixture.
R_specific Specific gas constant of the mixture, in units of [J/kg/K].
SG Specific gravity of the mixture, [dimensionless].

1.1. thermo package 309


thermo Documentation, Release 0.1

SGg Specific gravity of a hypothetical gas phase of the mixture, .


SGl Specific gravity of a hypothetical liquid phase of the mixture at the specified temperature
and pressure, [dimensionless].
SGs Specific gravity of a hypothetical solid phase of the mixture at the specified temperature
and pressure, [dimensionless].
UNIFAC_Dortmund_groups List of dictionaries of Dortmund UNIFAC subgroup: count
groups for each chemcial in the mixture.
UNIFAC_groups List of dictionaries of UNIFAC subgroup: count groups for each chemical
in the mixture.
V_over_F
Vm Molar volume of the mixture at its current phase and temperature and pressure, in units of
[m^3/mol].
Vmg Gas-phase molar volume of the mixture at its current temperature, pressure, and composi-
tion in units of [mol/m^3].
Vmg_STP Gas-phase molar volume of the mixture at 298.15 K and 101.325 kPa, and the current
composition in units of [mol/m^3].
Vmgs Pure component gas-phase molar volumes of the chemicals in the mixture at its current
temperature and pressure, in units of [mol/m^3].
Vml Liquid-phase molar volume of the mixture at its current temperature, pressure, and com-
position in units of [mol/m^3].
Vml_STP Liquid-phase molar volume of the mixture at 298.15 K and 101.325 kPa, and the
current composition in units of [mol/m^3].
Vmls Pure component liquid-phase molar volumes of the chemicals in the mixture at its current
temperature and pressure, in units of [mol/m^3].
Vms
Vmss Pure component solid-phase molar volumes of the chemicals in the mixture at its current
temperature, in units of [mol/m^3].
Z Compressibility factor of the mixture at its current phase and temperature and pressure, [di-
mensionless].
Zg Compressibility factor of the mixture in the gas phase at the current temperature, pressure,
and composition, [dimensionless].
Zg_STP Gas-phase compressibility factor of the mixture at 298.15 K and 101.325 kPa, and the
current composition, [dimensionless].
Zgs Pure component compressibility factors of the chemicals in the mixture in the gas phase at
the current temperature and pressure, [dimensionless].
Zl Compressibility factor of the mixture in the liquid phase at the current temperature, pressure,
and composition, [dimensionless].
Zl_STP Liquid-phase compressibility factor of the mixture at 298.15 K and 101.325 kPa, and
the current composition, [dimensionless].
Zls Pure component compressibility factors of the chemicals in the liquid phase at the current
temperature and pressure, [dimensionless].
Zss Pure component compressibility factors of the chemicals in the mixture in the solid phase
at the current temperature and pressure, [dimensionless].

310 Chapter 1. thermo


thermo Documentation, Release 0.1

alpha Thermal diffusivity of the mixture at its current temperature, pressure, and phase in
units of [m^2/s].
alphag Thermal diffusivity of the gas phase of the mixture if one exists at its current temper-
ature and pressure, in units of [m^2/s].
alphags Pure component thermal diffusivities of the chemicals in the mixture in the gas phase
at the current temperature and pressure, in units of [m^2/s].
alphal Thermal diffusivity of the liquid phase of the mixture if one exists at its current tem-
perature and pressure, in units of [m^2/s].
alphals Pure component thermal diffusivities of the chemicals in the mixture in the liquid
phase at the current temperature and pressure, in units of [m^2/s].
atom_fractions Dictionary of atomic fractions for each atom in the mixture.
atom_fractionss List of dictionaries of atomic fractions for all chemicals in the mixture.
atomss List of dictionaries of atom counts for all chemicals in the mixture.
charge_balance Charge imbalance of the mixture, in units of [faraday].
charges Charges for all chemicals in the mixture, [faraday].
conductivity
economic_statuses List of dictionaries of the economic status for all chemicals in the
mixture.
eos Equation of state object held by the mixture.
formulas Chemical formulas for all chemicals in the mixture.
isentropic_exponent Gas-phase ideal-gas isentropic exponent of the mixture at its cur-
rent temperature, [dimensionless].
isentropic_exponents Gas-phase pure component ideal-gas isentropic exponent of the
chemicals in the mixture at its current temperature, [dimensionless].
isobaric_expansion Isobaric (constant-pressure) expansion of the mixture at its current
phase, temperature, and pressure in units of [1/K].
isobaric_expansion_g
isobaric_expansion_gs Pure component isobaric (constant-pressure) expansions of the
chemicals in the mixture in the gas phase at its current temperature and pressure, in units of
[1/K].
isobaric_expansion_l
isobaric_expansion_ls Pure component isobaric (constant-pressure) expansions of the
chemicals in the mixture in the liquid phase at its current temperature and pressure, in units
of [1/K].
k Thermal conductivity of the mixture at its current phase, temperature, and pressure in units of
[W/m/K].
kg Thermal conductivity of the mixture in the gas phase at its current temperature, pressure,
and composition in units of [Pa*s].
kgs Pure component thermal conductivies of the chemicals in the mixture in the gas phase at
its current temperature and pressure, in units of [W/m/K].
kl Thermal conductivity of the mixture in the liquid phase at its current temperature, pressure,
and composition in units of [Pa*s].

1.1. thermo package 311


thermo Documentation, Release 0.1

kls Pure component thermal conductivities of the chemicals in the mixture in the liquid phase
at its current temperature and pressure, in units of [W/m/K].
ks
legal_statuses List of dictionaries of the legal status for all chemicals in the mixture.
mass_fractions Dictionary of mass fractions for each atom in the mixture.
mass_fractionss List of dictionaries of mass fractions for all chemicals in the mixture.
mu Viscosity of the mixture at its current phase, temperature, and pressure in units of [Pa*s].
mug Viscosity of the mixture in the gas phase at its current temperature, pressure, and compo-
sition in units of [Pa*s].
mugs Pure component viscosities of the chemicals in the mixture in the gas phase at its current
temperature and pressure, in units of [Pa*s].
mul Viscosity of the mixture in the liquid phase at its current temperature, pressure, and com-
position in units of [Pa*s].
muls Pure component viscosities of the chemicals in the mixture in the liquid phase at its
current temperature and pressure, in units of [Pa*s].
nu Kinematic viscosity of the the mixture at its current temperature, pressure, and phase in
units of [m^2/s].
nug Kinematic viscosity of the gas phase of the mixture if one exists at its current temperature
and pressure, in units of [m^2/s].
nugs Pure component kinematic viscosities of the gas phase of the chemicals in the mixture at
its current temperature and pressure, in units of [m^2/s].
nul Kinematic viscosity of the liquid phase of the mixture if one exists at its current tempera-
ture and pressure, in units of [m^2/s].
nuls Pure component kinematic viscosities of the liquid phase of the chemicals in the mixture
at its current temperature and pressure, in units of [m^2/s].
permittivites Pure component relative permittivities of the chemicals in the mixture at its
current temperature, [dimensionless].
phase
rho Mass density of the mixture at its current phase and temperature and pressure, in units of
[kg/m^3].
rhog Gas-phase mass density of the mixture at its current temperature, pressure, and composi-
tion in units of [kg/m^3].
rhog_STP Gas-phase mass density of the mixture at 298.15 K and 101.325 kPa, and the cur-
rent composition in units of [kg/m^3].
rhogm Molar density of the mixture in the gas phase at the current temperature, pressure, and
composition in units of [mol/m^3].
rhogm_STP Molar density of the mixture in the gas phase at 298.15 K and 101.325 kPa, and
the current composition, in units of [mol/m^3].
rhogms Pure component molar densities of the chemicals in the gas phase at the current tem-
perature and pressure, in units of [mol/m^3].
rhogs Pure-component gas-phase mass densities of the chemicals in the mixture at its current
temperature and pressure, in units of [kg/m^3].

312 Chapter 1. thermo


thermo Documentation, Release 0.1

rhol Liquid-phase mass density of the mixture at its current temperature, pressure, and com-
position in units of [kg/m^3].
rhol_STP Liquid-phase mass density of the mixture at 298.15 K and 101.325 kPa, and the
current composition in units of [kg/m^3].
rholm Molar density of the mixture in the liquid phase at the current temperature, pressure,
and composition in units of [mol/m^3].
rholm_STP Molar density of the mixture in the liquid phase at 298.15 K and 101.325 kPa,
and the current composition, in units of [mol/m^3].
rholms Pure component molar densities of the chemicals in the mixture in the liquid phase at
the current temperature and pressure, in units of [mol/m^3].
rhols Pure-component liquid-phase mass density of the chemicals in the mixture at its current
temperature and pressure, in units of [kg/m^3].
rhom Molar density of the mixture at its current phase and temperature and pressure, in units
of [mol/m^3].
rhos
rhosms Pure component molar densities of the chemicals in the solid phase at the current
temperature and pressure, in units of [mol/m^3].
rhoss Pure component solid-phase mass density of the chemicals in the mixture at its current
temperature, in units of [kg/m^3].
ringss List of ring counts for all chemicals in the mixture.
sigma Surface tension of the mixture at its current temperature and composition, in units of
[N/m].
sigmas Pure component surface tensions of the chemicals in the mixture at its current temper-
ature, in units of [N/m].
similarity_variables Similarity variables for all chemicals in the mixture, see
smiless SMILES strings for all chemicals in the mixture.
solubility_parameters Pure component solubility parameters of the chemicals in the
mixture at its current temperature and pressure, in units of [Pa^0.5].
synonymss Lists of synonyms for all chemicals in the mixture.
xs
ys

1.1.1.28.2 Methods

Vfgs([T, P]) Volume fractions of all species in a hypothetical pure-


gas phase at the current or specified temperature and
pressure.
Vfls([T, P]) Volume fractions of all species in a hypothetical pure-
liquid phase at the current or specified temperature and
pressure.
draw_2d([Hs]) Interface for drawing a 2D image of all the molecules in
the mixture.

1.1. thermo package 313


thermo Documentation, Release 0.1

Bond
Capillary
Grashof
Jakob
Peclet_heat
Reynolds
Weber
calculate
calculate_PH
calculate_PS
calculate_TH
calculate_TS
set_Chemical_property_objects
set_TP
set_TP_sources
set_chemical_TP
set_chemical_constants
set_constant_sources
set_constants
set_eos
set_extensive_flow
set_extensive_properties
set_phase

calculate(T=None, P=None)
set_extensive_flow(n=None)
set_extensive_properties()

1.1.1.29 thermo.temperature module

thermo.temperature.T_converter(T, current, desired)


Converts the a temperature reading made in any of the scales ‘ITS-90’, ‘ITS-68’,’ITS-48’, ‘ITS-76’, or ‘ITS-27’
to any of the other scales. Not all temperature ranges can be converted to other ranges; for instance, ‘ITS-76’ is
purely for low temperatures, and 5 K on it has no conversion to ‘ITS-90’ or any other scale. Both a conversion
to ITS-90 and to the desired scale must be possible for the conversion to occur. The conversion uses cubic spline
interpolation.
ITS-68 conversion is valid from 14 K to 4300 K. ITS-48 conversion is valid from 93.15 K to 4273.15 K ITS-76
conversion is valid from 5 K to 27 K. ITS-27 is valid from 903.15 K to 4273.15 k.
Parameters
T [float] Temperature, on current scale [K]
current [str] String representing the scale T is in, ‘ITS-90’, ‘ITS-68’, ‘ITS-48’, ‘ITS-76’, or
‘ITS-27’.
desired [str] String representing the scale T will be returned in, ‘ITS-90’, ‘ITS-68’, ‘ITS-48’,
‘ITS-76’, or ‘ITS-27’.
Returns
T [float] Temperature, on scale desired [K]

314 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.29.1 Notes

Because the conversion is performed by spline functions, a re-conversion of a value will not yield exactly the
original value. However, it is quite close.
The use of splines is quite quick (20 micro seconds/calculation). While just a spline for one-way conversion
could be used, a numerical solver would have to be used to obtain an exact result for the reverse conversion.
This was found to take approximately 1 ms/calculation, depending on the region.

1.1.1.29.2 References

[1], [2]

1.1.1.29.3 Examples

>>> T_converter(500, 'ITS-68', 'ITS-48')


499.9470092992346

thermo.temperature.ITS90_68_difference(T)
Calculates the difference between ITS-90 and ITS-68 scales using a series of models listed in [1], [2], and [3].
The temperature difference is given by the following equations:
From 13.8 K to 73.15 K:
12
∑︁
𝑇90 − 𝑇68 = 𝑎0 + 𝑎𝑖 [(𝑇90 /𝐾 − 40)/40]𝑖
𝑖=1

From 83.8 K to 903.75 K:


8
∑︁
𝑇90 − 𝑇68 = 𝑏𝑖 [(𝑇90 /𝐾 − 273.15)/630]𝑖
𝑖=1

From 903.75 K to 1337.33 K:


5
∑︁
𝑇90 − 𝑇68 = 𝑐𝑖 [𝑇90 /∘ 𝐶]𝑖
𝑖=0

Above 1337.33 K:
(︂ )︂2
𝑇90
𝑇90 − 𝑇68 = −1.398 · 10−7
𝐾

Parameters
T [float] Temperature, ITS-90, or approximately ITS-68 [K]
Returns
dT [float] Temperature, difference between ITS-90 and ITS-68 at T [K]

1.1. thermo package 315


thermo Documentation, Release 0.1

1.1.1.29.4 Notes

The conversion is straightforward when T90 is known. Theoretically, the model should be solved numerically
to convert the reverse way. However, according to [4], the difference is under 0.05 mK from 73.15 K to 903.15
K, and under 0.26 mK up to 1337.33 K.
For temperatures under 13.8 K, no conversion is performed.
The first set of coefficients are: -0.005903, 0.008174, -0.061924, -0.193388, 1.490793, 1.252347, -9.835868,
1.411912, 25.277595, -19.183815, -18.437089, 27.000895, -8.716324.
The second set of coefficients are: 0, -0.148759, -0.267408, 1.08076, 1.269056, -4.089591, -1.871251,
7.438081, -3.536296.
The third set of coefficients are: 7.8687209E1, -4.7135991E-1, 1.0954715E-3, -1.2357884E-6, 6.7736583E-10,
-1.4458081E-13. These last coefficients use the temperature in degrees Celcius. A slightly older model used
the following coefficients but a different equation over the same range: -0.00317, -0.97737, 1.2559, 2.03295,
-5.91887, -3.23561, 7.23364, 5.04151. The model for these coefficients was:
7
∑︁
𝑇90 − 𝑇68 = 𝑐0 + 𝑐𝑖 [(𝑇90 /𝐾 − 1173.15)/300]𝑖
𝑖=1

For temperatures larger than several thousand K, the differences have no meaning and grows quadratically.

1.1.1.29.5 References

[1], [2], [3], [4]

1.1.1.29.6 Examples

>>> ITS90_68_difference(1000.)
0.01231818956580355

1.1.1.30 thermo.thermal_conductivity module

thermo.thermal_conductivity.Sheffy_Johnson(T, M, Tm)
Calculate the thermal conductivity of a liquid as a function of temperature using the Sheffy-Johnson (1961)
method. Requires Temperature, molecular weight, and melting point.

1 − 0.00126(𝑇 − 𝑇𝑚 )
𝑘 = 1.951 0.216 𝑀 𝑊 0.3
𝑇𝑚

Parameters
T [float] Temperature of the fluid [K]
M [float] Molecular weight of the fluid [g/mol]
Tm [float] Melting point of the fluid [K]
Returns
kl [float] Thermal conductivity of the fluid, W/m/k

316 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.30.1 Notes

The origin of this equation has been challenging to trace. It is presently unknown, and untested.

1.1.1.30.2 References

[1]

1.1.1.30.3 Examples

>>> Sheffy_Johnson(300, 47, 280)


0.17740150413112196

thermo.thermal_conductivity.Sato_Riedel(T, M, Tb, Tc)


Calculate the thermal conductivity of a liquid as a function of temperature using the CSP method of Sato-Riedel
[1], [2], published in Reid [3]. Requires temperature, molecular weight, and boiling and critical temperatures.
1.1053 3 + 20(1 − 𝑇𝑟 )2/3
𝑘=√
𝑀 𝑊 3 + 20(1 − 𝑇𝑏𝑟 )2/3
Parameters
T [float] Temperature of the fluid [K]
M [float] Molecular weight of the fluid [g/mol]
Tb [float] Boiling temperature of the fluid [K]
Tc [float] Critical temperature of the fluid [K]
Returns
kl [float] Estimated liquid thermal conductivity [W/m/k]

1.1.1.30.4 Notes

This equation has a complicated history. It is proposed by Reid [3]. Limited accuracy should be expected.
Uncheecked.

1.1.1.30.5 References

[1], [2], [3]

1.1.1.30.6 Examples

>>> Sato_Riedel(300, 47, 390, 520)


0.21037692461337687

thermo.thermal_conductivity.Lakshmi_Prasad(T, M)
Estimates thermal conductivity of pure liquids as a function of temperature using a reference fluid approach.
Low accuracy but quick. Developed using several organic fluids.
1.3855 − 0.00197𝑇
𝜆 = 0.0655 − 0.0005𝑇 +
𝑀 0.5

1.1. thermo package 317


thermo Documentation, Release 0.1

Parameters
T [float] Temperature of the fluid [K]
M [float] Molecular weight of the fluid [g/mol]
Returns
kl [float] Estimated liquid thermal conductivity [W/m/k]

1.1.1.30.7 Notes

This equation returns negative numbers at high T sometimes. This equation is one of those implemented by
DDBST. If this results in a negative thermal conductivity, no value is returned.

1.1.1.30.8 References

[1]

1.1.1.30.9 Examples

>>> Lakshmi_Prasad(273.15, 100)


0.013664450000000009

thermo.thermal_conductivity.Gharagheizi_liquid(T, M, Tb, Pc, omega)


Estimates the thermal conductivity of a liquid as a function of temperature using the CSP method of Gharagheizi
[1]. A convoluted method claiming high-accuracy and using only statistically significant variable following
analalysis.
Requires temperature, molecular weight, boiling temperature and critical pressure and acentric factor.
1.009𝐵 2 3.9287𝑀 𝑊 4
[︂ ]︂
−4 𝐴
𝑘 = 10 10𝜔 + 2𝑃𝑐 − 2𝑇 + 4 + 1.908(𝑇𝑏 + )+ + 8
𝑀𝑊2 𝐵4 𝐵
𝐴 = 3.8588𝑀 𝑊 8 (1.0045𝐵 + 6.5152𝑀 𝑊 − 8.9756)
𝐵 = 16.0407𝑀 𝑊 + 2𝑇𝑏 − 27.9074
Parameters
T [float] Temperature of the fluid [K]
M [float] Molecular weight of the fluid [g/mol]
Tb [float] Boiling temperature of the fluid [K]
Pc [float] Critical pressure of the fluid [Pa]
omega [float] Acentric factor of the fluid [-]
Returns
kl [float] Estimated liquid thermal conductivity [W/m/k]

1.1.1.30.10 Notes

Pressure is internally converted into bar, as used in the original equation.


This equation was derived with 19000 points representing 1640 unique compounds.

318 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.30.11 References

[1]

1.1.1.30.12 Examples

>>> Gharagheizi_liquid(300, 40, 350, 1E6, 0.27)


0.2171113029534838

thermo.thermal_conductivity.Nicola_original(T, M, Tc, omega, Hfus)


Estimates the thermal conductivity of a liquid as a function of temperature using the CSP method of Nicola [1].
A simpler but long method claiming high-accuracy and using only statistically significant variable following
analalysis.
Requires temperature, molecular weight, critical temperature, acentric factor and the heat of vaporization.
(︂ )︂0.0622
𝜆 ∆𝑓 𝑢𝑠 𝐻 1kg/kmol
= −0.5694 − 0.1436𝑇𝑟 + 5.4893 × 10−10 + 0.0508𝜔 +
1Wm/K kmol/J 𝑀𝑊

Parameters
T [float] Temperature of the fluid [K]
M [float] Molecular weight of the fluid [g/mol]
Tc [float] Critical temperature of the fluid [K]
omega [float] Acentric factor of the fluid [-]
Hfus [float] Heat of fusion of the fluid [J/mol]
Returns
kl [float] Estimated liquid thermal conductivity [W/m/k]

1.1.1.30.13 Notes

A weird statistical correlation. Recent and yet to be reviewed. This correlation has been superceded by the
author’s later work. Hfus is internally converted to be in J/kmol.

1.1.1.30.14 References

[1]

1.1.1.30.15 Examples

>>> Nicola_original(300, 142.3, 611.7, 0.49, 201853)


0.2305018632230984

thermo.thermal_conductivity.Nicola(T, M, Tc, Pc, omega)


Estimates the thermal conductivity of a liquid as a function of temperature using the CSP method of [1]. A
statistically derived equation using any correlated terms.

1.1. thermo package 319


thermo Documentation, Release 0.1

Requires temperature, molecular weight, critical temperature and pressure, and acentric factor.
(︂ )︂−0.2999
𝜆 0.0017𝑃 𝑐 1
= −0.2537𝑇𝑟 + + 0.1501𝜔 +
0.5147𝑊/𝑚/𝐾 bar 𝑀𝑊

Parameters
T [float] Temperature of the fluid [K]
M [float] Molecular weight of the fluid [g/mol]
Tc [float] Critical temperature of the fluid [K]
Pc [float] Critical pressure of the fluid [Pa]
omega [float] Acentric factor of the fluid [-]
Returns
kl [float] Estimated liquid thermal conductivity [W/m/k]

1.1.1.30.16 Notes

A statistical correlation. A revision of an original correlation.

1.1.1.30.17 References

[1]

1.1.1.30.18 Examples

>>> Nicola(300, 142.3, 611.7, 2110000.0, 0.49)


0.10863821554584034

thermo.thermal_conductivity.Bahadori_liquid(T, M)
Estimates the thermal conductivity of parafin liquid hydrocarbons. Fits their data well, and is useful as only
MW is required. X is the Molecular weight, and Y the temperature.

𝐾 = 𝑎 + 𝑏𝑌 + 𝐶𝑌 2 + 𝑑𝑌 3
𝑎 = 𝐴1 + 𝐵1 𝑋 + 𝐶1 𝑋 2 + 𝐷1 𝑋 3
𝑏 = 𝐴2 + 𝐵2 𝑋 + 𝐶2 𝑋 2 + 𝐷2 𝑋 3
𝑐 = 𝐴3 + 𝐵3 𝑋 + 𝐶3 𝑋 2 + 𝐷3 𝑋 3
𝑑 = 𝐴4 + 𝐵4 𝑋 + 𝐶4 𝑋 2 + 𝐷4 𝑋 3

Parameters
T [float] Temperature of the fluid [K]
M [float] Molecular weight of the fluid [g/mol]
Returns
kl [float] Estimated liquid thermal conductivity [W/m/k]

320 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.30.19 Notes

The accuracy of this equation has not been reviewed.

1.1.1.30.20 References

[1]

1.1.1.30.21 Examples

Data point from [1].

>>> Bahadori_liquid(273.15, 170)


0.14274278108272603

thermo.thermal_conductivity.Mersmann_Kind_thermal_conductivity_liquid(T,
MW,
Tc,
Vc,
atoms)
Estimates the thermal conductivity of organic liquid substances according to the method of [1].
2/3
𝜆 · 𝑉𝑐 · 𝑇𝑐 · MW0.5
𝜆* = 7/6
(𝑘 · 𝑇𝑐 )1.5 · 𝑁𝐴
2 (︁ √︀ )︁
𝜆* = 𝑛𝑎 + 40 1 − 𝑇𝑟
3
Parameters
T [float] Temperature of the fluid [K]
M [float] Molecular weight of the fluid [g/mol]
Tc [float] Critical temperature of the fluid [K]
Vc [float] Critical volume of the fluid [m^3/mol]
atoms [dict] Dictionary of atoms and their counts, [-]
Returns
kl [float] Estimated liquid thermal conductivity [W/m/k]

1.1.1.30.22 Notes

In the equation, all quantities must be in SI units but N_A is in a kmol basis and Vc is in units of (m^3/kmol);
this is converted internally.

1.1.1.30.23 References

[1]

1.1. thermo package 321


thermo Documentation, Release 0.1

1.1.1.30.24 Examples

Dodecane at 400 K:

>>> Mersmann_Kind_thermal_conductivity_liquid(400, 170.33484, 658.0,


... 0.000754, {'C': 12, 'H': 26})
0.08952713798442789

thermo.thermal_conductivity.thermal_conductivity_liquid_methods = ['COOLPROP', 'DIPPR_PERRY


Holds all low-pressure methods available for the ThermalConductivityLiquid class, for use in iterating over
them.
class thermo.thermal_conductivity.ThermalConductivityLiquid(CASRN=”,
MW=None,
Tm=None,
Tb=None,
Tc=None, Pc=None,
omega=None,
Hfus=None)
Bases: thermo.utils.TPDependentProperty
Class for dealing with liquid thermal conductivity as a function of temperature and pressure.
For low-pressure (at 1 atm while under the vapor pressure; along the saturation line otherwise) liquids, there
is one source of tabular information, one polynomial-based method, 7 corresponding-states estimators, and the
external library CoolProp.
For high-pressure liquids (also, <1 atm liquids), there are two corresponding-states estimator, and the external
library CoolProp.
Parameters
CASs [list[str], optional] The CAS numbers of all species in the mixture
MW [float, optional] Molecular weight, [g/mol]
Tm [float, optional] Melting point, [K]
Tb [float, optional] Boiling point, [K]
Tc [float, optional] Critical temperature, [K]
Pc [float, optional] Critical pressure, [Pa]
omega [float, optional] Acentric factor, [-]
Hfus [float, optional] Heat of fusion, [J/mol]
See also:
Sheffy_Johnson, Sato_Riedel, Lakshmi_Prasad, Gharagheizi_liquid,
Nicola_original, Nicola, Bahadori_liquid, DIPPR9G, Missenard

1.1.1.30.25 Notes

To iterate over all methods, use the lists stored in thermal_conductivity_liquid_methods and
thermal_conductivity_liquid_methods_P for low and high pressure methods respectively.
Low pressure methods:
GHARAGHEIZI_L: CSP method, described in Gharagheizi_liquid.

322 Chapter 1. thermo


thermo Documentation, Release 0.1

SATO_RIEDEL: CSP method, described in Sato_Riedel.


NICOLA: CSP method, described in Nicola.
NICOLA_ORIGINAL: CSP method, described in Nicola_original.
SHEFFY_JOHNSON: CSP method, described in Sheffy_Johnson.
BAHADORI_L: CSP method, described in Bahadori_liquid.
LAKSHMI_PRASAD: CSP method, described in Lakshmi_Prasad.
DIPPR_PERRY_8E: A collection of 340 coefficient sets from the DIPPR database published openly in [3].
Provides temperature limits for all its fluids. thermo.dippr.EQ100 is used for its fluids.
VDI_PPDS: Coefficients for a equation form developed by the PPDS, published openly in [2]. Covers a large
temperature range, but does not extrapolate well at very high or very low temperatures. 271 compounds.
COOLPROP: CoolProp external library; with select fluids from its library. Range is limited to that of the
equations of state it uses, as described in [1]. Very slow.
VDI_TABULAR: Tabular data in [2] along the saturation curve; interpolation is as set by the user or the
default.
High pressure methods:
DIPPR_9G: CSP method, described in DIPPR9G. Calculates a low-pressure thermal conductivity first, using
T_dependent_property.
MISSENARD: CSP method, described in Missenard. Calculates a low-pressure thermal conductivity first,
using T_dependent_property.
COOLPROP: CoolProp external library; with select fluids from its library. Range is limited to that of the
equations of state it uses, as described in [1]. Very slow, but unparalled in accuracy for pressure depen-
dence.

1.1.1.30.26 References

[1], [2], [3]


Attributes
TP_cached
T_cached
interpolation_P
interpolation_T
interpolation_property
interpolation_property_inv
method
method_P

1.1.1.30.27 Methods

1.1. thermo package 323


thermo Documentation, Release 0.1

TP_dependent_property(T, P) Method to calculate the property with sanity checking


and without specifying a specific method.
TP_dependent_property_derivative_P(T, Method to calculate a derivative of a temperature and
P[, order]) pressure dependent property with respect to pressure at
constant temperature, of a given order.
TP_dependent_property_derivative_T(T, Method to calculate a derivative of a temperature and
P[, order]) pressure dependent property with respect to temperature
at constant pressure, of a given order.
T_dependent_property(T) Method to calculate the property with sanity checking
and without specifying a specific method.
T_dependent_property_derivative(T[, or- Method to obtain a derivative of a property with respect
der]) to temperature, of a given order.
T_dependent_property_integral(T1, T2) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
T_dependent_property_integral_over_T(T1, Method to calculate the integral of a property over tem-
T2) perature with respect to temperature, using a specified
method.
__call__(T, P) Convenience method to calculate the property; calls
TP_dependent_property.
calculate(T, method) Method to calculate low-pressure liquid thermal con-
ductivity at tempearture T with a given method.
calculate_P(T, P, method) Method to calculate pressure-dependent liquid thermal
conductivity at temperature T and pressure P with a
given method.
calculate_derivative(T, method[, order]) Method to calculate a derivative of a property with re-
spect to temperature, of a given order using a specified
method.
calculate_derivative_P(P, T, method[, order]) Method to calculate a derivative of a temperature and
pressure dependent property with respect to pressure at
constant temperature, of a given order using a specified
method.
calculate_derivative_T(T, P, method[, order]) Method to calculate a derivative of a temperature and
pressure dependent property with respect to temperature
at constant pressure, of a given order using a specified
method.
calculate_integral(T1, T2, method) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
calculate_integral_over_T(T1, T2, method) Method to calculate the integral of a property over tem-
perature with respect to temperature, using a specified
method.
interpolate(T, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data.
interpolate_P(T, P, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data_P.
load_all_methods() Method which picks out coefficients for the specified
chemical from the various dictionaries and DataFrames
storing it.
plot_TP_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
Continued on next page

324 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.40 – continued from previous page


plot_T_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) according to either a specified list of methods, or user
methods (if set), or all methods.
plot_isobar(P[, Tmin, Tmax, methods_P, pts, . . . ]) Method to create a plot of the property vs temperature
at a specific pressure according to either a specified list
of methods, or user methods (if set), or all methods.
plot_isotherm(T[, Pmin, Pmax, methods_P, . . . ]) Method to create a plot of the property vs pressure at a
specified temperature according to either a specified list
of methods, or the user methods (if set), or all methods.
select_valid_methods(T) Method to obtain a sorted list of methods which are
valid at T according to test_method_validity.
select_valid_methods_P(T, P) Method to obtain a sorted list methods which are valid
at T according to test_method_validity.
set_tabular_data(Ts, properties[, name, . . . ]) Method to set tabular data to be used for interpolation.
set_tabular_data_P(Ts, Ps, properties[, . . . ]) Method to set tabular data to be used for interpolation.
set_user_methods(user_methods[, forced]) Method used to select certain property methods as hav-
ing a higher priority than were set by default.
set_user_methods_P(user_methods_P[, Method to set the pressure-dependent property methods
forced_P]) desired for consideration by the user.
solve_prop(goal[, reset_method]) Method to solve for the temperature at which a property
is at a specified value.
test_method_validity(T, method) Method to check the validity of a temperature-
dependent low-pressure method.
test_method_validity_P(T, P, method) Method to check the validity of a high-pressure method.
test_property_validity(prop) Method to test the validity of a calculated property.

TP_or_T_dependent_property
extrapolate_tabular

Tmax = None
Maximum temperature at which no method can calculate the liquid thermal conductivity above.
Tmin = None
Minimum temperature at which no method can calculate the liquid thermal conductivity under.
all_methods = None
Set of all low-pressure methods available for a given CASRN and properties; filled by
load_all_methods.
all_methods_P = None
Set of all high-pressure methods available for a given CASRN and properties; filled by
load_all_methods.
calculate(T, method)
Method to calculate low-pressure liquid thermal conductivity at tempearture T with a given method.
This method has no exception handling; see T_dependent_property for that.
Parameters
T [float] Temperature of the liquid, [K]
method [str] Name of the method to use
Returns

1.1. thermo package 325


thermo Documentation, Release 0.1

kl [float] Thermal conductivity of the liquid at T and a low pressure, [W/m/K]


calculate_P(T, P, method)
Method to calculate pressure-dependent liquid thermal conductivity at temperature T and pressure P with
a given method.
This method has no exception handling; see TP_dependent_property for that.
Parameters
T [float] Temperature at which to calculate liquid thermal conductivity, [K]
P [float] Pressure at which to calculate liquid thermal conductivity, [K]
method [str] Name of the method to use
Returns
kl [float] Thermal conductivity of the liquid at T and P, [W/m/K]
interpolation_P = None
No interpolation transformation by default.
interpolation_T = None
No interpolation transformation by default.
interpolation_property = None
No interpolation transformation by default.
interpolation_property_inv = None
No interpolation transformation by default.
load_all_methods()
Method which picks out coefficients for the specified chemical from the various dictionaries and
DataFrames storing it. All data is stored as attributes. This method also sets Tmin, Tmax, all_methods
and obj:all_methods_P as a set of methods for which the data exists for.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'liquid thermal conductivity'
property_max = 10
Maximum valid value of liquid thermal conductivity. Generous limit.
property_min = 0
Mimimum valid value of liquid thermal conductivity.
ranked_methods = ['COOLPROP', 'DIPPR_PERRY_8E', 'VDI_PPDS', 'VDI_TABULAR', 'GHARAGHEIZI
Default rankings of the low-pressure methods.
ranked_methods_P = ['COOLPROP', 'DIPPR_9G', 'MISSENARD']
Default rankings of the high-pressure methods.
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by
T_dependent_property.
sorted_valid_methods_P = None
sorted_valid_methods_P, list: Stored methods which were found valid at a specific temperature; set by
TP_dependent_property.
tabular_data = None
tabular_data, dict: Stored (Ts, properties) for any tabular data; indexed by provided or autogenerated name.

326 Chapter 1. thermo


thermo Documentation, Release 0.1

tabular_data_P = None
tabular_data_P, dict: Stored (Ts, Ps, properties) for any tabular data; indexed by provided or autogenerated
name.
tabular_data_interpolators = None
tabular_data_interpolators, dict: Stored (extrapolator, spline) tuples which are interp1d instances for
each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_property, interpola-
tion_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had
been created is no longer used.
tabular_data_interpolators_P = None
tabular_data_interpolators_P, dict: Stored (extrapolator, spline) tuples which are interp2d instances
for each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_P, interpola-
tion_property, interpolation_property_inv) to ensure that if an interpolation transform is altered, the old
interpolator which had been created is no longer used.
tabular_extrapolation_permitted = True
Allow tabular extrapolation by default.
test_method_validity(T, method)
Method to check the validity of a temperature-dependent low-pressure method. For CSP methods, the
models BAHADORI_L, LAKSHMI_PRASAD, and SHEFFY_JOHNSON are considered valid for all
temperatures. For methods GHARAGHEIZI_L, NICOLA, and NICOLA_ORIGINAL, the methods are
considered valid up to 1.5Tc and down to 0 K. Method SATO_RIEDEL does not work above the critical
point, so it is valid from 0 K to the critical point.
For tabular data, extrapolation outside of the range is used if
tabular_extrapolation_permitted is set; if it is, the extrapolation is considered valid
for all temperatures.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.
Parameters
T [float] Temperature at which to test the method, [K]
method [str] Name of the method to test
Returns
validity [bool] Whether or not a method is valid
test_method_validity_P(T, P, method)
Method to check the validity of a high-pressure method. For COOLPROP, the fluid must be both a liquid
and under the maximum pressure of the fluid’s EOS. MISSENARD has defined limits; between 0.5Tc
and 0.8Tc, and below 200Pc. The CSP method DIPPR_9G is considered valid for all temperatures and
pressures.
For tabular data, extrapolation outside of the range is used if
tabular_extrapolation_permitted is set; if it is, the extrapolation is considered valid
for all temperatures and pressures.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.
Parameters
T [float] Temperature at which to test the method, [K]
P [float] Pressure at which to test the method, [Pa]
method [str] Name of the method to test

1.1. thermo package 327


thermo Documentation, Release 0.1

Returns
validity [bool] Whether or not a method is valid
units = 'W/m/K'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by T_dependent_property.
user_methods_P = None
user_methods_P, list: Stored methods which were specified by the user in a ranked order of preference; set
by TP_dependent_property.
thermo.thermal_conductivity.DIPPR9G(T, P, Tc, Pc, kl)
Adjustes for pressure the thermal conductivity of a liquid using an emperical formula based on [1], but as given
in [2].
[︂ (︂ )︂]︂
𝑃𝑟
𝑘 = 𝑘 * 0.98 + 0.0079𝑃𝑟 𝑇𝑟1.4 + 0.63𝑇𝑟1.2
30 + 𝑃𝑟

Parameters
T [float] Temperature of fluid [K]
P [float] Pressure of fluid [Pa]
Tc: float Critical point of fluid [K]
Pc [float] Critical pressure of the fluid [Pa]
kl [float] Thermal conductivity of liquid at 1 atm or saturation, [W/m/K]
Returns
kl_dense [float] Thermal conductivity of liquid at P, [W/m/K]

1.1.1.30.28 Notes

This equation is entrely dimensionless; all dimensions cancel. The original source has not been reviewed.
This is DIPPR Procedure 9G: Method for the Thermal Conductivity of Pure Nonhydrocarbon Liquids at High
Pressures

1.1.1.30.29 References

[1], [2]

1.1.1.30.30 Examples

From [2], for butyl acetate.

>>> DIPPR9G(515.05, 3.92E7, 579.15, 3.212E6, 7.085E-2)


0.0864419738671184

328 Chapter 1. thermo


thermo Documentation, Release 0.1

thermo.thermal_conductivity.Missenard(T, P, Tc, Pc, kl)


Adjustes for pressure the thermal conductivity of a liquid using an emperical formula based on [1], but as given
in [2].
𝑘
= 1 + 𝑄𝑃𝑟0.7
𝑘*
Parameters
T [float] Temperature of fluid [K]
P [float] Pressure of fluid [Pa]
Tc: float Critical point of fluid [K]
Pc [float] Critical pressure of the fluid [Pa]
kl [float] Thermal conductivity of liquid at 1 atm or saturation, [W/m/K]
Returns
kl_dense [float] Thermal conductivity of liquid at P, [W/m/K]

1.1.1.30.31 Notes

This equation is entirely dimensionless; all dimensions cancel. An interpolation routine is used here from
tabulated values of Q. The original source has not been reviewed.

1.1.1.30.32 References

[1], [2]

1.1.1.30.33 Examples

Example from [2], toluene; matches.

>>> Missenard(304., 6330E5, 591.8, 41E5, 0.129)


0.2198375777069657

thermo.thermal_conductivity.DIPPR9H(ws, ks)
Calculates thermal conductivity of a liquid mixture according to mixing rules in [1] and also in [2].
(︃ )︃−1/2
∑︁
𝜆𝑚 = 𝑤𝑖 𝜆−2
𝑖
𝑖

Parameters
ws [float] Mass fractions of components
ks [float] Liquid thermal conductivites of all components, [W/m/K]
Returns
kl [float] Thermal conductivity of liquid mixture, [W/m/K]

1.1. thermo package 329


thermo Documentation, Release 0.1

1.1.1.30.34 Notes

This equation is entirely dimensionless; all dimensions cancel. The example is from [2]; all results agree. The
original source has not been reviewed.
DIPPR Procedure 9H: Method for the Thermal Conductivity of Nonaqueous Liquid Mixtures
Average deviations of 3%. for 118 nonaqueous systems with 817 data points. Max deviation 20%. According
to DIPPR.

1.1.1.30.35 References

[1], [2]

1.1.1.30.36 Examples

>>> DIPPR9H([0.258, 0.742], [0.1692, 0.1528])


0.15657104706719646

thermo.thermal_conductivity.Filippov(ws, ks)
Calculates thermal conductivity of a binary liquid mixture according to mixing rules in [2] as found in [1].

𝜆𝑚 = 𝑤1 𝜆1 + 𝑤2 𝜆2 − 0.72𝑤1 𝑤2 (𝜆2 − 𝜆1 )

Parameters
ws [float] Mass fractions of components
ks [float] Liquid thermal conductivites of all components, [W/m/K]
Returns
kl [float] Thermal conductivity of liquid mixture, [W/m/K]

1.1.1.30.37 Notes

This equation is entirely dimensionless; all dimensions cancel. The original source has not been reviewed. Only
useful for binary mixtures.

1.1.1.30.38 References

[1], [2]

1.1.1.30.39 Examples

>>> Filippov([0.258, 0.742], [0.1692, 0.1528])


0.15929167628799998

thermo.thermal_conductivity.Eucken(MW, Cvm, mu)


Estimates the thermal conductivity of a gas as a function of temperature using the CSP method of Eucken [1].
𝜆𝑀 9/4
=1+
𝜂𝐶𝑣 𝐶𝑣 /𝑅

330 Chapter 1. thermo


thermo Documentation, Release 0.1

Parameters
MW [float] Molecular weight of the gas [g/mol]
Cvm [float] Molar contant volume heat capacity of the gas [J/mol/K]
mu [float] Gas viscosity [Pa*S]
Returns
kg [float] Estimated gas thermal conductivity [W/m/k]

1.1.1.30.40 Notes

Temperature dependence is introduced via heat capacity and viscosity. A theoretical equation. No original
author located. MW internally converted to kg/g-mol.

1.1.1.30.41 References

[1]

1.1.1.30.42 Examples

2-methylbutane at low pressure, 373.15 K. Mathes calculation in [1].

>>> Eucken(MW=72.151, Cvm=135.9, mu=8.77E-6)


0.018792644287722975

thermo.thermal_conductivity.Eucken_modified(MW, Cvm, mu)


Estimates the thermal conductivity of a gas as a function of temperature using the Modified CSP method of
Eucken [1].
𝜆𝑀 1.77
= 1.32 +
𝜂𝐶𝑣 𝐶𝑣 /𝑅

Parameters
MW [float] Molecular weight of the gas [g/mol]
Cvm [float] Molar contant volume heat capacity of the gas [J/mol/K]
mu [float] Gas viscosity [Pa*S]
Returns
kg [float] Estimated gas thermal conductivity [W/m/k]

1.1.1.30.43 Notes

Temperature dependence is introduced via heat capacity and viscosity. A theoretical equation. No original
author located. MW internally converted to kg/g-mol.

1.1.1.30.44 References

[1]

1.1. thermo package 331


thermo Documentation, Release 0.1

1.1.1.30.45 Examples

2-methylbutane at low pressure, 373.15 K. Mathes calculation in [1].

>>> Eucken_modified(MW=72.151, Cvm=135.9, mu=8.77E-6)


0.023593536999201956

thermo.thermal_conductivity.DIPPR9B(T, MW, Cvm, mu, Tc=None, chemtype=None)


Calculates the thermal conductivity of a gas using one of several emperical equations developed in [1], [2], and
presented in [3].
For monoatomic gases:
𝜂𝐶𝑣
𝑘 = 2.5
𝑀𝑊
For linear molecules:
(︂ )︂
𝜂 2928.80
𝑘= 1.30𝐶𝑣 + 14644.00 −
𝑀𝑊 𝑇𝑟

For nonlinear molecules:


𝜂
𝑘= (1.15𝐶𝑣 + 16903.36)
𝑀𝑊
Parameters
T [float] Temperature of the fluid [K]
Tc [float] Critical temperature of the fluid [K]
MW [float] Molwcular weight of fluid [g/mol]
Cvm [float] Molar heat capacity at constant volume of fluid, [J/mol/K]
mu [float] Viscosity of gas, [Pa*S]
Returns
k_g [float] Thermal conductivity of gas, [W/m/k]

1.1.1.30.46 Notes

Tested with DIPPR values. Cvm is internally converted to J/kmol/K.

1.1.1.30.47 References

[1], [2], [3]

1.1.1.30.48 Examples

CO:

>>> DIPPR9B(200., 28.01, 20.826, 1.277E-5, 132.92, chemtype='linear')


0.01813208676438415

332 Chapter 1. thermo


thermo Documentation, Release 0.1

thermo.thermal_conductivity.Chung(T, MW, Tc, omega, Cvm, mu)


Estimates the thermal conductivity of a gas as a function of temperature using the CSP method of Chung [1].

𝜆𝑀 3.75Ψ
=
𝜂𝐶𝑣 𝐶𝑣 /𝑅
Ψ = 1 + 𝛼 {[0.215 + 0.28288𝛼 − 1.061𝛽 + 0.26665𝑍]/[0.6366 + 𝛽𝑍 + 1.061𝛼𝛽]}
𝐶𝑣
𝛼= − 1.5
𝑅
𝛽 = 0.7862 − 0.7109𝜔 + 1.3168𝜔 2
𝑍 = 2 + 10.5𝑇𝑟2

Parameters
T [float] Temperature of the gas [K]
MW [float] Molecular weight of the gas [g/mol]
Tc [float] Critical temperature of the gas [K]
omega [float] Acentric factor of the gas [-]
Cvm [float] Molar contant volume heat capacity of the gas [J/mol/K]
mu [float] Gas viscosity [Pa*S]
Returns
kg [float] Estimated gas thermal conductivity [W/m/k]

1.1.1.30.49 Notes

MW internally converted to kg/g-mol.

1.1.1.30.50 References

[1], [2]

1.1.1.30.51 Examples

2-methylbutane at low pressure, 373.15 K. Mathes calculation in [2].

>>> Chung(T=373.15, MW=72.151, Tc=460.4, omega=0.227, Cvm=135.9, mu=8.77E-6)


0.023015653729496946

thermo.thermal_conductivity.eli_hanley(T, MW, Tc, Vc, Zc, omega, Cvm)


Estimates the thermal conductivity of a gas as a function of temperature using the reference fluid method of Eli

1.1. thermo package 333


thermo Documentation, Release 0.1

and Hanley [1] as shown in [2].

𝜂*
(︂ )︂
* 3𝑅
𝜆=𝜆 + (1.32) 𝐶𝑣 −
𝑀𝑊 2
𝑇 𝑟 = min(𝑇 𝑟, 2)
(︂ )︂
0.69852
𝜃 = 1 + (𝜔 − 0.011) 0.56553 − 0.86276 ln 𝑇 𝑟 −
𝑇𝑟
0.288
𝜓 = [1 + (𝜔 − 0.011)(0.38560 − 1.1617 ln 𝑇 𝑟)]
𝑍𝑐
𝑇𝑐
𝑓= 𝜃
190.4
𝑉𝑐
ℎ= 𝜓
9.92𝐸 − 5
𝑇0 = 𝑇 /𝑓
9
(𝑛−4)/3
∑︁
𝜂0* (𝑇0 ) = 𝐶𝑛 𝑇0
𝑛=1
𝜃0 = 1944𝜂0
𝜆* = 𝜆0 𝐻
𝑀𝑊
𝜂 * = 𝜂0* 𝐻
16.04
(︂ )︂0.5
16.04
𝐻= 𝑓 0.5 /ℎ2/3
𝑀𝑊

Parameters
T [float] Temperature of the gas [K]
MW [float] Molecular weight of the gas [g/mol]
Tc [float] Critical temperature of the gas [K]
Vc [float] Critical volume of the gas [m^3/mol]
Zc [float] Critical compressibility of the gas []
omega [float] Acentric factor of the gas [-]
Cvm [float] Molar contant volume heat capacity of the gas [J/mol/K]
Returns
kg [float] Estimated gas thermal conductivity [W/m/k]

1.1.1.30.52 Notes

Reference fluid is Methane. MW internally converted to kg/g-mol.

1.1.1.30.53 References

[1], [2]

334 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.30.54 Examples

2-methylbutane at low pressure, 373.15 K. Mathes calculation in [2].

>>> eli_hanley(T=373.15, MW=72.151, Tc=460.4, Vc=3.06E-4, Zc=0.267,


... omega=0.227, Cvm=135.9)
0.02247951789135337

thermo.thermal_conductivity.Gharagheizi_gas(T, MW, Tb, Pc, omega)


Estimates the thermal conductivity of a gas as a function of temperature using the CSP method of Gharagheizi
[1]. A convoluted method claiming high-accuracy and using only statistically significant variable following
analalysis.
Requires temperature, molecular weight, boiling temperature and critical pressure and acentric factor.

𝑘 = 7.9505 × 10−4 + 3.989 × 10−5 𝑇 − 5.419 × 10− 5𝑀 + 3.989 × 10−5 𝐴


(︁ )︁
2𝜔 + 𝑇 − (2𝜔+3.2825)𝑇
𝑇𝑏 + 3.2825
𝐴= × (3.9752𝜔 + 0.1𝑃𝑐 + 1.9876𝐵 + 6.5243)2
0.1𝑀 𝑃𝑐 𝑇
Parameters
T [float] Temperature of the fluid [K]
MW: float Molecular weight of the fluid [g/mol]
Tb [float] Boiling temperature of the fluid [K]
Pc [float] Critical pressure of the fluid [Pa]
omega [float] Acentric factor of the fluid [-]
Returns
kg [float] Estimated gas thermal conductivity [W/m/k]

1.1.1.30.55 Notes

Pressure is internally converted into 10*kPa but author used correlation with kPa; overall, errors have been
corrected in the presentation of the formula.
This equation was derived with 15927 points and 1574 compounds. Example value from [1] is the first point in
the supportinf info, for CH4.

1.1.1.30.56 References

[1]

1.1.1.30.57 Examples

>>> Gharagheizi_gas(580., 16.04246, 111.66, 4599000.0, 0.0115478000)


0.09594861261873211

1.1. thermo package 335


thermo Documentation, Release 0.1

thermo.thermal_conductivity.Bahadori_gas(T, MW)
Estimates the thermal conductivity of hydrocarbons gases at low P. Fits their data well, and is useful as only
MW is required. Y is the Molecular weight, and X the temperature.

𝐾 = 𝑎 + 𝑏𝑌 + 𝐶𝑌 2 + 𝑑𝑌 3
𝑎 = 𝐴1 + 𝐵 1 𝑋 + 𝐶 1 𝑋 2 + 𝐷 1 𝑋 3
𝑏 = 𝐴2 + 𝐵2 𝑋 + 𝐶2 𝑋 2 + 𝐷2 𝑋 3
𝑐 = 𝐴3 + 𝐵3 𝑋 + 𝐶3 𝑋 2 + 𝐷3 𝑋 3
𝑑 = 𝐴4 + 𝐵4 𝑋 + 𝐶4 𝑋 2 + 𝐷4 𝑋 3

Parameters
T [float] Temperature of the gas [K]
MW [float] Molecular weight of the gas [g/mol]
Returns
kg [float] Estimated gas thermal conductivity [W/m/k]

1.1.1.30.58 Notes

The accuracy of this equation has not been reviewed.

1.1.1.30.59 References

[1]

1.1.1.30.60 Examples

>>> Bahadori_gas(40+273.15, 20) # Point from article


0.031968165337873326

thermo.thermal_conductivity.thermal_conductivity_gas_methods = ['LINDSAY_BROMLEY', 'SIMPLE'


Holds all low-pressure methods available for the ThermalConductivityGas class, for use in iterating over them.
thermo.thermal_conductivity.thermal_conductivity_gas_methods_P = ['COOLPROP', 'ELI_HANLEY_D
Holds all high-pressure methods available for the ThermalConductivityGas class, for use in iterating over them.
class thermo.thermal_conductivity.ThermalConductivityGas(CASRN=”, MW=None,
Tb=None, Tc=None,
Pc=None, Vc=None,
Zc=None, omega=None,
dipole=None,
Vmg=None,
Cvgm=None,
mug=None)
Bases: thermo.utils.TPDependentProperty
Class for dealing with gas thermal conductivity as a function of temperature and pressure.
For gases at atmospheric pressure, there are 7 corresponding-states estimators, one source of tabular information,
and the external library CoolProp.

336 Chapter 1. thermo


thermo Documentation, Release 0.1

For gases under the fluid’s boiling point (at sub-atmospheric pressures), and high-pressure gases above the
boiling point, there are three corresponding-states estimators, and the external library CoolProp.
Parameters
CASs [list[str], optional] The CAS numbers of all species in the mixture
MW [float, optional] Molecular weight, [g/mol]
Tb [float, optional] Boiling point, [K]
Tc [float, optional] Critical temperature, [K]
Pc [float, optional] Critical pressure, [Pa]
Vc [float, optional] Critical volume, [m^3/mol]
Zc [float, optional] Critical compressibility, [-]
omega [float, optional] Acentric factor, [-]
dipole [float, optional] Dipole moment of the fluid, [debye]
Vmg [float or callable, optional] Molar volume of the fluid at a pressure and temperature or
callable for the same, [m^3/mol]
Cvgm [float or callable, optional] Molar heat capacity of the fluid at a pressure and temperature
or or callable for the same, [J/mol/K]
mug [float or callable, optional] Gas viscosity of the fluid at a pressure and temperature or
callable for the same, [Pa*S]
See also:
Bahadori_gas, Gharagheizi_gas, eli_hanley, Chung, DIPPR9B, Eucken_modified,
Eucken, stiel_thodos_dense, eli_hanley_dense, chung_dense

1.1.1.30.61 Notes

To iterate over all methods, use the lists stored in thermal_conductivity_gas_methods and
thermal_conductivity_gas_methods_P for low and high pressure methods respectively.
Low pressure methods:
GHARAGHEIZI_G: CSP method, described in Gharagheizi_gas.
DIPPR_9B: CSP method, described in DIPPR9B.
CHUNG: CSP method, described in Chung.
ELI_HANLEY: CSP method, described in eli_hanley.
EUCKEN_MOD: CSP method, described in Eucken_modified.
EUCKEN: CSP method, described in Eucken.
BAHADORI_G: CSP method, described in Bahadori_gas.
DIPPR_PERRY_8E: A collection of 345 coefficient sets from the DIPPR database published openly in [3].
Provides temperature limits for all its fluids. thermo.dippr.EQ102 is used for its fluids.
VDI_PPDS: Coefficients for a equation form developed by the PPDS, published openly in [2]. Covers a large
temperature range, but does not extrapolate well at very high or very low temperatures. 275 compounds.
COOLPROP: CoolProp external library; with select fluids from its library. Range is limited to that of the
equations of state it uses, as described in [1]. Very slow.

1.1. thermo package 337


thermo Documentation, Release 0.1

VDI_TABULAR: Tabular data in [2] along the saturation curve; interpolation is as set by the user or the
default.
High pressure methods:
STIEL_THODOS_DENSE: CSP method, described in stiel_thodos_dense. Calculates a low-pressure
thermal conductivity first, using T_dependent_property.
ELI_HANLEY_DENSE: CSP method, described in eli_hanley_dense. Calculates a low-pressure ther-
mal conductivity first, using T_dependent_property.
CHUNG_DENSE: CSP method, described in chung_dense. Calculates a low-pressure thermal conductiv-
ity first, using T_dependent_property.
COOLPROP: CoolProp external library; with select fluids from its library. Range is limited to that of the
equations of state it uses, as described in [1]. Very slow, but unparalled in accuracy for pressure depen-
dence.

1.1.1.30.62 References

[1], [2], [3]


Attributes
TP_cached
T_cached
interpolation_P
interpolation_T
interpolation_property
interpolation_property_inv
method
method_P

1.1.1.30.63 Methods

TP_dependent_property(T, P) Method to calculate the property with sanity checking


and without specifying a specific method.
TP_dependent_property_derivative_P(T, Method to calculate a derivative of a temperature and
P[, order]) pressure dependent property with respect to pressure at
constant temperature, of a given order.
TP_dependent_property_derivative_T(T, Method to calculate a derivative of a temperature and
P[, order]) pressure dependent property with respect to temperature
at constant pressure, of a given order.
T_dependent_property(T) Method to calculate the property with sanity checking
and without specifying a specific method.
T_dependent_property_derivative(T[, or- Method to obtain a derivative of a property with respect
der]) to temperature, of a given order.
T_dependent_property_integral(T1, T2) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
Continued on next page

338 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.41 – continued from previous page


T_dependent_property_integral_over_T(T1, Method to calculate the integral of a property over tem-
T2) perature with respect to temperature, using a specified
method.
__call__(T, P) Convenience method to calculate the property; calls
TP_dependent_property.
calculate(T, method) Method to calculate low-pressure gas thermal conduc-
tivity at tempearture T with a given method.
calculate_P(T, P, method) Method to calculate pressure-dependent gas thermal
conductivity at temperature T and pressure P with a
given method.
calculate_derivative(T, method[, order]) Method to calculate a derivative of a property with re-
spect to temperature, of a given order using a specified
method.
calculate_derivative_P(P, T, method[, order]) Method to calculate a derivative of a temperature and
pressure dependent property with respect to pressure at
constant temperature, of a given order using a specified
method.
calculate_derivative_T(T, P, method[, order]) Method to calculate a derivative of a temperature and
pressure dependent property with respect to temperature
at constant pressure, of a given order using a specified
method.
calculate_integral(T1, T2, method) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
calculate_integral_over_T(T1, T2, method) Method to calculate the integral of a property over tem-
perature with respect to temperature, using a specified
method.
interpolate(T, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data.
interpolate_P(T, P, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data_P.
load_all_methods() Method which picks out coefficients for the specified
chemical from the various dictionaries and DataFrames
storing it.
plot_TP_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
plot_T_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) according to either a specified list of methods, or user
methods (if set), or all methods.
plot_isobar(P[, Tmin, Tmax, methods_P, pts, . . . ]) Method to create a plot of the property vs temperature
at a specific pressure according to either a specified list
of methods, or user methods (if set), or all methods.
plot_isotherm(T[, Pmin, Pmax, methods_P, . . . ]) Method to create a plot of the property vs pressure at a
specified temperature according to either a specified list
of methods, or the user methods (if set), or all methods.
select_valid_methods(T) Method to obtain a sorted list of methods which are
valid at T according to test_method_validity.
select_valid_methods_P(T, P) Method to obtain a sorted list methods which are valid
at T according to test_method_validity.
set_tabular_data(Ts, properties[, name, . . . ]) Method to set tabular data to be used for interpolation.
set_tabular_data_P(Ts, Ps, properties[, . . . ]) Method to set tabular data to be used for interpolation.
Continued on next page

1.1. thermo package 339


thermo Documentation, Release 0.1

Table 1.41 – continued from previous page


set_user_methods(user_methods[, forced]) Method used to select certain property methods as hav-
ing a higher priority than were set by default.
set_user_methods_P(user_methods_P[, Method to set the pressure-dependent property methods
forced_P]) desired for consideration by the user.
solve_prop(goal[, reset_method]) Method to solve for the temperature at which a property
is at a specified value.
test_method_validity(T, method) Method to check the validity of a temperature-
dependent low-pressure method.
test_method_validity_P(T, P, method) Method to check the validity of a high-pressure method.
test_property_validity(prop) Method to test the validity of a calculated property.

TP_or_T_dependent_property
extrapolate_tabular

Tmax = None
Maximum temperature at which no method can calculate the gas thermal conductivity above.
Tmin = None
Minimum temperature at which no method can calculate the gas thermal conductivity under.
all_methods = None
Set of all low-pressure methods available for a given CASRN and properties; filled by
load_all_methods.
all_methods_P = None
Set of all high-pressure methods available for a given CASRN and properties; filled by
load_all_methods.
calculate(T, method)
Method to calculate low-pressure gas thermal conductivity at tempearture T with a given method.
This method has no exception handling; see T_dependent_property for that.
Parameters
T [float] Temperature of the gas, [K]
method [str] Name of the method to use
Returns
kg [float] Thermal conductivity of the gas at T and a low pressure, [W/m/K]
calculate_P(T, P, method)
Method to calculate pressure-dependent gas thermal conductivity at temperature T and pressure P with a
given method.
This method has no exception handling; see TP_dependent_property for that.
Parameters
T [float] Temperature at which to calculate gas thermal conductivity, [K]
P [float] Pressure at which to calculate gas thermal conductivity, [K]
method [str] Name of the method to use
Returns
kg [float] Thermal conductivity of the gas at T and P, [W/m/K]

340 Chapter 1. thermo


thermo Documentation, Release 0.1

interpolation_P = None
No interpolation transformation by default.
interpolation_T = None
No interpolation transformation by default.
interpolation_property = None
No interpolation transformation by default.
interpolation_property_inv = None
No interpolation transformation by default.
load_all_methods()
Method which picks out coefficients for the specified chemical from the various dictionaries and
DataFrames storing it. All data is stored as attributes. This method also sets Tmin, Tmax, all_methods
and obj:all_methods_P as a set of methods for which the data exists for.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'gas thermal conductivity'
property_max = 10
Maximum valid value of gas thermal conductivity. Generous limit.
property_min = 0
Mimimum valid value of gas thermal conductivity.
ranked_methods = ['COOLPROP', 'VDI_PPDS', 'DIPPR_PERRY_8E', 'VDI_TABULAR', 'GHARAGHEIZI
Default rankings of the low-pressure methods.
ranked_methods_P = ['COOLPROP', 'ELI_HANLEY_DENSE', 'CHUNG_DENSE', 'STIEL_THODOS_DENSE'
Default rankings of the high-pressure methods.
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by
T_dependent_property.
sorted_valid_methods_P = None
sorted_valid_methods_P, list: Stored methods which were found valid at a specific temperature; set by
TP_dependent_property.
tabular_data = None
tabular_data, dict: Stored (Ts, properties) for any tabular data; indexed by provided or autogenerated name.
tabular_data_P = None
tabular_data_P, dict: Stored (Ts, Ps, properties) for any tabular data; indexed by provided or autogenerated
name.
tabular_data_interpolators = None
tabular_data_interpolators, dict: Stored (extrapolator, spline) tuples which are interp1d instances for
each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_property, interpola-
tion_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had
been created is no longer used.
tabular_data_interpolators_P = None
tabular_data_interpolators_P, dict: Stored (extrapolator, spline) tuples which are interp2d instances
for each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_P, interpola-
tion_property, interpolation_property_inv) to ensure that if an interpolation transform is altered, the old
interpolator which had been created is no longer used.

1.1. thermo package 341


thermo Documentation, Release 0.1

tabular_extrapolation_permitted = True
Allow tabular extrapolation by default.
test_method_validity(T, method)
Method to check the validity of a temperature-dependent low-pressure method. For CSP methods, the all
methods are considered valid from 0 K and up.
For tabular data, extrapolation outside of the range is used if
tabular_extrapolation_permitted is set; if it is, the extrapolation is considered valid
for all temperatures.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid. GHARAGHEIZI_G and BAHADORI_G are known to sometimes produce
negative results.
Parameters
T [float] Temperature at which to test the method, [K]
method [str] Name of the method to test
Returns
validity [bool] Whether or not a method is valid
test_method_validity_P(T, P, method)
Method to check the validity of a high-pressure method. For COOLPROP, the fluid must be both a
gas and under the maximum pressure of the fluid’s EOS. The CSP method ELI_HANLEY_DENSE,
CHUNG_DENSE, and STIEL_THODOS_DENSE are considered valid for all temperatures and pres-
sures.
For tabular data, extrapolation outside of the range is used if
tabular_extrapolation_permitted is set; if it is, the extrapolation is considered valid
for all temperatures and pressures.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.
Parameters
T [float] Temperature at which to test the method, [K]
P [float] Pressure at which to test the method, [Pa]
method [str] Name of the method to test
Returns
validity [bool] Whether or not a method is valid
units = 'W/m/K'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by T_dependent_property.
user_methods_P = None
user_methods_P, list: Stored methods which were specified by the user in a ranked order of preference; set
by TP_dependent_property.
thermo.thermal_conductivity.stiel_thodos_dense(T, MW, Tc, Pc, Vc, Zc, Vm, kg)
Estimates the thermal conductivity of a gas at high pressure as a function of temperature using difference method
of Stiel and Thodos [1] as shown in [2].

342 Chapter 1. thermo


thermo Documentation, Release 0.1

if rho_r < 0.5:

(𝜆 − 𝜆∘ )Γ𝑍𝑐5 = 1.22 × 10−2 [exp(0.535𝜌𝑟 ) − 1]

if 0.5 < rho_r < 2.0:

(𝜆 − 𝜆∘ )Γ𝑍𝑐5 = 1.22 × 10−2 [exp(0.535𝜌𝑟 ) − 1]

if 2 < rho_r < 2.8:

(𝜆 − 𝜆∘ )Γ𝑍𝑐5 = 1.22 × 10−2 [exp(0.535𝜌𝑟 ) − 1]


)︂1/6
𝑇𝑐 𝑀 𝑊 3
(︂
Γ = 210
𝑃𝑐4

Parameters
T [float] Temperature of the gas [K]
MW [float] Molecular weight of the gas [g/mol]
Tc [float] Critical temperature of the gas [K]
Pc [float] Critical pressure of the gas [Pa]
Vc [float] Critical volume of the gas [m^3/mol]
Zc [float] Critical compressibility of the gas [-]
Vm [float] Molar volume of the gas at T and P [m^3/mol]
kg [float] Low-pressure gas thermal conductivity [W/m/k]
Returns
kg [float] Estimated dense gas thermal conductivity [W/m/k]

1.1.1.30.64 Notes

Pc is internally converted to bar.

1.1.1.30.65 References

[1], [2]

1.1.1.30.66 Examples

>>> stiel_thodos_dense(T=378.15, MW=44.013, Tc=309.6, Pc=72.4E5,


... Vc=97.4E-6, Zc=0.274, Vm=144E-6, kg=2.34E-2)
0.041245574404863684

thermo.thermal_conductivity.eli_hanley_dense(T, MW, Tc, Vc, Zc, omega, Cvm, Vm)


Estimates the thermal conductivity of a gas at high pressure as a function of temperature using the reference

1.1. thermo package 343


thermo Documentation, Release 0.1

fluid method of Eli and Hanley [1] as shown in [2].

𝑇 𝑟 = 𝑚𝑖𝑛(𝑇 𝑟, 2)
𝑉 𝑟 = 𝑚𝑖𝑛(𝑉 𝑟, 2)
𝑇𝑐
𝑓= 𝜃
190.4
𝑉𝑐
ℎ= 𝜓
9.92𝐸 − 5
𝑇0 = 𝑇 /𝑓
16.04
𝜌0 = ℎ
(︂ (︂ )︂ 𝑉 )︂
0.46568
𝜃 = 1 + (𝜔 − 0.011) 0.09057 − 0.86276 ln 𝑇 𝑟 + 0.31664 − (𝑉𝑟 − 0.5)
𝑇𝑟
0.288
𝜓 = [1 + (𝜔 − 0.011)(0.39490(𝑉𝑟 − 1.02355) − 0.93281(𝑉𝑟 − 0.75464) ln 𝑇𝑟 ]
𝑍𝑐
𝜆1 = 1944𝜂0
{︃ [︂ (︂ )︂]︂2 }︃
𝑇0
𝜆2 = 𝑏1 + 𝑏2 𝑏3 − ln 𝜌0
𝑏4
(︂ )︂ {︂ }︂
𝑎2 𝑎4 0.1 𝜌0 0.5 𝑎6 𝑎7
𝜆3 = exp 𝑎1 + exp[(𝑎3 + 1.5 )𝜌0 + ( − 1)𝜌0 (𝑎5 + + 2 )] − 1
𝑇0 𝑇0 0.1617 𝑇0 𝑇0
𝜆** = [𝜆1 + 𝜆2 + 𝜆3 ]𝐻
(︂ )︂0.5
16.04
𝐻= 𝑓 0.5 /ℎ2/3
𝑀𝑊
{︂[︂ (︂ )︂ ]︂ }︂1.5
𝑇 𝑑𝑓 0.288
𝑋= 1−
𝑓 𝑑𝑇 𝑣 𝑍𝑐
(︂ )︂ (︂ )︂
𝑑𝑓 𝑇𝑐 𝑑𝜃
=
𝑑𝑇 𝑣 190.4 𝑑𝑇 𝑣
(︂ )︂ [︂ ]︂
𝑑𝜃 −0.86276 0.46568𝑇𝑐
= (𝜔 − 0.011) + (𝑉𝑟 − 0.5)
𝑑𝑇 𝑣 𝑇 𝑇2

Parameters
T [float] Temperature of the gas [K]
MW [float] Molecular weight of the gas [g/mol]
Tc [float] Critical temperature of the gas [K]
Vc [float] Critical volume of the gas [m^3/mol]
Zc [float] Critical compressibility of the gas []
omega [float] Acentric factor of the gas [-]
Cvm [float] Molar contant volume heat capacity of the gas [J/mol/K]
Vm [float] Volume of the gas at T and P [m^3/mol]
Returns
kg [float] Estimated dense gas thermal conductivity [W/m/k]

344 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.30.67 Notes

Reference fluid is Methane. MW internally converted to kg/g-mol.

1.1.1.30.68 References

[1], [2]

1.1.1.30.69 Examples

>>> eli_hanley_dense(T=473., MW=42.081, Tc=364.9, Vc=1.81E-4, Zc=0.274,


... omega=0.144, Cvm=82.70, Vm=1.721E-4)
0.06038475936515042

thermo.thermal_conductivity.chung_dense(T, MW, Tc, Vc, omega, Cvm, Vm, mu, dipole, asso-
ciation=0)
Estimates the thermal conductivity of a gas at high pressure as a function of temperature using the reference
fluid method of Chung [1] as shown in [2].

31.2𝜂 ∘ Ψ −1
𝜆= (𝐺2 + 𝐵6 𝑦) + 𝑞𝐵7 𝑦 2 𝑇𝑟1/2 𝐺2
𝑀′
Ψ = 1 + 𝛼 {[0.215 + 0.28288𝛼 − 1.061𝛽 + 0.26665𝑍]/[0.6366 + 𝛽𝑍 + 1.061𝛼𝛽]}
𝐶𝑣
𝛼= − 1.5
𝑅
𝛽 = 0.7862 − 0.7109𝜔 + 1.3168𝜔 2
𝑍 = 2 + 10.5𝑇𝑟2
𝑞 = 3.586 × 10−3 (𝑇𝑐 /𝑀 ′ )1/2 /𝑉𝑐2/3
𝑉𝑐
𝑦=
6𝑉
1 − 0.5𝑦
𝐺1 =
(1 − 𝑦)3
(𝐵1 /𝑦)[1 − exp(−𝐵4 𝑦)] + 𝐵2 𝐺1 exp(𝐵5 𝑦) + 𝐵3 𝐺1
𝐺2 =
𝐵1 𝐵4 + 𝐵2 + 𝐵3
𝐵𝑖 = 𝑎𝑖 + 𝑏𝑖 𝜔 + 𝑐𝑖 𝜇4𝑟 + 𝑑𝑖 𝜅

Parameters
T [float] Temperature of the gas [K]
MW [float] Molecular weight of the gas [g/mol]
Tc [float] Critical temperature of the gas [K]
Vc [float] Critical volume of the gas [m^3/mol]
omega [float] Acentric factor of the gas [-]
Cvm [float] Molar contant volume heat capacity of the gas [J/mol/K]
Vm [float] Molar volume of the gas at T and P [m^3/mol]
mu [float] Low-pressure gas viscosity [Pa*S]
dipole [float] Dipole moment [debye]

1.1. thermo package 345


thermo Documentation, Release 0.1

association [float, optional] Association factor [-]


Returns
kg [float] Estimated dense gas thermal conductivity [W/m/k]

1.1.1.30.70 Notes

MW internally converted to kg/g-mol. Vm internally converted to mL/mol. [1] is not the latest form as presented
in [1]. Association factor is assumed 0. Relates to the polarity of the gas.
Coefficients as follows: ais = [2.4166E+0, -5.0924E-1, 6.6107E+0, 1.4543E+1, 7.9274E-1, -5.8634E+0,
9.1089E+1]
bis = [7.4824E-1, -1.5094E+0, 5.6207E+0, -8.9139E+0, 8.2019E-1, 1.2801E+1, 1.2811E+2]
cis = [-9.1858E-1, -4.9991E+1, 6.4760E+1, -5.6379E+0, -6.9369E-1, 9.5893E+0, -5.4217E+1]
dis = [1.2172E+2, 6.9983E+1, 2.7039E+1, 7.4344E+1, 6.3173E+0, 6.5529E+1, 5.2381E+2]

1.1.1.30.71 References

[1], [2]

1.1.1.30.72 Examples

>>> chung_dense(T=473., MW=42.081, Tc=364.9, Vc=184.6E-6, omega=0.142,


... Cvm=82.67, Vm=172.1E-6, mu=134E-7, dipole=0.4)
0.06160570379787278

thermo.thermal_conductivity.Lindsay_Bromley(T, ys, ks, mus, Tbs, MWs)


Calculates thermal conductivity of a gas mixture according to mixing rules in [1] and also in [2].

𝑦𝑘
∑︀ 𝑖 𝑖
∑︁
𝑘=
𝑦𝑖 𝐴𝑖𝑗
)︂]︃0.5 ⎬2 (︂
⎧ [︃ ⎫
(︂ )︂0.75 (︂ )︂
1⎨ 𝜂𝑖 𝑀 𝑊𝑗 𝑇 + 𝑆𝑖 𝑇 + 𝑆𝑖𝑗
𝐴𝑖𝑗 = 1+
4⎩ 𝜂𝑗 𝑀 𝑊𝑖 𝑇 + 𝑆𝑗 ⎭ 𝑇 + 𝑆𝑖

𝑆𝑖𝑗 = 𝑆𝑗𝑖 = (𝑆𝑖 𝑆𝑗 )0.5

Parameters
T [float] Temperature of gas [K]
ys [float] Mole fractions of gas components
ks [float] Liquid thermal conductivites of all components, [W/m/K]
mus [float] Gas viscosities of all components, [Pa*S]
Tbs [float] Boiling points of all components, [K]
MWs [float] Molecular weights of all components, [g/mol]
Returns
kg [float] Thermal conductivity of gas mixture, [W/m/K]

346 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.30.73 Notes

This equation is entirely dimensionless; all dimensions cancel. The example is from [2]; all results agree. The
original source has not been reviewed.
DIPPR Procedure 9D: Method for the Thermal Conductivity of Gas Mixtures
Average deviations of 4-5% for 77 binary mixtures reviewed in [2], from 1342 points; also six ternary mixtures
(70 points); max deviation observed was 40%. (DIPPR)
TODO: Finish documenting this.

1.1.1.30.74 References

[1], [2]

1.1.1.30.75 Examples

>>> Lindsay_Bromley(323.15, [0.23, 0.77], [1.939E-2, 1.231E-2], [1.002E-5, 1.015E-


˓→5], [248.31, 248.93], [46.07, 50.49])

0.01390264417969313

class thermo.thermal_conductivity.ThermalConductivityGasMixture(MWs=[],
Tbs=[],
CASs=[],
Thermal-
Conductivi-
tyGases=[],
Viscosity-
Gases=[])
Bases: thermo.utils.MixtureProperty
Class for dealing with thermal conductivity of a gas mixture as a function of temperature, pressure, and compo-
sition. Consists of one mixing rule specific to gas thremal conductivity, and mole weighted averaging.
Prefered method is Lindsay_Bromley which requires mole fractions, pure component viscosities and ther-
mal conductivities, and the boiling point and molecular weight of each pure component. This is substantially
better than the ideal mixing rule based on mole fractions, SIMPLE which is also available.
Parameters
MWs [list[float], optional] Molecular weights of all species in the mixture, [g/mol]
Tbs [list[float], optional] Boiling points of all species in the mixture, [K]
CASs [str, optional] The CAS numbers of all species in the mixture
ThermalConductivityGases [list[ThermalConductivityGas], optional] ThermalConductivity-
Gas objects created for all species in the mixture, normally created by thermo.
chemical.Chemical.
ViscosityGases [list[ViscosityGas], optional] ViscosityGas objects created for all species in the
mixture, normally created by thermo.chemical.Chemical.
See also:
Lindsay_Bromley

1.1. thermo package 347


thermo Documentation, Release 0.1

1.1.1.30.76 Notes

To iterate over all methods, use the list stored in thermal_conductivity_gas_methods.


LINDSAY_BROMLEY: Mixing rule described in Lindsay_Bromley.
SIMPLE: Mixing rule described in thermo.utils.mixing_simple.

1.1.1.30.77 References

[1]
Attributes
method
prop_cached

1.1.1.30.78 Methods

__call__(T, P, zs, ws) Convenience method to calculate the property; calls


mixture_property.
calculate(T, P, zs, ws, method) Method to calculate thermal conductivity of a gas mix-
ture at temperature T, pressure P, mole fractions zs and
weight fractions ws with a given method.
calculate_derivative_P(P, T, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition of a given order using a specified method.
calculate_derivative_T(T, P, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition of a given order using a specified method.
load_all_methods() Method to initialize the object by precomputing any val-
ues which may be used repeatedly and by retrieving
mixture-specific variables.
mixture_property(T, P, zs, ws) Method to calculate the property with sanity checking
and without specifying a specific method.
plot_isobar(P, zs, ws[, Tmin, Tmax, . . . ]) Method to create a plot of the property vs temperature at
a specific pressure and composition according to either
a specified list of methods, or user methods (if set), or
all methods.
plot_isotherm(T, zs, ws[, Pmin, Pmax, . . . ]) Method to create a plot of the property vs pressure at
a specified temperature and composition according to
either a specified list of methods, or the user methods (if
set), or all methods.
plot_property(zs, ws[, Tmin, Tmax, Pmin, . . . ]) Method to create a plot of the property vs temperature
and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
property_derivative_P(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition, of a given order.
Continued on next page

348 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.42 – continued from previous page


property_derivative_T(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition, of a given order.
select_valid_methods(T, P, zs, ws) Method to obtain a sorted list of methods which are
valid at T, P, zs, ws, and possibly Vfls, according to
test_method_validity.
set_user_method(user_methods[, forced]) Method to set the T, P, and composition dependent prop-
erty methods desired for consideration by the user.
test_method_validity(T, P, zs, ws, method) Method to test the validity of a specified method for the
given conditions.
test_property_validity(prop) Method to test the validity of a calculated property.

Tmax = None
Maximum temperature at which no method can calculate the gas thermal conductivity above.
Tmin = None
Minimum temperature at which no method can calculate the gas thermal conductivity under.
all_methods = None
Set of all methods available for a given set of information; filled by load_all_methods.
calculate(T, P, zs, ws, method)
Method to calculate thermal conductivity of a gas mixture at temperature T, pressure P, mole fractions zs
and weight fractions ws with a given method.
This method has no exception handling; see mixture_property for that.
Parameters
T [float] Temperature at which to calculate the property, [K]
P [float] Pressure at which to calculate the property, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Name of the method to use
Returns
kg [float] Thermal conductivity of gas mixture, [W/m/K]
load_all_methods()
Method to initialize the object by precomputing any values which may be used repeatedly and by retrieving
mixture-specific variables. All data are stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods which should work to calculate the property.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'gas thermal conductivity'
property_max = 10.0
Maximum valid value of gas thermal conductivity. Generous limit.
property_min = 0.0
Mimimum valid value of gas thermal conductivity.
ranked_methods = ['LINDSAY_BROMLEY', 'SIMPLE']

1.1. thermo package 349


thermo Documentation, Release 0.1

sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by mix-
ture_property.
test_method_validity(T, P, zs, ws, method)
Method to test the validity of a specified method for the given conditions. No methods have implemented
checks or strict ranges of validity.
Parameters
T [float] Temperature at which to check method validity, [K]
P [float] Pressure at which to check method validity, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Method name to use
Returns
validity [bool] Whether or not a specifid method is valid
units = 'W/m/K'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by mixture_property.

1.1.1.31 thermo.triple module

thermo.triple.Tt(CASRN, AvailableMethods=False, Method=None)


This function handles the retrieval of a chemical’s triple temperature. 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.
Returns data from [1], or a chemical’s melting point if available.
Parameters
CASRN [string] CASRN [-]
Returns
Tt [float] Triple point temperature, [K]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain Tt with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in
Tt_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain the Tt for the desired chemical, and will return methods instead of the Tt

1.1.1.31.1 Notes

Median difference between melting points and triple points is 0.02 K. Accordingly, this should be more than
good enough for engineering applications.
Temperatures are on the ITS-68 scale.

350 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.31.2 References

[1]

1.1.1.31.3 Examples

Ammonia

>>> Tt('7664-41-7')
195.47999999999999

thermo.triple.Pt(CASRN, AvailableMethods=False, Method=None)


This function handles the retrieval of a chemical’s triple pressure. Lookup is based on CASRNs. Will automat-
ically select a data source to use if no Method is provided; returns None if the data is not available.
Returns data from [1], or attempts to calculate the vapor pressure at the triple temperature, if data is available.
Parameters
CASRN [string] CASRN [-]
Returns
Pt [float] Triple point pressure, [Pa]
methods [list, only returned if AvailableMethods == True] List of methods which can be used
to obtain Pt with the given inputs
Other Parameters
Method [string, optional] A string for the method name to use, as defined by constants in
Pt_methods
AvailableMethods [bool, optional] If True, function will determine which methods can be used
to obtain the Pt for the desired chemical, and will return methods instead of the Pt

1.1.1.31.4 References

[1]

1.1.1.31.5 Examples

Ammonia

>>> Pt('7664-41-7')
6079.5

1.1.1.32 thermo.unifac module

thermo.unifac.UNIFAC(T, xs, chemgroups, cached=None, subgroup_data=None, interac-


tion_data=None, modified=False)
Calculates activity coefficients using the UNIFAC model (optionally modified), given a mixture’s temperature,
liquid mole fractions, and optionally the subgroup data and interaction parameter data of your choice. The
default is to use the original UNIFAC model, with the latest parameters published by DDBST. The model
supports modified forms (Dortmund, NIST) when the modified parameter is True.

1.1. thermo package 351


thermo Documentation, Release 0.1

Parameters
T [float] Temperature of the system, [K]
xs [list[float]] Mole fractions of all species in the system in the liquid phase, [-]
chemgroups [list[dict]] List of dictionaries of subgroup IDs and their counts for all species in
the mixture, [-]
subgroup_data [dict[UNIFAC_subgroup]] UNIFAC subgroup data; available dictionaries in
this module are UFSG (original), DOUFSG (Dortmund), or NISTUFSG ([4]).
interaction_data [dict[dict[tuple(a_mn, b_mn, c_mn)]]] UNIFAC interaction parameter data;
available dictionaries in this module are UFIP (original), DOUFIP2006 (Dortmund param-
eters as published by 2006), DOUFIP2016 (Dortmund parameters as published by 2016),
and NISTUFIP ([4]).
modified [bool] True if using the modified form and temperature dependence, otherwise False.
Returns
gammas [list[float]] Activity coefficients of all species in the mixture, [-]

1.1.1.32.1 Notes

The actual implementation of UNIFAC is formulated slightly different than the formulas above for computa-
tional efficiency. DDBST switched to using the more efficient forms in their publication, but the numerical
results are identical.
The model is as follows:

ln 𝛾𝑖 = ln 𝛾𝑖𝑐 + ln 𝛾𝑖𝑟

Combinatorial component
𝑛
𝜑𝑖 𝑧 𝜃𝑖 𝜑𝑖 ∑︁
ln 𝛾𝑖𝑐 = ln + 𝑞𝑖 ln + 𝐿𝑖 − 𝑥𝑗 𝐿𝑗
𝑥𝑖 2 𝜑𝑖 𝑥𝑖 𝑗=1
𝑥𝑖 𝑞 𝑖
𝜃𝑖 = ∑︀𝑛
𝑗=1 𝑥𝑗 𝑞𝑗
𝑥𝑖 𝑟𝑖
𝜑𝑖 = ∑︀𝑛
𝑗=1 𝑥𝑗 𝑟𝑗
𝐿𝑖 = 5(𝑟𝑖 − 𝑞𝑖 ) − (𝑟𝑖 − 1)

Residual component
𝑛 [︁ ]︁
(𝑖) (𝑖)
∑︁
ln 𝛾𝑖𝑟 = 𝜈𝑘 ln Γ𝑘 − ln Γ𝑘
𝑘
[︃ ]︃
Θ Ψ
∑︀ 𝑚 𝑘𝑚
∑︁ ∑︁
ln Γ𝑘 = 𝑄𝑘 1 − ln Θ𝑚 Ψ𝑚𝑘 −
𝑚 𝑚 𝑛 Θ𝑛 Ψ𝑛𝑚
𝑄𝑚 𝑋𝑚
Θ𝑚 = ∑︀
𝑄𝑛 𝑋𝑛
∑︀ 𝑛 𝑗
𝑗 𝑚 𝑥𝑗
𝜈
𝑋𝑚 = ∑︀ ∑︀ 𝑗
𝑗 𝑛 𝜈𝑛 𝑥𝑗

352 Chapter 1. thermo


thermo Documentation, Release 0.1

R and Q
𝑛
∑︁
𝑟𝑖 = 𝜈𝑘 𝑅𝑘
𝑘=1
𝑛
∑︁
𝑞𝑖 = 𝜈𝑘 𝑄𝑘
𝑘=1

The newer forms of UNIFAC (Dortmund, NIST) calculate the combinatorial part slightly differently:
(︂ (︂ )︂)︂
𝑉𝑖 𝑉𝑖
ln 𝛾𝑖𝑐 = 1 − 𝑉 ′ 𝑖 + ln(𝑉 ′ 𝑖 ) − 5𝑞𝑖 1 − + ln
𝐹𝑖 𝐹𝑖
3/4
𝑟𝑖
𝑉𝑖′ = ∑︀ 3/4
𝑗 𝑟𝑗 𝑥𝑗

This is more clear when looking at the full rearranged form as in [3].

1.1.1.32.2 References

[1], [2], [3], [4]

1.1.1.32.3 Examples

>>> UNIFAC(T=333.15, xs=[0.5, 0.5], chemgroups=[{1:2, 2:4}, {1:1, 2:1, 18:1}])


[1.4276025835624173, 1.3646545010104225]

>>> UNIFAC(373.15, [0.2, 0.3, 0.2, 0.2],


... [{9:6}, {78:6}, {1:1, 18:1}, {1:1, 2:1, 14:1}],
... subgroup_data=DOUFSG, interaction_data=DOUFIP2006, modified=True)
[1.186431113706829, 1.440280133911197, 1.204479833499608, 1.9720706090299824]

thermo.unifac.UNIFAC_psi(T, subgroup1, subgroup2, subgroup_data, interaction_data, modi-


fied=False)
Calculates the interaction parameter psi(m, n) for two UNIFAC subgroups, given the system temperature, the
UNIFAC subgroups considered for the variant of UNIFAC used, the interaction parameters for the variant of
UNIFAC used, and whether or not the temperature dependence is modified from the original form, as shown
below.
Original temperature dependence:
(︂ )︂
−𝑎𝑚𝑛
Ψ𝑚𝑛 = exp
𝑇

Modified temperature dependence:

−𝑎𝑚𝑛 − 𝑏𝑚𝑛 𝑇 − 𝑐𝑚𝑛 𝑇 2


(︂ )︂
Ψ𝑚𝑛 = exp
𝑇

Parameters
T [float] Temperature of the system, [K]
subgroup1 [int] First UNIFAC subgroup for identifier, [-]
subgroup2 [int] Second UNIFAC subgroup for identifier, [-]

1.1. thermo package 353


thermo Documentation, Release 0.1

subgroup_data [dict[UNIFAC_subgroup]] Normally provided as inputs to UNIFAC.


interaction_data [dict[dict[tuple(a_mn, b_mn, c_mn)]]] Normally provided as inputs to UNI-
FAC.
modified [bool] True if the modified temperature dependence is used by the interaction param-
eters, otherwise False
Returns
psi [float] UNIFAC interaction parameter term, [-]

1.1.1.32.4 Notes

UNIFAC interaction parameters are asymmetric. No warning is raised if an interaction parameter is missing.

1.1.1.32.5 References

[1], [2]

1.1.1.32.6 Examples

>>> from thermo.unifac import UFSG, UFIP, DOUFSG, DOUFIP2006

>>> UNIFAC_psi(307, 18, 1, UFSG, UFIP)


0.9165248264184787

>>> UNIFAC_psi(373.15, 9, 78, DOUFSG, DOUFIP2006, modified=True)


1.3703140538273264

thermo.unifac.UNIFAC_RQ(groups, subgroup_data=None)
Calculates UNIFAC parameters R and Q for a chemical, given a dictionary of its groups, as shown in [1]. Most
UNIFAC methods use the same subgroup values; however, a dictionary of UNIFAC_subgroup instances may be
specified as an optional second parameter.
𝑛
∑︁
𝑟𝑖 = 𝜈𝑘 𝑅𝑘
𝑘=1
𝑛
∑︁
𝑞𝑖 = 𝜈𝑘 𝑄𝑘
𝑘=1

Parameters
groups [dict[count]] Dictionary of numeric subgroup IDs : their counts
subgroup_data [None or dict[UNIFAC_subgroup]] Optional replacement for standard sub-
groups; leave as None to use the original UNIFAC subgroup r and q values.
Returns
R [float] R UNIFAC parameter (normalized Van der Waals Volume) [-]
Q [float] Q UNIFAC parameter (normalized Van der Waals Area) [-]

354 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.32.7 Notes

These parameters have some predictive value for other chemical properties.

1.1.1.32.8 References

[1]

1.1.1.32.9 Examples

Hexane
>>> UNIFAC_RQ({1:2, 2:4})
(4.4998000000000005, 3.856)

thermo.unifac.Van_der_Waals_volume(R)
Calculates a species Van der Waals molar volume with the UNIFAC method, given a species’s R parameter.

𝑉𝑤𝑘 = 15.17𝑅𝑘

Parameters
R [float] R UNIFAC parameter (normalized Van der Waals Volume) [-]
Returns
V_vdw [float] Unnormalized Van der Waals volume, [m^3/mol]

1.1.1.32.10 Notes

The volume was originally given in cm^3/mol, but is converted to SI here.

1.1.1.32.11 References

[1]

1.1.1.32.12 Examples

>>> Van_der_Waals_volume(4.4998)
6.826196599999999e-05

thermo.unifac.Van_der_Waals_area(Q)
Calculates a species Van der Waals molar surface area with the UNIFAC method, given a species’s Q parameter.

𝐴𝑤𝑘 = 2.5 × 109 𝑄𝑘

Parameters
Q [float] Q UNIFAC parameter (normalized Van der Waals Area) [-]
Returns
A_vdw [float] Unnormalized Van der Waals surface area, [m^2/mol]

1.1. thermo package 355


thermo Documentation, Release 0.1

1.1.1.32.13 Notes

The volume was originally given in cm^2/mol, but is converted to SI here.

1.1.1.32.14 References

[1]

1.1.1.32.15 Examples

>>> Van_der_Waals_area(3.856)
964000.0

thermo.unifac.load_group_assignments_DDBST()
Data is stored in the format InChI key bool bool bool subgroup count . . . subgroup count subgroup count. . .
where the bools refer to whether or not the original UNIFAC, modified UNIFAC, and PSRK group assignments
were completed correctly. The subgroups and their count have an indefinite length.

1.1.1.33 thermo.utils module

thermo.utils.isobaric_expansion(V, dV_dT)
Calculate the isobaric coefficient of a thermal expansion, given its molar volume at a certain T and P, and its
derivative of molar volume with respect to T.
(︂ )︂
1 𝜕𝑉
𝛽=
𝑉 𝜕𝑇 𝑃

Parameters
V [float] Molar volume at T and P, [m^3/mol]
dV_dT [float] Derivative of molar volume with respect to T, [m^3/mol/K]
Returns
beta [float] Isobaric coefficient of a thermal expansion, [1/K]

1.1.1.33.1 Notes

For an ideal gas, this expression simplified to:


1
𝛽=
𝑇

1.1.1.33.2 References

[1]

356 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.33.3 Examples

Calculated for hexane from the PR EOS at 299 K and 1 MPa (liquid):

>>> isobaric_expansion(0.000130229900873546, 1.58875261849113e-7)


0.0012199599384121608

thermo.utils.isothermal_compressibility(V, dV_dP)
Calculate the isothermal coefficient of a compressibility, given its molar volume at a certain T and P, and its
derivative of molar volume with respect to P.
(︂ )︂
1 𝜕𝑉
𝜅=−
𝑉 𝜕𝑃 𝑇

Parameters
V [float] Molar volume at T and P, [m^3/mol]
dV_dP [float] Derivative of molar volume with respect to P, [m^3/mol/Pa]
Returns
kappa [float] Isothermal coefficient of a compressibility, [1/Pa]

1.1.1.33.4 Notes

For an ideal gas, this expression simplified to:


1
𝜅=
𝑃

1.1.1.33.5 References

[1]

1.1.1.33.6 Examples

Calculated for hexane from the PR EOS at 299 K and 1 MPa (liquid):

>>> isothermal_compressibility(0.000130229900873546, -2.72902118209903e-13)


2.095541165119158e-09

thermo.utils.Cp_minus_Cv(T, dP_dT, dP_dV)


Calculate the difference between a real gas’s constant-pressure heat capacity and constant-volume heat capacity,
as given in [1], [2], and [3]. The required derivatives should be calculated with an equation of state.
(︂ )︂2 (︂ )︂
𝜕𝑃 𝜕𝑃
𝐶𝑝 − 𝐶𝑣 = −𝑇 /
𝜕𝑇 𝑉 𝜕𝑉 𝑇

Parameters
T [float] Temperature of fluid [K]
dP_dT [float] Derivative of P with respect to T, [Pa/K]
dP_dV [float] Derivative of P with respect to V, [Pa*mol/m^3]

1.1. thermo package 357


thermo Documentation, Release 0.1

Returns
Cp_minus_Cv [float] Cp - Cv for a real gas, [J/mol/K]

1.1.1.33.7 Notes

Equivalent expressions are:


(︂ )︂2 (︂ )︂
𝜕𝑉 𝜕𝑉
𝐶𝑝 − 𝐶𝑣 = −𝑇 /
𝜕𝑇 𝑃 𝜕𝑃 𝑇
(︂ )︂ (︂ )︂
𝜕𝑃 𝜕𝑉
𝐶𝑝 − 𝐶𝑣 = 𝑇
𝜕𝑇 𝜕𝑇
Note that these are not second derivatives, only first derivatives, some of which are squared.

1.1.1.33.8 References

[1], [2], [3]

1.1.1.33.9 Examples

Calculated for hexane from the PR EOS at 299 K and 1 MPa (liquid):
>>> Cp_minus_Cv(299, 582232.475794113, -3665180614672.253)
27.654681381642394

thermo.utils.speed_of_sound(V, dP_dV, Cp, Cv, MW=None)


Calculate a real fluid’s speed of sound. The required derivatives should be calculated with an equation of state,
and Cp and Cv are both the real fluid versions. Expression is given in [1] and [2]; a unit conversion is further
performed to obtain a result in m/s. If MW is not provided the result is returned in units of m*kg^0.5/s/mol^0.5.
[︂ (︂ )︂ ]︂1/2
2 𝜕𝑃 𝐶𝑝
𝑤 = −𝑉
𝜕𝑉 𝑇 𝐶𝑣
Parameters
V [float] Molar volume of fluid, [m^3/mol]
dP_dV [float] Derivative of P with respect to V, [Pa*mol/m^3]
Cp [float] Real fluid heat capacity at constant pressure, [J/mol/K]
Cv [float] Real fluid heat capacity at constant volume, [J/mol/K]
MW [float, optional] Molecular weight, [g/mol]
Returns
w [float] Speed of sound for a real gas, [m/s or m*kg^0.5/s/mol^0.5 or MW missing]

1.1.1.33.10 Notes

An alternate expression based on molar density is as follows:


[︂(︂ )︂ ]︂1/2
𝜕𝑃 𝐶𝑝
𝑤=
𝜕𝜌 𝑇 𝐶𝑣

358 Chapter 1. thermo


thermo Documentation, Release 0.1

The form with the unit conversion performed inside it is as follows:


[︂ (︂ )︂ ]︂1/2
2 1000 𝜕𝑃 𝐶𝑝
𝑤 = −𝑉
𝑀 𝑊 𝜕𝑉 𝑇 𝐶𝑣

1.1.1.33.11 References

[1], [2]

1.1.1.33.12 Examples

Example from [2]:

>>> speed_of_sound(V=0.00229754, dP_dV=-3.5459e+08, Cp=153.235, Cv=132.435, MW=67.


˓→152)

179.5868138460819

thermo.utils.Joule_Thomson(T, V, Cp, dV_dT=None, beta=None)


Calculate a real fluid’s Joule Thomson coefficient. The required derivative should be calculated with an equation
of state, and Cp is the real fluid versions. This can either be calculated with dV_dT directly, or with beta if it is
already known.
(︂ )︂ [︂ (︂ )︂ ]︂
𝜕𝑇 1 𝜕𝑉 𝑉
𝜇𝐽𝑇 = = 𝑇 −𝑉 = (𝛽𝑇 − 1)
𝜕𝑃 𝐻 𝐶𝑝 𝜕𝑇 𝑃 𝐶𝑝

Parameters
T [float] Temperature of fluid, [K]
V [float] Molar volume of fluid, [m^3/mol]
Cp [float] Real fluid heat capacity at constant pressure, [J/mol/K]
dV_dT [float, optional] Derivative of V with respect to T, [m^3/mol/K]
beta [float, optional] Isobaric coefficient of a thermal expansion, [1/K]
Returns
mu_JT [float] Joule-Thomson coefficient [K/Pa]

1.1.1.33.13 References

[1], [2]

1.1.1.33.14 Examples

Example from [2]:

>>> Joule_Thomson(T=390, V=0.00229754, Cp=153.235, dV_dT=1.226396e-05)


1.621956080529905e-05

1.1. thermo package 359


thermo Documentation, Release 0.1

thermo.utils.phase_identification_parameter(V, dP_dT, dP_dV, d2P_dV2, d2P_dVdT)


Calculate the Phase Identification Parameter developed in [1] for the accurate and efficient determination of
whether a fluid is a liquid or a gas based on the results of an equation of state. For supercritical conditions, this
provides a good method for choosing which property correlations to use.
[︃ 2 2
]︃
𝜕 𝑃 𝜕 𝑃
𝜕𝑉 𝜕𝑇 𝜕𝑉 2
Π=𝑉 𝜕𝑃
− 𝜕𝑃
𝜕𝑇 𝜕𝑉

Parameters
V [float] Molar volume at T and P, [m^3/mol]
dP_dT [float] Derivative of P with respect to T, [Pa/K]
dP_dV [float] Derivative of P with respect to V, [Pa*mol/m^3]
d2P_dV2 [float] Second derivative of P with respect to V, [Pa*mol^2/m^6]
d2P_dVdT [float] Second derivative of P with respect to both V and T, [Pa*mol/m^3/K]
Returns
PIP [float] Phase Identification Parameter, [-]

1.1.1.33.15 Notes

Heuristics were used by process simulators before the invent of this parameter.
The criteria for liquid is Pi > 1; for vapor, Pi <= 1.
There is also a solid phase mechanism available. For solids, the Solid Phase Identification Parameter is greater
than 1, like liquids; however, unlike liquids, d2P_dVdT is always >0; it is < 0 for liquids and gases.

1.1.1.33.16 References

[1], [2]

1.1.1.33.17 Examples

Calculated for hexane from the PR EOS at 299 K and 1 MPa (liquid):

>>> phase_identification_parameter(0.000130229900874, 582169.397484,


... -3.66431747236e+12, 4.48067893805e+17, -20518995218.2)
11.33428990564796

thermo.utils.phase_identification_parameter_phase(d2P_dVdT, V=None, dP_dT=None,


dP_dV=None, d2P_dV2=None)
Uses the Phase Identification Parameter concept developed in [1] and [2] to determine if a chemical is a solid,
liquid, or vapor given the appropriate thermodynamic conditions.
The criteria for liquid is PIP > 1; for vapor, PIP <= 1.
For solids, PIP(solid) is defined to be d2P_dVdT. If it is larger than 0, the species is a solid. It is less than 0 for
all liquids and gases.
Parameters
d2P_dVdT [float] Second derivative of P with respect to both V and T, [Pa*mol/m^3/K]

360 Chapter 1. thermo


thermo Documentation, Release 0.1

V [float, optional] Molar volume at T and P, [m^3/mol]


dP_dT [float, optional] Derivative of P with respect to T, [Pa/K]
dP_dV [float, optional] Derivative of P with respect to V, [Pa*mol/m^3]
d2P_dV2 [float, optionsl] Second derivative of P with respect to V, [Pa*mol^2/m^6]
Returns
phase [str] Either ‘s’, ‘l’ or ‘g’

1.1.1.33.18 Notes

The criteria for being a solid phase is checked first, which only requires d2P_dVdT. All other inputs are optional
for this reason. However, an exception will be raised if the other inputs become needed to determine if a species
is a liquid or a gas.

1.1.1.33.19 References

[1], [2]

1.1.1.33.20 Examples

Calculated for hexane from the PR EOS at 299 K and 1 MPa (liquid):

>>> phase_identification_parameter_phase(-20518995218.2, 0.000130229900874,


... 582169.397484, -3.66431747236e+12, 4.48067893805e+17)
'l'

thermo.utils.isentropic_exponent(Cp, Cv)
Calculate the isentropic coefficient of a gas, given its constant- pressure and constant-volume heat capacity.
𝐶𝑝
𝑘=
𝐶𝑣
Parameters
Cp [float] Gas heat capacity at constant pressure, [J/mol/K]
Cv [float] Gas heat capacity at constant volume, [J/mol/K]
Returns
k [float] Isentropic exponent, [-]

1.1.1.33.21 References

[1]

1.1.1.33.22 Examples

>>> isentropic_exponent(33.6, 25.27)


1.329639889196676

1.1. thermo package 361


thermo Documentation, Release 0.1

thermo.utils.Vm_to_rho(Vm, MW)
Calculate the density of a chemical, given its molar volume and molecular weight.
𝑀𝑊
𝜌=
1000 · 𝑉 𝑀
Parameters
Vm [float] Molar volume, [m^3/mol]
MW [float] Molecular weight, [g/mol]
Returns
rho [float] Density, [kg/m^3]

1.1.1.33.23 References

[1]

1.1.1.33.24 Examples

>>> Vm_to_rho(0.000132, 86.18)


652.8787878787879

thermo.utils.rho_to_Vm(rho, MW)
Calculate the molar volume of a chemical, given its density and molecular weight.
(︂ )︂−1
1000𝜌
𝑉𝑚 =
𝑀𝑊

Parameters
rho [float] Density, [kg/m^3]
MW [float] Molecular weight, [g/mol]
Returns
Vm [float] Molar volume, [m^3/mol]

1.1.1.33.25 References

[1]

1.1.1.33.26 Examples

>>> rho_to_Vm(652.9, 86.18)


0.00013199571144126206

thermo.utils.Z(T, P, V)
Calculates the compressibility factor of a gas, given its temperature, pressure, and molar volume.
𝑃𝑉
𝑍=
𝑅𝑇

362 Chapter 1. thermo


thermo Documentation, Release 0.1

Parameters
T [float] Temperature, [K]
P [float] Pressure [Pa]
V [float] Molar volume, [m^3/mol]
Returns
Z [float] Compressibility factor, [-]

1.1.1.33.27 References

[1]

1.1.1.33.28 Examples

>>> Z(600, P=1E6, V=0.00463)


0.9281019876560912

thermo.utils.B_to_Z(B, T, P)
Calculates the compressibility factor of a gas, given its second virial coefficient.
𝐵𝑃
𝑍 =1+
𝑅𝑇
Parameters
B [float] Second virial coefficient, [m^3/mol]
T [float] Temperature, [K]
P [float] Pressure [Pa]
Returns
Z [float] Compressibility factor, [-]

1.1.1.33.29 Notes

Other forms of the virial coefficient exist.

1.1.1.33.30 References

[1]

1.1.1.33.31 Examples

>>> B_to_Z(-0.0015, 300, 1E5)


0.9398638020957176

1.1. thermo package 363


thermo Documentation, Release 0.1

thermo.utils.B_from_Z(Z, T, P)
Calculates the second virial coefficient of a pure species, given the compressibility factor of the gas.

𝑅𝑇 (𝑍 − 1)
𝐵=
𝑃
Parameters
Z [float] Compressibility factor, [-]
T [float] Temperature, [K]
P [float] Pressure [Pa]
Returns
B [float] Second virial coefficient, [m^3/mol]

1.1.1.33.32 Notes

Other forms of the virial coefficient exist.

1.1.1.33.33 References

[1]

1.1.1.33.34 Examples

>>> B_from_Z(0.94, 300, 1E5)


-0.0014966027640000014

thermo.utils.Z_from_virial_density_form(T, P, *args)
Calculates the compressibility factor of a gas given its temperature, pressure, and molar density-form virial
coefficients. Any number of coefficients is supported.
𝑃𝑉 𝐵 𝐶 𝐷 𝐸
𝑍= = 1 + + 2 + 3 + 4 ...
𝑅𝑇 𝑉 𝑉 𝑉 𝑉
Parameters
T [float] Temperature, [K]
P [float] Pressure, [Pa]
B to Z [float, optional] Virial coefficients, [various]
Returns
Z [float] Compressibility factor at T, P, and with given virial coefficients, [-]

1.1.1.33.35 Notes

For use with B or with B and C or with B and C and D, optimized equations are used to obtain the compressibility
factor directly. If more coefficients are provided, uses numpy’s roots function to solve this equation. This takes
substantially longer as the solution is numerical.
If no virial coefficients are given, returns 1, as per the ideal gas law.

364 Chapter 1. thermo


thermo Documentation, Release 0.1

The units of each virial coefficient are as follows, where for B, n=1, and C, n=2, and so on.
(︂ 3 )︂𝑛
m
mol

1.1.1.33.36 References

[1], [2]

1.1.1.33.37 Examples

>>> Z_from_virial_density_form(300, 122057.233762653, 1E-4, 1E-5, 1E-6, 1E-7)


1.2843496002100001

thermo.utils.Z_from_virial_pressure_form(P, *args)
Calculates the compressibility factor of a gas given its pressure, and pressure-form virial coefficients. Any
number of coefficients is supported.
𝑃𝑣
𝑍= = 1 + 𝐵 ′ 𝑃 + 𝐶 ′ 𝑃 2 + 𝐷′ 𝑃 3 + 𝐸 ′ 𝑃 4 . . .
𝑅𝑇
Parameters
P [float] Pressure, [Pa]
B to Z [float, optional] Pressure form Virial coefficients, [various]
Returns
Z [float] Compressibility factor at P, and with given virial coefficients, [-]

1.1.1.33.38 Notes

Note that although this function does not require a temperature input, it is still dependent on it because the
coefficients themselves normally are regressed in terms of temperature.
The use of this form is less common than the density form. Its coefficients are normally indicated with the “’”
suffix.
If no virial coefficients are given, returns 1, as per the ideal gas law.
The units of each virial coefficient are as follows, where for B, n=1, and C, n=2, and so on.
(︂ )︂𝑛
1
Pa

1.1.1.33.39 References

[1], [2]

1.1.1.33.40 Examples

1.1. thermo package 365


thermo Documentation, Release 0.1

>>> Z_from_virial_pressure_form(102919.99946855308, 4.032286555169439e-09, 1.


˓→6197059494442215e-13, 6.483855042486911e-19)

1.00283753944

thermo.utils.zs_to_ws(zs, MWs)
Converts a list of mole fractions to mass fractions. Requires molecular weights for all species.
𝑧𝑖 𝑀 𝑊𝑖
𝑤𝑖 =
𝑀 𝑊𝑎𝑣𝑔
∑︁
𝑀 𝑊𝑎𝑣𝑔 = 𝑧𝑖 𝑀 𝑊𝑖
𝑖

Parameters
zs [iterable] Mole fractions [-]
MWs [iterable] Molecular weights [g/mol]
Returns
ws [iterable] Mass fractions [-]

1.1.1.33.41 Notes

Does not check that the sums add to one. Does not check that inputs are of the same length.

1.1.1.33.42 Examples

>>> zs_to_ws([0.5, 0.5], [10, 20])


[0.3333333333333333, 0.6666666666666666]

thermo.utils.ws_to_zs(ws, MWs)
Converts a list of mass fractions to mole fractions. Requires molecular weights for all species.
𝑤𝑖
𝑧𝑖 = ∑︀𝑀 𝑊𝑤𝑖𝑖
𝑖 𝑀 𝑊𝑖

Parameters
ws [iterable] Mass fractions [-]
MWs [iterable] Molecular weights [g/mol]
Returns
zs [iterable] Mole fractions [-]

1.1.1.33.43 Notes

Does not check that the sums add to one. Does not check that inputs are of the same length.

1.1.1.33.44 Examples

366 Chapter 1. thermo


thermo Documentation, Release 0.1

>>> ws_to_zs([0.3333333333333333, 0.6666666666666666], [10, 20])


[0.5, 0.5]

thermo.utils.zs_to_Vfs(zs, Vms)
Converts a list of mole fractions to volume fractions. Requires molar volumes for all species.
𝑧𝑖 𝑉𝑚,𝑖
Vf𝑖 = ∑︀
𝑖 𝑧𝑖 𝑉𝑚,𝑖

Parameters
zs [iterable] Mole fractions [-]
VMs [iterable] Molar volumes of species [m^3/mol]
Returns
Vfs [list] Molar volume fractions [-]

1.1.1.33.45 Notes

Does not check that the sums add to one. Does not check that inputs are of the same length.
Molar volumes are specified in terms of pure components only. Function works with any phase.

1.1.1.33.46 Examples

Acetone and benzene example

>>> zs_to_Vfs([0.637, 0.363], [8.0234e-05, 9.543e-05])


[0.5960229712956298, 0.4039770287043703]

thermo.utils.Vfs_to_zs(Vfs, Vms)
Converts a list of mass fractions to mole fractions. Requires molecular weights for all species.
Vf𝑖
𝑉𝑚,𝑖
𝑧𝑖 = ∑︀ Vf𝑖
𝑖 𝑉𝑚,𝑖

Parameters
Vfs [iterable] Molar volume fractions [-]
VMs [iterable] Molar volumes of species [m^3/mol]
Returns
zs [list] Mole fractions [-]

1.1.1.33.47 Notes

Does not check that the sums add to one. Does not check that inputs are of the same length.
Molar volumes are specified in terms of pure components only. Function works with any phase.

1.1. thermo package 367


thermo Documentation, Release 0.1

1.1.1.33.48 Examples

Acetone and benzene example

>>> Vfs_to_zs([0.596, 0.404], [8.0234e-05, 9.543e-05])


[0.6369779395901142, 0.3630220604098858]

thermo.utils.none_and_length_check(all_inputs, length=None)
Checks inputs for suitability of use by a mixing rule which requires all inputs to be of the same length and
non-None. A number of variations were attempted for this function; this was found to be the quickest.
Parameters
all_inputs [array-like of array-like] list of all the lists of inputs, [-]
length [int, optional] Length of the desired inputs, [-]
Returns
False/True [bool] Returns True only if all inputs are the same length (or length length) and
none of the inputs contain None [-]

1.1.1.33.49 Notes

Does not check for nan values.

1.1.1.33.50 Examples

>>> none_and_length_check(([1, 1], [1, 1], [1, 30], [10,0]), length=2)


True

thermo.utils.normalize(values)
Simple function which normalizes a series of values to be from 0 to 1, and for their sum to add to 1.
𝑥
𝑥=
𝑠𝑢𝑚𝑖 𝑥𝑖
Parameters
values [array-like] array of values
Returns
fractions [array-like] Array of values from 0 to 1

1.1.1.33.51 Notes

Does not work on negative values.

1.1.1.33.52 Examples

>>> normalize([3, 2, 1])


[0.5, 0.3333333333333333, 0.16666666666666666]

368 Chapter 1. thermo


thermo Documentation, Release 0.1

thermo.utils.mixing_simple(fracs, props)
Simple function calculates a property based on weighted averages of properties. Weights could be mole frac-
tions, volume fractions, mass fractions, or anything else.
∑︁
𝑦= frac𝑖 · prop𝑖
𝑖

Parameters
fracs [array-like] Fractions of a mixture
props: array-like Properties
Returns
prop [value] Calculated property

1.1.1.33.53 Notes

Returns None if any fractions or properties are missing or are not of the same length.

1.1.1.33.54 Examples

>>> mixing_simple([0.1, 0.9], [0.01, 0.02])


0.019000000000000003

thermo.utils.mixing_logarithmic(fracs, props)
Simple function calculates a property based on weighted averages of logarithmic properties.
∑︁
𝑦= frac𝑖 · log(prop𝑖 )
𝑖

Parameters
fracs [array-like] Fractions of a mixture
props: array-like Properties
Returns
prop [value] Calculated property

1.1.1.33.55 Notes

Does not work on negative values. Returns None if any fractions or properties are missing or are not of the same
length.

1.1.1.33.56 Examples

>>> mixing_logarithmic([0.1, 0.9], [0.01, 0.02])


0.01866065983073615

thermo.utils.to_num(values)
Legacy function to turn a list of strings into either floats (if numeric), stripped strings (if not) or None if the
string is empty. Accepts any numeric formatting the float function does.

1.1. thermo package 369


thermo Documentation, Release 0.1

Parameters
values [list] list of strings
Returns
values [list] list of floats, strings, and None values [-]

1.1.1.33.57 Examples

>>> to_num(['1', '1.1', '1E5', '0xB4', ''])


[1.0, 1.1, 100000.0, '0xB4', None]

thermo.utils.CAS2int(i)
Converts CAS number of a compounds from a string to an int. This is helpful when storing large amounts of
CAS numbers, as their strings take up more memory than their numerical representational. All CAS numbers fit
into 64 bit ints.
Parameters
CASRN [string] CASRN [-]
Returns
CASRN [int] CASRN [-]

1.1.1.33.58 Notes

Accomplishes conversion by removing dashes only, and then converting to an int. An incorrect CAS number
will change without exception.

1.1.1.33.59 Examples

>>> CAS2int('7704-34-9')
7704349

thermo.utils.int2CAS(i)
Converts CAS number of a compounds from an int to an string. This is helpful when dealing with int CAS
numbers.
Parameters
CASRN [int] CASRN [-]
Returns
CASRN [string] CASRN [-]

1.1.1.33.60 Notes

Handles CAS numbers with an unspecified number of digits. Does not work on floats.

370 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.33.61 Examples

>>> int2CAS(7704349)
'7704-34-9'

thermo.utils.Parachor(MW, rhol, rhog, sigma)


Calculate Parachor for a pure species, using its density in the liquid and gas phases, surface tension, and molec-
ular weight.

𝜎 0.25 𝑀 𝑊
𝑃 =
𝜌𝐿 − 𝜌𝑉
Parameters
MW [float] Molecular weight, [g/mol]
rhol [float] Liquid density [kg/m^3]
rhog [float] Gas density [kg/m^3]
sigma [float] Surface tension, [N/m]
Returns
P [float] Parachor, [N^0.25*m^2.75/mol]

1.1.1.33.62 Notes

To convert the output of this function to units of [mN^0.25*m^2.75/kmol], multiply by 5623.4132519.


Values in group contribution tables for Parachor are often listed as dimensionless, in which they are multiplied
by 5623413 and the appropriate units to make them dimensionless.

1.1.1.33.63 References

[1], [2], [3]

1.1.1.33.64 Examples

Calculating Parachor from a known surface tension for methyl isobutyl ketone at 293.15 K

>>> Parachor(100.15888, 800.8088185536124, 4.97865317223119, 0.02672166960656005)


5.088443542210164e-05

Converting to the dimensionless form:

>>> 5623413*5.088443542210164e-05
286.14419565030687

Compared to 274.9 according to a group contribution method described in [3].


thermo.utils.property_molar_to_mass(A_molar, MW)
thermo.utils.property_mass_to_molar(A_mass, MW)

1.1. thermo package 371


thermo Documentation, Release 0.1

thermo.utils.SG_to_API(SG)
Calculates specific gravity of a liquid given its API, as shown in [1].
141.5
API gravity = − 131.5
SG
Parameters
SG [float] Specific gravity of the fluid at 60 degrees Farenheight [-]
Returns
API [float] API of the fluid [-]

1.1.1.33.65 Notes

Defined only at 60 degrees Fahrenheit.

1.1.1.33.66 References

American Petroleum Institute, 7E, 2005.


[1]

1.1.1.33.67 Examples

>>> SG_to_API(0.7365)
60.62491513917175

thermo.utils.API_to_SG(API)
Calculates API of a liquid given its specific gravity, as shown in [1].
141.5
SG at 60∘ F =
API gravity + 131.5

Parameters
API [float] API of the fluid [-]
Returns
SG [float] Specific gravity of the fluid at 60 degrees Farenheight [-]

1.1.1.33.68 Notes

Defined only at 60 degrees Fahrenheit.

1.1.1.33.69 References

American Petroleum Institute, 7E, 2005.


[1]

372 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.33.70 Examples

>>> API_to_SG(60.62)
0.7365188423901728

thermo.utils.SG(rho, rho_ref=999.0170824078306)
Calculates the specific gravity of a substance with respect to another substance; by default, this is water at 15.6
°C (60 °F). For gases, normally the reference density is 1.2 kg/m^3, that of dry air. However, in general specific
gravity should always be specified with respect to the temperature and pressure of its reference fluid. This can
vary widely.
𝜌
𝑆𝐺 =
𝜌𝑟𝑒𝑓

Parameters
rho [float] Density of the substance, [kg/m^3]
rho_ref [float, optional] Density of the reference substance, [kg/m^3]
Returns
SG [float] Specific gravity of the substance with respect to the reference density, [-]

1.1.1.33.71 Notes

Another common reference point is water at 4°C (rho_ref=999.9748691393087). Specific gravity is often used
by consumers instead of density. The reference for solids is normally the same as for liquids - water.

1.1.1.33.72 Examples

>>> SG(860)
0.8608461408159591

thermo.utils.phase_select_property(phase=None, s=None, l=None, g=None,


V_over_F=None)
Determines which phase’s property should be set as a default, given the phase a chemical is, and the property
values of various phases. For the case of liquid-gas phase, returns None. If the property is not available for the
current phase, or if the current phase is not known, returns None.
Parameters
phase [str] One of {‘s’, ‘l’, ‘g’, ‘two-phase’}
s [float] Solid-phase property
l [float] Liquid-phase property
g [float] Gas-phase property
V_over_F [float] Vapor phase fraction
Returns
prop [float] The selected/calculated property for the relevant phase

1.1. thermo package 373


thermo Documentation, Release 0.1

1.1.1.33.73 Notes

Could calculate mole-fraction weighted properties for the two phase regime. Could also implement equilibria
with solid phases.

1.1.1.33.74 Examples

>>> phase_select_property(phase='g', l=1560.14, g=3312.)


3312.0

class thermo.utils.TDependentProperty(CASRN=”)
Bases: object
Class for calculating temperature-dependent chemical properties. Should load all data about a given chemical
on creation. As data is often stored in pandas DataFrames, this means that creation is slow. However, the
calculation of a property at a given temperature is very fast. As coefficients are stored in every instance, a user
could alter them from those loaded by default.
Designed to intelligently select which method to use at a given temperature, according to (1) selections made by
the user specifying a list of ordered method preferences and (2) by using a default list of prefered methods.
All methods should have defined criteria for determining if they are valid before calculation, i.e. a mini-
mum and maximum temperature for coefficients to be valid. For constant property values used due to lack
of temperature-dependent data, a short range is normally specified as valid. It is not assumed that any given
method will succeed; for example many expressions are not mathematically valid past the critical point. If
the method raises an exception, the next method is tried until either one method works or all the supposedly
valid have been exhausted. Furthermore, all properties returned by the method are checked by a sanity function
test_property_validity, which has sanity checks for all properties.
Works nicely with tabular data, which is interpolated from if specified. Interpolation is cubic-spline based
if 5 or more points are given, and linearly interpolated with if few points are given. Extrapolation is per-
mitted if tabular_extrapolation_permitted is set to True. For both interpolation and extrap-
olation, a transform may be applied so that a property such as vapor pressure can be interpolated non-
linearly. These are functions or lambda expressions which must be set for the variables interpolation_T,
interpolation_property, and interpolation_property_inv.
Attributes
name [str] The name of the property being calculated
units [str] The units of the property
method [str] The method was which was last used successfully to calculate a property; set only
after the first property calculation.
forced [bool] If True, only user specified methods will be considered; otherwise all methods
will be considered if none of the user specified methods succeed
interpolation_T [function] A function or lambda expression to transform the temperatures of
tabular data for interpolation; e.g. ‘lambda self, T: 1./T’
interpolation_property [function] A function or lambda expression to transform tabular prop-
erty values prior to interpolation; e.g. ‘lambda self, P: log(P)’
interpolation_property_inv [function] A function or property expression to transform interpo-
lated property values from the transform performed by interpolation_property back to their
actual form, e.g. ‘lambda self, P: exp(P)’

374 Chapter 1. thermo


thermo Documentation, Release 0.1

tabular_extrapolation_permitted [bool] Whether or not to allow extrapolation from tabulated


data for a property
Tmin [float] Maximum temperature at which no method can calculate the property above; set
based on rough rules for some methods. Used to solve for a particular property value, and
as a default minimum for plotting. Often higher than where the property is theoretically
higher, i.e. liquid density above the triple point, but this information may still be needed for
liquid mixtures with elevated critical points.
Tmax [float] Minimum temperature at which no method can calculate the property under; set
based on rough rules for some methods. Used to solve for a particular property value, and
as a default minimum for plotting. Often lower than where the property is theoretically
higher, i.e. liquid density beneath the triple point, but this information may still be needed
for subcooled liquids or mixtures with depressed freezing points.
property_min [float] Lowest value expected for a property while still being valid; this is a
criteria used by test_method_validity.
property_max [float] Highest value expected for a property while still being valid; this is a
criteria used by test_method_validity.
ranked_methods [list] Constant list of ranked methods by default
tabular_data [dict] Stores all user-supplied property data for interpolation in format {name:
(Ts, properties)}
tabular_data_interpolators [dict] Stores all interpolation objects, idexed by name and prop-
erty transform methods with the format {(name, interpolation_T, interpolation_property,
interpolation_property_inv): (extrapolator, spline)}
sorted_valid_methods [list] Sorted and valid methods stored from the last
T_dependent_property call
user_methods [list] Sorted methods as specified by the user

1.1.1.33.75 Methods

T_dependent_property(T) Method to calculate the property with sanity checking


and without specifying a specific method.
T_dependent_property_derivative(T[, or- Method to obtain a derivative of a property with respect
der]) to temperature, of a given order.
T_dependent_property_integral(T1, T2) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
T_dependent_property_integral_over_T(T1, Method to calculate the integral of a property over tem-
T2) perature with respect to temperature, using a specified
method.
__call__(T) Convenience method to calculate the property; calls
T_dependent_property.
calculate(T, method) Method to calculate a property with a specified method,
with no validity checking or error handling.
calculate_derivative(T, method[, order]) Method to calculate a derivative of a property with re-
spect to temperature, of a given order using a specified
method.
calculate_integral(T1, T2, method) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
Continued on next page

1.1. thermo package 375


thermo Documentation, Release 0.1

Table 1.43 – continued from previous page


calculate_integral_over_T(T1, T2, method) Method to calculate the integral of a property over tem-
perature with respect to temperature, using a specified
method.
interpolate(T, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data.
load_all_methods() Method to load all data, and set all_methods based on
the available data and properties.
plot_T_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) according to either a specified list of methods, or user
methods (if set), or all methods.
select_valid_methods(T) Method to obtain a sorted list of methods which are
valid at T according to test_method_validity.
set_tabular_data(Ts, properties[, name, . . . ]) Method to set tabular data to be used for interpolation.
set_user_methods(user_methods[, forced]) Method used to select certain property methods as hav-
ing a higher priority than were set by default.
solve_prop(goal[, reset_method]) Method to solve for the temperature at which a property
is at a specified value.
test_method_validity(T, method) Method to test the validity of a specified method for a
given temperature.
test_property_validity(prop) Method to test the validity of a calculated property.

extrapolate_tabular

T_cached = None
T_dependent_property(T)
Method to calculate the property with sanity checking and without specifying a specific method. se-
lect_valid_methods is used to obtain a sorted list of methods to try. Methods are then tried in order until
one succeeds. The methods are allowed to fail, and their results are checked with test_property_validity.
On success, the used method is stored in the variable method.
If method is set, this method is first checked for validity with test_method_validity for the specified tem-
perature, and if it is valid, it is then used to calculate the property. The result is checked for validity, and
returned if it is valid. If either of the checks fail, the function retrieves a full list of valid methods with
select_valid_methods and attempts them as described above.
If no methods are found which succeed, returns None.
Parameters
T [float] Temperature at which to calculate the property, [K]
Returns
prop [float] Calculated property, [units]
T_dependent_property_derivative(T, order=1)
Method to obtain a derivative of a property with respect to temperature, of a given order. Methods found
valid by select_valid_methods are attempted until a method succeeds. If no methods are valid and succeed,
None is returned.
Calls calculate_derivative internally to perform the actual calculation.

𝑑(property)
derivative =
𝑑𝑇
Parameters

376 Chapter 1. thermo


thermo Documentation, Release 0.1

T [float] Temperature at which to calculate the derivative, [K]


order [int] Order of the derivative, >= 1
Returns
derivative [float] Calculated derivative property, [units/K^order]
T_dependent_property_integral(T1, T2)
Method to calculate the integral of a property with respect to temperature, using a specified method. Meth-
ods found valid by select_valid_methods are attempted until a method succeeds. If no methods are valid
and succeed, None is returned.
Calls calculate_integral internally to perform the actual calculation.
∫︁ 𝑇2
integral = property 𝑑𝑇
𝑇1

Parameters
T1 [float] Lower limit of integration, [K]
T2 [float] Upper limit of integration, [K]
method [str] Method for which to find the integral
Returns
integral [float] Calculated integral of the property over the given range, [units*K]
T_dependent_property_integral_over_T(T1, T2)
Method to calculate the integral of a property over temperature with respect to temperature, using a spec-
ified method. Methods found valid by select_valid_methods are attempted until a method succeeds. If no
methods are valid and succeed, None is returned.
Calls calculate_integral_over_T internally to perform the actual calculation.
∫︁ 𝑇2
property
integral = 𝑑𝑇
𝑇1 𝑇

Parameters
T1 [float] Lower limit of integration, [K]
T2 [float] Upper limit of integration, [K]
method [str] Method for which to find the integral
Returns
integral [float] Calculated integral of the property over the given range, [units]
calculate(T, method)
Method to calculate a property with a specified method, with no validity checking or error handling. Demo
function for testing only; must be implemented according to the methods available for each individual
method. Include the interpolation call here.
Parameters
T [float] Temperature at which to calculate the property, [K]
method [str] Method name to use
Returns
prop [float] Calculated property, [units]

1.1. thermo package 377


thermo Documentation, Release 0.1

calculate_derivative(T, method, order=1)


Method to calculate a derivative of a property with respect to temperature, of a given order using a specified
method. Uses SciPy’s derivative function, with a delta of 1E-6 K and a number of points equal to 2*order
+ 1.
This method can be overwritten by subclasses who may perfer to add analytical methods for some or all
methods as this is much faster.
If the calculation does not succeed, returns the actual error encountered.
Parameters
T [float] Temperature at which to calculate the derivative, [K]
method [str] Method for which to find the derivative
order [int] Order of the derivative, >= 1
Returns
derivative [float] Calculated derivative property, [units/K^order]
calculate_integral(T1, T2, method)
Method to calculate the integral of a property with respect to temperature, using a specified method. Uses
SciPy’s quad function to perform the integral, with no options.
This method can be overwritten by subclasses who may perfer to add analytical methods for some or all
methods as this is much faster.
If the calculation does not succeed, returns the actual error encountered.
Parameters
T1 [float] Lower limit of integration, [K]
T2 [float] Upper limit of integration, [K]
method [str] Method for which to find the integral
Returns
integral [float] Calculated integral of the property over the given range, [units*K]
calculate_integral_over_T(T1, T2, method)
Method to calculate the integral of a property over temperature with respect to temperature, using a speci-
fied method. Uses SciPy’s quad function to perform the integral, with no options.
This method can be overwritten by subclasses who may perfer to add analytical methods for some or all
methods as this is much faster.
If the calculation does not succeed, returns the actual error encountered.
Parameters
T1 [float] Lower limit of integration, [K]
T2 [float] Upper limit of integration, [K]
method [str] Method for which to find the integral
Returns
integral [float] Calculated integral of the property over the given range, [units]
extrapolate_tabular(T)
forced = False

378 Chapter 1. thermo


thermo Documentation, Release 0.1

interpolate(T, name)
Method to perform interpolation on a given tabular data set previously added via set_tabular_data.
This method will create the interpolators the first time it is used on a property set, and store them for quick
future use.
Interpolation is cubic-spline based if 5 or more points are available, and linearly interpolated if not. Ex-
trapolation is always performed linearly. This function uses the transforms interpolation_T, interpola-
tion_property, and interpolation_property_inv if set. If any of these are changed after the interpolators
were first created, new interpolators are created with the new transforms. All interpolation is performed
via the interp1d function.
Parameters
T [float] Temperature at which to interpolate the property, [K]
name [str] The name assigned to the tabular data set
Returns
prop [float] Calculated property, [units]
interpolation_T = None
interpolation_property = None
interpolation_property_inv = None
load_all_methods()
Method to load all data, and set all_methods based on the available data and properties. Demo function for
testing only; must be implemented according to the methods available for each individual method.
method = None
name = 'Property name'
plot_T_dependent_property(Tmin=None, Tmax=None, methods=[], pts=50, only_valid=True,
order=0)
Method to create a plot of the property vs temperature according to either a specified list of methods,
or user methods (if set), or all methods. User-selectable number of points, and temperature range. If
only_valid is set,‘test_method_validity‘ will be used to check if each temperature in the specified range is
valid, and test_property_validity will be used to test the answer, and the method is allowed to fail; only
the valid points will be plotted. Otherwise, the result will be calculated and displayed as-is. This will not
suceed if the method fails.
Parameters
Tmin [float] Minimum temperature, to begin calculating the property, [K]
Tmax [float] Maximum temperature, to stop calculating the property, [K]
methods [list, optional] List of methods to consider
pts [int, optional] A list of points to calculate the property at; if Tmin to Tmax covers a wide
range of method validities, only a few points may end up calculated for a given method so
this may need to be large
only_valid [bool] If True, only plot successful methods and calculated properties, and han-
dle errors; if False, attempt calculation without any checking and use methods outside their
bounds
property_max = 10000.0
property_min = 0
ranked_methods = []

1.1. thermo package 379


thermo Documentation, Release 0.1

select_valid_methods(T)
Method to obtain a sorted list of methods which are valid at T according to test_method_validity. Con-
siders either only user methods if forced is True, or all methods. User methods are first tested according
to their listed order, and unless forced is True, then all methods are tested and sorted by their order in
ranked_methods.
Parameters
T [float] Temperature at which to test methods, [K]
Returns
sorted_valid_methods [list] Sorted lists of methods valid at T according to
test_method_validity
set_tabular_data(Ts, properties, name=None, check_properties=True)
Method to set tabular data to be used for interpolation. Ts must be in increasing order. If no name is given,
data will be assigned the name ‘Tabular data series #x’, where x is the number of previously added tabular
data series. The name is added to all methods and iserted at the start of user methods,
Parameters
Ts [array-like] Increasing array of temperatures at which properties are specified, [K]
properties [array-like] List of properties at Ts, [units]
name [str, optional] Name assigned to the data
check_properties [bool] If True, the properties will be checked for validity with
test_property_validity and raise an exception if any are not valid
set_user_methods(user_methods, forced=False)
Method used to select certain property methods as having a higher priority than were set by default. If
forced is true, then methods which were not specified are excluded from consideration.
As a side effect, method is removed to ensure than the new methods will be used in calculations afterwards.
An exception is raised if any of the methods specified aren’t available for the chemical. An exception is
raised if no methods are provided.
Parameters
user_methods [str or list] Methods by name to be considered or prefered
forced [bool, optional] If True, only the user specified methods will ever be considered; if
False other methods will be considered if no user methods suceed
solve_prop(goal, reset_method=True)
Method to solve for the temperature at which a property is at a specified value. T_dependent_property is
used to calculate the value of the property as a function of temperature; if reset_method is True, the best
method is used at each temperature as the solver seeks a solution. This slows the solution moderately.
Checks the given property value with test_property_validity first and raises an exception if it is not valid.
Requires that Tmin and Tmax have been set to know what range to search within.
Search is performed with the brenth solver from SciPy.
Parameters
goal [float] Propoerty value desired, [units]
reset_method [bool] Whether or not to reset the method as the solver searches
Returns
T [float] Temperature at which the property is the specified value [K]

380 Chapter 1. thermo


thermo Documentation, Release 0.1

tabular_extrapolation_permitted = True
test_method_validity(T, method)
Method to test the validity of a specified method for a given temperature. Demo function for testing
only; must be implemented according to the methods available for each individual method. Include the
interpolation check here.
Parameters
T [float] Temperature at which to determine the validity of the method, [K]
method [str] Method name to use
Returns
validity [bool] Whether or not a specifid method is valid
classmethod test_property_validity(prop)
Method to test the validity of a calculated property. Normally, this method is used by a given property
class, and has maximum and minimum limits controlled by the variables property_min and property_max.
Parameters
prop [float] property to be tested, [units]
Returns
validity [bool] Whether or not a specifid method is valid
units = 'Property units'
class thermo.utils.TPDependentProperty(CASRN=”)
Bases: thermo.utils.TDependentProperty
Class for calculating temperature and pressure dependent chemical properties.
Attributes
TP_cached
T_cached
interpolation_P
interpolation_T
interpolation_property
interpolation_property_inv
method
method_P

1.1.1.33.76 Methods

TP_dependent_property(T, P) Method to calculate the property with sanity checking


and without specifying a specific method.
TP_dependent_property_derivative_P(T, Method to calculate a derivative of a temperature and
P[, order]) pressure dependent property with respect to pressure at
constant temperature, of a given order.
Continued on next page

1.1. thermo package 381


thermo Documentation, Release 0.1

Table 1.44 – continued from previous page


TP_dependent_property_derivative_T(T, Method to calculate a derivative of a temperature and
P[, order]) pressure dependent property with respect to temperature
at constant pressure, of a given order.
T_dependent_property(T) Method to calculate the property with sanity checking
and without specifying a specific method.
T_dependent_property_derivative(T[, or- Method to obtain a derivative of a property with respect
der]) to temperature, of a given order.
T_dependent_property_integral(T1, T2) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
T_dependent_property_integral_over_T(T1, Method to calculate the integral of a property over tem-
T2) perature with respect to temperature, using a specified
method.
__call__(T, P) Convenience method to calculate the property; calls
TP_dependent_property.
calculate(T, method) Method to calculate a property with a specified method,
with no validity checking or error handling.
calculate_derivative(T, method[, order]) Method to calculate a derivative of a property with re-
spect to temperature, of a given order using a specified
method.
calculate_derivative_P(P, T, method[, order]) Method to calculate a derivative of a temperature and
pressure dependent property with respect to pressure at
constant temperature, of a given order using a specified
method.
calculate_derivative_T(T, P, method[, order]) Method to calculate a derivative of a temperature and
pressure dependent property with respect to temperature
at constant pressure, of a given order using a specified
method.
calculate_integral(T1, T2, method) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
calculate_integral_over_T(T1, T2, method) Method to calculate the integral of a property over tem-
perature with respect to temperature, using a specified
method.
interpolate(T, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data.
interpolate_P(T, P, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data_P.
load_all_methods() Method to load all data, and set all_methods based on
the available data and properties.
plot_TP_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
plot_T_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) according to either a specified list of methods, or user
methods (if set), or all methods.
plot_isobar(P[, Tmin, Tmax, methods_P, pts, . . . ]) Method to create a plot of the property vs temperature
at a specific pressure according to either a specified list
of methods, or user methods (if set), or all methods.
plot_isotherm(T[, Pmin, Pmax, methods_P, . . . ]) Method to create a plot of the property vs pressure at a
specified temperature according to either a specified list
of methods, or the user methods (if set), or all methods.
Continued on next page

382 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.44 – continued from previous page


select_valid_methods(T) Method to obtain a sorted list of methods which are
valid at T according to test_method_validity.
select_valid_methods_P(T, P) Method to obtain a sorted list methods which are valid
at T according to test_method_validity.
set_tabular_data(Ts, properties[, name, . . . ]) Method to set tabular data to be used for interpolation.
set_tabular_data_P(Ts, Ps, properties[, . . . ]) Method to set tabular data to be used for interpolation.
set_user_methods(user_methods[, forced]) Method used to select certain property methods as hav-
ing a higher priority than were set by default.
set_user_methods_P(user_methods_P[, Method to set the pressure-dependent property methods
forced_P]) desired for consideration by the user.
solve_prop(goal[, reset_method]) Method to solve for the temperature at which a property
is at a specified value.
test_method_validity(T, method) Method to test the validity of a specified method for a
given temperature.
test_property_validity(prop) Method to test the validity of a calculated property.

TP_or_T_dependent_property
extrapolate_tabular

TP_cached = None
TP_dependent_property(T, P)
Method to calculate the property with sanity checking and without specifying a specific method. se-
lect_valid_methods_P is used to obtain a sorted list of methods to try. Methods are then tried in order until
one succeeds. The methods are allowed to fail, and their results are checked with test_property_validity.
On success, the used method is stored in the variable method_P.
If method_P is set, this method is first checked for validity with test_method_validity_P for the specified
temperature, and if it is valid, it is then used to calculate the property. The result is checked for validity,
and returned if it is valid. If either of the checks fail, the function retrieves a full list of valid methods with
select_valid_methods_P and attempts them as described above.
If no methods are found which succeed, returns None.
Parameters
T [float] Temperature at which to calculate the property, [K]
P [float] Pressure at which to calculate the property, [Pa]
Returns
prop [float] Calculated property, [units]
TP_dependent_property_derivative_P(T, P, order=1)
Method to calculate a derivative of a temperature and pressure dependent property with respect to pressure
at constant temperature, of a given order. Methods found valid by select_valid_methods_P are attempted
until a method succeeds. If no methods are valid and succeed, None is returned.
Calls calculate_derivative_P internally to perform the actual calculation.

𝑑(property)
derivative = |𝑇
𝑑𝑃
Parameters
T [float] Temperature at which to calculate the derivative, [K]

1.1. thermo package 383


thermo Documentation, Release 0.1

P [float] Pressure at which to calculate the derivative, [Pa]


order [int] Order of the derivative, >= 1
Returns
d_prop_d_P_at_T [float] Calculated derivative property, [units/Pa^order]
TP_dependent_property_derivative_T(T, P, order=1)
Method to calculate a derivative of a temperature and pressure dependent property with respect to temper-
ature at constant pressure, of a given order. Methods found valid by select_valid_methods_P are attempted
until a method succeeds. If no methods are valid and succeed, None is returned.
Calls calculate_derivative_T internally to perform the actual calculation.

𝑑(property)
derivative = |𝑃
𝑑𝑇
Parameters
T [float] Temperature at which to calculate the derivative, [K]
P [float] Pressure at which to calculate the derivative, [Pa]
order [int] Order of the derivative, >= 1
Returns
d_prop_d_T_at_P [float] Calculated derivative property, [units/K^order]
TP_or_T_dependent_property(T, P)
calculate_derivative_P(P, T, method, order=1)
Method to calculate a derivative of a temperature and pressure dependent property with respect to pressure
at constant temperature, of a given order using a specified method. Uses SciPy’s derivative function, with
a delta of 0.01 Pa and a number of points equal to 2*order + 1.
This method can be overwritten by subclasses who may perfer to add analytical methods for some or all
methods as this is much faster.
If the calculation does not succeed, returns the actual error encountered.
Parameters
P [float] Pressure at which to calculate the derivative, [Pa]
T [float] Temperature at which to calculate the derivative, [K]
method [str] Method for which to find the derivative
order [int] Order of the derivative, >= 1
Returns
d_prop_d_P_at_T [float] Calculated derivative property at constant temperature,
[units/Pa^order]
calculate_derivative_T(T, P, method, order=1)
Method to calculate a derivative of a temperature and pressure dependent property with respect to tem-
perature at constant pressure, of a given order using a specified method. Uses SciPy’s derivative function,
with a delta of 1E-6 K and a number of points equal to 2*order + 1.
This method can be overwritten by subclasses who may perfer to add analytical methods for some or all
methods as this is much faster.
If the calculation does not succeed, returns the actual error encountered.

384 Chapter 1. thermo


thermo Documentation, Release 0.1

Parameters
T [float] Temperature at which to calculate the derivative, [K]
P [float] Pressure at which to calculate the derivative, [Pa]
method [str] Method for which to find the derivative
order [int] Order of the derivative, >= 1
Returns
d_prop_d_T_at_P [float] Calculated derivative property at constant pressure,
[units/K^order]
forced_P = False
interpolate_P(T, P, name)
Method to perform interpolation on a given tabular data set previously added via set_tabular_data_P. This
method will create the interpolators the first time it is used on a property set, and store them for quick
future use.
Interpolation is cubic-spline based if 5 or more points are available, and linearly interpolated if not. Extrap-
olation is always performed linearly. This function uses the transforms interpolation_T, interpolation_P,
interpolation_property, and interpolation_property_inv if set. If any of these are changed after the in-
terpolators were first created, new interpolators are created with the new transforms. All interpolation is
performed via the interp2d function.
Parameters
T [float] Temperature at which to interpolate the property, [K]
T [float] Pressure at which to interpolate the property, [Pa]
name [str] The name assigned to the tabular data set
Returns
prop [float] Calculated property, [units]
interpolation_P = None
method_P = None
plot_TP_dependent_property(Tmin=None, Tmax=None, Pmin=None, Pmax=None, meth-
ods_P=[], pts=15, only_valid=True)
Method to create a plot of the property vs temperature and pressure according to either a specified list of
methods, or user methods (if set), or all methods. User-selectable number of points for each variable. If
only_valid is set,‘test_method_validity_P‘ will be used to check if each condition in the specified range is
valid, and test_property_validity will be used to test the answer, and the method is allowed to fail; only
the valid points will be plotted. Otherwise, the result will be calculated and displayed as-is. This will not
suceed if the any method fails for any point.
Parameters
Tmin [float] Minimum temperature, to begin calculating the property, [K]
Tmax [float] Maximum temperature, to stop calculating the property, [K]
Pmin [float] Minimum pressure, to begin calculating the property, [Pa]
Pmax [float] Maximum pressure, to stop calculating the property, [Pa]
methods_P [list, optional] List of methods to consider
pts [int, optional] A list of points to calculate the property at for both temperature and pres-
sure; pts^2 points will be calculated.

1.1. thermo package 385


thermo Documentation, Release 0.1

only_valid [bool] If True, only plot successful methods and calculated properties, and han-
dle errors; if False, attempt calculation without any checking and use methods outside their
bounds
plot_isobar(P, Tmin=None, Tmax=None, methods_P=[], pts=50, only_valid=True)
Method to create a plot of the property vs temperature at a specific pressure according to either a specified
list of methods, or user methods (if set), or all methods. User-selectable number of points, and temperature
range. If only_valid is set,‘test_method_validity_P‘ will be used to check if each condition in the specified
range is valid, and test_property_validity will be used to test the answer, and the method is allowed to fail;
only the valid points will be plotted. Otherwise, the result will be calculated and displayed as-is. This will
not suceed if the method fails.
Parameters
P [float] Pressure for the isobar, [Pa]
Tmin [float] Minimum temperature, to begin calculating the property, [K]
Tmax [float] Maximum temperature, to stop calculating the property, [K]
methods_P [list, optional] List of methods to consider
pts [int, optional] A list of points to calculate the property at; if Tmin to Tmax covers a wide
range of method validities, only a few points may end up calculated for a given method so
this may need to be large
only_valid [bool] If True, only plot successful methods and calculated properties, and han-
dle errors; if False, attempt calculation without any checking and use methods outside their
bounds
plot_isotherm(T, Pmin=None, Pmax=None, methods_P=[], pts=50, only_valid=True)
Method to create a plot of the property vs pressure at a specified temperature according to either a specified
list of methods, or the user methods (if set), or all methods. User-selectable number of points, and pressure
range. If only_valid is set, test_method_validity_P will be used to check if each condition in the specified
range is valid, and test_property_validity will be used to test the answer, and the method is allowed to fail;
only the valid points will be plotted. Otherwise, the result will be calculated and displayed as-is. This will
not suceed if the method fails.
Parameters
T [float] Temperature at which to create the plot, [K]
Pmin [float] Minimum pressure, to begin calculating the property, [Pa]
Pmax [float] Maximum pressure, to stop calculating the property, [Pa]
methods_P [list, optional] List of methods to consider
pts [int, optional] A list of points to calculate the property at; if Pmin to Pmax covers a wide
range of method validities, only a few points may end up calculated for a given method so
this may need to be large
only_valid [bool] If True, only plot successful methods and calculated properties, and han-
dle errors; if False, attempt calculation without any checking and use methods outside their
bounds
select_valid_methods_P(T, P)
Method to obtain a sorted list methods which are valid at T according to test_method_validity. Consid-
ers either only user methods if forced is True, or all methods. User methods are first tested according
to their listed order, and unless forced is True, then all methods are tested and sorted by their order in
ranked_methods.
Parameters

386 Chapter 1. thermo


thermo Documentation, Release 0.1

T [float] Temperature at which to test methods, [K]


P [float] Pressure at which to test methods, [Pa]
Returns
sorted_valid_methods_P [list] Sorted lists of methods valid at T and P according to
test_method_validity
set_tabular_data_P(Ts, Ps, properties, name=None, check_properties=True)
Method to set tabular data to be used for interpolation. Ts and Psmust be in increasing order. If no name is
given, data will be assigned the name ‘Tabular data series #x’, where x is the number of previously added
tabular data series. The name is added to all methods and is inserted at the start of user methods,
Parameters
Ts [array-like] Increasing array of temperatures at which properties are specified, [K]
Ps [array-like] Increasing array of pressures at which properties are specified, [Pa]
properties [array-like] List of properties at Ts, [units]
name [str, optional] Name assigned to the data
check_properties [bool] If True, the properties will be checked for validity with
test_property_validity and raise an exception if any are not valid
set_user_methods_P(user_methods_P, forced_P=False)
Method to set the pressure-dependent property methods desired for consideration by the user. Can be used
to exclude certain methods which might have unacceptable accuracy.
As a side effect, the previously selected method is removed when this method is called to ensure user
methods are tried in the desired order.
Parameters
user_methods_P [str or list] Methods by name to be considered or preferred for pressure
effect.
forced [bool, optional] If True, only the user specified methods will ever be considered; if
False other methods will be considered if no user methods suceed.
class thermo.utils.MixtureProperty
Bases: object
Attributes
method
prop_cached

1.1.1.33.77 Methods

__call__(T, P, zs, ws) Convenience method to calculate the property; calls


mixture_property.
calculate_derivative_P(P, T, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition of a given order using a specified method.
calculate_derivative_T(T, P, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition of a given order using a specified method.
Continued on next page

1.1. thermo package 387


thermo Documentation, Release 0.1

Table 1.45 – continued from previous page


mixture_property(T, P, zs, ws) Method to calculate the property with sanity checking
and without specifying a specific method.
plot_isobar(P, zs, ws[, Tmin, Tmax, . . . ]) Method to create a plot of the property vs temperature at
a specific pressure and composition according to either
a specified list of methods, or user methods (if set), or
all methods.
plot_isotherm(T, zs, ws[, Pmin, Pmax, . . . ]) Method to create a plot of the property vs pressure at
a specified temperature and composition according to
either a specified list of methods, or the user methods (if
set), or all methods.
plot_property(zs, ws[, Tmin, Tmax, Pmin, . . . ]) Method to create a plot of the property vs temperature
and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
property_derivative_P(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition, of a given order.
property_derivative_T(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition, of a given order.
select_valid_methods(T, P, zs, ws) Method to obtain a sorted list of methods which are
valid at T, P, zs, ws, and possibly Vfls, according to
test_method_validity.
set_user_method(user_methods[, forced]) Method to set the T, P, and composition dependent prop-
erty methods desired for consideration by the user.
test_property_validity(prop) Method to test the validity of a calculated property.

TP_zs_ws_cached = (None, None, None, None)


calculate_derivative_P(P, T, zs, ws, method, order=1)
Method to calculate a derivative of a mixture property with respect to pressure at constant temperature and
composition of a given order using a specified method. Uses SciPy’s derivative function, with a delta of
0.01 Pa and a number of points equal to 2*order + 1.
This method can be overwritten by subclasses who may perfer to add analytical methods for some or all
methods as this is much faster.
If the calculation does not succeed, returns the actual error encountered.
Parameters
P [float] Pressure at which to calculate the derivative, [Pa]
T [float] Temperature at which to calculate the derivative, [K]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Method for which to find the derivative
order [int] Order of the derivative, >= 1
Returns
d_prop_d_P_at_T [float] Calculated derivative property at constant temperature,
[units/Pa^order]
calculate_derivative_T(T, P, zs, ws, method, order=1)
Method to calculate a derivative of a mixture property with respect to temperature at constant pressure and

388 Chapter 1. thermo


thermo Documentation, Release 0.1

composition of a given order using a specified method. Uses SciPy’s derivative function, with a delta of
1E-6 K and a number of points equal to 2*order + 1.
This method can be overwritten by subclasses who may perfer to add analytical methods for some or all
methods as this is much faster.
If the calculation does not succeed, returns the actual error encountered.
Parameters
T [float] Temperature at which to calculate the derivative, [K]
P [float] Pressure at which to calculate the derivative, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Method for which to find the derivative
order [int] Order of the derivative, >= 1
Returns
d_prop_d_T_at_P [float] Calculated derivative property at constant pressure,
[units/K^order]
forced = False
method = None
mixture_property(T, P, zs, ws)
Method to calculate the property with sanity checking and without specifying a specific method. se-
lect_valid_methods is used to obtain a sorted list of methods to try. Methods are then tried in order until
one succeeds. The methods are allowed to fail, and their results are checked with test_property_validity.
On success, the used method is stored in the variable method.
If method is set, this method is first checked for validity with test_method_validity for the specified tem-
perature, and if it is valid, it is then used to calculate the property. The result is checked for validity, and
returned if it is valid. If either of the checks fail, the function retrieves a full list of valid methods with
select_valid_methods and attempts them as described above.
If no methods are found which succeed, returns None.
Parameters
T [float] Temperature at which to calculate the property, [K]
P [float] Pressure at which to calculate the property, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
Returns
prop [float] Calculated property, [units]
name = 'Test'
plot_isobar(P, zs, ws, Tmin=None, Tmax=None, methods=[], pts=50, only_valid=True)
Method to create a plot of the property vs temperature at a specific pressure and composition according
to either a specified list of methods, or user methods (if set), or all methods. User-selectable number of
points, and temperature range. If only_valid is set,‘test_method_validity‘ will be used to check if each
condition in the specified range is valid, and test_property_validity will be used to test the answer, and the

1.1. thermo package 389


thermo Documentation, Release 0.1

method is allowed to fail; only the valid points will be plotted. Otherwise, the result will be calculated and
displayed as-is. This will not suceed if the method fails.
Parameters
P [float] Pressure for the isobar, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
Tmin [float] Minimum temperature, to begin calculating the property, [K]
Tmax [float] Maximum temperature, to stop calculating the property, [K]
methods [list, optional] List of methods to consider
pts [int, optional] A list of points to calculate the property at; if Tmin to Tmax covers a wide
range of method validities, only a few points may end up calculated for a given method so
this may need to be large
only_valid [bool] If True, only plot successful methods and calculated properties, and han-
dle errors; if False, attempt calculation without any checking and use methods outside their
bounds
plot_isotherm(T, zs, ws, Pmin=None, Pmax=None, methods=[], pts=50, only_valid=True)
Method to create a plot of the property vs pressure at a specified temperature and composition according
to either a specified list of methods, or the user methods (if set), or all methods. User-selectable
number of points, and pressure range. If only_valid is set,
test_method_validity will be used to check if each condition in the specified range is valid, and
test_property_validity will be used to test the answer, and the method is allowed to fail; only the valid
points will be plotted. Otherwise, the result will be calculated and displayed as-is. This will not suceed if
the method fails.
Parameters
T [float] Temperature at which to create the plot, [K]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
Pmin [float] Minimum pressure, to begin calculating the property, [Pa]
Pmax [float] Maximum pressure, to stop calculating the property, [Pa]
methods [list, optional] List of methods to consider
pts [int, optional] A list of points to calculate the property at; if Pmin to Pmax covers a wide
range of method validities, only a few points may end up calculated for a given method so
this may need to be large
only_valid [bool] If True, only plot successful methods and calculated properties, and han-
dle errors; if False, attempt calculation without any checking and use methods outside their
bounds
plot_property(zs, ws, Tmin=None, Tmax=None, Pmin=100000.0, Pmax=1000000.0, methods=[],
pts=15, only_valid=True)
Method to create a plot of the property vs temperature and pressure according to either a specified list of
methods, or user methods (if set), or all methods. User-selectable number of points for each variable. If
only_valid is set,‘test_method_validity‘ will be used to check if each condition in the specified range is
valid, and test_property_validity will be used to test the answer, and the method is allowed to fail; only

390 Chapter 1. thermo


thermo Documentation, Release 0.1

the valid points will be plotted. Otherwise, the result will be calculated and displayed as-is. This will not
suceed if the any method fails for any point.
Parameters
Tmin [float] Minimum temperature, to begin calculating the property, [K]
Tmax [float] Maximum temperature, to stop calculating the property, [K]
Pmin [float] Minimum pressure, to begin calculating the property, [Pa]
Pmax [float] Maximum pressure, to stop calculating the property, [Pa]
methods [list, optional] List of methods to consider
pts [int, optional] A list of points to calculate the property at for both temperature and pres-
sure; pts^2 points will be calculated.
only_valid [bool] If True, only plot successful methods and calculated properties, and han-
dle errors; if False, attempt calculation without any checking and use methods outside their
bounds
prop_cached = None
property_derivative_P(T, P, zs, ws, order=1)
Method to calculate a derivative of a mixture property with respect to pressure at constant temperature and
composition, of a given order. Methods found valid by select_valid_methods are attempted until a method
succeeds. If no methods are valid and succeed, None is returned.
Calls calculate_derivative_P internally to perform the actual calculation.

𝑑(property)
derivative = |𝑇,𝑧
𝑑𝑃
Parameters
T [float] Temperature at which to calculate the derivative, [K]
P [float] Pressure at which to calculate the derivative, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
order [int] Order of the derivative, >= 1
Returns
d_prop_d_P_at_T [float] Calculated derivative property, [units/Pa^order]
property_derivative_T(T, P, zs, ws, order=1)
Method to calculate a derivative of a mixture property with respect to temperature at constant pressure and
composition, of a given order. Methods found valid by select_valid_methods are attempted until a method
succeeds. If no methods are valid and succeed, None is returned.
Calls calculate_derivative_T internally to perform the actual calculation.

𝑑(property)
derivative = |𝑃,𝑧
𝑑𝑇
Parameters
T [float] Temperature at which to calculate the derivative, [K]
P [float] Pressure at which to calculate the derivative, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]

1.1. thermo package 391


thermo Documentation, Release 0.1

ws [list[float]] Weight fractions of all species in the mixture, [-]


order [int] Order of the derivative, >= 1
Returns
d_prop_d_T_at_P [float] Calculated derivative property, [units/K^order]
property_max = 10
property_min = 0
ranked_methods = []
select_valid_methods(T, P, zs, ws)
Method to obtain a sorted list of methods which are valid at T, P, zs, ws, and possibly Vfls, according to
test_method_validity. Considers either only user methods if forced is True, or all methods. User methods
are first tested according to their listed order, and unless forced is True, then all methods are tested and
sorted by their order in ranked_methods.
Parameters
T [float] Temperature at which to test the methods, [K]
P [float] Pressure at which to test the methods, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
Returns
sorted_valid_methods [list] Sorted lists of methods valid at the given conditions according
to test_method_validity
set_user_method(user_methods, forced=False)
Method to set the T, P, and composition dependent property methods desired for consideration by the user.
Can be used to exclude certain methods which might have unacceptable accuracy.
As a side effect, the previously selected method is removed when this method is called to ensure user
methods are tried in the desired order.
Parameters
user_methods [str or list] Methods by name to be considered for calculation of the mixture
property, ordered by preference.
forced [bool, optional] If True, only the user specified methods will ever be considered; if
False, other methods will be considered if no user methods suceed.
classmethod test_property_validity(prop)
Method to test the validity of a calculated property. Normally, this method is used by a given property
class, and has maximum and minimum limits controlled by the variables property_min and property_max.
Parameters
prop [float] property to be tested, [units]
Returns
validity [bool] Whether or not a specifid method is valid
units = 'test units'
thermo.utils.allclose_variable(a, b, limits, rtols=None, atols=None)
Returns True if two arrays are element-wise equal within several different tolerances. Tolerance values are
always positive, usually very small. Based on numpy’s allclose function.

392 Chapter 1. thermo


thermo Documentation, Release 0.1

Only atols or rtols needs to be specified; both are used if given.


Parameters
a, b [array_like] Input arrays to compare.
limits [array_like] Fractions of elements allowed to not match to within each tolerance.
rtols [array_like] The relative tolerance parameters.
atols [float] The absolute tolerance parameters.
Returns
allclose [bool] Returns True if the two arrays are equal within the given tolerances; False oth-
erwise.

1.1.1.33.78 Examples

10 random similar variables, all of them matching to within 1E-5, allowing up to half to match up to 1E-6.

>>> x = [2.7244322249597719e-08, 3.0105683900110473e-10, 2.7244124924802327e-08,


˓→3.0105259397637556e-10, 2.7243929226310193e-08, 3.0104990272770901e-10, 2.

˓→7243666849384451e-08, 3.0104101821236015e-10, 2.7243433745917367e-08, 3.

˓→0103707421519949e-10]

>>> y = [2.7244328304561904e-08, 3.0105753470546008e-10, 2.724412872417824e-08,


˓→3.0105303055834564e-10, 2.7243914341030203e-08, 3.0104819238021998e-10, 2.

˓→7243684057561379e-08, 3.0104299541023674e-10, 2.7243436694839306e-08, 3.

˓→010374130526363e-10]

>>> allclose_variable(x, y, limits=[.0, .5], rtols=[1E-5, 1E-6])


True

thermo.utils.horner(coeffs, x)
Simple function to calculate the value of a polynomial at a specific value of x, using the Horner evaluation
scheme
Parameters
coeffs [array-like] Coefficients, where coeffs[0] is multiplied by the largest power of x, and
coeffs[-1] is added to the sum with no multiplication.
x [float] Value to evaluate the polynomial at
Returns
y [float] Evaluated result

1.1.1.33.79 Notes

Efficient. Faster than numpy.polyval.

1.1.1.33.80 Examples

>>> horner([1,2,3], 3)
18

1.1. thermo package 393


thermo Documentation, Release 0.1

thermo.utils.polylog2(x)
Simple function to calculate PolyLog(2, x) from ranges 0 <= x <= 1, with relative error guaranteed to be < 1E-7
from 0 to 0.99999. This is a Pade approximation, with three coefficient sets with splits at 0.7 and 0.99. An
exception is raised if x is under 0 or above 1.
Parameters
x [float] Value to evaluate PolyLog(2, x) T
Returns
y [float] Evaluated result

1.1.1.33.81 Notes

Efficient (2-4 microseconds). No implementation of this function exists in SciPy. Derived with
mpmath’s pade approximation. Required for the entropy integral of thermo.heat_capacity.
Zabransky_quasi_polynomial.

1.1.1.33.82 Examples

>>> polylog2(0.5)
0.5822405264516294

thermo.utils.acos(x)
Return the arc cosine (measured in radians) of x.
thermo.utils.acosh(x)
Return the inverse hyperbolic cosine of x.
thermo.utils.asin(x)
Return the arc sine (measured in radians) of x.
thermo.utils.asinh(x)
Return the inverse hyperbolic sine of x.
thermo.utils.atan(x)
Return the arc tangent (measured in radians) of x.
thermo.utils.atan2(y, x)
Return the arc tangent (measured in radians) of y/x. Unlike atan(y/x), the signs of both x and y are considered.
thermo.utils.atanh(x)
Return the inverse hyperbolic tangent of x.
thermo.utils.ceil(x)
Return the ceiling of x as an Integral. This is the smallest integer >= x.
thermo.utils.copysign(x, y)
Return a float with the magnitude (absolute value) of x but the sign of y. On platforms that support signed zeros,
copysign(1.0, -0.0) returns -1.0.
thermo.utils.cos(x)
Return the cosine of x (measured in radians).
thermo.utils.cosh(x)
Return the hyperbolic cosine of x.

394 Chapter 1. thermo


thermo Documentation, Release 0.1

thermo.utils.degrees(x)
Convert angle x from radians to degrees.
thermo.utils.exp(x)
Return e raised to the power of x.
thermo.utils.fabs(x)
Return the absolute value of the float x.
thermo.utils.factorial(x) → Integral
Find x!. Raise a ValueError if x is negative or non-integral.
thermo.utils.floor(x)
Return the floor of x as an Integral. This is the largest integer <= x.
thermo.utils.fmod(x, y)
Return fmod(x, y), according to platform C. x % y may differ.
thermo.utils.frexp(x)
Return the mantissa and exponent of x, as pair (m, e). m is a float and e is an int, such that x = m * 2.**e. If x is
0, m and e are both 0. Else 0.5 <= abs(m) < 1.0.
thermo.utils.fsum(iterable)
Return an accurate floating point sum of values in the iterable. Assumes IEEE-754 floating point arithmetic.
thermo.utils.hypot(x, y)
Return the Euclidean distance, sqrt(x*x + y*y).
thermo.utils.isinf(x) → bool
Return True if x is a positive or negative infinity, and False otherwise.
thermo.utils.isnan(x) → bool
Return True if x is a NaN (not a number), and False otherwise.
thermo.utils.ldexp(x, i)
Return x * (2**i).
thermo.utils.log(x[, base ])
Return the logarithm of x to the given base. If the base not specified, returns the natural logarithm (base e) of x.
thermo.utils.log10(x)
Return the base 10 logarithm of x.
thermo.utils.log1p(x)
Return the natural logarithm of 1+x (base e). The result is computed in a way which is accurate for x near zero.
thermo.utils.modf(x)
Return the fractional and integer parts of x. Both results carry the sign of x and are floats.
thermo.utils.pow(x, y)
Return x**y (x to the power of y).
thermo.utils.radians(x)
Convert angle x from degrees to radians.
thermo.utils.sin(x)
Return the sine of x (measured in radians).
thermo.utils.sinh(x)
Return the hyperbolic sine of x.
thermo.utils.sqrt(x)
Return the square root of x.

1.1. thermo package 395


thermo Documentation, Release 0.1

thermo.utils.tan(x)
Return the tangent of x (measured in radians).
thermo.utils.tanh(x)
Return the hyperbolic tangent of x.
thermo.utils.trunc(x:Real) → Integral
Truncates x to the nearest Integral toward 0. Uses the __trunc__ magic method.

1.1.1.34 thermo.vapor_pressure module

thermo.vapor_pressure.Antoine(T, A, B, C, base=10.0)
Calculates vapor pressure of a chemical using the Antoine equation. Parameters A, B, and C are chemical-
dependent. Parameters can be found in numerous sources; however units of the coefficients used vary. Originally
proposed by Antoine (1888) [2].
𝐵
logbase 𝑃 sat = 𝐴 −
𝑇 +𝐶
Parameters
T [float] Temperature of fluid, [K]
A, B, C [floats] Regressed coefficients for Antoine equation for a chemical
Returns
Psat [float] Vapor pressure calculated with coefficients [Pa]
Other Parameters
Base [float] Optional base of logarithm; 10 by default

1.1.1.34.1 Notes

Assumes coefficients are for calculating vapor pressure in Pascal. Coefficients should be consistent with input
temperatures in Kelvin; however, if both the given temperature and units are specific to degrees Celcius, the
result will still be correct.
Converting units in input coefficients:
• ln to log10: Divide A and B by ln(10)=2.302585 to change parameters for a ln equation to a log10 equation.
• log10 to ln: Multiply A and B by ln(10)=2.302585 to change parameters for a log equation to a ln equation.
• mmHg to Pa: Add log10(101325/760)= 2.1249 to A.
• kPa to Pa: Add log_{base}(1000)= 6.908 to A for log(base)
• °C to K: Subtract 273.15 from C only!

1.1.1.34.2 References

[1], [2], [3]

396 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.34.3 Examples

Methane, coefficients from [1], at 100 K:

>>> Antoine(100.0, 8.7687, 395.744, -6.469)


34478.367349639906

Tetrafluoromethane, coefficients from [1], at 180 K

>>> Antoine(180, A=8.95894, B=510.595, C=-15.95)


702271.0518579542

Oxygen at 94.91 K, with coefficients from [3] in units of °C, mmHg, log10, showing the conversion of coeffi-
cients A (mmHg to Pa) and C (°C to K)

>>> Antoine(94.91, 6.83706+2.1249, 339.2095, 268.70-273.15)


162978.88655572367

thermo.vapor_pressure.Wagner_original(T, Tc, Pc, a, b, c, d)


Calculates vapor pressure using the Wagner equation (3, 6 form).
Requires critical temperature and pressure as well as four coefficients specific to each chemical.

𝑎𝜏 + 𝑏𝜏 1.5 + 𝑐𝜏 3 + 𝑑𝜏 6
ln 𝑃 𝑠𝑎𝑡 = ln 𝑃𝑐 +
𝑇𝑟
𝑇
𝜏 =1−
𝑇𝑐
Parameters
T [float] Temperature of fluid, [K]
Tc [float] Critical temperature, [K]
Pc [float] Critical pressure, [Pa]
a, b, c, d [floats] Parameters for wagner equation. Specific to each chemical. [-]
Returns
Psat [float] Vapor pressure at T [Pa]

1.1.1.34.4 Notes

Warning: Pc is often treated as adjustable constant.

1.1.1.34.5 References

[1], [2]

1.1.1.34.6 Examples

Methane, coefficients from [2], at 100 K.

1.1. thermo package 397


thermo Documentation, Release 0.1

>>> Wagner_original(100.0, 190.53, 4596420., a=-6.00435, b=1.1885,


... c=-0.834082, d=-1.22833)
34520.44601450496

thermo.vapor_pressure.Wagner(T, Tc, Pc, a, b, c, d)


Calculates vapor pressure using the Wagner equation (2.5, 5 form).
Requires critical temperature and pressure as well as four coefficients specific to each chemical.

𝑎𝜏 + 𝑏𝜏 1.5 + 𝑐𝜏 2.5 + 𝑑𝜏 5
ln 𝑃 𝑠𝑎𝑡 = ln 𝑃𝑐 +
𝑇𝑟
𝑇
𝜏 =1−
𝑇𝑐
Parameters
T [float] Temperature of fluid, [K]
Tc [float] Critical temperature, [K]
Pc [float] Critical pressure, [Pa]
a, b, c, d [floats] Parameters for wagner equation. Specific to each chemical. [-]
Returns
Psat [float] Vapor pressure at T [Pa]

1.1.1.34.7 Notes

Warning: Pc is often treated as adjustable constant.

1.1.1.34.8 References

[1], [2]

1.1.1.34.9 Examples

Methane, coefficients from [2], at 100 K.

>>> Wagner(100., 190.551, 4599200, -6.02242, 1.26652, -0.5707, -1.366)


34415.00476263708

thermo.vapor_pressure.TRC_Antoine_extended(T, Tc, to, A, B, C, n, E, F)


Calculates vapor pressure of a chemical using the TRC Extended Antoine equation. Parameters are chemical
dependent, and said to be from the Thermodynamics Research Center (TRC) at Texas A&M. Coefficients for
various chemicals can be found in [1].
𝐵
log10 𝑃 𝑠𝑎𝑡 = 𝐴 − + 0.43429𝑥𝑛 + 𝐸𝑥8 + 𝐹 𝑥12
𝑇 +𝐶
(︂ )︂
𝑇 − 𝑡𝑜 − 273.15
𝑥 = max ,0
𝑇𝑐

Parameters
T [float] Temperature of fluid, [K]

398 Chapter 1. thermo


thermo Documentation, Release 0.1

A, B, C, n, E, F [floats] Regressed coefficients for the Antoine Extended (TRC) equation, spe-
cific for each chemical, [-]
Returns
Psat [float] Vapor pressure calculated with coefficients [Pa]

1.1.1.34.10 Notes

Assumes coefficients are for calculating vapor pressure in Pascal. Coefficients should be consistent with input
temperatures in Kelvin;

1.1.1.34.11 References

[1]

1.1.1.34.12 Examples

Tetrafluoromethane, coefficients from [1], at 180 K:

>>> TRC_Antoine_extended(180.0, 227.51, -120., 8.95894, 510.595, -15.95,


... 2.41377, -93.74, 7425.9)
706317.0898414153

thermo.vapor_pressure.vapor_pressure_methods = ['WAGNER_MCGARRY', 'WAGNER_POLING', 'ANTOINE


Holds all methods available for the VaporPressure class, for use in iterating over them.
class thermo.vapor_pressure.VaporPressure(Tb=None, Tc=None, Pc=None, omega=None,
CASRN=”, eos=None)
Bases: thermo.utils.TDependentProperty
Class for dealing with vapor pressure as a function of temperature. Consists of four coefficient-based methods
and four data sources, one source of tabular information, four corresponding-states estimators, any provided
equation of state, and the external library CoolProp.
Parameters
Tb [float, optional] Boiling point, [K]
Tc [float, optional] Critical temperature, [K]
Pc [float, optional] Critical pressure, [Pa]
omega [float, optional] Acentric factor, [-]
CASRN [str, optional] The CAS number of the chemical
eos [object, optional] Equation of State object after thermo.eos.GCEOS
See also:
Wagner_original, Wagner, TRC_Antoine_extended, Antoine,
boiling_critical_relation, Lee_Kesler, Ambrose_Walton, Sanjari, Edalat

1.1. thermo package 399


thermo Documentation, Release 0.1

1.1.1.34.13 Notes

To iterate over all methods, use the list stored in vapor_pressure_methods.


WAGNER_MCGARRY: The Wagner 3,6 original model equation documented in Wagner_original, with
data for 245 chemicals, from [1],
WAGNER_POLING: The Wagner 2.5, 5 model equation documented in Wagner in [2], with data for 104
chemicals.
ANTOINE_EXTENDED_POLING: The TRC extended Antoine model equation documented in
TRC_Antoine_extended with data for 97 chemicals in [2].
ANTOINE_POLING: Standard Antoine equation, as documented in the function Antoine and with data for
325 fluids from [2]. Coefficients were altered to be in units of Pa and Celcius.
DIPPR_PERRY_8E: A collection of 341 coefficient sets from the DIPPR database published openly in [5].
Provides temperature limits for all its fluids. thermo.dippr.EQ101 is used for its fluids.
VDI_PPDS: Coefficients for a equation form developed by the PPDS, published openly in [4].
COOLPROP: CoolProp external library; with select fluids from its library. Range is limited to that of the
equations of state it uses, as described in [3]. Very slow.
BOILING_CRITICAL: Fundamental relationship in thermodynamics making several approximations; see
boiling_critical_relation for details. Least accurate method in most circumstances.
LEE_KESLER_PSAT: CSP method documented in Lee_Kesler. Widely used.
AMBROSE_WALTON: CSP method documented in Ambrose_Walton.
SANJARI: CSP method documented in Sanjari.
EDALAT: CSP method documented in Edalat.
VDI_TABULAR: Tabular data in [4] along the saturation curve; interpolation is as set by the user or the
default.
EOS: Equation of state provided by user; must implement thermo.eos.GCEOS.Psat

1.1.1.34.14 References

[1], [2], [3], [4], [5]


Attributes
T_cached
method

1.1.1.34.15 Methods

T_dependent_property(T) Method to calculate the property with sanity checking


and without specifying a specific method.
T_dependent_property_derivative(T[, or- Method to obtain a derivative of a property with respect
der]) to temperature, of a given order.
T_dependent_property_integral(T1, T2) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
Continued on next page

400 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.46 – continued from previous page


T_dependent_property_integral_over_T(T1, Method to calculate the integral of a property over tem-
T2) perature with respect to temperature, using a specified
method.
__call__(T) Convenience method to calculate the property; calls
T_dependent_property.
calculate(T, method) Method to calculate vapor pressure of a fluid at temper-
ature T with a given method.
calculate_derivative(T, method[, order]) Method to calculate a derivative of a property with re-
spect to temperature, of a given order using a specified
method.
calculate_integral(T1, T2, method) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
calculate_integral_over_T(T1, T2, method) Method to calculate the integral of a property over tem-
perature with respect to temperature, using a specified
method.
interpolate(T, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data.
load_all_methods() Method which picks out coefficients for the specified
chemical from the various dictionaries and DataFrames
storing it.
plot_T_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) according to either a specified list of methods, or user
methods (if set), or all methods.
select_valid_methods(T) Method to obtain a sorted list of methods which are
valid at T according to test_method_validity.
set_tabular_data(Ts, properties[, name, . . . ]) Method to set tabular data to be used for interpolation.
set_user_methods(user_methods[, forced]) Method used to select certain property methods as hav-
ing a higher priority than were set by default.
solve_prop(goal[, reset_method]) Method to solve for the temperature at which a property
is at a specified value.
test_method_validity(T, method) Method to check the validity of a method.
test_property_validity(prop) Method to test the validity of a calculated property.

extrapolate_tabular
interpolation_T
interpolation_property
interpolation_property_inv

Tmax = None
Maximum temperature at which no method can calculate vapor pressure above; by definition the critical
point.
Tmin = None
Minimum temperature at which no method can calculate vapor pressure under.
all_methods = None
Set of all methods available for a given CASRN and properties; filled by load_all_methods.
calculate(T, method)
Method to calculate vapor pressure of a fluid at temperature T with a given method.
This method has no exception handling; see T_dependent_property for that.
Parameters

1.1. thermo package 401


thermo Documentation, Release 0.1

T [float] Temperature at calculate vapor pressure, [K]


method [str] Name of the method to use
Returns
Psat [float] Vapor pressure at T, [pa]
interpolation_T(T)
1/T interpolation transformation by default.
interpolation_property(P)
log(P) interpolation transformation by default.
interpolation_property_inv(P)
exp(P) interpolation transformation by default; reverses interpolation_property_inv.
load_all_methods()
Method which picks out coefficients for the specified chemical from the various dictionaries and
DataFrames storing it. All data is stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods for which the data exists for.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
method = None
The method was which was last used successfully to calculate a property; set only after the first property
calculation.
name = 'Vapor pressure'
property_max = 10000000000.0
Maximum valid value of vapor pressure. Set slightly above the critical point estimated for Iridium; Mer-
cury’s 160 MPa critical point is the highest known.
property_min = 0
Mimimum valid value of vapor pressure.
ranked_methods = ['WAGNER_MCGARRY', 'WAGNER_POLING', 'ANTOINE_EXTENDED_POLING', 'DIPPR_
Default rankings of the available methods.
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by
T_dependent_property.
tabular_data = None
tabular_data, dict: Stored (Ts, properties) for any tabular data; indexed by provided or autogenerated name.
tabular_data_interpolators = None
tabular_data_interpolators, dict: Stored (extrapolator, spline) tuples which are interp1d instances for
each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_property, interpola-
tion_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had
been created is no longer used.
tabular_extrapolation_permitted = False
Disallow tabular extrapolation by default; CSP methods prefered normally.
test_method_validity(T, method)
Method to check the validity of a method. Follows the given ranges for all coefficient-based methods. For
CSP methods, the models are considered valid from 0 K to the critical point. For tabular data, extrapolation
outside of the range is used if tabular_extrapolation_permitted is set; if it is, the extrapolation
is considered valid for all temperatures.

402 Chapter 1. thermo


thermo Documentation, Release 0.1

It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.
Parameters
T [float] Temperature at which to test the method, [K]
method [str] Name of the method to test
Returns
validity [bool] Whether or not a method is valid
units = 'Pa'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by T_dependent_property.
thermo.vapor_pressure.boiling_critical_relation(T, Tb, Tc, Pc)
Calculates vapor pressure of a fluid at arbitrary temperatures using a CSP relationship as in [1]; requires a
chemical’s critical temperature and pressure as well as boiling point.
The vapor pressure is given by:
(︂ )︂
1
ln 𝑃𝑟𝑠𝑎𝑡 = ℎ 1 −
𝑇𝑟
ln(𝑃𝑐 /101325)
ℎ = 𝑇𝑏𝑟
1 − 𝑇𝑏𝑟
Parameters
T [float] Temperature of fluid [K]
Tb [float] Boiling temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
Returns
Psat [float] Vapor pressure at T [Pa]

1.1.1.34.16 Notes

Units are Pa. Formulation makes intuitive sense; a logarithmic form of interpolation.

1.1.1.34.17 References

[1]

1.1.1.34.18 Examples

Example as in [1] for ethylbenzene

>>> boiling_critical_relation(347.2, 409.3, 617.1, 36E5)


15209.467273093938

1.1. thermo package 403


thermo Documentation, Release 0.1

thermo.vapor_pressure.Lee_Kesler(T, Tc, Pc, omega)


Calculates vapor pressure of a fluid at arbitrary temperatures using a CSP relationship by [1]; requires a chemi-
cal’s critical temperature and acentric factor.
The vapor pressure is given by:
ln 𝑃𝑟𝑠𝑎𝑡 = 𝑓 (0) + 𝜔𝑓 (1)
6.09648
𝑓 (0) = 5.92714 − − 1.28862 ln 𝑇𝑟 + 0.169347𝑇𝑟6
𝑇𝑟
15.6875
𝑓 (1) = 15.2518 − − 13.4721 ln 𝑇𝑟 + 0.43577𝑇𝑟6
𝑇𝑟
Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
omega [float] Acentric factor [-]
Returns
Psat [float] Vapor pressure at T [Pa]

1.1.1.34.19 Notes

This equation appears in [1] in expanded form. The reduced pressure form of the equation ensures predicted
vapor pressure cannot surpass the critical pressure.

1.1.1.34.20 References

[1], [2]

1.1.1.34.21 Examples

Example from [2]; ethylbenzene at 347.2 K.


>>> Lee_Kesler(347.2, 617.1, 36E5, 0.299)
13078.694162949312

thermo.vapor_pressure.Ambrose_Walton(T, Tc, Pc, omega)


Calculates vapor pressure of a fluid at arbitrary temperatures using a CSP relationship by [1]; requires a chemi-
cal’s critical temperature and acentric factor.
The vapor pressure is given by:
ln 𝑃𝑟 = 𝑓 (0) + 𝜔𝑓 (1) + 𝜔 2 𝑓 (2)
−5.97616𝜏 + 1.29874𝜏 1.5 − 0.60394𝜏 2.5 − 1.06841𝜏 5
𝑓 (0) =
𝑇𝑟
−5.03365𝜏 + 1.11505𝜏 1.5 − 5.41217𝜏 2.5 − 7.46628𝜏 5
𝑓 (1) =
𝑇𝑟
−0.64771𝜏 + 2.41539𝜏 1.5 − 4.26979𝜏 2.5 + 3.25259𝜏 5
𝑓 (2) =
𝑇𝑟
𝜏 = 1 − 𝑇𝑟

404 Chapter 1. thermo


thermo Documentation, Release 0.1

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
omega [float] Acentric factor [-]
Returns
Psat [float] Vapor pressure at T [Pa]

1.1.1.34.22 Notes

Somewhat more accurate than the Lee_Kesler formulation.

1.1.1.34.23 References

[1], [2]

1.1.1.34.24 Examples

Example from [2]; ethylbenzene at 347.25 K.

>>> Ambrose_Walton(347.25, 617.15, 36.09E5, 0.304)


13278.878504306222

thermo.vapor_pressure.Edalat(T, Tc, Pc, omega)


Calculates vapor pressure of a fluid at arbitrary temperatures using a CSP relationship by [1]. Requires a
chemical’s critical temperature, pressure, and acentric factor. Claimed to have a higher accuracy than the Lee-
Kesler CSP relationship.
The vapor pressure of a chemical at T is given by:

𝑎𝜏 + 𝑏𝜏 1.5 + 𝑐𝜏 3 + 𝑑𝜏 6
ln(𝑃 𝑠𝑎𝑡 /𝑃𝑐 ) =
1−𝜏
𝑎 = −6.1559 − 4.0855𝜔
𝑏 = 1.5737 − 1.0540𝜔 − 4.4365 × 10−3 𝑑
𝑐 = −0.8747 − 7.8874𝜔
1
𝑑=
−0.4893 − 0.9912𝜔 + 3.1551𝜔 2
𝑇
𝜏 =1−
𝑇𝑐
Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
omega [float] Acentric factor [-]
Returns

1.1. thermo package 405


thermo Documentation, Release 0.1

Psat [float] Vapor pressure, [Pa]

1.1.1.34.25 Notes

[1] found an average error of 6.06% on 94 compounds and 1106 data points.

1.1.1.34.26 References

[1]

1.1.1.34.27 Examples

>>> Edalat(347.2, 617.1, 36E5, 0.299)


13461.273080743307

thermo.vapor_pressure.Sanjari(T, Tc, Pc, omega)


Calculates vapor pressure of a fluid at arbitrary temperatures using a CSP relationship by [1]. Requires a
chemical’s critical temperature, pressure, and acentric factor. Although developed for refrigerants, this model
should have some general predictive ability.
The vapor pressure of a chemical at T is given by:

𝑃 𝑠𝑎𝑡 = 𝑃𝑐 exp(𝑓 (0) + 𝜔𝑓 (1) + 𝜔 2 𝑓 (2) )


𝑎2
𝑓 (0) = 𝑎1 + + 𝑎3 ln 𝑇𝑟 + 𝑎4 𝑇𝑟1.9
𝑇𝑟
𝑎6
𝑓 (1) = 𝑎5 + + 𝑎7 ln 𝑇𝑟 + 𝑎8 𝑇𝑟1.9
𝑇𝑟
𝑎10
𝑓 (2) = 𝑎9 + + 𝑎11 ln 𝑇𝑟 + 𝑎12 𝑇𝑟1.9
𝑇𝑟
Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
omega [float] Acentric factor [-]
Returns
Psat [float] Vapor pressure, [Pa]

1.1.1.34.28 Notes

a[1-12] are as follows: 6.83377, -5.76051, 0.90654, -1.16906, 5.32034, -28.1460, -58.0352, 23.57466,
18.19967, 16.33839, 65.6995, -35.9739.
For a claimed fluid not included in the regression, R128, the claimed AARD was 0.428%. A re-calculation using
200 data points from 125.45 K to 343.90225 K evenly spaced by 1.09775 K as generated by NIST Webbook
April 2016 produced an AARD of 0.644%. It is likely that the author’s regression used more precision in its
coefficients than was shown here. Nevertheless, the function is reproduced as shown in [1].
For Tc=808 K, Pc=1100000 Pa, omega=1.1571, this function actually declines after 770 K.

406 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.34.29 References

[1]

1.1.1.34.30 Examples

>>> Sanjari(347.2, 617.1, 36E5, 0.299)


13651.916109552498

1.1.1.35 thermo.virial module

thermo.virial.BVirial_Pitzer_Curl(T, Tc, Pc, omega, order=0)


Calculates the second virial coefficient using the model in [1]. Designed for simple calculations.
𝐵𝑟 = 𝐵 (0) + 𝜔𝐵 (1)
𝐵 (0) = 0.1445 − 0.33/𝑇𝑟 − 0.1385/𝑇𝑟2 − 0.0121/𝑇𝑟3
𝐵 (1) = 0.073 + 0.46/𝑇𝑟 − 0.5/𝑇𝑟2 − 0.097/𝑇𝑟3 − 0.0073/𝑇𝑟8
Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of the fluid [Pa]
omega [float] Acentric factor for fluid, [-]
order [int, optional] Order of the calculation. 0 for the calculation of B itself; for 1/2/3, the
first/second/third derivative of B with respect to temperature; and for -1/-2, the first/second
indefinite integral of B with respect to temperature. No other integrals or derivatives are
implemented, and an exception will be raised if any other order is given.
Returns
B [float] Second virial coefficient in density form or its integral/derivative if specified, [m^3/mol
or m^3/mol/K^order]

1.1.1.35.1 Notes

Analytical models for derivatives and integrals are available for orders -2, -1, 1, 2, and 3, all obtained with
SymPy.
For first temperature derivative of B:
𝑑𝐵 (0) 33𝑇 𝑐 277𝑇 𝑐2 363𝑇 𝑐3
= 2
+ 3
+
𝑑𝑇 100𝑇 1000𝑇 10000𝑇 4
(1) 2 3
𝑑𝐵 23𝑇 𝑐 𝑇 𝑐 291𝑇 𝑐 73𝑇 𝑐8
=− + + +
𝑑𝑇 50𝑇 2 𝑇3 1000𝑇 4 1250𝑇 9
For the second temperature derivative of B:
𝑑2 𝐵 (0) 1385𝑇 𝑐 242𝑇 𝑐2
(︂ )︂
3𝑇 𝑐
=− 1100 + +
𝑑𝑇 2 5000𝑇 3 𝑇 𝑇2
𝑑2 𝐵 (1) 𝑇 𝑐 23 3𝑇 𝑐 291𝑇 𝑐2 657𝑇 𝑐7
(︂ )︂
= − − −
𝑑𝑇 2 𝑇 3 25 𝑇 250𝑇 2 1250𝑇 7

1.1. thermo package 407


thermo Documentation, Release 0.1

For the third temperature derivative of B:

𝑑3 𝐵 (0) 554𝑇 𝑐 121𝑇 𝑐2


(︂ )︂
3𝑇 𝑐
= 330 + +
𝑑𝑇 3 500𝑇 4 𝑇 𝑇2
𝑑3 𝐵 (1) 23 4𝑇 𝑐 97𝑇 𝑐2 219𝑇 𝑐7
(︂ )︂
3𝑇 𝑐
= − + + +
𝑑𝑇 3 𝑇4 25 𝑇 50𝑇 2 125𝑇 7

For the first indefinite integral of B:


∫︁
289𝑇 33𝑇 𝑐 1
𝐵 (0) 𝑑𝑇 = 2770𝑇 𝑇 𝑐2 + 121𝑇 𝑐3
(︀ )︀
− log (𝑇 ) + 2
2000 100 20000𝑇
∫︁
(1) 73𝑇 23𝑇 𝑐 1
35000𝑇 6 𝑇 𝑐2 + 3395𝑇 5 𝑇 𝑐3 + 73𝑇 𝑐8
(︀ )︀
𝐵 𝑑𝑇 = + log (𝑇 ) + 7
1000 50 70000𝑇
For the second indefinite integral of B:

289𝑇 2 277𝑇 𝑐2 121𝑇 𝑐3


∫︁ ∫︁
33𝑇 33𝑇
𝐵 (0) 𝑑𝑇 𝑑𝑇 = − 𝑇 𝑐 log (𝑇 ) + 𝑇𝑐 + log (𝑇 ) −
4000 100 100 2000 20000𝑇
∫︁ ∫︁ 2 2
73𝑇 23𝑇 23𝑇 𝑇 𝑐 1
𝐵 (1) 𝑑𝑇 𝑑𝑇 = 20370𝑇 5 𝑇 𝑐3 + 73𝑇 𝑐8
(︀ )︀
+ 𝑇 𝑐 log (𝑇 ) − 𝑇𝑐 + log (𝑇 ) − 6
2000 50 50 2 420000𝑇

1.1.1.35.2 References

[1]

1.1.1.35.3 Examples

Example matching that in BVirial_Abbott, for isobutane.

>>> BVirial_Pitzer_Curl(510., 425.2, 38E5, 0.193)


-0.0002084535541385102

thermo.virial.BVirial_Abbott(T, Tc, Pc, omega, order=0)


Calculates the second virial coefficient using the model in [1]. Simple fit to the Lee-Kesler equation.

𝐵𝑟 = 𝐵 (0) + 𝜔𝐵 (1)
0.422
𝐵 (0) = 0.083 + 1.6
𝑇𝑟
(1) 0.172
𝐵 = 0.139 − 4.2
𝑇𝑟

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of the fluid [Pa]
omega [float] Acentric factor for fluid, [-]
order [int, optional] Order of the calculation. 0 for the calculation of B itself; for 1/2/3, the
first/second/third derivative of B with respect to temperature; and for -1/-2, the first/second
indefinite integral of B with respect to temperature. No other integrals or derivatives are
implemented, and an exception will be raised if any other order is given.

408 Chapter 1. thermo


thermo Documentation, Release 0.1

Returns
B [float] Second virial coefficient in density form or its integral/derivative if specified, [m^3/mol
or m^3/mol/K^order]

1.1.1.35.4 Notes

Analytical models for derivatives and integrals are available for orders -2, -1, 1, 2, and 3, all obtained with
SymPy.
For first temperature derivative of B:

𝑑𝐵 (0) 0.6752
= (︀ )︀1.6
𝑑𝑇 𝑇 𝑇𝑇𝑐
𝑑𝐵 (1) 0.7224
= (︀ )︀4.2
𝑑𝑇 𝑇 𝑇𝑇𝑐

For the second temperature derivative of B:

𝑑2 𝐵 (0) 1.75552
2
= − (︀ )︀1.6
𝑑𝑇 𝑇2 𝑇 𝑇𝑐
2 (1)
𝑑 𝐵 3.75648
=− (︀ 𝑇 )︀4.2
𝑑𝑇 2 𝑇2 𝑇𝑐

For the third temperature derivative of B:

𝑑3 𝐵 (0) 6.319872
3
= (︀ )︀1.6
𝑑𝑇 𝑇 3 𝑇𝑇𝑐
𝑑3 𝐵 (1) 23.290176
= (︀ )︀4.2
𝑑𝑇 3 𝑇 3 𝑇𝑇𝑐

For the first indefinite integral of B:


211
𝑇𝑐
∫︁
𝐵 (0) 𝑑𝑇 = 0.083𝑇 + (︀300)︀0.6
𝑇
𝑇𝑐
∫︁
(1) 0.05375𝑇 𝑐
𝐵 𝑑𝑇 = 0.139𝑇 + (︀ )︀3.2
𝑇
𝑇𝑐

For the second indefinite integral of B:


∫︁ ∫︁ (︂ )︂0.4
(0) 211 2 𝑇 2
𝐵 𝑑𝑇 𝑑𝑇 = 0.0415𝑇 + 𝑇𝑐
120 𝑇𝑐
43
𝑇 𝑐2
∫︁ ∫︁
𝐵 (1) 𝑑𝑇 𝑑𝑇 = 0.0695𝑇 2 − 1760
(︀ 𝑇 )︀2.2
𝑇𝑐

1.1.1.35.5 References

[1]

1.1. thermo package 409


thermo Documentation, Release 0.1

1.1.1.35.6 Examples

Example is from [1], p. 93, and matches the result exactly, for isobutane.

>>> BVirial_Abbott(510., 425.2, 38E5, 0.193)


-0.00020570178037383633

thermo.virial.BVirial_Tsonopoulos(T, Tc, Pc, omega, order=0)


Calculates the second virial coefficient using the model in [1].

𝐵𝑟 = 𝐵 (0) + 𝜔𝐵 (1)
𝐵 (0) = 0.1445 − 0.330/𝑇𝑟 − 0.1385/𝑇𝑟2 − 0.0121/𝑇𝑟3 − 0.000607/𝑇𝑟8
𝐵 (1) = 0.0637 + 0.331/𝑇𝑟2 − 0.423/𝑇𝑟3 − 0.423/𝑇𝑟3 − 0.008/𝑇𝑟8

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of the fluid [Pa]
omega [float] Acentric factor for fluid, [-]
order [int, optional] Order of the calculation. 0 for the calculation of B itself; for 1/2/3, the
first/second/third derivative of B with respect to temperature; and for -1/-2, the first/second
indefinite integral of B with respect to temperature. No other integrals or derivatives are
implemented, and an exception will be raised if any other order is given.
Returns
B [float] Second virial coefficient in density form or its integral/derivative if specified, [m^3/mol
or m^3/mol/K^order]

1.1.1.35.7 Notes

A more complete expression is also available, in BVirial_Tsonopoulos_extended.


Analytical models for derivatives and integrals are available for orders -2, -1, 1, 2, and 3, all obtained with
SymPy.
For first temperature derivative of B:

𝑑𝐵 (0) 33𝑇 𝑐 277𝑇 𝑐2 363𝑇 𝑐3 607𝑇 𝑐8


= + + +
𝑑𝑇 100𝑇 2 1000𝑇 3 10000𝑇 4 125000𝑇 9
(1) 2 3
𝑑𝐵 331𝑇 𝑐 1269𝑇 𝑐 8𝑇 𝑐8
=− 3
+ 4
+
𝑑𝑇 500𝑇 1000𝑇 125𝑇 9
For the second temperature derivative of B:

𝑑2 𝐵 (0) 34625𝑇 𝑐 6050𝑇 𝑐2 1821𝑇 𝑐7


(︂ )︂
3𝑇 𝑐
=− 27500 + + +
𝑑𝑇 2 125000𝑇 3 𝑇 𝑇2 𝑇7
2 (1) 2
846𝑇 𝑐 96𝑇 𝑐6
(︂ )︂
𝑑 𝐵 3𝑇 𝑐
= 331 − −
𝑑𝑇 2 500𝑇 4 𝑇 𝑇6

410 Chapter 1. thermo


thermo Documentation, Release 0.1

For the third temperature derivative of B:

𝑑3 𝐵 (0) 13850𝑇 𝑐 3025𝑇 𝑐2 1821𝑇 𝑐7


(︂ )︂
3𝑇 𝑐
3
= 8250 + + +
𝑑𝑇 12500𝑇 4 𝑇 𝑇2 𝑇7
𝑑3 𝐵 (1) 3𝑇 𝑐2 2115𝑇 𝑐 480𝑇 𝑐6
(︂ )︂
= −662 + +
𝑑𝑇 3 250𝑇 5 𝑇 𝑇6

For the first indefinite integral of B:


∫︁
289𝑇 33𝑇 𝑐 1
𝐵 (0) 𝑑𝑇 = 969500𝑇 6 𝑇 𝑐2 + 42350𝑇 5 𝑇 𝑐3 + 607𝑇 𝑐8
(︀ )︀
− log (𝑇 ) + 7
2000 100 7000000𝑇
∫︁
(1) 637𝑇 1
23170𝑇 6 𝑇 𝑐2 − 14805𝑇 5 𝑇 𝑐3 − 80𝑇 𝑐8
(︀ )︀
𝐵 𝑑𝑇 = − 7
10000 70000𝑇
For the second indefinite integral of B:

289𝑇 2 277𝑇 𝑐2
∫︁ ∫︁
33𝑇 33𝑇 1
𝐵 (0) 𝑑𝑇 𝑑𝑇 = 254100𝑇 5 𝑇 𝑐3 + 607𝑇 𝑐8
(︀ )︀
− 𝑇 𝑐 log (𝑇 ) + 𝑇𝑐 + log (𝑇 ) − 6
4000 100 100 2000 42000000𝑇
∫︁ ∫︁ 2 2
637𝑇 331𝑇 𝑐 1
𝐵 (1) 𝑑𝑇 𝑑𝑇 = 44415𝑇 5 𝑇 𝑐3 + 40𝑇 𝑐8
(︀ )︀
− log (𝑇 ) − 6
20000 1000 210000𝑇

1.1.1.35.8 References

[1]

1.1.1.35.9 Examples

Example matching that in BVirial_Abbott, for isobutane.

>>> BVirial_Tsonopoulos(510., 425.2, 38E5, 0.193)


-0.00020935288308483694

thermo.virial.BVirial_Tsonopoulos_extended(T, Tc, Pc, omega, a=0, b=0, species_type=”,


dipole=0, order=0)
Calculates the second virial coefficient using the comprehensive model in [1]. See the notes for the calculation
of a and b.
𝐵𝑃𝑐
= 𝐵 (0) + 𝜔𝐵 (1) + 𝑎𝐵 (2) + 𝑏𝐵 (3)
𝑅𝑇𝑐
𝐵 (0) = 0.1445 − 0.33/𝑇𝑟 − 0.1385/𝑇𝑟2 − 0.0121/𝑇𝑟3
𝐵 (1) = 0.0637 + 0.331/𝑇𝑟2 − 0.423/𝑇𝑟3 − 0.423/𝑇𝑟3 − 0.008/𝑇𝑟8
𝐵 (2) = 1/𝑇𝑟6
𝐵 (3) = −1/𝑇𝑟8

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of the fluid [Pa]
omega [float] Acentric factor for fluid, [-]

1.1. thermo package 411


thermo Documentation, Release 0.1

a [float, optional] Fit parameter, calculated based on species_type if a is not given and
species_type matches on of the supported chemical classes.
b [float, optional] Fit parameter, calculated based on species_type if a is not given and
species_type matches on of the supported chemical classes.
species_type [str, optional] One of .
dipole [float] dipole moment, optional, [Debye]
order [int, optional] Order of the calculation. 0 for the calculation of B itself; for 1/2/3, the
first/second/third derivative of B with respect to temperature; and for -1/-2, the first/second
indefinite integral of B with respect to temperature. No other integrals or derivatives are
implemented, and an exception will be raised if any other order is given.
Returns
B [float] Second virial coefficient in density form or its integral/derivative if specified, [m^3/mol
or m^3/mol/K^order]

1.1.1.35.10 Notes

Analytical models for derivatives and integrals are available for orders -2, -1, 1, 2, and 3, all obtained with
SymPy.
To calculate a or b, the following rules are used:
For ‘simple’ or ‘normal’ fluids:
𝑎=0
𝑏=0
For ‘ketone’, ‘aldehyde’, ‘alkyl nitrile’, ‘ether’, ‘carboxylic acid’, or ‘ester’ types of chemicals:

𝑎 = −2.14 × 10−4 𝜇𝑟 − 4.308 × 10−21 (𝜇𝑟 )8


𝑏=0
For ‘alkyl halide’, ‘mercaptan’, ‘sulfide’, or ‘disulfide’ types of chemicals:

𝑎 = −2.188 × 10−4 (𝜇𝑟 )4 − 7.831 × 10−21 (𝜇𝑟 )8


𝑏=0
For ‘alkanol’ types of chemicals (except methanol):
𝑎 = 0.0878
𝑏 = 0.00908 + 0.0006957𝜇𝑟
For methanol:
𝑎 = 0.0878
𝑏 = 0.0525
For water:
𝑎 = −0.0109
𝑏=0
If required, the form of dipole moment used in the calculation of some types of a and b values is as follows:
𝜇2 (𝑃 𝑐/101325.0)
𝜇𝑟 = 100000
𝑇 𝑐2

412 Chapter 1. thermo


thermo Documentation, Release 0.1

For first temperature derivative of B:

𝑑𝐵 (0) 33𝑇 𝑐 277𝑇 𝑐2 363𝑇 𝑐3 607𝑇 𝑐8


= + + +
𝑑𝑇 100𝑇 2 1000𝑇 3 10000𝑇 4 125000𝑇 9
(1) 2 3
𝑑𝐵 331𝑇 𝑐 1269𝑇 𝑐 8𝑇 𝑐8
=− 3
+ 4
+
𝑑𝑇 500𝑇 1000𝑇 125𝑇 9
(2)
𝑑𝐵 6𝑇 𝑐6
=− 7
𝑑𝑇 𝑇
𝑑𝐵 (3) 8𝑇 𝑐8
=
𝑑𝑇 𝑇9
For the second temperature derivative of B:

𝑑2 𝐵 (0) 34625𝑇 𝑐 6050𝑇 𝑐2 1821𝑇 𝑐7


(︂ )︂
3𝑇 𝑐
2
=− 27500 + + +
𝑑𝑇 125000𝑇 3 𝑇 𝑇2 𝑇7
2 (1) 2
846𝑇 𝑐 96𝑇 𝑐6
(︂ )︂
𝑑 𝐵 3𝑇 𝑐
= 331 − −
𝑑𝑇 2 500𝑇 4 𝑇 𝑇6
𝑑2 𝐵 (2) 42𝑇 𝑐6
2
=
𝑑𝑇 𝑇8
2 (3)
𝑑 𝐵 72𝑇 𝑐8
= −
𝑑𝑇 2 𝑇 10
For the third temperature derivative of B:

𝑑3 𝐵 (0) 13850𝑇 𝑐 3025𝑇 𝑐2 1821𝑇 𝑐7


(︂ )︂
3𝑇 𝑐
= 8250 + + +
𝑑𝑇 3 12500𝑇 4 𝑇 𝑇2 𝑇7
𝑑3 𝐵 (1) 3𝑇 𝑐2 2115𝑇 𝑐 480𝑇 𝑐6
(︂ )︂
= −662 + +
𝑑𝑇 3 250𝑇 5 𝑇 𝑇6
𝑑3 𝐵 (2) 336𝑇 𝑐6
= −
𝑑𝑇 3 𝑇9
3 (3)
𝑑 𝐵 720𝑇 𝑐8
3
=
𝑑𝑇 𝑇 11
For the first indefinite integral of B:
∫︁
289𝑇 33𝑇 𝑐 1
𝐵 (0) 𝑑𝑇 = 969500𝑇 6 𝑇 𝑐2 + 42350𝑇 5 𝑇 𝑐3 + 607𝑇 𝑐8
(︀ )︀
− log (𝑇 ) + 7
2000 100 7000000𝑇
∫︁
637𝑇 1
𝐵 (1) 𝑑𝑇 = 23170𝑇 6 𝑇 𝑐2 − 14805𝑇 5 𝑇 𝑐3 − 80𝑇 𝑐8
(︀ )︀

10000 70000𝑇 7
𝑇 𝑐6
∫︁
𝐵 (2) 𝑑𝑇 = − 5
5𝑇
𝑇 𝑐8
∫︁
𝐵 (3) 𝑑𝑇 =
7𝑇 7
For the second indefinite integral of B:
289𝑇 2 277𝑇 𝑐2
∫︁ ∫︁
33𝑇 33𝑇 1
𝐵 (0) 𝑑𝑇 𝑑𝑇 = 254100𝑇 5 𝑇 𝑐3 + 607𝑇 𝑐8
(︀ )︀
− 𝑇 𝑐 log (𝑇 ) + 𝑇𝑐 + log (𝑇 ) − 6
4000 100 100 2000 42000000𝑇
∫︁ ∫︁ 2 2
637𝑇 331𝑇 𝑐 1
𝐵 (1) 𝑑𝑇 𝑑𝑇 = 44415𝑇 5 𝑇 𝑐3 + 40𝑇 𝑐8
(︀ )︀
− log (𝑇 ) − 6
20000 1000 210000𝑇
𝑇 𝑐6
∫︁ ∫︁
𝐵 (2) 𝑑𝑇 𝑑𝑇 =
20𝑇 4
𝑇 𝑐8
∫︁ ∫︁
𝐵 (3) 𝑑𝑇 𝑑𝑇 = −
42𝑇 6

1.1. thermo package 413


thermo Documentation, Release 0.1

1.1.1.35.11 References

[1], [2]

1.1.1.35.12 Examples

Example from Perry’s Handbook, 8E, p2-499. Matches to a decimal place.

>>> BVirial_Tsonopoulos_extended(430., 405.65, 11.28E6, 0.252608, a=0, b=0,


˓→species_type='ketone', dipole=1.469)

-9.679715056695323e-05

1.1.1.36 thermo.viscosity module

thermo.viscosity.ViswanathNatarajan2(T, A, B)
This function is known to produce values 10 times too low. The author’s data must have an error. I have adjusted
it to fix this.
# DDBST has 0.0004580 as a value at this temperature >>> ViswanathNatarajan2(348.15, -5.9719, 1007.0)
0.00045983686956829517
thermo.viscosity.ViswanathNatarajan2Exponential(T, C, D)
This function is genuinely bad at what it does.

>>> ViswanathNatarajan2Exponential(298.15, 4900800, -3.8075)


0.0018571903840928496

thermo.viscosity.ViswanathNatarajan3(T, A, B, C)
Calculate the viscosity of a liquid using the 3-term Antoine form representation developed in [1]. Requires
input coefficients. The A coefficient is assumed to yield coefficients in centipoise, as all coefficients found so
far have been.

log10 𝜇 = 𝐴 + 𝐵/(𝑇 + 𝐶)

Parameters
T [float] Temperature of fluid [K]
Returns
mu [float] Liquid viscosity, [Pa*s]

1.1.1.36.1 Notes

No other source for these coefficients has been found.

1.1.1.36.2 References

[1]

414 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.36.3 Examples

>>> ViswanathNatarajan3(298.15, -2.7173, -1071.18, -129.51)


0.0006129806445142112

thermo.viscosity.Letsou_Stiel(T, MW, Tc, Pc, omega)


Calculates the viscosity of a liquid using an emperical model developed in [1]. However. the fitting parameters
for tabulated values in the original article are found in ChemSep.
1/6
2173.424𝑇𝑐
𝜉= √ 2/3
𝑀 𝑊 𝑃𝑐
𝜉 (0) = (1.5174 − 2.135𝑇𝑟 + 0.75𝑇𝑟2 ) · 10−5
𝜉 (1) = (4.2552 − 7.674𝑇𝑟 + 3.4𝑇𝑟2 ) · 10−5
𝜇 = (𝜉 (0) + 𝜔𝜉 (1) )/𝜉

Parameters
T [float] Temperature of fluid [K]
MW [float] Molwcular weight of fluid [g/mol]
Tc [float] Critical temperature of the fluid [K]
Pc [float] Critical pressure of the fluid [Pa]
omega [float] Acentric factor of compound
Returns
mu_l [float] Viscosity of liquid, [Pa*S]

1.1.1.36.4 Notes

The form of this equation is a polynomial fit to tabulated data. The fitting was performed by the DIPPR. This is
DIPPR Procedure 8G: Method for the viscosity of pure, nonhydrocarbon liquids at high temperatures internal
units are SI standard. [1]’s units were different. DIPPR test value for ethanol is used.
Average error 34%. Range of applicability is 0.76 < Tr < 0.98.

1.1.1.36.5 References

[1]

1.1.1.36.6 Examples

>>> Letsou_Stiel(400., 46.07, 516.25, 6.383E6, 0.6371)


0.0002036150875308151

1.1. thermo package 415


thermo Documentation, Release 0.1

thermo.viscosity.Przedziecki_Sridhar(T, Tm, Tc, Pc, Vc, Vm, omega, MW)


Calculates the viscosity of a liquid using an emperical formula developed in [1].
𝑉𝑜
𝜇=
𝐸(𝑉 − 𝑉𝑜 )
𝑉𝑐
𝐸 = −1.12 +
12.94 + 0.10𝑀 𝑊 − 0.23𝑃𝑐 + 0.0424𝑇𝑚 − 11.58(𝑇𝑚 /𝑇𝑐 )
𝑉𝑚
𝑉𝑜 = 0.0085𝜔𝑇𝑐 − 2.02 +
0.342(𝑇𝑚 /𝑇𝑐 ) + 0.894

Parameters
T [float] Temperature of the fluid [K]
Tm [float] Melting point of fluid [K]
Tc [float] Critical temperature of the fluid [K]
Pc [float] Critical pressure of the fluid [Pa]
Vc [float] Critical volume of the fluid [m^3/mol]
Vm [float] Molar volume of the fluid at temperature [K]
omega [float] Acentric factor of compound
MW [float] Molwcular weight of fluid [g/mol]
Returns
mu_l [float] Viscosity of liquid, [Pa*S]

1.1.1.36.7 Notes

A test by Reid (1983) is used, but only mostly correct. This function is not recommended. Its use has been
removed from the Liquid Viscosity function. Internal units are bar and mL/mol. TODO: Test again with data
from 5th ed table.

1.1.1.36.8 References

[1]

1.1.1.36.9 Examples

>>> Przedziecki_Sridhar(383., 178., 591.8, 41E5, 316E-6, 95E-6, .263, 92.14)


0.0002198147995603383

thermo.viscosity.viscosity_liquid_methods = ['COOLPROP', 'DIPPR_PERRY_8E', 'VDI_PPDS', 'DUT


Holds all low-pressure methods available for the ViscosityLiquid class, for use in iterating over them.
thermo.viscosity.viscosity_liquid_methods_P = ['COOLPROP', 'LUCAS']
Holds all high-pressure methods available for the ViscosityLiquid class, for use in iterating over them.
class thermo.viscosity.ViscosityLiquid(CASRN=”, MW=None, Tm=None, Tc=None,
Pc=None, Vc=None, omega=None, Psat=None,
Vml=None)
Bases: thermo.utils.TPDependentProperty

416 Chapter 1. thermo


thermo Documentation, Release 0.1

Class for dealing with liquid viscosity as a function of temperature and pressure.
For low-pressure (at 1 atm while under the vapor pressure; along the saturation line otherwise) liquids, there are
six coefficient-based methods from three data sources, one source of tabular information, two corresponding-
states estimators, and the external library CoolProp.
For high-pressure liquids (also, <1 atm liquids), there is one corresponding-states estimator, and the external
library CoolProp.
Parameters
CASRN [str, optional] The CAS number of the chemical
MW [float, optional] Molecular weight, [g/mol]
Tm [float, optional] Melting point, [K]
Tc [float, optional] Critical temperature, [K]
Pc [float, optional] Critical pressure, [Pa]
Vc [float, optional] Critical volume, [m^3/mol]
omega [float, optional] Acentric factor, [-]
Psat [float or callable, optional] Vapor pressure at a given temperature or callable for the same,
[Pa]
Vml [float or callable, optional] Liquid molar volume at a given temperature and pressure or
callable for the same, [m^3/mol]
See also:
ViswanathNatarajan3, ViswanathNatarajan2, ViswanathNatarajan2Exponential,
Letsou_Stiel, Przedziecki_Sridhar, Lucas

1.1.1.36.10 Notes

To iterate over all methods, use the lists stored in viscosity_liquid_methods and
viscosity_liquid_methods_P for low and high pressure methods respectively.
Low pressure methods:
DUTT_PRASAD: A simple function as expressed in [1], with data available for 100 fluids. Temperature limits
are available for all fluids. See ViswanathNatarajan3 for details.
VISWANATH_NATARAJAN_3: A simple function as expressed in [1], with data available for 432 fluids.
Temperature limits are available for all fluids. See ViswanathNatarajan3 for details.
VN2_data: A simple function as expressed in [1], with data available for 135 fluids. Temperature limits are
available for all fluids. See ViswanathNatarajan2 for details.
VISWANATH_NATARAJAN_2E: A simple function as expressed in [1], with data available for 14 fluids.
Temperature limits are available for all fluids. See ViswanathNatarajan2Exponential for details.
DIPPR_PERRY_8E: A collection of 337 coefficient sets from the DIPPR database published openly in [4].
Provides temperature limits for all its fluids. thermo.dippr.EQ101 is used for its fluids.
LETSOU_STIEL: CSP method, described in Letsou_Stiel.
PRZEDZIECKI_SRIDHAR: CSP method, described in Przedziecki_Sridhar.
COOLPROP: CoolProp external library; with select fluids from its library. Range is limited to that of the
equations of state it uses, as described in [2]. Very slow.

1.1. thermo package 417


thermo Documentation, Release 0.1

VDI_TABULAR: Tabular data in [3] along the saturation curve; interpolation is as set by the user or the
default.
VDI_PPDS: Coefficients for a equation form developed by the PPDS, published openly in [3]. Provides no
temperature limits, but has been designed for extrapolation. Extrapolated to low temperatures it provides
a smooth exponential increase. However, for some chemicals such as glycerol, extrapolated to higher
temperatures viscosity is predicted to increase above a certain point.
High pressure methods:
LUCAS: CSP method, described in Lucas. Calculates a low-pressure liquid viscosity first, using
T_dependent_property.
COOLPROP: CoolProp external library; with select fluids from its library. Range is limited to that of the
equations of state it uses, as described in [5]_. Very slow, but unparalled in accuracy for pressure depen-
dence.

1.1.1.36.11 References

[1], [2], [3], [4]


Attributes
TP_cached
T_cached
interpolation_P
interpolation_T
interpolation_property
interpolation_property_inv
method
method_P

1.1.1.36.12 Methods

TP_dependent_property(T, P) Method to calculate the property with sanity checking


and without specifying a specific method.
TP_dependent_property_derivative_P(T, Method to calculate a derivative of a temperature and
P[, order]) pressure dependent property with respect to pressure at
constant temperature, of a given order.
TP_dependent_property_derivative_T(T, Method to calculate a derivative of a temperature and
P[, order]) pressure dependent property with respect to temperature
at constant pressure, of a given order.
T_dependent_property(T) Method to calculate the property with sanity checking
and without specifying a specific method.
T_dependent_property_derivative(T[, or- Method to obtain a derivative of a property with respect
der]) to temperature, of a given order.
T_dependent_property_integral(T1, T2) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
Continued on next page

418 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.47 – continued from previous page


T_dependent_property_integral_over_T(T1, Method to calculate the integral of a property over tem-
T2) perature with respect to temperature, using a specified
method.
__call__(T, P) Convenience method to calculate the property; calls
TP_dependent_property.
calculate(T, method) Method to calculate low-pressure liquid viscosity at
tempearture T with a given method.
calculate_P(T, P, method) Method to calculate pressure-dependent liquid viscosity
at temperature T and pressure P with a given method.
calculate_derivative(T, method[, order]) Method to calculate a derivative of a property with re-
spect to temperature, of a given order using a specified
method.
calculate_derivative_P(P, T, method[, order]) Method to calculate a derivative of a temperature and
pressure dependent property with respect to pressure at
constant temperature, of a given order using a specified
method.
calculate_derivative_T(T, P, method[, order]) Method to calculate a derivative of a temperature and
pressure dependent property with respect to temperature
at constant pressure, of a given order using a specified
method.
calculate_integral(T1, T2, method) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
calculate_integral_over_T(T1, T2, method) Method to calculate the integral of a property over tem-
perature with respect to temperature, using a specified
method.
interpolate(T, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data.
interpolate_P(T, P, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data_P.
load_all_methods() Method which picks out coefficients for the specified
chemical from the various dictionaries and DataFrames
storing it.
plot_TP_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
plot_T_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) according to either a specified list of methods, or user
methods (if set), or all methods.
plot_isobar(P[, Tmin, Tmax, methods_P, pts, . . . ]) Method to create a plot of the property vs temperature
at a specific pressure according to either a specified list
of methods, or user methods (if set), or all methods.
plot_isotherm(T[, Pmin, Pmax, methods_P, . . . ]) Method to create a plot of the property vs pressure at a
specified temperature according to either a specified list
of methods, or the user methods (if set), or all methods.
select_valid_methods(T) Method to obtain a sorted list of methods which are
valid at T according to test_method_validity.
select_valid_methods_P(T, P) Method to obtain a sorted list methods which are valid
at T according to test_method_validity.
set_tabular_data(Ts, properties[, name, . . . ]) Method to set tabular data to be used for interpolation.
set_tabular_data_P(Ts, Ps, properties[, . . . ]) Method to set tabular data to be used for interpolation.
Continued on next page

1.1. thermo package 419


thermo Documentation, Release 0.1

Table 1.47 – continued from previous page


set_user_methods(user_methods[, forced]) Method used to select certain property methods as hav-
ing a higher priority than were set by default.
set_user_methods_P(user_methods_P[, Method to set the pressure-dependent property methods
forced_P]) desired for consideration by the user.
solve_prop(goal[, reset_method]) Method to solve for the temperature at which a property
is at a specified value.
test_method_validity(T, method) Method to check the validity of a method.
test_method_validity_P(T, P, method) Method to check the validity of a high-pressure method.
test_property_validity(prop) Method to test the validity of a calculated property.

TP_or_T_dependent_property
extrapolate_tabular

Tmax = None
Maximum temperature at which no method can calculate the liquid viscosity above.
Tmin = None
Minimum temperature at which no method can calculate the liquid viscosity under.
all_methods = None
Set of all low-pressure methods available for a given CASRN and properties; filled by
load_all_methods.
all_methods_P = None
Set of all high-pressure methods available for a given CASRN and properties; filled by
load_all_methods.
calculate(T, method)
Method to calculate low-pressure liquid viscosity at tempearture T with a given method.
This method has no exception handling; see T_dependent_property for that.
Parameters
T [float] Temperature at which to calculate viscosity, [K]
method [str] Name of the method to use
Returns
mu [float] Viscosity of the liquid at T and a low pressure, [Pa*S]
calculate_P(T, P, method)
Method to calculate pressure-dependent liquid viscosity at temperature T and pressure P with a given
method.
This method has no exception handling; see TP_dependent_property for that.
Parameters
T [float] Temperature at which to calculate viscosity, [K]
P [float] Pressure at which to calculate viscosity, [K]
method [str] Name of the method to use
Returns
mu [float] Viscosity of the liquid at T and P, [Pa*S]

420 Chapter 1. thermo


thermo Documentation, Release 0.1

interpolation_P = None
No interpolation transformation by default.
interpolation_T = None
No interpolation transformation by default.
interpolation_property = None
No interpolation transformation by default.
interpolation_property_inv = None
No interpolation transformation by default.
load_all_methods()
Method which picks out coefficients for the specified chemical from the various dictionaries and
DataFrames storing it. All data is stored as attributes. This method also sets Tmin, Tmax, all_methods
and obj:all_methods_P as a set of methods for which the data exists for.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'liquid viscosity'
property_max = 200000000.0
Maximum valid value of liquid viscosity. Generous limit, as the value is that of bitumen in a Pitch drop
experiment.
property_min = 0
Mimimum valid value of liquid viscosity.
ranked_methods = ['COOLPROP', 'DIPPR_PERRY_8E', 'VDI_PPDS', 'DUTT_PRASAD', 'VISWANATH_N
Default rankings of the low-pressure methods.
ranked_methods_P = ['COOLPROP', 'LUCAS']
Default rankings of the high-pressure methods.
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by
T_dependent_property.
sorted_valid_methods_P = None
sorted_valid_methods_P, list: Stored methods which were found valid at a specific temperature; set by
TP_dependent_property.
tabular_data = None
tabular_data, dict: Stored (Ts, properties) for any tabular data; indexed by provided or autogenerated name.
tabular_data_P = None
tabular_data_P, dict: Stored (Ts, Ps, properties) for any tabular data; indexed by provided or autogenerated
name.
tabular_data_interpolators = None
tabular_data_interpolators, dict: Stored (extrapolator, spline) tuples which are interp1d instances for
each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_property, interpola-
tion_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had
been created is no longer used.
tabular_data_interpolators_P = None
tabular_data_interpolators_P, dict: Stored (extrapolator, spline) tuples which are interp2d instances
for each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_P, interpola-
tion_property, interpolation_property_inv) to ensure that if an interpolation transform is altered, the old
interpolator which had been created is no longer used.

1.1. thermo package 421


thermo Documentation, Release 0.1

tabular_extrapolation_permitted = True
Allow tabular extrapolation by default.
test_method_validity(T, method)
Method to check the validity of a method. Follows the given ranges for all coefficient-based methods. For
CSP methods, the models are considered valid from 0 K to the critical point. For tabular data, extrapolation
outside of the range is used if tabular_extrapolation_permitted is set; if it is, the extrapolation
is considered valid for all temperatures.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.
Parameters
T [float] Temperature at which to test the method, [K]
method [str] Name of the method to test
Returns
validity [bool] Whether or not a method is valid
test_method_validity_P(T, P, method)
Method to check the validity of a high-pressure method. For COOLPROP, the fluid must be both a liquid
and under the maximum pressure of the fluid’s EOS. LUCAS doesn’t work on some occasions, due to
something related to Tr and negative powers - but is otherwise considered correct for all circumstances.
For tabular data, extrapolation outside of the range is used if
tabular_extrapolation_permitted is set; if it is, the extrapolation is considered valid
for all temperatures and pressures.
Parameters
T [float] Temperature at which to test the method, [K]
P [float] Pressure at which to test the method, [Pa]
method [str] Name of the method to test
Returns
validity [bool] Whether or not a method is valid
units = 'Pa*s'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by T_dependent_property.
user_methods_P = None
user_methods_P, list: Stored methods which were specified by the user in a ranked order of preference; set
by TP_dependent_property.
class thermo.viscosity.ViscosityGas(CASRN=”, MW=None, Tc=None, Pc=None, Zc=None,
dipole=None, Vmg=None)
Bases: thermo.utils.TPDependentProperty
Class for dealing with gas viscosity as a function of temperature and pressure.
For gases at atmospheric pressure, there are 4 corresponding-states estimators, two sources of coefficient-based
models, one source of tabular information, and the external library CoolProp.
For gases under the fluid’s boiling point (at sub-atmospheric pressures), and high-pressure gases above the
boiling point, there are zero corresponding-states estimators, and the external library CoolProp.
Parameters

422 Chapter 1. thermo


thermo Documentation, Release 0.1

CASRN [str, optional] The CAS number of the chemical


MW [float, optional] Molecular weight, [g/mol]
Tc [float, optional] Critical temperature, [K]
Pc [float, optional] Critical pressure, [Pa]
Zc [float, optional] Critical compressibility, [-]
dipole [float, optional] Dipole moment of the fluid, [debye]
Vmg [float, optional] Molar volume of the fluid at a pressure and temperature, [m^3/mol]
See also:
Gharagheizi_gas_viscosity, Yoon_Thodos, Stiel_Thodos, lucas_gas

1.1.1.36.13 Notes

A string holding each method’s name is assigned to the following variables in this module, intended
as the most convenient way to refer to a method. To iterate over all methods, use the lists stored in
viscosity_gas_methods and viscosity_gas_methods_P for low and high pressure methods re-
spectively.
Low pressure methods:
GHARAGHEIZI: CSP method, described in Gharagheizi_gas_viscosity.
YOON_THODOS: CSP method, described in Yoon_Thodos.
STIEL_THODOS: CSP method, described in Stiel_Thodos.
LUCAS_GAS: CSP method, described in lucas_gas.
DIPPR_PERRY_8E: A collection of 345 coefficient sets from the DIPPR database published openly in [3].
Provides temperature limits for all its fluids. thermo.dippr.EQ102 is used for its fluids.
VDI_PPDS: Coefficients for a equation form developed by the PPDS, published openly in [2]. Provides no
temperature limits, but provides reasonable values at fairly high and very low temperatures.
COOLPROP: CoolProp external library; with select fluids from its library. Range is limited to that of the
equations of state it uses, as described in [1]. Very slow.
VDI_TABULAR: Tabular data in [2] along the saturation curve; interpolation is as set by the user or the
default.
High pressure methods:
COOLPROP: CoolProp external library; with select fluids from its library. Range is limited to that of the
equations of state it uses, as described in [1]. Very slow, but unparalled in accuracy for pressure depen-
dence.

1.1.1.36.14 References

[1], [2], [3]


Attributes
TP_cached
T_cached

1.1. thermo package 423


thermo Documentation, Release 0.1

interpolation_P
interpolation_T
interpolation_property
interpolation_property_inv
method
method_P

1.1.1.36.15 Methods

TP_dependent_property(T, P) Method to calculate the property with sanity checking


and without specifying a specific method.
TP_dependent_property_derivative_P(T, Method to calculate a derivative of a temperature and
P[, order]) pressure dependent property with respect to pressure at
constant temperature, of a given order.
TP_dependent_property_derivative_T(T, Method to calculate a derivative of a temperature and
P[, order]) pressure dependent property with respect to temperature
at constant pressure, of a given order.
T_dependent_property(T) Method to calculate the property with sanity checking
and without specifying a specific method.
T_dependent_property_derivative(T[, or- Method to obtain a derivative of a property with respect
der]) to temperature, of a given order.
T_dependent_property_integral(T1, T2) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
T_dependent_property_integral_over_T(T1, Method to calculate the integral of a property over tem-
T2) perature with respect to temperature, using a specified
method.
__call__(T, P) Convenience method to calculate the property; calls
TP_dependent_property.
calculate(T, method) Method to calculate low-pressure gas viscosity at tem-
pearture T with a given method.
calculate_P(T, P, method) Method to calculate pressure-dependent gas viscosity at
temperature T and pressure P with a given method.
calculate_derivative(T, method[, order]) Method to calculate a derivative of a property with re-
spect to temperature, of a given order using a specified
method.
calculate_derivative_P(P, T, method[, order]) Method to calculate a derivative of a temperature and
pressure dependent property with respect to pressure at
constant temperature, of a given order using a specified
method.
calculate_derivative_T(T, P, method[, order]) Method to calculate a derivative of a temperature and
pressure dependent property with respect to temperature
at constant pressure, of a given order using a specified
method.
calculate_integral(T1, T2, method) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
calculate_integral_over_T(T1, T2, method) Method to calculate the integral of a property over tem-
perature with respect to temperature, using a specified
method.
Continued on next page

424 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.48 – continued from previous page


interpolate(T, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data.
interpolate_P(T, P, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data_P.
load_all_methods() Method which picks out coefficients for the specified
chemical from the various dictionaries and DataFrames
storing it.
plot_TP_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
plot_T_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) according to either a specified list of methods, or user
methods (if set), or all methods.
plot_isobar(P[, Tmin, Tmax, methods_P, pts, . . . ]) Method to create a plot of the property vs temperature
at a specific pressure according to either a specified list
of methods, or user methods (if set), or all methods.
plot_isotherm(T[, Pmin, Pmax, methods_P, . . . ]) Method to create a plot of the property vs pressure at a
specified temperature according to either a specified list
of methods, or the user methods (if set), or all methods.
select_valid_methods(T) Method to obtain a sorted list of methods which are
valid at T according to test_method_validity.
select_valid_methods_P(T, P) Method to obtain a sorted list methods which are valid
at T according to test_method_validity.
set_tabular_data(Ts, properties[, name, . . . ]) Method to set tabular data to be used for interpolation.
set_tabular_data_P(Ts, Ps, properties[, . . . ]) Method to set tabular data to be used for interpolation.
set_user_methods(user_methods[, forced]) Method used to select certain property methods as hav-
ing a higher priority than were set by default.
set_user_methods_P(user_methods_P[, Method to set the pressure-dependent property methods
forced_P]) desired for consideration by the user.
solve_prop(goal[, reset_method]) Method to solve for the temperature at which a property
is at a specified value.
test_method_validity(T, method) Method to check the validity of a temperature-
dependent low-pressure method.
test_method_validity_P(T, P, method) Method to check the validity of a high-pressure method.
test_property_validity(prop) Method to test the validity of a calculated property.

TP_or_T_dependent_property
extrapolate_tabular

Tmax = None
Maximum temperature at which no method can calculate the gas viscosity above.
Tmin = None
Minimum temperature at which no method can calculate the gas viscosity under.
all_methods = None
Set of all low-pressure methods available for a given CASRN and properties; filled by
load_all_methods.
all_methods_P = None
Set of all high-pressure methods available for a given CASRN and properties; filled by
load_all_methods.

1.1. thermo package 425


thermo Documentation, Release 0.1

calculate(T, method)
Method to calculate low-pressure gas viscosity at tempearture T with a given method.
This method has no exception handling; see T_dependent_property for that.
Parameters
T [float] Temperature of the gas, [K]
method [str] Name of the method to use
Returns
mu [float] Viscosity of the gas at T and a low pressure, [Pa*S]
calculate_P(T, P, method)
Method to calculate pressure-dependent gas viscosity at temperature T and pressure P with a given method.
This method has no exception handling; see TP_dependent_property for that.
Parameters
T [float] Temperature at which to calculate gas viscosity, [K]
P [float] Pressure at which to calculate gas viscosity, [K]
method [str] Name of the method to use
Returns
mu [float] Viscosity of the gas at T and P, [Pa*]
interpolation_P = None
No interpolation transformation by default.
interpolation_T = None
No interpolation transformation by default.
interpolation_property = None
No interpolation transformation by default.
interpolation_property_inv = None
No interpolation transformation by default.
load_all_methods()
Method which picks out coefficients for the specified chemical from the various dictionaries and
DataFrames storing it. All data is stored as attributes. This method also sets Tmin, Tmax, all_methods
and obj:all_methods_P as a set of methods for which the data exists for.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'Gas viscosity'
property_max = 0.001
Maximum valid value of gas viscosity. Might be too high, or too low.
property_min = 0
Mimimum valid value of gas viscosity; limiting condition at low pressure is 0.
ranked_methods = ['COOLPROP', 'DIPPR_PERRY_8E', 'VDI_PPDS', 'VDI_TABULAR', 'GHARAGHEIZI
Default rankings of the low-pressure methods.
ranked_methods_P = ['COOLPROP']
Default rankings of the high-pressure methods.

426 Chapter 1. thermo


thermo Documentation, Release 0.1

sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by
T_dependent_property.
sorted_valid_methods_P = None
sorted_valid_methods_P, list: Stored methods which were found valid at a specific temperature; set by
TP_dependent_property.
tabular_data = None
tabular_data, dict: Stored (Ts, properties) for any tabular data; indexed by provided or autogenerated name.
tabular_data_P = None
tabular_data_P, dict: Stored (Ts, Ps, properties) for any tabular data; indexed by provided or autogenerated
name.
tabular_data_interpolators = None
tabular_data_interpolators, dict: Stored (extrapolator, spline) tuples which are interp1d instances for
each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_property, interpola-
tion_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had
been created is no longer used.
tabular_data_interpolators_P = None
tabular_data_interpolators_P, dict: Stored (extrapolator, spline) tuples which are interp2d instances
for each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_P, interpola-
tion_property, interpolation_property_inv) to ensure that if an interpolation transform is altered, the old
interpolator which had been created is no longer used.
tabular_extrapolation_permitted = True
Allow tabular extrapolation by default.
test_method_validity(T, method)
Method to check the validity of a temperature-dependent low-pressure method. For CSP most methods,
the all methods are considered valid from 0 K up to 5000 K. For method GHARAGHEIZI, the method is
considered valud from 20 K to 2000 K.
For tabular data, extrapolation outside of the range is used if
tabular_extrapolation_permitted is set; if it is, the extrapolation is considered valid
for all temperatures.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.
Parameters
T [float] Temperature at which to test the method, [K]
method [str] Name of the method to test
Returns
validity [bool] Whether or not a method is valid
test_method_validity_P(T, P, method)
Method to check the validity of a high-pressure method. For COOLPROP, the fluid must be both a gas
and under the maximum pressure of the fluid’s EOS. No other methods are implemented.
For tabular data, extrapolation outside of the range is used if
tabular_extrapolation_permitted is set; if it is, the extrapolation is considered valid
for all temperatures and pressures.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.

1.1. thermo package 427


thermo Documentation, Release 0.1

Parameters
T [float] Temperature at which to test the method, [K]
P [float] Pressure at which to test the method, [Pa]
method [str] Name of the method to test
Returns
validity [bool] Whether or not a method is valid
units = 'Pa*s'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by T_dependent_property.
user_methods_P = None
user_methods_P, list: Stored methods which were specified by the user in a ranked order of preference; set
by TP_dependent_property.
thermo.viscosity.Lucas(T, P, Tc, Pc, omega, P_sat, mu_l)
Adjustes for pressure the viscosity of a liquid using an emperical formula developed in [1], but as discussed in
[2] as the original source is in German.

𝜇 1 + 𝐷(∆𝑃𝑟 /2.118)𝐴
=
𝜇𝑠𝑎𝑡 1 + 𝐶𝜔∆𝑃𝑟
𝑃 − 𝑃 𝑠𝑎𝑡
∆𝑃𝑟 =
𝑃𝑐
4.674 × 10−4
𝐴 = 0.9991 −
1.0523𝑇𝑟−0.03877 − 1.0513
0.3257
𝐷= − 0.2086
(1.0039 − 𝑇𝑟2.573 )0.2906
𝐶 = −0.07921 + 2.1616𝑇𝑟 − 13.4040𝑇𝑟2 + 44.1706𝑇𝑟3 − 84.8291𝑇𝑟4 + 96.1209𝑇𝑟5 − 59.8127𝑇𝑟6 + 15.6719𝑇𝑟7

Parameters
T [float] Temperature of fluid [K]
P [float] Pressure of fluid [Pa]
Tc: float Critical point of fluid [K]
Pc [float] Critical pressure of the fluid [Pa]
omega [float] Acentric factor of compound
P_sat [float] Saturation pressure of the fluid [Pa]
mu_l [float] Viscosity of liquid at 1 atm or saturation, [Pa*S]
Returns
mu_l_dense [float] Viscosity of liquid, [Pa*s]

1.1.1.36.16 Notes

This equation is entirely dimensionless; all dimensions cancel. The example is from Reid (1987); all results
agree. Above several thousand bar, this equation does not represent true behavior. If Psat is larger than P, the
fluid may not be liquid; dPr is set to 0.

428 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.36.17 References

[1], [2]

1.1.1.36.18 Examples

>>> Lucas(300., 500E5, 572.2, 34.7E5, 0.236, 0, 0.00068) # methylcyclohexane


0.0010683738499316518

thermo.viscosity.Yoon_Thodos(T, Tc, Pc, MW)


Calculates the viscosity of a gas using an emperical formula developed in [1].

𝜂𝜉 × 108 = 46.10𝑇𝑟0.618 − 20.40 exp(−0.449𝑇𝑟 ) + 19.40 exp(−4.058𝑇𝑟 ) + 1


𝜉 = 2173.424𝑇𝑐1/6 𝑀 𝑊 −1/2 𝑃𝑐−2/3

Parameters
T [float] Temperature of the fluid [K]
Tc [float] Critical temperature of the fluid [K]
Pc [float] Critical pressure of the fluid [Pa]
MW [float] Molwcular weight of fluid [g/mol]
Returns
mu_g [float] Viscosity of gas, [Pa*S]

1.1.1.36.19 Notes

This equation has been tested. The equation uses SI units only internally. The constant 2173.424 is an adjustment
factor for units. Average deviation within 3% for most compounds. Greatest accuracy with dipole moments close
to 0. Hydrogen and helium have different coefficients, not implemented. This is DIPPR Procedure 8B: Method
for the Viscosity of Pure, non hydrocarbon, nonpolar gases at low pressures

1.1.1.36.20 References

[1]

1.1.1.36.21 Examples

>>> Yoon_Thodos(300., 556.35, 4.5596E6, 153.8)


1.0194885727776819e-05

thermo.viscosity.Stiel_Thodos(T, Tc, Pc, MW)


Calculates the viscosity of a gas using an emperical formula developed in [1].

𝑇 𝑂𝐷𝑂

Parameters
T [float] Temperature of the fluid [K]

1.1. thermo package 429


thermo Documentation, Release 0.1

Tc [float] Critical temperature of the fluid [K]


Pc [float] Critical pressure of the fluid [Pa]
MW [float] Molwcular weight of fluid [g/mol]
Returns
mu_g [float] Viscosity of gas, [Pa*S]

1.1.1.36.22 Notes

Untested. Claimed applicability from 0.2 to 5 atm. Developed with data from 52 nonpolar, and 53 polar gases.
internal units are poise and atm. Seems to give reasonable results.

1.1.1.36.23 References

[1]

1.1.1.36.24 Examples

>>> Stiel_Thodos(300., 556.35, 4.5596E6, 153.8) #CCl4


1.0408926223608723e-05

thermo.viscosity.lucas_gas(T, Tc, Pc, Zc, MW, dipole=0, CASRN=None)


Estimate the viscosity of a gas using an emperical formula developed in several sources, but as discussed in [1]
as the original sources are in German or merely personal communications with the authors of [1].
𝜂 = 0.807𝑇𝑟0.618 − 0.357 exp(−0.449𝑇𝑟 ) + 0.340 exp(−4.058𝑇𝑟 ) + 0.018 𝐹𝑝∘ 𝐹𝑄∘ /𝜉
[︀ ]︀

𝐹𝑝∘ = 1, 0 ≤ 𝜇𝑟 < 0.022


𝐹𝑝∘ = 1 + 30.55(0.292 − 𝑍𝑐 )1.72 , 0.022 ≤ 𝜇𝑟 < 0.075
𝐹𝑝∘ = 1 + 30.55(0.292 − 𝑍𝑐 )1.72 |0.96 + 0.1(𝑇𝑟 − 0.7)|0.075 < 𝜇𝑟
{︁ }︁
𝐹𝑄∘ = 1.22𝑄0.15 1 + 0.00385[(𝑇𝑟 − 12)2 ]1/𝑀 sign(𝑇𝑟 − 12)
𝜇2 𝑃𝑐
𝜇𝑟 = 52.46
𝑇𝑐2
(︂ )︂1/6
𝑇𝑐
𝜉 = 0.176
𝑀 𝑊 3 𝑃𝑐4
Parameters
T [float] Temperature of fluid [K]
Tc: float Critical point of fluid [K]
Pc [float] Critical pressure of the fluid [Pa]
Zc [float] Critical compressibility of the fluid [Pa]
dipole [float] Dipole moment of fluid [debye]
CASRN [str, optional] CAS of the fluid
Returns
mu_g [float] Viscosity of gas, [Pa*s]

430 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.36.25 Notes

The example is from [1]; all results agree. Viscosity is calculated in micropoise, and converted to SI internally
(1E-7). Q for He = 1.38; Q for H2 = 0.76; Q for D2 = 0.52.

1.1.1.36.26 References

[1]

1.1.1.36.27 Examples

>>> lucas_gas(T=550., Tc=512.6, Pc=80.9E5, Zc=0.224, MW=32.042, dipole=1.7)


1.7822676912698928e-05

thermo.viscosity.Gharagheizi_gas_viscosity(T, Tc, Pc, MW)


Calculates the viscosity of a gas using an emperical formula developed in [1].

8𝑀 2
(︂ )︂ (︂ )︂ (︂ )︂
0.477 10.7639 4.1929
𝜇 = 10−7 |10−5 𝑃𝑐 𝑇𝑟 + 0.091 − 𝑇 + 𝑀 10−5 𝑃𝑐 − 2 − |
𝑀 𝑇 𝑇𝑐 𝑇

Parameters
T [float] Temperature of the fluid [K]
Tc [float] Critical temperature of the fluid [K]
Pc [float] Critical pressure of the fluid [Pa]
MW [float] Molwcular weight of fluid [g/mol]
Returns
mu_g [float] Viscosity of gas, [Pa*S]

1.1.1.36.28 Notes

Example is first point in supporting information of article, for methane. This is the prefered function for gas
viscosity. 7% average relative deviation. Deviation should never be above 30%. Developed with the DIPPR
database. It is believed theoretically predicted values are included in the correlation.

1.1.1.36.29 References

[1]

1.1.1.36.30 Examples

>>> Gharagheizi_gas_viscosity(120., 190.564, 45.99E5, 16.04246)


5.215761625399613e-06

thermo.viscosity.viscosity_gas_methods = ['COOLPROP', 'DIPPR_PERRY_8E', 'VDI_PPDS', 'VDI_TA


Holds all low-pressure methods available for the ViscosityGas class, for use in iterating over them.

1.1. thermo package 431


thermo Documentation, Release 0.1

thermo.viscosity.viscosity_gas_methods_P = ['COOLPROP']
Holds all high-pressure methods available for the ViscosityGas class, for use in iterating over them.
thermo.viscosity.Herning_Zipperer(zs, mus, MWs)
Calculates viscosity of a gas mixture according to mixing rules in [1].

𝑇 𝑂𝐷𝑂

Parameters
zs [float] Mole fractions of components
mus [float] Gas viscosities of all components, [Pa*S]
MWs [float] Molecular weights of all components, [g/mol]
Returns
mug [float] Viscosity of gas mixture, Pa*S]

1.1.1.36.31 Notes

This equation is entirely dimensionless; all dimensions cancel. The original source has not been reviewed.

1.1.1.36.32 References

[1]
thermo.viscosity.Wilke(ys, mus, MWs)
Calculates viscosity of a gas mixture according to mixing rules in [1].
𝑛
∑︁ 𝑦𝑖 𝜂𝑖
𝜂𝑚𝑖𝑥 = ∑︀𝑛
𝑖=1 𝑗=1 𝑦𝑗 𝜑𝑖𝑗
√︀
(1 + 𝜂𝑖 /𝜂𝑗 (𝑀 𝑊𝑗 /𝑀 𝑊𝑖 )0.25 )2
𝜑𝑖𝑗 = √︀
8(1 + 𝑀 𝑊𝑖 /𝑀 𝑊𝑗 )

Parameters
ys [float] Mole fractions of gas components
mus [float] Gas viscosities of all components, [Pa*S]
MWs [float] Molecular weights of all components, [g/mol]
Returns
mug [float] Viscosity of gas mixture, Pa*S]

1.1.1.36.33 Notes

This equation is entirely dimensionless; all dimensions cancel. The original source has not been reviewed or
found.

1.1.1.36.34 References

[1]

432 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.36.35 Examples

>>> Wilke([0.05, 0.95], [1.34E-5, 9.5029E-6], [64.06, 46.07])


9.701614885866193e-06

thermo.viscosity.Brokaw(T, ys, mus, MWs, molecular_diameters, Stockmayers)


Calculates viscosity of a gas mixture according to mixing rules in [1].
𝑛
∑︁ 𝑦𝑖 𝜂 𝑖
𝜂𝑚𝑖𝑥 = ∑︀𝑛
𝑖=1 𝑗=1 𝑦𝑗 𝜑𝑖𝑗
(︂ )︂0.5
𝜂𝑖
𝜑𝑖𝑗 = 𝑆𝑖𝑗 𝐴𝑖𝑗
𝜂𝑗
⎡ ⎤
0.45
−0.5 ⎣
𝑀𝑖𝑗 − 𝑀𝑖𝑗
𝐴𝑖𝑗 = 𝑚𝑖𝑗 𝑀𝑖𝑗 1+ 0.45 )𝑚−0.5

(1+𝑀𝑖𝑗 𝑖𝑗
2(1 + 𝑀𝑖𝑗 ) + 1+𝑚𝑖𝑗
[︃ ]︃0.25
4
𝑚𝑖𝑗 = −1
(1 + 𝑀𝑖𝑗 )(1 + 𝑀𝑖𝑗 )
𝑀𝑖
𝑀𝑖𝑗 =
𝑀𝑗
1 + (𝑇𝑖* 𝑇𝑗* )0.5 + (𝛿𝑖 𝛿𝑗 /4)
𝑆𝑖𝑗 =
[1 + 𝑇𝑖* + (𝛿𝑖2 /4)]0.5 [1 + 𝑇𝑗* + (𝛿𝑗2 /4)]0.5
𝑇 * = 𝑘𝑇 /𝜖

Parameters
T [float] Temperature of fluid, [K]
ys [float] Mole fractions of gas components
mus [float] Gas viscosities of all components, [Pa*S]
MWs [float] Molecular weights of all components, [g/mol]
molecular_diameters [float] L-J molecular diameter of all components, [angstroms]
Stockmayers [float] L-J Stockmayer energy parameters of all components, []
Returns
mug [float] Viscosity of gas mixture, [Pa*S]

1.1.1.36.36 Notes

This equation is entirely dimensionless; all dimensions cancel. The original source has not been reviewed.
This is DIPPR Procedure 8D: Method for the Viscosity of Nonhydrocarbon Vapor Mixtures at Low Pressure
(Polar and Nonpolar)

1.1.1.36.37 References

[1], [2], [3]

1.1. thermo package 433


thermo Documentation, Release 0.1

1.1.1.36.38 Examples

>>> Brokaw(308.2, [0.05, 0.95], [1.34E-5, 9.5029E-6], [64.06, 46.07], [0.42, 0.


˓→19], [347, 432])

9.699085099801568e-06

thermo.viscosity.viscosity_index(nu_40, nu_100, rounding=False)


Calculates the viscosity index of a liquid. Requires dynamic viscosity of a liquid at 40°C and 100°C. Value may
either be returned with or without rounding. Rounding is performed per the standard.
if nu_100 < 70:

𝐿, 𝐻 = 𝑖𝑛𝑡𝑒𝑟𝑝(𝑛𝑢1 00)

else:
2
𝐿 = 0.8353𝜈100 + 14.67𝜈100 − 216
2
𝐻 = 0.1684𝜈100 + 11.85𝜈100 − 97
if nu_40 > H:
𝐿 − 𝑛𝑢40
𝑉𝐼 = · 100
𝐿−𝐻
else:
log(𝐻) − log(𝜈40 )
𝑁=
log(𝜈100 )
10𝑁 − 1
𝑉𝐼 = + 100
0.00715
Parameters
nu_40 [float] Dynamic viscosity of fluid at 40°C, [m^2/s]
nu_100 [float] Dynamic viscosity of fluid at 100°C, [m^2/s]
rounding [bool, optional] Whether to round the value or not.
Returns
VI: float Viscosity index [-]

1.1.1.36.39 Notes

VI is undefined for nu_100 under 2 mm^2/s. None is returned if this is the case. Internal units are mm^2/s.
Higher values of viscosity index suggest a lesser decrease in kinematic viscosity as temperature increases.
Note that viscosity is a pressure-dependent property, and that the viscosity index is defined for a fluid at whatever
pressure it is at. The viscosity index is thus also a function of pressure.

1.1.1.36.40 References

[1]

1.1.1.36.41 Examples

434 Chapter 1. thermo


thermo Documentation, Release 0.1

>>> viscosity_index(73.3E-6, 8.86E-6, rounding=True)


92

thermo.viscosity.viscosity_converter(val, old_scale, new_scale, extrapolate=False)


Converts kinematic viscosity values from different scales which have historically been used. Though they may
not be in use much, some standards still specify values in these scales.
Parameters
val [float] Viscosity value in the specified scale; [m^2/s] if ‘kinematic viscosity’; [degrees] if
Engler or Barbey; [s] for the other scales.
old_scale [str] String representing the scale that val is in originally.
new_scale [str] String representing the scale that val should be converted to.
extrapolate [bool] If True, a conversion will be performed even if outside the limits of either
scale; if False, and either value is outside a limit, an exception will be raised.
Returns
result [float] Viscosity value in the specified scale; [m^2/s] if ‘kinematic viscosity’; [degrees]
if Engler or Barbey; [s] for the other scales

1.1.1.36.42 Notes

The valid scales for this function are any of the following:
[‘a&w b’, ‘a&w crucible’, ‘american can’, ‘astm 0.07’, ‘astm 0.10’, ‘astm 0.15’, ‘astm 0.20’, ‘astm 0.25’,
‘barbey’, ‘caspers tin plate’, ‘continental can’, ‘crown cork and seal’, ‘demmier #1’, ‘demmier #10’, ‘engler’,
‘ford cup #3’, ‘ford cup #4’, ‘kinematic viscosity’, ‘mac michael’, ‘murphy varnish’, ‘parlin cup #10’, ‘parlin
cup #15’, ‘parlin cup #20’, ‘parlin cup #25’, ‘parlin cup #30’, ‘parlin cup #7’, ‘pratt lambert a’, ‘pratt lambert
b’, ‘pratt lambert c’, ‘pratt lambert d’, ‘pratt lambert e’, ‘pratt lambert f’, ‘pratt lambert g’, ‘pratt lambert h’,
‘pratt lambert i’, ‘redwood admiralty’, ‘redwood standard’, ‘saybolt furol’, ‘saybolt universal’, ‘scott’, ‘stormer
100g load’, ‘westinghouse’, ‘zahn cup #1’, ‘zahn cup #2’, ‘zahn cup #3’, ‘zahn cup #4’, ‘zahn cup #5’]
Some of those scales are converted linearly; the rest use tabulated data and splines.
Because the conversion is performed by spline functions, a re-conversion of a value will not yield exactly the
original value. However, it is quite close.
The method ‘Saybolt universal’ has a special formula implemented for its conversion, from [4]. It is designed
for maximum backwards compatibility with prior experimental data. It is solved by newton’s method when
kinematic viscosity is desired as an output.

[1.0 + 0.03264𝜈𝑡 ]
𝑆𝑈 𝑆𝑒𝑞 = 4.6324𝜈𝑡 +
[(3930.2 + 262.7𝜈𝑡 + 23.97𝜈𝑡2 + 1.646𝜈𝑡3 ) × 10−5 )]

1.1.1.36.43 References

[1], [2], [3], [4], [5]

1.1.1.36.44 Examples

1.1. thermo package 435


thermo Documentation, Release 0.1

>>> viscosity_converter(8.79, 'engler', 'parlin cup #7')


52.5
>>> viscosity_converter(700, 'Saybolt Universal Seconds', 'kinematic viscosity')
0.00015108914751515542

class thermo.viscosity.ViscosityLiquidMixture(CASs=[], ViscosityLiquids=[])


Bases: thermo.utils.MixtureProperty
Class for dealing with the viscosity of a liquid mixture as a function of temperature, pressure, and composi-
tion. Consists of one electrolyte-specific method, and logarithmic rules based on either mole fractions of mass
fractions.
Prefered method is mixing_logarithmic with mole fractions, or Laliberte if the mixture is aqueous and
has electrolytes.
Parameters
CASs [list[str], optional] The CAS numbers of all species in the mixture
ViscosityLiquids [list[ViscosityLiquid], optional] ViscosityLiquid objects created for all
species in the mixture, normally created by thermo.chemical.Chemical.
See also:
thermo.electrochem.Laliberte_viscosity

1.1.1.36.45 Notes

To iterate over all methods, use the list stored in viscosity_liquid_mixture_methods.


LALIBERTE_MU: Electrolyte model equation with coefficients; see thermo.electrochem.
Laliberte_viscosity for more details.
MIXING_LOG_MOLAR: Logarithmic mole fraction mixing rule described in thermo.utils.
mixing_logarithmic.
MIXING_LOG_MASS: Logarithmic mole fraction mixing rule described in thermo.utils.
mixing_logarithmic.

1.1.1.36.46 References

[1]
Attributes
method
prop_cached

1.1.1.36.47 Methods

__call__(T, P, zs, ws) Convenience method to calculate the property; calls


mixture_property.
Continued on next page

436 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.49 – continued from previous page


calculate(T, P, zs, ws, method) Method to calculate viscosity of a liquid mixture at tem-
perature T, pressure P, mole fractions zs and weight
fractions ws with a given method.
calculate_derivative_P(P, T, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition of a given order using a specified method.
calculate_derivative_T(T, P, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition of a given order using a specified method.
load_all_methods() Method to initialize the object by precomputing any val-
ues which may be used repeatedly and by retrieving
mixture-specific variables.
mixture_property(T, P, zs, ws) Method to calculate the property with sanity checking
and without specifying a specific method.
plot_isobar(P, zs, ws[, Tmin, Tmax, . . . ]) Method to create a plot of the property vs temperature at
a specific pressure and composition according to either
a specified list of methods, or user methods (if set), or
all methods.
plot_isotherm(T, zs, ws[, Pmin, Pmax, . . . ]) Method to create a plot of the property vs pressure at
a specified temperature and composition according to
either a specified list of methods, or the user methods (if
set), or all methods.
plot_property(zs, ws[, Tmin, Tmax, Pmin, . . . ]) Method to create a plot of the property vs temperature
and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
property_derivative_P(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition, of a given order.
property_derivative_T(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition, of a given order.
select_valid_methods(T, P, zs, ws) Method to obtain a sorted list of methods which are
valid at T, P, zs, ws, and possibly Vfls, according to
test_method_validity.
set_user_method(user_methods[, forced]) Method to set the T, P, and composition dependent prop-
erty methods desired for consideration by the user.
test_method_validity(T, P, zs, ws, method) Method to test the validity of a specified method for the
given conditions.
test_property_validity(prop) Method to test the validity of a calculated property.

Tmax = None
Maximum temperature at which no method can calculate the liquid viscosity above.
Tmin = None
Minimum temperature at which no method can calculate the liquid viscosity under.
all_methods = None
Set of all methods available for a given set of information; filled by load_all_methods.
calculate(T, P, zs, ws, method)
Method to calculate viscosity of a liquid mixture at temperature T, pressure P, mole fractions zs and weight
fractions ws with a given method.
This method has no exception handling; see mixture_property for that.

1.1. thermo package 437


thermo Documentation, Release 0.1

Parameters
T [float] Temperature at which to calculate the property, [K]
P [float] Pressure at which to calculate the property, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Name of the method to use
Returns
mu [float] Viscosity of the liquid mixture, [Pa*s]
load_all_methods()
Method to initialize the object by precomputing any values which may be used repeatedly and by retrieving
mixture-specific variables. All data are stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods which should work to calculate the property.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'liquid viscosity'
property_max = 200000000.0
Maximum valid value of liquid viscosity. Generous limit, as the value is that of bitumen in a Pitch drop
experiment.
property_min = 0
Mimimum valid value of liquid viscosity.
ranked_methods = ['Laliberte', 'Logarithmic mixing, molar', 'Logarithmic mixing, mass']
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by mix-
ture_property.
test_method_validity(T, P, zs, ws, method)
Method to test the validity of a specified method for the given conditions. If Laliberte is applicable, all
other methods are returned as inapplicable. Otherwise, there are no checks or strict ranges of validity.
Parameters
T [float] Temperature at which to check method validity, [K]
P [float] Pressure at which to check method validity, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Method name to use
Returns
validity [bool] Whether or not a specifid method is valid
units = 'Pa*s'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by mixture_property.

438 Chapter 1. thermo


thermo Documentation, Release 0.1

class thermo.viscosity.ViscosityGasMixture(MWs=[], molecular_diameters=[], Stockmay-


ers=[], CASs=[], ViscosityGases=[])
Bases: thermo.utils.MixtureProperty
Class for dealing with the viscosity of a gas mixture as a function of temperature, pressure, and composition.
Consists of three gas viscosity specific mixing rules and a mole-weighted simple mixing rule.
Prefered method is Brokaw.
Parameters
MWs [list[float], optional] Molecular weights of all species in the mixture, [g/mol]
molecular_diameters [list[float], optional] Lennard-Jones molecular diameters, [Angstrom]
Stockmayers [list[float], optional] Lennard-Jones depth of potential-energy minimum over k
or epsilon_k, [K]
CASs [list[str], optional] The CAS numbers of all species in the mixture
ViscosityGass [list[ViscosityGas], optional] ViscosityGas objects created for all species in the
mixture, normally created by thermo.chemical.Chemical.
See also:
Brokaw, Herning_Zipperer, Wilke

1.1.1.36.48 Notes

To iterate over all methods, use the list stored in viscosity_liquid_mixture_methods.


Brokaw: Mixing rule described in Brokaw.
Herning-Zipperer: Mixing rule described in Herning_Zipperer.
Wilke: Mixing rule described in Wilke.
SIMPLE: Mixing rule described in thermo.utils.mixing_simple.

1.1.1.36.49 References

[1]
Attributes
method
prop_cached

1.1.1.36.50 Methods

__call__(T, P, zs, ws) Convenience method to calculate the property; calls


mixture_property.
calculate(T, P, zs, ws, method) Method to calculate viscosity of a gas mixture at temper-
ature T, pressure P, mole fractions zs and weight frac-
tions ws with a given method.
Continued on next page

1.1. thermo package 439


thermo Documentation, Release 0.1

Table 1.50 – continued from previous page


calculate_derivative_P(P, T, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition of a given order using a specified method.
calculate_derivative_T(T, P, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition of a given order using a specified method.
load_all_methods() Method to initialize the object by precomputing any val-
ues which may be used repeatedly and by retrieving
mixture-specific variables.
mixture_property(T, P, zs, ws) Method to calculate the property with sanity checking
and without specifying a specific method.
plot_isobar(P, zs, ws[, Tmin, Tmax, . . . ]) Method to create a plot of the property vs temperature at
a specific pressure and composition according to either
a specified list of methods, or user methods (if set), or
all methods.
plot_isotherm(T, zs, ws[, Pmin, Pmax, . . . ]) Method to create a plot of the property vs pressure at
a specified temperature and composition according to
either a specified list of methods, or the user methods (if
set), or all methods.
plot_property(zs, ws[, Tmin, Tmax, Pmin, . . . ]) Method to create a plot of the property vs temperature
and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
property_derivative_P(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition, of a given order.
property_derivative_T(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition, of a given order.
select_valid_methods(T, P, zs, ws) Method to obtain a sorted list of methods which are
valid at T, P, zs, ws, and possibly Vfls, according to
test_method_validity.
set_user_method(user_methods[, forced]) Method to set the T, P, and composition dependent prop-
erty methods desired for consideration by the user.
test_method_validity(T, P, zs, ws, method) Method to test the validity of a specified method for the
given conditions.
test_property_validity(prop) Method to test the validity of a calculated property.

Tmax = None
Maximum temperature at which no method can calculate the gas viscosity above.
Tmin = None
Minimum temperature at which no method can calculate the gas viscosity under.
all_methods = None
Set of all methods available for a given set of information; filled by load_all_methods.
calculate(T, P, zs, ws, method)
Method to calculate viscosity of a gas mixture at temperature T, pressure P, mole fractions zs and weight
fractions ws with a given method.
This method has no exception handling; see mixture_property for that.
Parameters
T [float] Temperature at which to calculate the property, [K]

440 Chapter 1. thermo


thermo Documentation, Release 0.1

P [float] Pressure at which to calculate the property, [Pa]


zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Name of the method to use
Returns
mu [float] Viscosity of gas mixture, [Pa*s]
load_all_methods()
Method to initialize the object by precomputing any values which may be used repeatedly and by retrieving
mixture-specific variables. All data are stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods which should work to calculate the property.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'gas viscosity'
property_max = 0.001
Maximum valid value of gas viscosity. Might be too high, or too low.
property_min = 0
Mimimum valid value of gas viscosity; limiting condition at low pressure is 0.
ranked_methods = ['Brokaw', 'Herning-Zipperer', 'Simple', 'Wilke']
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by mix-
ture_property.
test_method_validity(T, P, zs, ws, method)
Method to test the validity of a specified method for the given conditions. No methods have implemented
checks or strict ranges of validity.
Parameters
T [float] Temperature at which to check method validity, [K]
P [float] Pressure at which to check method validity, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Method name to use
Returns
validity [bool] Whether or not a specifid method is valid
units = 'Pa*s'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by mixture_property.

1.1. thermo package 441


thermo Documentation, Release 0.1

1.1.1.37 thermo.volume module

thermo.volume.Yen_Woods_saturation(T, Tc, Vc, Zc)


Calculates saturation liquid volume, using the Yen and Woods [1] CSP method and a chemical’s critical prop-
erties.
The molar volume of a liquid is given by:

𝑉 𝑐/𝑉 𝑠 = 1 + 𝐴(1 − 𝑇𝑟 )1/3 + 𝐵(1 − 𝑇𝑟 )2/3 + 𝐷(1 − 𝑇𝑟 )4/3


𝐷 = 0.93 − 𝐵
𝐴 = 17.4425 − 214.578𝑍𝑐 + 989.625𝑍𝑐2 − 1522.06𝑍𝑐3
𝐵= −3.28257 + 13.6377𝑍𝑐 + 107.4844𝑍𝑐2 − 384.211𝑍𝑐3 if 𝑍𝑐 ≤ 0.26
𝐵 = 60.2091 − 402.063𝑍𝑐 + 501.0𝑍𝑐2 + 641.0𝑍𝑐3 if 𝑍𝑐 ≥ 0.26

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Vc [float] Critical volume of fluid [m^3/mol]
Zc [float] Critical compressibility of fluid, [-]
Returns
Vs [float] Saturation liquid volume, [m^3/mol]

1.1.1.37.1 Notes

Original equation was in terms of density, but it is converted here.


No example has been found, nor are there points in the article. However, it is believed correct. For compressed
liquids with the Yen-Woods method, see the YenWoods_compressed function.

1.1.1.37.2 References

[1]

1.1.1.37.3 Examples

>>> Yen_Woods_saturation(300, 647.14, 55.45E-6, 0.245)


1.7695330765295693e-05

thermo.volume.Rackett(T, Tc, Pc, Zc)


Calculates saturation liquid volume, using Rackett CSP method and critical properties.
The molar volume of a liquid is given by:
𝑅𝑇𝑐 [1+(1−𝑇 /𝑇𝑐 )2/7 ]
𝑉𝑠 = 𝑍𝑐
𝑃𝑐
Units are all currently in m^3/mol - this can be changed to kg/m^3
Parameters

442 Chapter 1. thermo


thermo Documentation, Release 0.1

T [float] Temperature of fluid [K]


Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
Zc [float] Critical compressibility of fluid, [-]
Returns
Vs [float] Saturation liquid volume, [m^3/mol]

1.1.1.37.4 Notes

Units are dependent on gas constant R, imported from scipy According to Reid et. al, underpredicts volume for
compounds with Zc < 0.22

1.1.1.37.5 References

[1]

1.1.1.37.6 Examples

Propane, example from the API Handbook

>>> Vm_to_rho(Rackett(272.03889, 369.83, 4248000.0, 0.2763), 44.09562)


531.3223212651092

thermo.volume.Yamada_Gunn(T, Tc, Pc, omega)


Calculates saturation liquid volume, using Yamada and Gunn CSP method and a chemical’s critical properties
and acentric factor.
The molar volume of a liquid is given by:
𝑅𝑇𝑐 [1+(1−𝑇 /𝑇𝑐 )2/7 ]
𝑉𝑠 = (0.29056 − 0.08775𝜔)
𝑃𝑐
Units are in m^3/mol.
Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
omega [float] Acentric factor for fluid, [-]
Returns
Vs [float] saturation liquid volume, [m^3/mol]

1.1.1.37.7 Notes

This equation is an improvement on the Rackett equation. This is often presented as the Rackett equation. The
acentric factor is used here, instead of the critical compressibility A variant using a reference fluid also exists

1.1. thermo package 443


thermo Documentation, Release 0.1

1.1.1.37.8 References

[1], [2]

1.1.1.37.9 Examples

>>> Yamada_Gunn(300, 647.14, 22048320.0, 0.245)


2.1882836429895796e-05

thermo.volume.Townsend_Hales(T, Tc, Vc, omega)


Calculates saturation liquid density, using the Townsend and Hales CSP method as modified from the original
Riedel equation. Uses chemical critical volume and temperature, as well as acentric factor
The density of a liquid is given by:
(︁ )︁
𝑉 𝑠 = 𝑉𝑐 / 1 + 0.85(1 − 𝑇𝑟 ) + (1.692 + 0.986𝜔)(1 − 𝑇𝑟 )1/3

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Vc [float] Critical volume of fluid [m^3/mol]
omega [float] Acentric factor for fluid, [-]
Returns
Vs [float] Saturation liquid volume, [m^3/mol]

1.1.1.37.10 Notes

The requirement for critical volume and acentric factor requires all data.

1.1.1.37.11 References

[1]

1.1.1.37.12 Examples

>>> Townsend_Hales(300, 647.14, 55.95E-6, 0.3449)


1.8007361992619923e-05

thermo.volume.Bhirud_normal(T, Tc, Pc, omega)


Calculates saturation liquid density using the Bhirud [1] CSP method. Uses Critical temperature and pressure
and acentric factor.
The density of a liquid is given by:
𝑃𝑐
ln = ln 𝑈 (0) + 𝜔 ln 𝑈 (1)
𝜌𝑅𝑇
ln 𝑈 (0) = 1.39644 − 24.076𝑇𝑟 + 102.615𝑇𝑟2 − 255.719𝑇𝑟3 + 355.805𝑇𝑟4 − 256.671𝑇𝑟5 + 75.1088𝑇𝑟6
ln 𝑈 (1) = 13.4412 − 135.7437𝑇𝑟 + 533.380𝑇𝑟2 − 1091.453𝑇𝑟3 + 1231.43𝑇𝑟4 − 728.227𝑇𝑟5 + 176.737𝑇𝑟6

444 Chapter 1. thermo


thermo Documentation, Release 0.1

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
omega [float] Acentric factor for fluid, [-]
Returns
Vm [float] Saturated liquid molar volume, [mol/m^3]

1.1.1.37.13 Notes

Claimed inadequate by others.


An interpolation table for ln U values are used from Tr = 0.98 - 1.000. Has terrible behavior at low reduced
temperatures.

1.1.1.37.14 References

[1]

1.1.1.37.15 Examples

Pentane
>>> Bhirud_normal(280.0, 469.7, 33.7E5, 0.252)
0.00011249654029488583

thermo.volume.COSTALD(T, Tc, Vc, omega)


Calculate saturation liquid density using the COSTALD CSP method.
A popular and accurate estimation method. If possible, fit parameters are used; alternatively critical properties
work well.
The density of a liquid is given by:

𝑉𝑠 = 𝑉 * 𝑉 (0) [1 − 𝜔𝑆𝑅𝐾 𝑉 (𝛿) ]


𝑉 (0) = 1 − 1.52816(1 − 𝑇𝑟 )1/3 + 1.43907(1 − 𝑇𝑟 )2/3 − 0.81446(1 − 𝑇𝑟 ) + 0.190454(1 − 𝑇𝑟 )4/3
−0.296123 + 0.386914𝑇𝑟 − 0.0427258𝑇𝑟2 − 0.0480645𝑇𝑟3
𝑉 (𝛿) =
𝑇𝑟 − 1.00001
Units are that of critical or fit constant volume.
Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Vc [float] Critical volume of fluid [m^3/mol]. This parameter is alternatively a fit parameter
omega [float] (ideally SRK) Acentric factor for fluid, [-] This parameter is alternatively a fit
parameter.
Returns

1.1. thermo package 445


thermo Documentation, Release 0.1

Vs [float] Saturation liquid volume

1.1.1.37.16 Notes

196 constants are fit to this function in [1]. Range: 0.25 < Tr < 0.95, often said to be to 1.0
This function has been checked with the API handbook example problem.

1.1.1.37.17 References

[1]

1.1.1.37.18 Examples

Propane, from an example in the API Handbook

>>> Vm_to_rho(COSTALD(272.03889, 369.83333, 0.20008161E-3, 0.1532), 44.097)


530.3009967969841

thermo.volume.Campbell_Thodos(T, Tb, Tc, Pc, M, dipole=None, hydroxyl=False)


Calculate saturation liquid density using the Campbell-Thodos [1] CSP method.
An old and uncommon estimation method.
𝑅𝑇𝑐 2/7
𝑉𝑠 = 𝑍𝑅𝐴 [1+(1−𝑇𝑟 ) ]
𝑃𝑐
𝑍𝑅𝐴 = 𝛼 + 𝛽(1 − 𝑇𝑟 )
𝛼 = 0.3883 − 0.0179𝑠
ln 𝑃𝑐
𝑠 = 𝑇𝑏𝑟
(1 − 𝑇𝑏𝑟 )
𝛽 = 0.00318𝑠 − 0.0211 + 0.625Λ1.35
1/3
𝑃𝑐
Λ= 5/6
𝑀 1/2 𝑇𝑐
For polar compounds:

𝜃 = 𝑃𝑐 𝜇2 /𝑇𝑐2
𝛼 = 0.3883 − 0.0179𝑠 − 130540𝜃2.41
𝛽 = 0.00318𝑠 − 0.0211 + 0.625Λ1.35 + 9.74 × 106 𝜃3.38

Polar Combounds with hydroxyl groups (water, alcohols)

5.79 × 10−10
[︂ ]︂
𝛼 = 0.690𝑇𝑏𝑟 − 0.3342 + 32.75 𝑃𝑐0.145
𝑇𝑏𝑟
𝛽 = 0.00318𝑠 − 0.0211 + 0.625Λ1.35 + 5.90Θ0.835

Parameters
T [float] Temperature of fluid [K]
Tb [float] Boiling temperature of the fluid [K]
Tc [float] Critical temperature of fluid [K]

446 Chapter 1. thermo


thermo Documentation, Release 0.1

Pc [float] Critical pressure of fluid [Pa]


M [float] Molecular weight of the fluid [g/mol]
dipole [float, optional] Dipole moment of the fluid [debye]
hydroxyl [bool, optional] Swith to use the hydroxyl variant for polar fluids
Returns
Vs [float] Saturation liquid volume

1.1.1.37.19 Notes

If a dipole is provided, the polar chemical method is used. The paper is an excellent read. Pc is internally
converted to atm.

1.1.1.37.20 References

[1]

1.1.1.37.21 Examples

Ammonia, from [1].


>>> Campbell_Thodos(T=405.45, Tb=239.82, Tc=405.45, Pc=111.7*101325, M=17.03,
˓→dipole=1.47)

7.347363635885525e-05

thermo.volume.SNM0(T, Tc, Vc, omega, delta_SRK=None)


Calculates saturated liquid density using the Mchaweh, Moshfeghian model [1]. Designed for simple calcula-
tions.
𝑉𝑠 = 𝑉𝑐 /(1 + 1.169𝜏 1/3 + 1.818𝜏 2/3 − 2.658𝜏 + 2.161𝜏 4/3
(𝑇 /𝑇𝑐 )
𝜏 =1−
𝛼
√︀ 𝑆𝑅𝐾2
𝛼𝑆𝑅𝐾 = [1 + 𝑚(1 − 𝑇 /𝑇𝐶 ]
𝑚 = 0.480 + 1.574𝜔 − 0.176𝜔 2
If the fit parameter delta_SRK is provided, the following is used:
[︁ ]︁
𝑉𝑠 = 𝑉𝐶 /(1 + 1.169𝜏 1/3 + 1.818𝜏 2/3 − 2.658𝜏 + 2.161𝜏 4/3 )/ 1 + 𝛿𝑆𝑅𝐾 (𝛼𝑆𝑅𝐾 − 1)1/3

Parameters
T [float] Temperature of fluid [K]
Tc [float] Critical temperature of fluid [K]
Vc [float] Critical volume of fluid [m^3/mol]
omega [float] Acentric factor for fluid, [-]
delta_SRK [float, optional] Fitting parameter [-]
Returns
Vs [float] Saturation liquid volume, [m^3/mol]

1.1. thermo package 447


thermo Documentation, Release 0.1

1.1.1.37.22 Notes

73 fit parameters have been gathered from the article.

1.1.1.37.23 References

[1]

1.1.1.37.24 Examples

Argon, without the fit parameter and with it. Tabulated result in Perry’s is 3.4613e-05. The fit increases the error
on this occasion.

>>> SNM0(121, 150.8, 7.49e-05, -0.004)


3.4402256402733416e-05
>>> SNM0(121, 150.8, 7.49e-05, -0.004, -0.03259620)
3.493288100008123e-05

thermo.volume.CRC_inorganic(T, rho0, k, Tm)


Calculates liquid density of a molten element or salt at temperature above the melting point. Some coefficients
are given nearly up to the boiling point.
The mass density of the inorganic liquid is given by:

𝜌 = 𝜌0 − 𝑘(𝑇 − 𝑇𝑚 )

Parameters
T [float] Temperature of the liquid, [K]
rho0 [float] Mass density of the liquid at Tm, [kg/m^3]
k [float] Linear temperature dependence of the mass density, [kg/m^3/K]
Tm [float] The normal melting point, used in the correlation [K]
Returns
rho [float] Mass density of molten metal or salt, [kg/m^3]

1.1.1.37.25 Notes

[1] has units of g/mL. While the individual densities could have been converted to molar units, the temperature
coefficient could only be converted by refitting to calculated data. To maintain compatibility with the form of
the equations, this was not performed.
This linear form is useful only in small temperature ranges. Coefficients for one compound could be used to
predict the temperature dependence of density of a similar compound.

1.1.1.37.26 References

[1]

448 Chapter 1. thermo


thermo Documentation, Release 0.1

1.1.1.37.27 Examples

>>> CRC_inorganic(300, 2370.0, 2.687, 239.08)


2206.30796

thermo.volume.volume_liquid_methods = ['PERRYDIPPR', 'VDI_PPDS', 'COOLPROP', 'MMSNM0FIT', '


Holds all low-pressure methods available for the VolumeLiquid class, for use in iterating over them.
thermo.volume.volume_liquid_methods_P = ['COOLPROP', 'COSTALD_COMPRESSED', 'EOS']
Holds all high-pressure methods available for the VolumeLiquid class, for use in iterating over them.
class thermo.volume.VolumeLiquid(MW=None, Tb=None, Tc=None, Pc=None, Vc=None,
Zc=None, omega=None, dipole=None, Psat=None,
CASRN=”, eos=None)
Bases: thermo.utils.TPDependentProperty
Class for dealing with liquid molar volume as a function of temperature and pressure.
For low-pressure (at 1 atm while under the vapor pressure; along the saturation line otherwise) liquids, there are
six coefficient-based methods from five data sources, one source of tabular information, one source of constant
values, eight corresponding-states estimators, and the external library CoolProp.
For high-pressure liquids (also, <1 atm liquids), there is one corresponding-states estimator, and the external
library CoolProp.
Parameters
CASRN [str, optional] The CAS number of the chemical
MW [float, optional] Molecular weight, [g/mol]
Tb [float, optional] Boiling point, [K]
Tc [float, optional] Critical temperature, [K]
Pc [float, optional] Critical pressure, [Pa]
Vc [float, optional] Critical volume, [m^3/mol]
Zc [float, optional] Critical compressibility
omega [float, optional] Acentric factor, [-]
dipole [float, optional] Dipole, [debye]
Psat [float or callable, optional] Vapor pressure at a given temperature, or callable for the same
[Pa]
eos [object, optional] Equation of State object after thermo.eos.GCEOS
See also:
Yen_Woods_saturation, Rackett, Yamada_Gunn, Townsend_Hales, Bhirud_normal,
COSTALD, Campbell_Thodos, SNM0, CRC_inorganic, COSTALD_compressed

1.1.1.37.28 Notes

A string holding each method’s name is assigned to the following variables in this module, intended
as the most convenient way to refer to a method. To iterate over all methods, use the lists stored in
surface_tension_methods and volume_liquid_methods_P for low and high pressure methods
respectively.
Low pressure methods:

1.1. thermo package 449


thermo Documentation, Release 0.1

PERRYDIPPR: A simple polynomial as expressed in [1], with data available for 344 fluids. Temperature
limits are available for all fluids. Believed very accurate.
VDI_PPDS: Coefficients for a equation form developed by the PPDS, published openly in [3]. Valid up to the
critical temperature, and extrapolates to very low temperatures well.
MMSNM0FIT: Uses a fit coefficient for better accuracy in the SNM0 method, Coefficients available for 73
fluids from [2]. Valid to the critical point.
HTCOSTALDFIT: A method with two fit coefficients to the COSTALD method. Coefficients available for
192 fluids, from [3]. Valid to the critical point.
RACKETTFIT: The Racket method, with a fit coefficient Z_RA. Data is available for 186 fluids, from [3].
Valid to the critical point.
CRC_INORG_L: Single-temperature coefficient linear model in terms of mass density for the density of in-
organic liquids; converted to molar units internally. Data is available for 177 fluids normally valid over a
narrow range above the melting point, from [4]; described in CRC_inorganic.
MMSNM0: CSP method, described in SNM0.
HTCOSTALD: CSP method, described in COSTALD.
YEN_WOODS_SAT: CSP method, described in Yen_Woods_saturation.
RACKETT: CSP method, described in Rackett.
YAMADA_GUNN: CSP method, described in Yamada_Gunn.
BHIRUD_NORMAL: CSP method, described in Bhirud_normal.
TOWNSEND_HALES: CSP method, described in Townsend_Hales.
CAMPBELL_THODOS: CSP method, described in Campbell_Thodos.
COOLPROP: CoolProp external library; with select fluids from its library. Range is limited to that of the
equations of state it uses, as described in [5]. Very slow.
CRC_INORG_L_CONST: Constant inorganic liquid densities, in [4].
VDI_TABULAR: Tabular data in [6] along the saturation curve; interpolation is as set by the user or the
default.
High pressure methods:
COSTALD_COMPRESSED: CSP method, described in COSTALD_compressed. Calculates a low-
pressure molar volume first, using T_dependent_property.
COOLPROP: CoolProp external library; with select fluids from its library. Range is limited to that of the
equations of state it uses, as described in [5]. Very slow, but unparalled in accuracy for pressure depen-
dence.
EOS: Equation of state provided by user.

1.1.1.37.29 References

[1], [2], [3], [4], [5], [6]


Attributes
TP_cached
T_cached
interpolation_P

450 Chapter 1. thermo


thermo Documentation, Release 0.1

interpolation_T
interpolation_property
interpolation_property_inv
method
method_P

1.1.1.37.30 Methods

TP_dependent_property(T, P) Method to calculate the property with sanity checking


and without specifying a specific method.
TP_dependent_property_derivative_P(T, Method to calculate a derivative of a temperature and
P[, order]) pressure dependent property with respect to pressure at
constant temperature, of a given order.
TP_dependent_property_derivative_T(T, Method to calculate a derivative of a temperature and
P[, order]) pressure dependent property with respect to temperature
at constant pressure, of a given order.
T_dependent_property(T) Method to calculate the property with sanity checking
and without specifying a specific method.
T_dependent_property_derivative(T[, or- Method to obtain a derivative of a property with respect
der]) to temperature, of a given order.
T_dependent_property_integral(T1, T2) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
T_dependent_property_integral_over_T(T1, Method to calculate the integral of a property over tem-
T2) perature with respect to temperature, using a specified
method.
__call__(T, P) Convenience method to calculate the property; calls
TP_dependent_property.
calculate(T, method) Method to calculate low-pressure liquid molar volume
at tempearture T with a given method.
calculate_P(T, P, method) Method to calculate pressure-dependent liquid molar
volume at temperature T and pressure P with a given
method.
calculate_derivative(T, method[, order]) Method to calculate a derivative of a property with re-
spect to temperature, of a given order using a specified
method.
calculate_derivative_P(P, T, method[, order]) Method to calculate a derivative of a temperature and
pressure dependent property with respect to pressure at
constant temperature, of a given order using a specified
method.
calculate_derivative_T(T, P, method[, order]) Method to calculate a derivative of a temperature and
pressure dependent property with respect to temperature
at constant pressure, of a given order using a specified
method.
calculate_integral(T1, T2, method) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
calculate_integral_over_T(T1, T2, method) Method to calculate the integral of a property over tem-
perature with respect to temperature, using a specified
method.
Continued on next page

1.1. thermo package 451


thermo Documentation, Release 0.1

Table 1.51 – continued from previous page


interpolate(T, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data.
interpolate_P(T, P, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data_P.
load_all_methods() Method which picks out coefficients for the specified
chemical from the various dictionaries and DataFrames
storing it.
plot_TP_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
plot_T_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) according to either a specified list of methods, or user
methods (if set), or all methods.
plot_isobar(P[, Tmin, Tmax, methods_P, pts, . . . ]) Method to create a plot of the property vs temperature
at a specific pressure according to either a specified list
of methods, or user methods (if set), or all methods.
plot_isotherm(T[, Pmin, Pmax, methods_P, . . . ]) Method to create a plot of the property vs pressure at a
specified temperature according to either a specified list
of methods, or the user methods (if set), or all methods.
select_valid_methods(T) Method to obtain a sorted list of methods which are
valid at T according to test_method_validity.
select_valid_methods_P(T, P) Method to obtain a sorted list methods which are valid
at T according to test_method_validity.
set_tabular_data(Ts, properties[, name, . . . ]) Method to set tabular data to be used for interpolation.
set_tabular_data_P(Ts, Ps, properties[, . . . ]) Method to set tabular data to be used for interpolation.
set_user_methods(user_methods[, forced]) Method used to select certain property methods as hav-
ing a higher priority than were set by default.
set_user_methods_P(user_methods_P[, Method to set the pressure-dependent property methods
forced_P]) desired for consideration by the user.
solve_prop(goal[, reset_method]) Method to solve for the temperature at which a property
is at a specified value.
test_method_validity(T, method) Method to check the validity of a method.
test_method_validity_P(T, P, method) Method to check the validity of a high-pressure method.
test_property_validity(prop) Method to test the validity of a calculated property.

TP_or_T_dependent_property
extrapolate_tabular

Tmax = None
Maximum temperature at which no method can calculate the liquid molar volume above.
Tmin = None
Minimum temperature at which no method can calculate the liquid molar volume under.
all_methods = None
Set of all low-pressure methods available for a given CASRN and properties; filled by
load_all_methods.
all_methods_P = None
Set of all high-pressure methods available for a given CASRN and properties; filled by
load_all_methods.
calculate(T, method)

452 Chapter 1. thermo


thermo Documentation, Release 0.1

Method to calculate low-pressure liquid molar volume at tempearture T with a given method.
This method has no exception handling; see T_dependent_property for that.
Parameters
T [float] Temperature at which to calculate molar volume, [K]
method [str] Name of the method to use
Returns
Vm [float] Molar volume of the liquid at T and a low pressure, [m^3/mol]
calculate_P(T, P, method)
Method to calculate pressure-dependent liquid molar volume at temperature T and pressure P with a given
method.
This method has no exception handling; see TP_dependent_property for that.
Parameters
T [float] Temperature at which to calculate molar volume, [K]
P [float] Pressure at which to calculate molar volume, [K]
method [str] Name of the method to use
Returns
Vm [float] Molar volume of the liquid at T and P, [m^3/mol]
interpolation_P = None
No interpolation transformation by default.
interpolation_T = None
No interpolation transformation by default.
interpolation_property = None
No interpolation transformation by default.
interpolation_property_inv = None
No interpolation transformation by default.
load_all_methods()
Method which picks out coefficients for the specified chemical from the various dictionaries and
DataFrames storing it. All data is stored as attributes. This method also sets Tmin, Tmax, all_methods
and obj:all_methods_P as a set of methods for which the data exists for.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'Liquid molar volume'
property_max = 0.002
Maximum valid value of liquid molar volume. Generous limit.
property_min = 0
Mimimum valid value of liquid molar volume. It should normally occur at the triple point, and be well
above this.
ranked_methods = ['PERRYDIPPR', 'VDI_PPDS', 'COOLPROP', 'MMSNM0FIT', 'VDI_TABULAR', 'HT
Default rankings of the low-pressure methods.

1.1. thermo package 453


thermo Documentation, Release 0.1

ranked_methods_P = ['COOLPROP', 'COSTALD_COMPRESSED', 'EOS']


Default rankings of the high-pressure methods.
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by
T_dependent_property.
sorted_valid_methods_P = None
sorted_valid_methods_P, list: Stored methods which were found valid at a specific temperature; set by
TP_dependent_property.
tabular_data = None
tabular_data, dict: Stored (Ts, properties) for any tabular data; indexed by provided or autogenerated name.
tabular_data_P = None
tabular_data_P, dict: Stored (Ts, Ps, properties) for any tabular data; indexed by provided or autogenerated
name.
tabular_data_interpolators = None
tabular_data_interpolators, dict: Stored (extrapolator, spline) tuples which are interp1d instances for
each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_property, interpola-
tion_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had
been created is no longer used.
tabular_data_interpolators_P = None
tabular_data_interpolators_P, dict: Stored (extrapolator, spline) tuples which are interp2d instances
for each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_P, interpola-
tion_property, interpolation_property_inv) to ensure that if an interpolation transform is altered, the old
interpolator which had been created is no longer used.
tabular_extrapolation_permitted = True
Allow tabular extrapolation by default.
test_method_validity(T, method)
Method to check the validity of a method. Follows the given ranges for all coefficient-based methods. For
CSP methods, the models are considered valid from 0 K to the critical point. For tabular data, extrapolation
outside of the range is used if tabular_extrapolation_permitted is set; if it is, the extrapolation
is considered valid for all temperatures.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.
BHIRUD_NORMAL behaves poorly at low temperatures and is not used under 0.35Tc. The constant
value available for inorganic chemicals, from method CRC_INORG_L_CONST, is considered valid for
all temperatures.
Parameters
T [float] Temperature at which to test the method, [K]
method [str] Name of the method to test
Returns
validity [bool] Whether or not a method is valid
test_method_validity_P(T, P, method)
Method to check the validity of a high-pressure method. For COOLPROP, the fluid must be both a
liquid and under the maximum pressure of the fluid’s EOS. COSTALD_COMPRESSED is considered
valid for all values of temperature and pressure. However, it very often will not actually work, due to the
form of the polynomial in terms of Tr, the result of which is raised to a negative power. For tabular data,

454 Chapter 1. thermo


thermo Documentation, Release 0.1

extrapolation outside of the range is used if tabular_extrapolation_permitted is set; if it is,


the extrapolation is considered valid for all temperatures and pressures.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.
Parameters
T [float] Temperature at which to test the method, [K]
P [float] Pressure at which to test the method, [Pa]
method [str] Name of the method to test
Returns
validity [bool] Whether or not a method is valid
units = 'mol/m^3'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by T_dependent_property.
user_methods_P = None
user_methods_P, list: Stored methods which were specified by the user in a ranked order of preference; set
by TP_dependent_property.
thermo.volume.COSTALD_compressed(T, P, Psat, Tc, Pc, omega, Vs)
Calculates compressed-liquid volume, using the COSTALD [1] CSP method and a chemical’s critical properties.
The molar volume of a liquid is given by:
(︂ )︂
𝐵+𝑃
𝑉 = 𝑉𝑠 1 − 𝐶 ln
𝐵 + 𝑃 𝑠𝑎𝑡
𝐵
= −1 + 𝑎𝜏 1/3 + 𝑏𝜏 2/3 + 𝑑𝜏 + 𝑒𝜏 4/3
𝑃𝑐
2
𝑒 = exp(𝑓 + 𝑔𝜔𝑆𝑅𝐾 + ℎ𝜔𝑆𝑅𝐾 )
𝐶 = 𝑗 + 𝑘𝜔𝑆𝑅𝐾

Parameters
T [float] Temperature of fluid [K]
P [float] Pressure of fluid [Pa]
Psat [float] Saturation pressure of the fluid [Pa]
Tc [float] Critical temperature of fluid [K]
Pc [float] Critical pressure of fluid [Pa]
omega [float] (ideally SRK) Acentric factor for fluid, [-] This parameter is alternatively a fit
parameter.
Vs [float] Saturation liquid volume, [m^3/mol]
Returns
V_dense [float] High-pressure liquid volume, [m^3/mol]

1.1. thermo package 455


thermo Documentation, Release 0.1

1.1.1.37.31 Notes

Original equation was in terms of density, but it is converted here.


The example is from DIPPR, and exactly correct. This is DIPPR Procedure 4C: Method for Estimating the
Density of Pure Organic Liquids under Pressure.

1.1.1.37.32 References

[1]

1.1.1.37.33 Examples

>>> COSTALD_compressed(303., 9.8E7, 85857.9, 466.7, 3640000.0, 0.281, 0.000105047)


9.287482879788506e-05

thermo.volume.Amgat(xs, Vms)
Calculate mixture liquid density using the Amgat mixing rule. Highly inacurate, but easy to use. Assumes idea
liquids with no excess volume. Average molecular weight should be used with it to obtain density.
∑︁
𝑉𝑚𝑖𝑥 = 𝑥𝑖 𝑉𝑖
𝑖

or in terms of density:
∑︁ 𝑥𝑖
𝜌𝑚𝑖𝑥 =
𝜌𝑖
Parameters
xs [array] Mole fractions of each component, []
Vms [array] Molar volumes of each fluids at conditions [m^3/mol]
Returns
Vm [float] Mixture liquid volume [m^3/mol]

1.1.1.37.34 Notes

Units are that of the given volumes. It has been suggested to use this equation with weight fractions, but the
results have been less accurate.

1.1.1.37.35 Examples

>>> Amgat([0.5, 0.5], [4.057e-05, 5.861e-05])


4.9590000000000005e-05

thermo.volume.Rackett_mixture(T, xs, MWs, Tcs, Pcs, Zrs)


Calculate mixture liquid density using the Rackett-derived mixing rule as shown in [2].
∑︁ 𝑥𝑖 𝑇𝑐𝑖 (1+(1−𝑇𝑟 )2/7 )
∑︁
𝑉𝑚 = 𝑍𝑅,𝑚 𝑅 𝑥𝑖 𝑀 𝑊 𝑖
𝑖
𝑀 𝑊𝑖 𝑃𝑐𝑖 𝑖

456 Chapter 1. thermo


thermo Documentation, Release 0.1

Parameters
T [float] Temperature of liquid [K]
xs: list Mole fractions of each component, []
MWs [list] Molecular weights of each component [g/mol]
Tcs [list] Critical temperatures of each component [K]
Pcs [list] Critical pressures of each component [Pa]
Zrs [list] Rackett parameters of each component []
Returns
Vm [float] Mixture liquid volume [m^3/mol]

1.1.1.37.36 Notes

Model for pure compounds in [1] forms the basis for this model, shown in [2]. Molecular weights are used
as weighing by such has been found to provide higher accuracy in [2]. The model can also be used without
molecular weights, but results are somewhat different.
As with the Rackett model, critical compressibilities may be used if Rackett parameters have not been regressed.
Critical mixture temperature, and compressibility are all obtained with simple mixing rules.

1.1.1.37.37 References

[1], [2]

1.1.1.37.38 Examples

Calculation in [2] for methanol and water mixture. Result matches example.
>>> Rackett_mixture(T=298., xs=[0.4576, 0.5424], MWs=[32.04, 18.01], Tcs=[512.58,
˓→647.29], Pcs=[8.096E6, 2.209E7], Zrs=[0.2332, 0.2374])

2.625288603174508e-05

thermo.volume.COSTALD_mixture(xs, T, Tcs, Vcs, omegas)


Calculate mixture liquid density using the COSTALD CSP method.
A popular and accurate estimation method. If possible, fit parameters are used; alternatively critical properties
work well.
The mixing rules giving parameters for the pure component COSTALD equation are:
∑︀ ∑︀
𝑖 𝑗 𝑥𝑖 𝑥𝑗 (𝑉𝑖𝑗 𝑇𝑐𝑖𝑗 )
𝑇𝑐𝑚 =
𝑉𝑚
[︃ ]︃
2/3 1/3
∑︁ ∑︁ ∑︁
𝑉𝑚 = 0.25 𝑥𝑖 𝑉𝑖 + 3( 𝑥𝑖 𝑉𝑖 )( 𝑥𝑖 𝑉𝑖 )
𝑖
𝑉𝑖𝑗 𝑇𝑐𝑖𝑗 = (𝑉𝑖 𝑇𝑐𝑖 𝑉𝑗 𝑇𝑐𝑗 )0.5
∑︁
𝜔= 𝑧𝑖 𝜔𝑖
𝑖

Parameters

1.1. thermo package 457


thermo Documentation, Release 0.1

xs: list Mole fractions of each component


T [float] Temperature of fluid [K]
Tcs [list] Critical temperature of fluids [K]
Vcs [list] Critical volumes of fluids [m^3/mol]. This parameter is alternatively a fit parameter
omegas [list] (ideally SRK) Acentric factor of all fluids, [-] This parameter is alternatively a fit
parameter.
Returns
Vs [float] Saturation liquid mixture volume

1.1.1.37.39 Notes

Range: 0.25 < Tr < 0.95, often said to be to 1.0 No example has been found. Units are that of critical or fit
constant volume.

1.1.1.37.40 References

[1]

1.1.1.37.41 Examples

>>> COSTALD_mixture([0.4576, 0.5424], 298., [512.58, 647.29],[0.000117, 5.6e-05],


˓→ [0.559,0.344] )

2.706588773271354e-05

thermo.volume.ideal_gas(T, P)
Calculates ideal gas molar volume. The molar volume of an ideal gas is given by:
𝑅𝑇
𝑉 =
𝑃
Parameters
T [float] Temperature of fluid [K]
P [float] Pressure of fluid [Pa]
Returns
V [float] Gas volume, [m^3/mol]

1.1.1.37.42 Examples

>>> ideal_gas(298.15, 101325.)


0.02446539540458919

thermo.volume.volume_gas_methods = ['COOLPROP', 'EOS', 'CRC_VIRIAL', 'TSONOPOULOS_EXTENDED'


Holds all methods available for the VolumeGas class, for use in iterating over them.

458 Chapter 1. thermo


thermo Documentation, Release 0.1

class thermo.volume.VolumeGas(CASRN=”, MW=None, Tc=None, Pc=None, omega=None,


dipole=None, eos=None)
Bases: thermo.utils.TPDependentProperty
Class for dealing with gas molar volume as a function of temperature and pressure.
All considered methods are both temperature and pressure dependent. Included are four CSP methods for
calculating second virial coefficients, one source of polynomials for calculating second virial coefficients, one
equation of state (Peng-Robinson), and the ideal gas law.
Parameters
CASRN [str, optional] The CAS number of the chemical
MW [float, optional] Molecular weight, [g/mol]
Tc [float, optional] Critical temperature, [K]
Pc [float, optional] Critical pressure, [Pa]
omega [float, optional] Acentric factor, [-]
dipole [float, optional] Dipole, [debye]
See also:
thermo.virial.BVirial_Pitzer_Curl, thermo.virial.BVirial_Abbott, thermo.
virial.BVirial_Tsonopoulos, thermo.virial.BVirial_Tsonopoulos_extended

1.1.1.37.43 Notes

A string holding each method’s name is assigned to the following variables in this module, intended as the most
convenient way to refer to a method. To iterate over all methods, use the list stored in volume_gas_methods.
PR: Peng-Robinson Equation of State. See the appropriate module for more information.
CRC_VIRIAL: Short polynomials, for 105 fluids from [1]. The full expression is:
4
∑︁ 𝑖−1
𝐵= 𝑎𝑖 [𝑇0 /298.15 − 1]
1

TSONOPOULOS_EXTENDED: CSP method for second virial coefficients, described in thermo.


virial.BVirial_Tsonopoulos_extended
TSONOPOULOS: CSP method for second virial coefficients, described in thermo.virial.
BVirial_Tsonopoulos
ABBOTT: CSP method for second virial coefficients, described in thermo.virial.BVirial_Abbott.
This method is the simplest CSP method implemented.
PITZER_CURL: CSP method for second virial coefficients, described in thermo.virial.
BVirial_Pitzer_Curl.
COOLPROP: CoolProp external library; with select fluids from its library. Range is limited to that of the
equations of state it uses, as described in [2]. Very slow, but unparalled in accuracy for pressure depen-
dence.

1.1. thermo package 459


thermo Documentation, Release 0.1

1.1.1.37.44 References

[1], [2]
Attributes
TP_cached
T_cached
interpolation_P
interpolation_T
interpolation_property
interpolation_property_inv
method
method_P

1.1.1.37.45 Methods

TP_dependent_property(T, P) Method to calculate the property with sanity checking


and without specifying a specific method.
TP_dependent_property_derivative_P(T, Method to calculate a derivative of a temperature and
P[, order]) pressure dependent property with respect to pressure at
constant temperature, of a given order.
TP_dependent_property_derivative_T(T, Method to calculate a derivative of a temperature and
P[, order]) pressure dependent property with respect to temperature
at constant pressure, of a given order.
T_dependent_property(T) Method to calculate the property with sanity checking
and without specifying a specific method.
T_dependent_property_derivative(T[, or- Method to obtain a derivative of a property with respect
der]) to temperature, of a given order.
T_dependent_property_integral(T1, T2) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
T_dependent_property_integral_over_T(T1, Method to calculate the integral of a property over tem-
T2) perature with respect to temperature, using a specified
method.
__call__(T, P) Convenience method to calculate the property; calls
TP_dependent_property.
calculate(T, method) Method to calculate a property with a specified method,
with no validity checking or error handling.
calculate_P(T, P, method) Method to calculate pressure-dependent gas molar vol-
ume at temperature T and pressure P with a given
method.
calculate_derivative(T, method[, order]) Method to calculate a derivative of a property with re-
spect to temperature, of a given order using a specified
method.
calculate_derivative_P(P, T, method[, order]) Method to calculate a derivative of a temperature and
pressure dependent property with respect to pressure at
constant temperature, of a given order using a specified
method.
Continued on next page

460 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.52 – continued from previous page


calculate_derivative_T(T, P, method[, order]) Method to calculate a derivative of a temperature and
pressure dependent property with respect to temperature
at constant pressure, of a given order using a specified
method.
calculate_integral(T1, T2, method) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
calculate_integral_over_T(T1, T2, method) Method to calculate the integral of a property over tem-
perature with respect to temperature, using a specified
method.
interpolate(T, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data.
interpolate_P(T, P, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data_P.
load_all_methods() Method which picks out coefficients for the specified
chemical from the various dictionaries and DataFrames
storing it.
plot_TP_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
plot_T_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) according to either a specified list of methods, or user
methods (if set), or all methods.
plot_isobar(P[, Tmin, Tmax, methods_P, pts, . . . ]) Method to create a plot of the property vs temperature
at a specific pressure according to either a specified list
of methods, or user methods (if set), or all methods.
plot_isotherm(T[, Pmin, Pmax, methods_P, . . . ]) Method to create a plot of the property vs pressure at a
specified temperature according to either a specified list
of methods, or the user methods (if set), or all methods.
select_valid_methods(T) Method to obtain a sorted list of methods which are
valid at T according to test_method_validity.
select_valid_methods_P(T, P) Method to obtain a sorted list methods which are valid
at T according to test_method_validity.
set_tabular_data(Ts, properties[, name, . . . ]) Method to set tabular data to be used for interpolation.
set_tabular_data_P(Ts, Ps, properties[, . . . ]) Method to set tabular data to be used for interpolation.
set_user_methods(user_methods[, forced]) Method used to select certain property methods as hav-
ing a higher priority than were set by default.
set_user_methods_P(user_methods_P[, Method to set the pressure-dependent property methods
forced_P]) desired for consideration by the user.
solve_prop(goal[, reset_method]) Method to solve for the temperature at which a property
is at a specified value.
test_method_validity(T, method) Method to test the validity of a specified method for a
given temperature.
test_method_validity_P(T, P, method) Method to check the validity of a pressure and tempera-
ture dependent gas molar volume method.
test_property_validity(prop) Method to test the validity of a calculated property.

TP_or_T_dependent_property
extrapolate_tabular

Pmax = 1000000000.0
Maximum pressure at which no method can calculate gas molar volume above.

1.1. thermo package 461


thermo Documentation, Release 0.1

Pmin = 0
Minimum pressure at which no method can calculate gas molar volume under.
Tmax = None
Maximum temperature at which no method can calculate the gas molar volume above.
Tmin = None
Minimum temperature at which no method can calculate the gas molar volume under.
all_methods_P = None
Set of all high-pressure methods available for a given CASRN and properties; filled by
load_all_methods.
calculate_P(T, P, method)
Method to calculate pressure-dependent gas molar volume at temperature T and pressure P with a given
method.
This method has no exception handling; see TP_dependent_property for that.
Parameters
T [float] Temperature at which to calculate molar volume, [K]
P [float] Pressure at which to calculate molar volume, [K]
method [str] Name of the method to use
Returns
Vm [float] Molar volume of the gas at T and P, [m^3/mol]
interpolation_P = None
No interpolation transformation by default.
interpolation_T = None
No interpolation transformation by default.
interpolation_property = None
No interpolation transformation by default.
interpolation_property_inv = None
No interpolation transformation by default.
load_all_methods()
Method which picks out coefficients for the specified chemical from the various dictionaries and
DataFrames storing it. All data is stored as attributes. This method also sets obj:all_methods_P as a
set of methods for which the data exists for.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'Gas molar volume'
property_max = 10000000000.0
Maximum valid value of gas molar volume. Set roughly at an ideal gas at 1 Pa and 2 billion K.
property_min = 0
Mimimum valid value of gas molar volume. It should normally be well above this.
ranked_methods = []
Default rankings of the low-pressure methods.
ranked_methods_P = ['COOLPROP', 'EOS', 'TSONOPOULOS_EXTENDED', 'TSONOPOULOS', 'ABBOTT',
Default rankings of the pressure-dependent methods.

462 Chapter 1. thermo


thermo Documentation, Release 0.1

sorted_valid_methods_P = None
sorted_valid_methods_P, list: Stored methods which were found valid at a specific temperature; set by
TP_dependent_property.
tabular_data = None
tabular_data, dict: Stored (Ts, properties) for any tabular data; indexed by provided or autogenerated name.
tabular_data_P = None
tabular_data_P, dict: Stored (Ts, Ps, properties) for any tabular data; indexed by provided or autogenerated
name.
tabular_data_interpolators = None
tabular_data_interpolators, dict: Stored (extrapolator, spline) tuples which are interp1d instances for
each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_property, interpola-
tion_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had
been created is no longer used.
tabular_data_interpolators_P = None
tabular_data_interpolators_P, dict: Stored (extrapolator, spline) tuples which are interp2d instances
for each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_P, interpola-
tion_property, interpolation_property_inv) to ensure that if an interpolation transform is altered, the old
interpolator which had been created is no longer used.
tabular_extrapolation_permitted = True
Allow tabular extrapolation by default.
test_method_validity_P(T, P, method)
Method to check the validity of a pressure and temperature dependent gas molar volume method. For the
four CSP methods that calculate second virial coefficient, the method is considered valid for all tempera-
tures and pressures, with validity checking based on the result only. For CRC_VIRIAL, there is no limit
but there should be one; at some conditions, a negative volume will result! For COOLPROP, the fluid
must be both a gas at the given conditions and under the maximum pressure of the fluid’s EOS.
For the equation of state PR, the determined phase must be a gas. For IDEAL, there are no limits.
For tabular data, extrapolation outside of the range is used if
tabular_extrapolation_permitted is set; if it is, the extrapolation is considered valid
for all temperatures and pressures.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.
Parameters
T [float] Temperature at which to test the method, [K]
P [float] Pressure at which to test the method, [Pa]
method [str] Name of the method to test
Returns
validity [bool] Whether or not a method is valid
units = 'mol/m^3'
user_methods_P = None
user_methods_P, list: Stored methods which were specified by the user in a ranked order of preference; set
by TP_dependent_property.
thermo.volume.Goodman(T, Tt, rhol)
Calculates solid density at T using the simple relationship by a member of the DIPPR.

1.1. thermo package 463


thermo Documentation, Release 0.1

The molar volume of a solid is given by:


(︂ )︂
1 𝑇 1
= 1.28 − 0.16
𝑉𝑚 𝑇𝑡 𝑉 𝑚𝐿 (𝑇𝑡 )
Parameters
T [float] Temperature of fluid [K]
Tt [float] Triple temperature of fluid [K]
rhol [float] Liquid density, [m^3/mol]
Returns
rhos [float] Solid volume, [m^3/mol]

1.1.1.37.46 Notes

Works to the next solid transition temperature or to approximately 0.3Tt.

1.1.1.37.47 References

[1]

1.1.1.37.48 Examples

>>> Goodman(281.46, 353.43, 7.6326)


8.797191839062899

thermo.volume.volume_solid_methods = ['GOODMAN', 'CRC_INORG_S']


Holds all methods available for the VolumeSolid class, for use in iterating over them.
class thermo.volume.VolumeSolid(CASRN=”, MW=None, Tt=None, Vml_Tt=None)
Bases: thermo.utils.TDependentProperty
Class for dealing with solid molar volume as a function of temperature. Consists of one constant value source,
and one simple estimator based on liquid molar volume.
Parameters
CASRN [str, optional] CAS number
MW [float, optional] Molecular weight, [g/mol]
Tt [float, optional] Triple temperature
Vml_Tt [float, optional] Liquid molar volume at the triple point
See also:
Goodman

1.1.1.37.49 Notes

A string holding each method’s name is assigned to the following variables in this module, intended
as the most convenient way to refer to a method. To iterate over all methods, use the list stored in
volume_solid_methods.

464 Chapter 1. thermo


thermo Documentation, Release 0.1

CRC_INORG_S: Constant values in [1], for 1872 chemicals.


GOODMAN: Simple method using the liquid molar volume. Good up to 0.3*Tt. See Goodman for details.

1.1.1.37.50 References

[1]
Attributes
T_cached
interpolation_T
interpolation_property
interpolation_property_inv
method

1.1.1.37.51 Methods

T_dependent_property(T) Method to calculate the property with sanity checking


and without specifying a specific method.
T_dependent_property_derivative(T[, or- Method to obtain a derivative of a property with respect
der]) to temperature, of a given order.
T_dependent_property_integral(T1, T2) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
T_dependent_property_integral_over_T(T1, Method to calculate the integral of a property over tem-
T2) perature with respect to temperature, using a specified
method.
__call__(T) Convenience method to calculate the property; calls
T_dependent_property.
calculate(T, method) Method to calculate the molar volume of a solid at tem-
pearture T with a given method.
calculate_derivative(T, method[, order]) Method to calculate a derivative of a property with re-
spect to temperature, of a given order using a specified
method.
calculate_integral(T1, T2, method) Method to calculate the integral of a property with re-
spect to temperature, using a specified method.
calculate_integral_over_T(T1, T2, method) Method to calculate the integral of a property over tem-
perature with respect to temperature, using a specified
method.
interpolate(T, name) Method to perform interpolation on a given tabular data
set previously added via set_tabular_data.
load_all_methods() Method which picks out coefficients for the specified
chemical from the various dictionaries and DataFrames
storing it.
plot_T_dependent_property([Tmin, Tmax, Method to create a plot of the property vs temperature
. . . ]) according to either a specified list of methods, or user
methods (if set), or all methods.
select_valid_methods(T) Method to obtain a sorted list of methods which are
valid at T according to test_method_validity.
Continued on next page

1.1. thermo package 465


thermo Documentation, Release 0.1

Table 1.53 – continued from previous page


set_tabular_data(Ts, properties[, name, . . . ]) Method to set tabular data to be used for interpolation.
set_user_methods(user_methods[, forced]) Method used to select certain property methods as hav-
ing a higher priority than were set by default.
solve_prop(goal[, reset_method]) Method to solve for the temperature at which a property
is at a specified value.
test_method_validity(T, method) Method to check the validity of a method.
test_property_validity(prop) Method to test the validity of a calculated property.

extrapolate_tabular

Tmax = None
Maximum temperature at which no method can calculate the solid molar volume above; assumed 10 000
K even under ultra-high pressure.
Tmin = None
Minimum temperature at which no method can calculate the solid molar volume under.
all_methods = None
Set of all methods available for a given CASRN and properties; filled by load_all_methods.
calculate(T, method)
Method to calculate the molar volume of a solid at tempearture T with a given method.
This method has no exception handling; see T_dependent_property for that.
Parameters
T [float] Temperature at which to calculate molar volume, [K]
method [str] Name of the method to use
Returns
Vms [float] Molar volume of the solid at T, [m^3/mol]
interpolation_T = None
No interpolation transformation by default.
interpolation_property = None
No interpolation transformation by default.
interpolation_property_inv = None
No interpolation transformation by default.
load_all_methods()
Method which picks out coefficients for the specified chemical from the various dictionaries and
DataFrames storing it. All data is stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods for which the data exists for.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'Solid molar volume'
property_max = 0.002
Maximum value of Heat capacity; arbitrarily set to 0.002, as the largest in the data is 0.00136.
property_min = 0
Molar volume cannot be under 0.

466 Chapter 1. thermo


thermo Documentation, Release 0.1

ranked_methods = ['CRC_INORG_S']
Default rankings of the available methods.
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by
T_dependent_property.
tabular_data = None
tabular_data, dict: Stored (Ts, properties) for any tabular data; indexed by provided or autogenerated name.
tabular_data_interpolators = None
tabular_data_interpolators, dict: Stored (extrapolator, spline) tuples which are interp1d instances for
each set of tabular data; indexed by tuple of (name, interpolation_T, interpolation_property, interpola-
tion_property_inv) to ensure that if an interpolation transform is altered, the old interpolator which had
been created is no longer used.
tabular_extrapolation_permitted = True
Allow tabular extrapolation by default.
test_method_validity(T, method)
Method to check the validity of a method. Follows the given ranges for all coefficient-based methods. For
tabular data, extrapolation outside of the range is used if tabular_extrapolation_permitted is
set; if it is, the extrapolation is considered valid for all temperatures.
It is not guaranteed that a method will work or give an accurate prediction simply because this method
considers the method valid.
Parameters
T [float] Temperature at which to test the method, [K]
method [str] Name of the method to test
Returns
validity [bool] Whether or not a method is valid
units = 'mol/m^3'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by T_dependent_property.
class thermo.volume.VolumeLiquidMixture(MWs=[], Tcs=[], Pcs=[], Vcs=[], Zcs=[],
omegas=[], CASs=[], VolumeLiquids=[])
Bases: thermo.utils.MixtureProperty
Class for dealing with the molar volume of a liquid mixture as a function of temperature, pressure, and com-
position. Consists of one electrolyte-specific method, four corresponding states methods which do not use
pure-component volumes, and one mole-weighted averaging method.
Prefered method is SIMPLE, or Laliberte if the mixture is aqueous and has electrolytes.
Parameters
MWs [list[float], optional] Molecular weights of all species in the mixture, [g/mol]
Tcs [list[float], optional] Critical temperatures of all species in the mixture, [K]
Pcs [list[float], optional] Critical pressures of all species in the mixture, [Pa]
Vcs [list[float], optional] Critical molar volumes of all species in the mixture, [m^3/mol]
Zcs [list[float], optional] Critical compressibility factors of all species in the mixture, [Pa]
omegas [list[float], optional] Accentric factors of all species in the mixture, [-]

1.1. thermo package 467


thermo Documentation, Release 0.1

CASs [list[str], optional] The CAS numbers of all species in the mixture
VolumeLiquids [list[VolumeLiquid], optional] VolumeLiquid objects created for all species in
the mixture, normally created by thermo.chemical.Chemical.

1.1.1.37.52 Notes

To iterate over all methods, use the list stored in volume_liquid_mixture_methods.


Laliberte: Aqueous electrolyte model equation with coefficients; see thermo.electrochem.
Laliberte_density for more details.
COSTALD mixture: CSP method described in COSTALD_mixture.
COSTALD mixture parameters: CSP method described in COSTALD_mixture, with two mixture compo-
sition independent fit coefficients, Vc and omega.
RACKETT: CSP method described in Rackett_mixture.
RACKETT Parameters: CSP method described in Rackett_mixture, but with a mixture independent fit
coefficient for compressibility factor for each species.
SIMPLE: Linear mole fraction mixing rule described in thermo.utils.mixing_simple; also known
as Amgat’s law.

1.1.1.37.53 References

[1]
Attributes
method
prop_cached

1.1.1.37.54 Methods

__call__(T, P, zs, ws) Convenience method to calculate the property; calls


mixture_property.
calculate(T, P, zs, ws, method) Method to calculate molar volume of a liquid mixture at
temperature T, pressure P, mole fractions zs and weight
fractions ws with a given method.
calculate_derivative_P(P, T, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition of a given order using a specified method.
calculate_derivative_T(T, P, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition of a given order using a specified method.
load_all_methods() Method to initialize the object by precomputing any val-
ues which may be used repeatedly and by retrieving
mixture-specific variables.
mixture_property(T, P, zs, ws) Method to calculate the property with sanity checking
and without specifying a specific method.
Continued on next page

468 Chapter 1. thermo


thermo Documentation, Release 0.1

Table 1.54 – continued from previous page


plot_isobar(P, zs, ws[, Tmin, Tmax, . . . ]) Method to create a plot of the property vs temperature at
a specific pressure and composition according to either
a specified list of methods, or user methods (if set), or
all methods.
plot_isotherm(T, zs, ws[, Pmin, Pmax, . . . ]) Method to create a plot of the property vs pressure at
a specified temperature and composition according to
either a specified list of methods, or the user methods (if
set), or all methods.
plot_property(zs, ws[, Tmin, Tmax, Pmin, . . . ]) Method to create a plot of the property vs temperature
and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
property_derivative_P(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition, of a given order.
property_derivative_T(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition, of a given order.
select_valid_methods(T, P, zs, ws) Method to obtain a sorted list of methods which are
valid at T, P, zs, ws, and possibly Vfls, according to
test_method_validity.
set_user_method(user_methods[, forced]) Method to set the T, P, and composition dependent prop-
erty methods desired for consideration by the user.
test_method_validity(T, P, zs, ws, method) Method to test the validity of a specified method for the
given conditions.
test_property_validity(prop) Method to test the validity of a calculated property.

Tmax = None
Maximum temperature at which no method can calculate the liquid molar volume above.
Tmin = None
Minimum temperature at which no method can calculate the liquid molar volume under.
all_methods = None
Set of all methods available for a given set of information; filled by load_all_methods.
calculate(T, P, zs, ws, method)
Method to calculate molar volume of a liquid mixture at temperature T, pressure P, mole fractions zs and
weight fractions ws with a given method.
This method has no exception handling; see mixture_property for that.
Parameters
T [float] Temperature at which to calculate the property, [K]
P [float] Pressure at which to calculate the property, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Name of the method to use
Returns
Vm [float] Molar volume of the liquid mixture at the given conditions, [m^3/mol]
load_all_methods()
Method to initialize the object by precomputing any values which may be used repeatedly and by retrieving

1.1. thermo package 469


thermo Documentation, Release 0.1

mixture-specific variables. All data are stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods which should work to calculate the property.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'Liquid volume'
property_max = 0.002
Maximum valid value of liquid molar volume. Generous limit.
property_min = 0
Mimimum valid value of liquid molar volume. It should normally occur at the triple point, and be well
above this.
ranked_methods = ['Laliberte', 'SIMPLE', 'COSTALD mixture parameters', 'RACKETT Paramet
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by mix-
ture_property.
test_method_validity(T, P, zs, ws, method)
Method to test the validity of a specified method for the given conditions. No methods have implemented
checks or strict ranges of validity.
Parameters
T [float] Temperature at which to check method validity, [K]
P [float] Pressure at which to check method validity, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Method name to use
Returns
validity [bool] Whether or not a specifid method is valid
units = 'm^3/mol'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by mixture_property.
class thermo.volume.VolumeGasMixture(eos=None, CASs=[], VolumeGases=[])
Bases: thermo.utils.MixtureProperty
Class for dealing with the molar volume of a gas mixture as a function of temperature, pressure, and composition.
Consists of an equation of state, the ideal gas law, and one mole-weighted averaging method.
Prefered method is EOS, or IDEAL if critical properties of components are unavailable.
Parameters
CASs [list[str], optional] The CAS numbers of all species in the mixture
VolumeGases [list[VolumeGas], optional] VolumeGas objects created for all species in the mix-
ture, normally created by thermo.chemical.Chemical.
eos [container[EOS Object], optional] Equation of state object, normally created by thermo.
chemical.Mixture.

470 Chapter 1. thermo


thermo Documentation, Release 0.1

See also:
ideal_gas, thermo.eos_mix

1.1.1.37.55 Notes

To iterate over all methods, use the list stored in volume_gas_mixture_methods.


EOS: Equation of State object, normally provided by thermo.chemical.Mixture. See thermo.
eos_mix for more details.
SIMPLE: Linear mole fraction mixing rule described in thermo.utils.mixing_simple; more correct
than the ideal gas law.
IDEAL: The ideal gas law.

1.1.1.37.56 References

[1]
Attributes
method
prop_cached

1.1.1.37.57 Methods

__call__(T, P, zs, ws) Convenience method to calculate the property; calls


mixture_property.
calculate(T, P, zs, ws, method) Method to calculate molar volume of a gas mixture at
temperature T, pressure P, mole fractions zs and weight
fractions ws with a given method.
calculate_derivative_P(P, T, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition of a given order using a specified method.
calculate_derivative_T(T, P, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition of a given order using a specified method.
load_all_methods() Method to initialize the object by precomputing any val-
ues which may be used repeatedly and by retrieving
mixture-specific variables.
mixture_property(T, P, zs, ws) Method to calculate the property with sanity checking
and without specifying a specific method.
plot_isobar(P, zs, ws[, Tmin, Tmax, . . . ]) Method to create a plot of the property vs temperature at
a specific pressure and composition according to either
a specified list of methods, or user methods (if set), or
all methods.
plot_isotherm(T, zs, ws[, Pmin, Pmax, . . . ]) Method to create a plot of the property vs pressure at
a specified temperature and composition according to
either a specified list of methods, or the user methods (if
set), or all methods.
Continued on next page

1.1. thermo package 471


thermo Documentation, Release 0.1

Table 1.55 – continued from previous page


plot_property(zs, ws[, Tmin, Tmax, Pmin, . . . ]) Method to create a plot of the property vs temperature
and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
property_derivative_P(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition, of a given order.
property_derivative_T(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition, of a given order.
select_valid_methods(T, P, zs, ws) Method to obtain a sorted list of methods which are
valid at T, P, zs, ws, and possibly Vfls, according to
test_method_validity.
set_user_method(user_methods[, forced]) Method to set the T, P, and composition dependent prop-
erty methods desired for consideration by the user.
test_method_validity(T, P, zs, ws, method) Method to test the validity of a specified method for the
given conditions.
test_property_validity(prop) Method to test the validity of a calculated property.

Tmax = None
Maximum temperature at which no method can calculate the gas molar volume above.
Tmin = None
Minimum temperature at which no method can calculate the gas molar volume under.
all_methods = None
Set of all methods available for a given set of information; filled by load_all_methods.
calculate(T, P, zs, ws, method)
Method to calculate molar volume of a gas mixture at temperature T, pressure P, mole fractions zs and
weight fractions ws with a given method.
This method has no exception handling; see mixture_property for that.
Parameters
T [float] Temperature at which to calculate the property, [K]
P [float] Pressure at which to calculate the property, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Name of the method to use
Returns
Vm [float] Molar volume of the gas mixture at the given conditions, [m^3/mol]
load_all_methods()
Method to initialize the object by precomputing any values which may be used repeatedly and by retrieving
mixture-specific variables. All data are stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods which should work to calculate the property.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'Gas volume'

472 Chapter 1. thermo


thermo Documentation, Release 0.1

property_max = 10000000000.0
Maximum valid value of gas molar volume. Set roughly at an ideal gas at 1 Pa and 2 billion K.
property_min = 0
Mimimum valid value of gas molar volume. It should normally be well above this.
ranked_methods = ['EOS', 'SIMPLE', 'IDEAL']
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by mix-
ture_property.
test_method_validity(T, P, zs, ws, method)
Method to test the validity of a specified method for the given conditions. No methods have implemented
checks or strict ranges of validity.
Parameters
T [float] Temperature at which to check method validity, [K]
P [float] Pressure at which to check method validity, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Method name to use
Returns
validity [bool] Whether or not a specifid method is valid
units = 'm^3/mol'
user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by mixture_property.
class thermo.volume.VolumeSolidMixture(CASs=[], VolumeSolids=[])
Bases: thermo.utils.MixtureProperty
Class for dealing with the molar volume of a solid mixture as a function of temperature, pressure, and composi-
tion. Consists of only mole-weighted averaging.
Parameters
CASs [list[str], optional] The CAS numbers of all species in the mixture
VolumeSolids [list[VolumeSolid], optional] VolumeSolid objects created for all species in the
mixture, normally created by thermo.chemical.Chemical.

1.1.1.37.58 Notes

To iterate over all methods, use the list stored in volume_solid_mixture_methods.


SIMPLE: Linear mole fraction mixing rule described in thermo.utils.mixing_simple.

Attributes
method
prop_cached

1.1. thermo package 473


thermo Documentation, Release 0.1

1.1.1.37.59 Methods

__call__(T, P, zs, ws) Convenience method to calculate the property; calls


mixture_property.
calculate(T, P, zs, ws, method) Method to calculate molar volume of a solid mixture at
temperature T, pressure P, mole fractions zs and weight
fractions ws with a given method.
calculate_derivative_P(P, T, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition of a given order using a specified method.
calculate_derivative_T(T, P, zs, ws, method) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition of a given order using a specified method.
load_all_methods() Method to initialize the object by precomputing any val-
ues which may be used repeatedly and by retrieving
mixture-specific variables.
mixture_property(T, P, zs, ws) Method to calculate the property with sanity checking
and without specifying a specific method.
plot_isobar(P, zs, ws[, Tmin, Tmax, . . . ]) Method to create a plot of the property vs temperature at
a specific pressure and composition according to either
a specified list of methods, or user methods (if set), or
all methods.
plot_isotherm(T, zs, ws[, Pmin, Pmax, . . . ]) Method to create a plot of the property vs pressure at
a specified temperature and composition according to
either a specified list of methods, or the user methods (if
set), or all methods.
plot_property(zs, ws[, Tmin, Tmax, Pmin, . . . ]) Method to create a plot of the property vs temperature
and pressure according to either a specified list of meth-
ods, or user methods (if set), or all methods.
property_derivative_P(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to pressure at constant temperature and
composition, of a given order.
property_derivative_T(T, P, zs, ws[, order]) Method to calculate a derivative of a mixture property
with respect to temperature at constant pressure and
composition, of a given order.
select_valid_methods(T, P, zs, ws) Method to obtain a sorted list of methods which are
valid at T, P, zs, ws, and possibly Vfls, according to
test_method_validity.
set_user_method(user_methods[, forced]) Method to set the T, P, and composition dependent prop-
erty methods desired for consideration by the user.
test_method_validity(T, P, zs, ws, method) Method to test the validity of a specified method for the
given conditions.
test_property_validity(prop) Method to test the validity of a calculated property.

Tmax = None
Maximum temperature at which no method can calculate the solid molar volume above; assumed 10 000
K even under ultra-high pressure.
Tmin = None
Minimum temperature at which no method can calculate the solid molar volume under.
all_methods = None
Set of all methods available for a given set of information; filled by load_all_methods.

474 Chapter 1. thermo


thermo Documentation, Release 0.1

calculate(T, P, zs, ws, method)


Method to calculate molar volume of a solid mixture at temperature T, pressure P, mole fractions zs and
weight fractions ws with a given method.
This method has no exception handling; see mixture_property for that.
Parameters
T [float] Temperature at which to calculate the property, [K]
P [float] Pressure at which to calculate the property, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Name of the method to use
Returns
Vm [float] Molar volume of the solid mixture at the given conditions, [m^3/mol]
load_all_methods()
Method to initialize the object by precomputing any values which may be used repeatedly and by retrieving
mixture-specific variables. All data are stored as attributes. This method also sets Tmin, Tmax, and
all_methods as a set of methods which should work to calculate the property.
Called on initialization only. See the source code for the variables at which the coefficients are stored. The
coefficients can safely be altered once the class is initialized. This method can be called again to reset the
parameters.
name = 'Solid molar volume'
property_max = 0.002
Maximum value of Heat capacity; arbitrarily set to 0.002, as the largest in the data is 0.00136.
property_min = 0
Molar volume cannot be under 0.
ranked_methods = ['SIMPLE']
sorted_valid_methods = None
sorted_valid_methods, list: Stored methods which were found valid at a specific temperature; set by mix-
ture_property.
test_method_validity(T, P, zs, ws, method)
Method to test the validity of a specified method for the given conditions. No methods have implemented
checks or strict ranges of validity.
Parameters
T [float] Temperature at which to check method validity, [K]
P [float] Pressure at which to check method validity, [Pa]
zs [list[float]] Mole fractions of all species in the mixture, [-]
ws [list[float]] Weight fractions of all species in the mixture, [-]
method [str] Method name to use
Returns
validity [bool] Whether or not a specifid method is valid
units = 'm^3/mol'

1.1. thermo package 475


thermo Documentation, Release 0.1

user_methods = None
user_methods, list: Stored methods which were specified by the user in a ranked order of preference; set
by mixture_property.

476 Chapter 1. thermo


CHAPTER 2

Indices and tables

• genindex
• modindex
• search

477
thermo Documentation, Release 0.1

478 Chapter 2. Indices and tables


Bibliography

[1] Pitzer, K. S., D. Z. Lippmann, R. F. Curl, C. M. Huggins, and D. E. Petersen: The Volumetric and Thermodynamic
Properties of Fluids. II. Compressibility Factor, Vapor Pressure and Entropy of Vaporization. J. Am. Chem. Soc.,
77: 3433 (1955).
[2] Horstmann, Sven, Anna Jabłoniec, Jörg Krafczyk, Kai Fischer, and Jürgen Gmehling. “PSRK Group Con-
tribution Equation of State: Comprehensive Revision and Extension IV, Including Critical Constants and A-
Function Parameters for 1000 Components.” Fluid Phase Equilibria 227, no. 2 (January 25, 2005): 157-64.
doi:10.1016/j.fluid.2004.11.002.
[3] Passut, Charles A., and Ronald P. Danner. “Acentric Factor. A Valuable Correlating Parameter for the Properties
of Hydrocarbons.” Industrial & Engineering Chemistry Process Design and Development 12, no. 3 (July 1, 1973):
365-68. doi:10.1021/i260047a026.
[4] Yaws, Carl L. Thermophysical Properties of Chemicals and Hydrocarbons, Second Edition. Amsterdam Boston:
Gulf Professional Publishing, 2014.
[1] Lee, Byung Ik, and Michael G. Kesler. “A Generalized Thermodynamic Correlation Based on Three-Parameter
Corresponding States.” AIChE Journal 21, no. 3 (1975): 510-527. doi:10.1002/aic.690210313.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Halm, Roland L., and Leonard I. Stiel. “A Fourth Parameter for the Vapor Pressure and Entropy of Vaporization
of Polar Fluids.” AIChE Journal 13, no. 2 (1967): 351-355. doi:10.1002/aic.690130228.
[2] D, Kukoljac Miloš, and Grozdanić Dušan K. “New Values of the Polarity Factor.” Journal of the Serbian Chemical
Society 65, no. 12 (January 1, 2000). http://www.shd.org.rs/JSCS/Vol65/No12-Pdf/JSCS12-07.pdf
[1] Gmehling, Jurgen, Barbel Kolbe, Michael Kleiber, and Jurgen Rarey. Chemical Thermodynamics for Process
Simulation. 1st edition. Weinheim: Wiley-VCH, 2012.
[2] Skogestad, Sigurd. Chemical and Energy Process Engineering. 1st edition. Boca Raton, FL: CRC Press, 2008.
[1] Rachford, H. H. Jr, and J. D. Rice. “Procedure for Use of Electronic Digital Computers in Calculating Flash
Vaporization Hydrocarbon Equilibrium.” Journal of Petroleum Technology 4, no. 10 (October 1, 1952): 19-3.
doi:10.2118/952327-G.
[1] Rachford, H. H. Jr, and J. D. Rice. “Procedure for Use of Electronic Digital Computers in Calculating Flash
Vaporization Hydrocarbon Equilibrium.” Journal of Petroleum Technology 4, no. 10 (October 1, 1952): 19-3.
doi:10.2118/952327-G.

479
thermo Documentation, Release 0.1

[2] Li, Yinghui, Russell T. Johns, and Kaveh Ahmadi. “A Rapid and Robust Alternative to Rachford-Rice in Flash
Calculations.” Fluid Phase Equilibria 316 (February 25, 2012): 85-97. doi:10.1016/j.fluid.2011.12.005.
[3] Whitson, Curtis H., and Michael L. Michelsen. “The Negative Flash.” Fluid Phase Equilibria, Proceedings of the
Fifth International Conference, 53 (December 1, 1989): 51-71. doi:10.1016/0378-3812(89)80072-X.
[1] Li, Yinghui, Russell T. Johns, and Kaveh Ahmadi. “A Rapid and Robust Alternative to Rachford-Rice in Flash
Calculations.” Fluid Phase Equilibria 316 (February 25, 2012): 85-97. doi:10.1016/j.fluid.2011.12.005.
[1] Renon, Henri, and J. M. Prausnitz. “Local Compositions in Thermodynamic Excess Functions for Liquid Mix-
tures.” AIChE Journal 14, no. 1 (1968): 135-144. doi:10.1002/aic.690140124.
[2] Gmehling, Jurgen, Barbel Kolbe, Michael Kleiber, and Jurgen Rarey. Chemical Thermodynamics for Process
Simulation. 1st edition. Weinheim: Wiley-VCH, 2012.
[1] Wilson, Grant M. “Vapor-Liquid Equilibrium. XI. A New Expression for the Excess Free Energy of Mixing.”
Journal of the American Chemical Society 86, no. 2 (January 1, 1964): 127-130. doi:10.1021/ja01056a002.
[2] Gmehling, Jurgen, Barbel Kolbe, Michael Kleiber, and Jurgen Rarey. Chemical Thermodynamics for Process
Simulation. 1st edition. Weinheim: Wiley-VCH, 2012.
[1] Abrams, Denis S., and John M. Prausnitz. “Statistical Thermodynamics of Liquid Mixtures: A New Expression
for the Excess Gibbs Energy of Partly or Completely Miscible Systems.” AIChE Journal 21, no. 1 (January 1,
1975): 116-28. doi:10.1002/aic.690210115.
[2] Gmehling, Jurgen, Barbel Kolbe, Michael Kleiber, and Jurgen Rarey. Chemical Thermodynamics for Process
Simulation. 1st edition. Weinheim: Wiley-VCH, 2012.
[3] Maurer, G., and J. M. Prausnitz. “On the Derivation and Extension of the Uniquac Equation.” Fluid Phase Equi-
libria 2, no. 2 (January 1, 1978): 91-99. doi:10.1016/0378-3812(78)85002-X.
[1] Ambrose, Douglas, and Colin L. Young. “Vapor-Liquid Critical Properties of Elements and Compounds. 1.
An Introductory Survey.” Journal of Chemical & Engineering Data 41, no. 1 (January 1, 1996): 154-154.
doi:10.1021/je950378q.
[2] Ambrose, Douglas, and Constantine Tsonopoulos. “Vapor-Liquid Critical Properties of Elements and Com-
pounds. 2. Normal Alkanes.” Journal of Chemical & Engineering Data 40, no. 3 (May 1, 1995): 531-46.
doi:10.1021/je00019a001.
[3] Tsonopoulos, Constantine, and Douglas Ambrose. “Vapor-Liquid Critical Properties of Elements and Com-
pounds. 3. Aromatic Hydrocarbons.” Journal of Chemical & Engineering Data 40, no. 3 (May 1, 1995): 547-58.
doi:10.1021/je00019a002.
[4] Gude, Michael, and Amyn S. Teja. “Vapor-Liquid Critical Properties of Elements and Compounds. 4.
Aliphatic Alkanols.” Journal of Chemical & Engineering Data 40, no. 5 (September 1, 1995): 1025-36.
doi:10.1021/je00021a001.
[5] Daubert, Thomas E. “Vapor-Liquid Critical Properties of Elements and Compounds. 5. Branched Alkanes and Cy-
cloalkanes.” Journal of Chemical & Engineering Data 41, no. 3 (January 1, 1996): 365-72. doi:10.1021/je9501548.
[6] Tsonopoulos, Constantine, and Douglas Ambrose. “Vapor-Liquid Critical Properties of Elements and Compounds.
6. Unsaturated Aliphatic Hydrocarbons.” Journal of Chemical & Engineering Data 41, no. 4 (January 1, 1996):
645-56. doi:10.1021/je9501999.
[7] Kudchadker, Arvind P., Douglas Ambrose, and Constantine Tsonopoulos. “Vapor-Liquid Critical Properties of
Elements and Compounds. 7. Oxygen Compounds Other Than Alkanols and Cycloalkanols.” Journal of Chemical
& Engineering Data 46, no. 3 (May 1, 2001): 457-79. doi:10.1021/je0001680.
[8] Tsonopoulos, Constantine, and Douglas Ambrose. “Vapor-Liquid Critical Properties of Elements and Compounds.
8. Organic Sulfur, Silicon, and Tin Compounds (C + H + S, Si, and Sn).” Journal of Chemical & Engineering Data
46, no. 3 (May 1, 2001): 480-85. doi:10.1021/je000210r.

480 Bibliography
thermo Documentation, Release 0.1

[9] Marsh, Kenneth N., Colin L. Young, David W. Morton, Douglas Ambrose, and Constantine Tsonopoulos. “Vapor-
Liquid Critical Properties of Elements and Compounds. 9. Organic Compounds Containing Nitrogen.” Journal of
Chemical & Engineering Data 51, no. 2 (March 1, 2006): 305-14. doi:10.1021/je050221q.
[10] Marsh, Kenneth N., Alan Abramson, Douglas Ambrose, David W. Morton, Eugene Nikitin, Constantine
Tsonopoulos, and Colin L. Young. “Vapor-Liquid Critical Properties of Elements and Compounds. 10. Organic
Compounds Containing Halogens.” Journal of Chemical & Engineering Data 52, no. 5 (September 1, 2007):
1509-38. doi:10.1021/je700336g.
[11] Ambrose, Douglas, Constantine Tsonopoulos, and Eugene D. Nikitin. “Vapor-Liquid Critical Properties of El-
ements and Compounds. 11. Organic Compounds Containing B + O; Halogens + N, + O, + O + S, + S, +
Si; N + O; and O + S, + Si.” Journal of Chemical & Engineering Data 54, no. 3 (March 12, 2009): 669-89.
doi:10.1021/je800580z.
[12] Ambrose, Douglas, Constantine Tsonopoulos, Eugene D. Nikitin, David W. Morton, and Kenneth N. Marsh.
“Vapor-Liquid Critical Properties of Elements and Compounds. 12. Review of Recent Data for Hydrocar-
bons and Non-Hydrocarbons.” Journal of Chemical & Engineering Data, October 5, 2015, 151005081500002.
doi:10.1021/acs.jced.5b00571.
[13] Mathews, Joseph F. “Critical Constants of Inorganic Substances.” Chemical Reviews 72, no. 1 (February 1,
1972): 71-100. doi:10.1021/cr60275a004.
[14] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics, 95E. Boca
Raton, FL: CRC press, 2014.
[15] Horstmann, Sven, Anna Jabłoniec, Jörg Krafczyk, Kai Fischer, and Jürgen Gmehling. “PSRK Group Con-
tribution Equation of State: Comprehensive Revision and Extension IV, Including Critical Constants and A-
Function Parameters for 1000 Components.” Fluid Phase Equilibria 227, no. 2 (January 25, 2005): 157-64.
doi:10.1016/j.fluid.2004.11.002.
[16] Passut, Charles A., and Ronald P. Danner. “Acentric Factor. A Valuable Correlating Parameter for the Properties
of Hydrocarbons.” Industrial & Engineering Chemistry Process Design and Development 12, no. 3 (July 1, 1973):
365–68. doi:10.1021/i260047a026.
[17] Yaws, Carl L. Thermophysical Properties of Chemicals and Hydrocarbons, Second Edition. Amsterdam Boston:
Gulf Professional Publishing, 2014.
[1] Ambrose, Douglas, and Colin L. Young. “Vapor-Liquid Critical Properties of Elements and Compounds. 1.
An Introductory Survey.” Journal of Chemical & Engineering Data 41, no. 1 (January 1, 1996): 154-154.
doi:10.1021/je950378q.
[2] Ambrose, Douglas, and Constantine Tsonopoulos. “Vapor-Liquid Critical Properties of Elements and Com-
pounds. 2. Normal Alkanes.” Journal of Chemical & Engineering Data 40, no. 3 (May 1, 1995): 531-46.
doi:10.1021/je00019a001.
[3] Tsonopoulos, Constantine, and Douglas Ambrose. “Vapor-Liquid Critical Properties of Elements and Com-
pounds. 3. Aromatic Hydrocarbons.” Journal of Chemical & Engineering Data 40, no. 3 (May 1, 1995): 547-58.
doi:10.1021/je00019a002.
[4] Gude, Michael, and Amyn S. Teja. “Vapor-Liquid Critical Properties of Elements and Compounds. 4.
Aliphatic Alkanols.” Journal of Chemical & Engineering Data 40, no. 5 (September 1, 1995): 1025-36.
doi:10.1021/je00021a001.
[5] Daubert, Thomas E. “Vapor-Liquid Critical Properties of Elements and Compounds. 5. Branched Alkanes and Cy-
cloalkanes.” Journal of Chemical & Engineering Data 41, no. 3 (January 1, 1996): 365-72. doi:10.1021/je9501548.
[6] Tsonopoulos, Constantine, and Douglas Ambrose. “Vapor-Liquid Critical Properties of Elements and Compounds.
6. Unsaturated Aliphatic Hydrocarbons.” Journal of Chemical & Engineering Data 41, no. 4 (January 1, 1996):
645-56. doi:10.1021/je9501999.

Bibliography 481
thermo Documentation, Release 0.1

[7] Kudchadker, Arvind P., Douglas Ambrose, and Constantine Tsonopoulos. “Vapor-Liquid Critical Properties of
Elements and Compounds. 7. Oxygen Compounds Other Than Alkanols and Cycloalkanols.” Journal of Chemical
& Engineering Data 46, no. 3 (May 1, 2001): 457-79. doi:10.1021/je0001680.
[8] Tsonopoulos, Constantine, and Douglas Ambrose. “Vapor-Liquid Critical Properties of Elements and Compounds.
8. Organic Sulfur, Silicon, and Tin Compounds (C + H + S, Si, and Sn).” Journal of Chemical & Engineering Data
46, no. 3 (May 1, 2001): 480-85. doi:10.1021/je000210r.
[9] Marsh, Kenneth N., Colin L. Young, David W. Morton, Douglas Ambrose, and Constantine Tsonopoulos. “Vapor-
Liquid Critical Properties of Elements and Compounds. 9. Organic Compounds Containing Nitrogen.” Journal of
Chemical & Engineering Data 51, no. 2 (March 1, 2006): 305-14. doi:10.1021/je050221q.
[10] Marsh, Kenneth N., Alan Abramson, Douglas Ambrose, David W. Morton, Eugene Nikitin, Constantine
Tsonopoulos, and Colin L. Young. “Vapor-Liquid Critical Properties of Elements and Compounds. 10. Organic
Compounds Containing Halogens.” Journal of Chemical & Engineering Data 52, no. 5 (September 1, 2007):
1509-38. doi:10.1021/je700336g.
[11] Ambrose, Douglas, Constantine Tsonopoulos, and Eugene D. Nikitin. “Vapor-Liquid Critical Properties of El-
ements and Compounds. 11. Organic Compounds Containing B + O; Halogens + N, + O, + O + S, + S, +
Si; N + O; and O + S, + Si.” Journal of Chemical & Engineering Data 54, no. 3 (March 12, 2009): 669-89.
doi:10.1021/je800580z.
[12] Ambrose, Douglas, Constantine Tsonopoulos, Eugene D. Nikitin, David W. Morton, and Kenneth N. Marsh.
“Vapor-Liquid Critical Properties of Elements and Compounds. 12. Review of Recent Data for Hydrocar-
bons and Non-Hydrocarbons.” Journal of Chemical & Engineering Data, October 5, 2015, 151005081500002.
doi:10.1021/acs.jced.5b00571.
[13] Mathews, Joseph F. “Critical Constants of Inorganic Substances.” Chemical Reviews 72, no. 1 (February 1,
1972): 71-100. doi:10.1021/cr60275a004.
[14] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics, 95E. Boca
Raton, FL: CRC press, 2014.
[15] Horstmann, Sven, Anna Jabłoniec, Jörg Krafczyk, Kai Fischer, and Jürgen Gmehling. “PSRK Group Con-
tribution Equation of State: Comprehensive Revision and Extension IV, Including Critical Constants and A-
Function Parameters for 1000 Components.” Fluid Phase Equilibria 227, no. 2 (January 25, 2005): 157-64.
doi:10.1016/j.fluid.2004.11.002.
[16] Passut, Charles A., and Ronald P. Danner. “Acentric Factor. A Valuable Correlating Parameter for the Properties
of Hydrocarbons.” Industrial & Engineering Chemistry Process Design and Development 12, no. 3 (July 1, 1973):
365–68. doi:10.1021/i260047a026.
[17] Yaws, Carl L. Thermophysical Properties of Chemicals and Hydrocarbons, Second Edition. Amsterdam Boston:
Gulf Professional Publishing, 2014.
[1] Ambrose, Douglas, and Colin L. Young. “Vapor-Liquid Critical Properties of Elements and Compounds. 1.
An Introductory Survey.” Journal of Chemical & Engineering Data 41, no. 1 (January 1, 1996): 154-154.
doi:10.1021/je950378q.
[2] Ambrose, Douglas, and Constantine Tsonopoulos. “Vapor-Liquid Critical Properties of Elements and Com-
pounds. 2. Normal Alkanes.” Journal of Chemical & Engineering Data 40, no. 3 (May 1, 1995): 531-46.
doi:10.1021/je00019a001.
[3] Tsonopoulos, Constantine, and Douglas Ambrose. “Vapor-Liquid Critical Properties of Elements and Com-
pounds. 3. Aromatic Hydrocarbons.” Journal of Chemical & Engineering Data 40, no. 3 (May 1, 1995): 547-58.
doi:10.1021/je00019a002.
[4] Gude, Michael, and Amyn S. Teja. “Vapor-Liquid Critical Properties of Elements and Compounds. 4.
Aliphatic Alkanols.” Journal of Chemical & Engineering Data 40, no. 5 (September 1, 1995): 1025-36.
doi:10.1021/je00021a001.

482 Bibliography
thermo Documentation, Release 0.1

[5] Daubert, Thomas E. “Vapor-Liquid Critical Properties of Elements and Compounds. 5. Branched Alkanes and Cy-
cloalkanes.” Journal of Chemical & Engineering Data 41, no. 3 (January 1, 1996): 365-72. doi:10.1021/je9501548.
[6] Tsonopoulos, Constantine, and Douglas Ambrose. “Vapor-Liquid Critical Properties of Elements and Compounds.
6. Unsaturated Aliphatic Hydrocarbons.” Journal of Chemical & Engineering Data 41, no. 4 (January 1, 1996):
645-56. doi:10.1021/je9501999.
[7] Kudchadker, Arvind P., Douglas Ambrose, and Constantine Tsonopoulos. “Vapor-Liquid Critical Properties of
Elements and Compounds. 7. Oxygen Compounds Other Than Alkanols and Cycloalkanols.” Journal of Chemical
& Engineering Data 46, no. 3 (May 1, 2001): 457-79. doi:10.1021/je0001680.
[8] Tsonopoulos, Constantine, and Douglas Ambrose. “Vapor-Liquid Critical Properties of Elements and Compounds.
8. Organic Sulfur, Silicon, and Tin Compounds (C + H + S, Si, and Sn).” Journal of Chemical & Engineering Data
46, no. 3 (May 1, 2001): 480-85. doi:10.1021/je000210r.
[9] Marsh, Kenneth N., Colin L. Young, David W. Morton, Douglas Ambrose, and Constantine Tsonopoulos. “Vapor-
Liquid Critical Properties of Elements and Compounds. 9. Organic Compounds Containing Nitrogen.” Journal of
Chemical & Engineering Data 51, no. 2 (March 1, 2006): 305-14. doi:10.1021/je050221q.
[10] Marsh, Kenneth N., Alan Abramson, Douglas Ambrose, David W. Morton, Eugene Nikitin, Constantine
Tsonopoulos, and Colin L. Young. “Vapor-Liquid Critical Properties of Elements and Compounds. 10. Organic
Compounds Containing Halogens.” Journal of Chemical & Engineering Data 52, no. 5 (September 1, 2007):
1509-38. doi:10.1021/je700336g.
[11] Ambrose, Douglas, Constantine Tsonopoulos, and Eugene D. Nikitin. “Vapor-Liquid Critical Properties of El-
ements and Compounds. 11. Organic Compounds Containing B + O; Halogens + N, + O, + O + S, + S, +
Si; N + O; and O + S, + Si.” Journal of Chemical & Engineering Data 54, no. 3 (March 12, 2009): 669-89.
doi:10.1021/je800580z.
[12] Ambrose, Douglas, Constantine Tsonopoulos, Eugene D. Nikitin, David W. Morton, and Kenneth N. Marsh.
“Vapor-Liquid Critical Properties of Elements and Compounds. 12. Review of Recent Data for Hydrocar-
bons and Non-Hydrocarbons.” Journal of Chemical & Engineering Data, October 5, 2015, 151005081500002.
doi:10.1021/acs.jced.5b00571.
[13] Mathews, Joseph F. “Critical Constants of Inorganic Substances.” Chemical Reviews 72, no. 1 (February 1,
1972): 71-100. doi:10.1021/cr60275a004.
[14] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics, 95E. Boca
Raton, FL: CRC press, 2014.
[15] Horstmann, Sven, Anna Jabłoniec, Jörg Krafczyk, Kai Fischer, and Jürgen Gmehling. “PSRK Group Con-
tribution Equation of State: Comprehensive Revision and Extension IV, Including Critical Constants and A-
Function Parameters for 1000 Components.” Fluid Phase Equilibria 227, no. 2 (January 25, 2005): 157-64.
doi:10.1016/j.fluid.2004.11.002.
[16] Yaws, Carl L. Thermophysical Properties of Chemicals and Hydrocarbons, Second Edition. Amsterdam Boston:
Gulf Professional Publishing, 2014.
[1] Ambrose, Douglas, and Colin L. Young. “Vapor-Liquid Critical Properties of Elements and Compounds. 1.
An Introductory Survey.” Journal of Chemical & Engineering Data 41, no. 1 (January 1, 1996): 154-154.
doi:10.1021/je950378q.
[2] Ambrose, Douglas, and Constantine Tsonopoulos. “Vapor-Liquid Critical Properties of Elements and Com-
pounds. 2. Normal Alkanes.” Journal of Chemical & Engineering Data 40, no. 3 (May 1, 1995): 531-46.
doi:10.1021/je00019a001.
[3] Tsonopoulos, Constantine, and Douglas Ambrose. “Vapor-Liquid Critical Properties of Elements and Com-
pounds. 3. Aromatic Hydrocarbons.” Journal of Chemical & Engineering Data 40, no. 3 (May 1, 1995): 547-58.
doi:10.1021/je00019a002.

Bibliography 483
thermo Documentation, Release 0.1

[4] Gude, Michael, and Amyn S. Teja. “Vapor-Liquid Critical Properties of Elements and Compounds. 4.
Aliphatic Alkanols.” Journal of Chemical & Engineering Data 40, no. 5 (September 1, 1995): 1025-36.
doi:10.1021/je00021a001.
[5] Daubert, Thomas E. “Vapor-Liquid Critical Properties of Elements and Compounds. 5. Branched Alkanes and Cy-
cloalkanes.” Journal of Chemical & Engineering Data 41, no. 3 (January 1, 1996): 365-72. doi:10.1021/je9501548.
[6] Tsonopoulos, Constantine, and Douglas Ambrose. “Vapor-Liquid Critical Properties of Elements and Compounds.
6. Unsaturated Aliphatic Hydrocarbons.” Journal of Chemical & Engineering Data 41, no. 4 (January 1, 1996):
645-56. doi:10.1021/je9501999.
[7] Kudchadker, Arvind P., Douglas Ambrose, and Constantine Tsonopoulos. “Vapor-Liquid Critical Properties of
Elements and Compounds. 7. Oxygen Compounds Other Than Alkanols and Cycloalkanols.” Journal of Chemical
& Engineering Data 46, no. 3 (May 1, 2001): 457-79. doi:10.1021/je0001680.
[8] Tsonopoulos, Constantine, and Douglas Ambrose. “Vapor-Liquid Critical Properties of Elements and Compounds.
8. Organic Sulfur, Silicon, and Tin Compounds (C + H + S, Si, and Sn).” Journal of Chemical & Engineering Data
46, no. 3 (May 1, 2001): 480-85. doi:10.1021/je000210r.
[9] Marsh, Kenneth N., Colin L. Young, David W. Morton, Douglas Ambrose, and Constantine Tsonopoulos. “Vapor-
Liquid Critical Properties of Elements and Compounds. 9. Organic Compounds Containing Nitrogen.” Journal of
Chemical & Engineering Data 51, no. 2 (March 1, 2006): 305-14. doi:10.1021/je050221q.
[10] Marsh, Kenneth N., Alan Abramson, Douglas Ambrose, David W. Morton, Eugene Nikitin, Constantine
Tsonopoulos, and Colin L. Young. “Vapor-Liquid Critical Properties of Elements and Compounds. 10. Organic
Compounds Containing Halogens.” Journal of Chemical & Engineering Data 52, no. 5 (September 1, 2007):
1509-38. doi:10.1021/je700336g.
[11] Ambrose, Douglas, Constantine Tsonopoulos, and Eugene D. Nikitin. “Vapor-Liquid Critical Properties of El-
ements and Compounds. 11. Organic Compounds Containing B + O; Halogens + N, + O, + O + S, + S, +
Si; N + O; and O + S, + Si.” Journal of Chemical & Engineering Data 54, no. 3 (March 12, 2009): 669-89.
doi:10.1021/je800580z.
[12] Ambrose, Douglas, Constantine Tsonopoulos, Eugene D. Nikitin, David W. Morton, and Kenneth N. Marsh.
“Vapor-Liquid Critical Properties of Elements and Compounds. 12. Review of Recent Data for Hydrocar-
bons and Non-Hydrocarbons.” Journal of Chemical & Engineering Data, October 5, 2015, 151005081500002.
doi:10.1021/acs.jced.5b00571.
[13] Mathews, Joseph F. “Critical Constants of Inorganic Substances.” Chemical Reviews 72, no. 1 (February 1,
1972): 71-100. doi:10.1021/cr60275a004.
[14] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics, 95E. Boca
Raton, FL: CRC press, 2014.
[15] Horstmann, Sven, Anna Jabłoniec, Jörg Krafczyk, Kai Fischer, and Jürgen Gmehling. “PSRK Group Con-
tribution Equation of State: Comprehensive Revision and Extension IV, Including Critical Constants and A-
Function Parameters for 1000 Components.” Fluid Phase Equilibria 227, no. 2 (January 25, 2005): 157-64.
doi:10.1016/j.fluid.2004.11.002.
[16] Yaws, Carl L. Thermophysical Properties of Chemicals and Hydrocarbons, Second Edition. Amsterdam Boston:
Gulf Professional Publishing, 2014.
[1] Mersmann, Alfons, and Matthias Kind. “Correlation for the Prediction of Critical Molar Volume.” Industrial &
Engineering Chemistry Research, October 16, 2017. https://doi.org/10.1021/acs.iecr.7b03171.
[2] Mersmann, Alfons, and Matthias Kind. “Prediction of Mechanical and Thermal Properties of Pure Liquids, of
Critical Data, and of Vapor Pressure.” Industrial & Engineering Chemistry Research, January 31, 2017. https:
//doi.org/10.1021/acs.iecr.6b04323.
[1] Ihmels, E. Christian. “The Critical Surface.” Journal of Chemical & Engineering Data 55, no. 9 (September 9,
2010): 3474-80. doi:10.1021/je100167w.

484 Bibliography
thermo Documentation, Release 0.1

[1] Meissner, H. P., and E. M. Redding. “Prediction of Critical Constants.” Industrial & Engineering Chemistry 34,
no. 5 (May 1, 1942): 521-26. doi:10.1021/ie50389a003.
[1] Grigoras, Stelian. “A Structural Approach to Calculate Physical Properties of Pure Organic Substances: The
Critical Temperature, Critical Volume and Related Properties.” Journal of Computational Chemistry 11, no. 4
(May 1, 1990): 493-510. doi:10.1002/jcc.540110408
[1] Li, C. C. “Critical Temperature Estimation for Simple Mixtures.” The Canadian Journal of Chemical Engineering
49, no. 5 (October 1, 1971): 709-10. doi:10.1002/cjce.5450490529.
[1] Chueh, P. L., and J. M. Prausnitz. “Vapor-Liquid Equilibria at High Pressures: Calculation of Critical Tempera-
tures, Volumes, and Pressures of Nonpolar Mixtures.” AIChE Journal 13, no. 6 (November 1, 1967): 1107-13.
doi:10.1002/aic.690130613.
[2] Najafi, Hamidreza, Babak Maghbooli, and Mohammad Amin Sobati. “Prediction of True Critical Temperature of
Multi-Component Mixtures: Extending Fast Estimation Methods.” Fluid Phase Equilibria 392 (April 25, 2015):
104-26. doi:10.1016/j.fluid.2015.02.001.
[1] Grieves, Robert B., and George Thodos. “The Critical Temperatures of Multicomponent Hydrocarbon Systems.”
AIChE Journal 8, no. 4 (September 1, 1962): 550-53. doi:10.1002/aic.690080426.
[2] Najafi, Hamidreza, Babak Maghbooli, and Mohammad Amin Sobati. “Prediction of True Critical Temperature of
Multi-Component Mixtures: Extending Fast Estimation Methods.” Fluid Phase Equilibria 392 (April 25, 2015):
104-26. doi:10.1016/j.fluid.2015.02.001.
[1] Teja, Amyn S., Kul B. Garg, and Richard L. Smith. “A Method for the Calculation of Gas-Liquid Critical Tem-
peratures and Pressures of Multicomponent Mixtures.” Industrial & Engineering Chemistry Process Design and
Development 22, no. 4 (1983): 672-76.
[2] Najafi, Hamidreza, Babak Maghbooli, and Mohammad Amin Sobati. “Prediction of True Critical Temperature of
Multi-Component Mixtures: Extending Fast Estimation Methods.” Fluid Phase Equilibria 392 (April 25, 2015):
104-26. doi:10.1016/j.fluid.2015.02.001.
[1] Chueh, P. L., and J. M. Prausnitz. “Vapor-Liquid Equilibria at High Pressures: Calculation of Critical Tempera-
tures, Volumes, and Pressures of Nonpolar Mixtures.” AIChE Journal 13, no. 6 (November 1, 1967): 1107-13.
doi:10.1002/aic.690130613.
[2] Najafi, Hamidreza, Babak Maghbooli, and Mohammad Amin Sobati. “Prediction of True Critical Volume of
Multi-Component Mixtures: Extending Fast Estimation Methods.” Fluid Phase Equilibria 386 (January 25, 2015):
13-29. doi:10.1016/j.fluid.2014.11.008.
[1] Teja, Amyn S., Kul B. Garg, and Richard L. Smith. “A Method for the Calculation of Gas-Liquid Critical Tem-
peratures and Pressures of Multicomponent Mixtures.” Industrial & Engineering Chemistry Process Design and
Development 22, no. 4 (1983): 672-76.
[2] Najafi, Hamidreza, Babak Maghbooli, and Mohammad Amin Sobati. “Prediction of True Critical Temperature of
Multi-Component Mixtures: Extending Fast Estimation Methods.” Fluid Phase Equilibria 392 (April 25, 2015):
104-26. doi:10.1016/j.fluid.2015.02.001.
[1] NIST Computational Chemistry Comparison and Benchmark Database NIST Standard Reference Database Num-
ber 101 Release 17b, September 2015, Editor: Russell D. Johnson III http://cccbdb.nist.gov/
[2] Muller, Karsten, Liudmila Mokrushina, and Wolfgang Arlt. “Second- Order Group Contribution Method for the
Determination of the Dipole Moment.” Journal of Chemical & Engineering Data 57, no. 4 (April 12, 2012):
1231-36. doi:10.1021/je2013395.
[3] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Design Institute for Physical Properties, 1996. DIPPR Project 801 DIPPR/AIChE
[1] Design Institute for Physical Properties, 1996. DIPPR Project 801 DIPPR/AIChE
[1] Design Institute for Physical Properties, 1996. DIPPR Project 801 DIPPR/AIChE

Bibliography 485
thermo Documentation, Release 0.1

[1] Design Institute for Physical Properties, 1996. DIPPR Project 801 DIPPR/AIChE
[1] Design Institute for Physical Properties, 1996. DIPPR Project 801 DIPPR/AIChE
[1] Design Institute for Physical Properties, 1996. DIPPR Project 801 DIPPR/AIChE
[1] Design Institute for Physical Properties, 1996. DIPPR Project 801 DIPPR/AIChE
[2] Aly, Fouad A., and Lloyd L. Lee. “Self-Consistent Equations for Calculating the Ideal Gas Heat Capacity, En-
thalpy, and Entropy.” Fluid Phase Equilibria 6, no. 3 (January 1, 1981): 169-79. doi:10.1016/0378-3812(81)85002-
9.
[1] Design Institute for Physical Properties, 1996. DIPPR Project 801 DIPPR/AIChE
[1] Design Institute for Physical Properties, 1996. DIPPR Project 801 DIPPR/AIChE
[1] Design Institute for Physical Properties, 1996. DIPPR Project 801 DIPPR/AIChE
[1] Design Institute for Physical Properties, 1996. DIPPR Project 801 DIPPR/AIChE
[1] Speight, James. Lange’s Handbook of Chemistry. 16 edition. McGraw-Hill Professional, 2005.
[1] Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Vis-
cosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 1725-60. doi:10.1021/je8008123
[1] Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Vis-
cosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 1725-60. doi:10.1021/je8008123
[1] Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Vis-
cosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 1725-60. doi:10.1021/je8008123
[1] Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Vis-
cosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 1725-60. doi:10.1021/je8008123
[1] Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Vis-
cosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 1725-60. doi:10.1021/je8008123
[1] Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Vis-
cosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 1725-60. doi:10.1021/je8008123
[1] Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Vis-
cosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 1725-60. doi:10.1021/je8008123
[1] Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Vis-
cosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 1725-60. doi:10.1021/je8008123
[1] Laliberte, Marc. “A Model for Calculating the Heat Capacity of Aqueous Solutions, with Updated Density and Vis-
cosity Data.” Journal of Chemical & Engineering Data 54, no. 6 (June 11, 2009): 1725-60. doi:10.1021/je8008123
[1] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics, 95E. Boca Raton,
FL: CRC press, 2014.
[1] McCleskey, R. Blaine. “Electrical Conductivity of Electrolytes Found In Natural Waters from (5 to 90) °C.” Journal
of Chemical & Engineering Data 56, no. 2 (February 10, 2011): 317-27. doi:10.1021/je101012n.
[1] Magomedov, U. B. “The Thermal Conductivity of Binary and Multicomponent Aqueous Solutions of In-
organic Substances at High Parameters of State.” High Temperature 39, no. 2 (March 1, 2001): 221-26.
doi:10.1023/A:1017518731726.
[1] Chen, Chau-Chyun, H. I. Britt, J. F. Boston, and L. B. Evans. “Local Composition Model for Excess Gibbs
Energy of Electrolyte Systems. Part I: Single Solvent, Single Completely Dissociated Electrolyte Systems.” AIChE
Journal 28, no. 4 (July 1, 1982): 588-96. doi:10.1002/aic.690280410
[2] Gmehling, Jurgen. Chemical Thermodynamics: For Process Simulation. Weinheim, Germany: Wiley-VCH, 2012.

486 Bibliography
thermo Documentation, Release 0.1

[1] Marshall, William L., and E. U. Franck. “Ion Product of Water Substance, 0-1000 degree C, 1010,000 Bars New
International Formulation and Its Background.” Journal of Physical and Chemical Reference Data 10, no. 2 (April
1, 1981): 295-304. doi:10.1063/1.555643.
[1] Bandura, Andrei V., and Serguei N. Lvov. “The Ionization Constant of Water over Wide Ranges of Tem-
perature and Density.” Journal of Physical and Chemical Reference Data 35, no. 1 (March 1, 2006): 15-30.
doi:10.1063/1.1928231
[1] Bandura, Andrei V., and Serguei N. Lvov. “The Ionization Constant of Water over Wide Ranges of Tem-
perature and Density.” Journal of Physical and Chemical Reference Data 35, no. 1 (March 1, 2006): 15-30.
doi:10.1063/1.1928231
[1] N M O’Boyle, M Banck, C A James, C Morley, T Vandermeersch, and G R Hutchison. “Open Babel: An open
chemical toolbox.” J. Cheminf. (2011), 3, 33. DOI:10.1186/1758-2946-3-33
[1] RDKit: Open-source cheminformatics; http://www.rdkit.org
[1] RDKit: Open-source cheminformatics; http://www.rdkit.org
[1] RDKit: Open-source cheminformatics; http://www.rdkit.org
[1] Laštovka, Václav, Nasser Sallamie, and John M. Shaw. “A Similarity Variable for Estimating the Heat Capacity
of Solid Organic Compounds: Part I. Fundamentals.” Fluid Phase Equilibria 268, no. 1-2 (June 25, 2008): 51-60.
doi:10.1016/j.fluid.2008.03.019.
[1] Hill, Edwin A.”“ON A SYSTEM OF INDEXING CHEMICAL LITERATURE; ADOPTED BY THE CLASSI-
FICATION DIVISION OF THE U. S. PATENT OFFICE.1.” Journal of the American Chemical Society 22, no. 8
(August 1, 1900): 478-94. doi:10.1021/ja02046a005.
[1] Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.
[1] Soave, G. “Direct Calculation of Pure-Compound Vapour Pressures through Cubic Equations of State.” Fluid
Phase Equilibria 31, no. 2 (January 1, 1986): 203-7. doi:10.1016/0378-3812(86)90013-0.
[1] Thorade, Matthis, and Ali Saadat. “Partial Derivatives of Thermodynamic State Properties for Dynamic Simula-
tion.” Environmental Earth Sciences 70, no. 8 (April 10, 2013): 3497-3503. doi:10.1007/s12665-013-2394-z.
[2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[3] Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.
[1] Peng, Ding-Yu, and Donald B. Robinson. “A New Two-Constant Equation of State.” Industrial & Engineering
Chemistry Fundamentals 15, no. 1 (February 1, 1976): 59-64. doi:10.1021/i160057a011.
[2] Robinson, Donald B., Ding-Yu Peng, and Samuel Y-K Chung. “The Development of the Peng - Robinson Equation
and Its Application to Phase Equilibrium in a System Containing Methanol.” Fluid Phase Equilibria 24, no. 1
(January 1, 1985): 25-41. doi:10.1016/0378-3812(85)87035-7.
[3] Privat, R., and J.-N. Jaubert. “PPR78, a Thermodynamic Model for the Prediction of Petroleum Fluid-Phase
Behaviour,” 11. EDP Sciences, 2011. doi:10.1051/jeep/201100011.
[1] Soave, Giorgio. “Equilibrium Constants from a Modified Redlich-Kwong Equation of State.” Chemical Engineer-
ing Science 27, no. 6 (June 1972): 1197-1203. doi:10.1016/0009-2509(72)80096-4.
[2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[3] Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.
[1] Robinson, Donald B, and Ding-Yu Peng. The Characterization of the Heptanes and Heavier Fractions for the GPA
Peng-Robinson Programs. Tulsa, Okla.: Gas Processors Association, 1978.
[2] Robinson, Donald B., Ding-Yu Peng, and Samuel Y-K Chung. “The Development of the Peng - Robinson Equation
and Its Application to Phase Equilibrium in a System Containing Methanol.” Fluid Phase Equilibria 24, no. 1
(January 1, 1985): 25-41. doi:10.1016/0378-3812(85)87035-7.

Bibliography 487
thermo Documentation, Release 0.1

[1] Stryjek, R., and J. H. Vera. “PRSV: An Improved Peng-Robinson Equation of State for Pure Com-
pounds and Mixtures.” The Canadian Journal of Chemical Engineering 64, no. 2 (April 1, 1986): 323-33.
doi:10.1002/cjce.5450640224.
[2] Stryjek, R., and J. H. Vera. “PRSV - An Improved Peng-Robinson Equation of State with New Mixing Rules for
Strongly Nonideal Mixtures.” The Canadian Journal of Chemical Engineering 64, no. 2 (April 1, 1986): 334-40.
doi:10.1002/cjce.5450640225.
[3] Stryjek, R., and J. H. Vera. “Vapor-liquid Equilibrium of Hydrochloric Acid Solutions with the PRSV Equation of
State.” Fluid Phase Equilibria 25, no. 3 (January 1, 1986): 279-90. doi:10.1016/0378-3812(86)80004-8.
[4] Proust, P., and J. H. Vera. “PRSV: The Stryjek-Vera Modification of the Peng-Robinson Equation of State. Param-
eters for Other Pure Compounds of Industrial Interest.” The Canadian Journal of Chemical Engineering 67, no. 1
(February 1, 1989): 170-73. doi:10.1002/cjce.5450670125.
[1] Stryjek, R., and J. H. Vera. “PRSV2: A Cubic Equation of State for Accurate Vapor-liquid Equilib-
ria Calculations.” The Canadian Journal of Chemical Engineering 64, no. 5 (October 1, 1986): 820-26.
doi:10.1002/cjce.5450640516.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[2] Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.
[1] Redlich, Otto., and J. N. S. Kwong. “On the Thermodynamics of Solutions. V. An Equation of State. Fugacities
of Gaseous Solutions.” Chemical Reviews 44, no. 1 (February 1, 1949): 233-44. doi:10.1021/cr60137a013.
[2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[3] Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.
[1] API Technical Data Book: General Properties & Characterization. American Petroleum Institute, 7E, 2005.
[1] Twu, Chorng H., John E. Coon, and John R. Cunningham. “A New Generalized Alpha Function for a Cubic
Equation of State Part 1. Peng-Robinson Equation.” Fluid Phase Equilibria 105, no. 1 (March 15, 1995): 49-59.
doi:10.1016/0378-3812(94)02601-V.
[1] Twu, Chorng H., John E. Coon, and John R. Cunningham. “A New Generalized Alpha Function for a Cubic
Equation of State Part 2. Redlich-Kwong Equation.” Fluid Phase Equilibria 105, no. 1 (March 15, 1995): 61-69.
doi:10.1016/0378-3812(94)02602-W.
[1] Young, André F., Fernando L. P. Pessoa, and Victor R. R. Ahón. “Comparison of 20 Alpha Functions Applied
in the Peng–Robinson Equation of State for Vapor Pressure Estimation.” Industrial & Engineering Chemistry
Research 55, no. 22 (June 8, 2016): 6506-16. doi:10.1021/acs.iecr.6b00721.
[1] Almeida, G. S., M. Aznar, and A. S. Telles. “Uma Nova Forma de Dependência Com a Temperatura Do Termo
Atrativo de Equações de Estado Cúbicas.” RBE, Rev. Bras. Eng., Cad. Eng. Quim 8 (1991): 95.
[1] Androulakis, I. P., N. S. Kalospiros, and D. P. Tassios. “Thermophysical Properties of Pure Polar and Nonpolar
Compounds with a Modified VdW-711 Equation of State.” Fluid Phase Equilibria 45, no. 2 (April 1, 1989): 135-
63. doi:10.1016/0378-3812(89)80254-7.
[1] Chen, Zehua, and Daoyong Yang. “Optimization of the Reduced Temperature Associated with Peng–Robinson
Equation of State and Soave-Redlich-Kwong Equation of State To Improve Vapor Pressure Predic-
tion for Heavy Hydrocarbon Compounds.” Journal of Chemical & Engineering Data, August 31, 2017.
doi:10.1021/acs.jced.7b00496.
[1] Coquelet, C., A. Chapoy, and D. Richon. “Development of a New Alpha Function for the Peng–Robinson
Equation of State: Comparative Study of Alpha Function Models for Pure Gases (Natural Gas Compo-
nents) and Water-Gas Systems.” International Journal of Thermophysics 25, no. 1 (January 1, 2004): 133-58.
doi:10.1023/B:IJOT.0000022331.46865.2f.

488 Bibliography
thermo Documentation, Release 0.1

[1] Gasem, K. A. M, W Gao, Z Pan, and R. L Robinson Jr. “A Modified Temperature Dependence for the Peng-
Robinson Equation of State.” Fluid Phase Equilibria 181, no. 1–2 (May 25, 2001): 113-25. doi:10.1016/S0378-
3812(01)00488-5.
[1] Gibbons, Richard M., and Andrew P. Laughton. “An Equation of State for Polar and Non-Polar Substances and
Mixtures” 80, no. 9 (January 1, 1984): 1019-38. doi:10.1039/F29848001019.
[1] Haghtalab, A., M. J. Kamali, S. H. Mazloumi, and P. Mahmoodi. “A New Three-Parameter Cubic Equation of
State for Calculation Physical Properties and Vapor-liquid Equilibria.” Fluid Phase Equilibria 293, no. 2 (June 25,
2010): 209-18. doi:10.1016/j.fluid.2010.03.029.
[1] Harmens, A., and H. Knapp. “Three-Parameter Cubic Equation of State for Normal Substances.” Industrial &
Engineering Chemistry Fundamentals 19, no. 3 (August 1, 1980): 291-94. doi:10.1021/i160075a010.
[1] Heyen, G. Liquid and Vapor Properties from a Cubic Equation of State. In “Proceedings of the 2nd International
Conference on Phase Equilibria and Fluid Properties in the Chemical Industry”. DECHEMA: Frankfurt, 1980; p
9-13.
[1] Mathias, Paul M. “A Versatile Phase Equilibrium Equation of State.” Industrial & Engineering Chemistry Process
Design and Development 22, no. 3 (July 1, 1983): 385-91. doi:10.1021/i200022a008.
[1] Mathias, Paul M., and Thomas W. Copeman. “Extension of the Peng-Robinson Equation of State to Complex
Mixtures: Evaluation of the Various Forms of the Local Composition Concept.” Fluid Phase Equilibria 13 (January
1, 1983): 91-108. doi:10.1016/0378-3812(83)80084-3.
[1] Melhem, Georges A., Riju Saini, and Bernard M. Goodwin. “A Modified Peng-Robinson Equation of State.” Fluid
Phase Equilibria 47, no. 2 (August 1, 1989): 189-237. doi:10.1016/0378-3812(89)80176-1.
[1] Saffari, Hamid, and Alireza Zahedi. “A New Alpha-Function for the Peng-Robinson Equation of State: Ap-
plication to Natural Gas.” Chinese Journal of Chemical Engineering 21, no. 10 (October 1, 2013): 1155-61.
doi:10.1016/S1004-9541(13)60581-9.
[1] J. Schwartzentruber, H. Renon, and S. Watanasiri, “K-values for Non-Ideal Systems:An Easier Way,” Chem. Eng.,
March 1990, 118-124.
[1] Soave, Giorgio. “Equilibrium Constants from a Modified Redlich- Kwong Equation of State.” Chemical Engineer-
ing Science 27, no. 6 (June 1972): 1197-1203. doi:10.1016/0009-2509(72)80096-4.
[1] Soave, G. “Improvement of the Van Der Waals Equation of State.” Chemical Engineering Science 39, no. 2
(January 1, 1984): 357-69. doi:10.1016/0009-2509(84)80034-2.
[1] Soave, G. “Improving the Treatment of Heavy Hydrocarbons by the SRK EOS.” Fluid Phase Equilibria 84 (April
1, 1993): 339-42. doi:10.1016/0378-3812(93)85131-5.
[1] Trebble, M. A., and P. R. Bishnoi. “Development of a New Four- Parameter Cubic Equation of State.” Fluid Phase
Equilibria 35, no. 1 (September 1, 1987): 1-18. doi:10.1016/0378-3812(87)80001-8.
[1] Twu, Chorng H., David Bluck, John R. Cunningham, and John E. Coon. “A Cubic Equation of State with a New Al-
pha Function and a New Mixing Rule.” Fluid Phase Equilibria 69 (December 10, 1991): 33-50. doi:10.1016/0378-
3812(91)90024-2.
[1] Yu, Jin-Min, and Benjamin C. -Y. Lu. “A Three-Parameter Cubic Equation of State for Asymmetric Mixture Den-
sity Calculations.” Fluid Phase Equilibria 34, no. 1 (January 1, 1987): 1-19. doi:10.1016/0378-3812(87)85047-1.
[1] Hu, Jiawen, Rong Wang, and Shide Mao. “Some Useful Expressions for Deriving Component Fugacity Co-
efficients from Mixture Fugacity Coefficient.” Fluid Phase Equilibria 268, no. 1-2 (June 25, 2008): 7-13.
doi:10.1016/j.fluid.2008.03.007.
[2] Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.
[1] Peng, Ding-Yu, and Donald B. Robinson. “A New Two-Constant Equation of State.” Industrial & Engineering
Chemistry Fundamentals 15, no. 1 (February 1, 1976): 59-64. doi:10.1021/i160057a011.

Bibliography 489
thermo Documentation, Release 0.1

[2] Robinson, Donald B., Ding-Yu Peng, and Samuel Y-K Chung. “The Development of the Peng - Robinson Equation
and Its Application to Phase Equilibrium in a System Containing Methanol.” Fluid Phase Equilibria 24, no. 1
(January 1, 1985): 25-41. doi:10.1016/0378-3812(85)87035-7.
[1] Peng, Ding-Yu, and Donald B. Robinson. “A New Two-Constant Equation of State.” Industrial & Engineering
Chemistry Fundamentals 15, no. 1 (February 1, 1976): 59-64. doi:10.1021/i160057a011.
[2] Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.
[1] Soave, Giorgio. “Equilibrium Constants from a Modified Redlich-Kwong Equation of State.” Chemical Engineer-
ing Science 27, no. 6 (June 1972): 1197-1203. doi:10.1016/0009-2509(72)80096-4.
[2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[3] Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.
[1] Soave, Giorgio. “Equilibrium Constants from a Modified Redlich-Kwong Equation of State.” Chemical Engineer-
ing Science 27, no. 6 (June 1972): 1197-1203. doi:10.1016/0009-2509(72)80096-4.
[2] Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.
[1] Peng, Ding-Yu, and Donald B. Robinson. “A New Two-Constant Equation of State.” Industrial & Engineering
Chemistry Fundamentals 15, no. 1 (February 1, 1976): 59-64. doi:10.1021/i160057a011.
[2] Robinson, Donald B., Ding-Yu Peng, and Samuel Y-K Chung. “The Development of the Peng - Robinson Equation
and Its Application to Phase Equilibrium in a System Containing Methanol.” Fluid Phase Equilibria 24, no. 1
(January 1, 1985): 25-41. doi:10.1016/0378-3812(85)87035-7.
[1] Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.
[2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.
[1] Stryjek, R., and J. H. Vera. “PRSV: An Improved Peng-Robinson Equation of State for Pure Com-
pounds and Mixtures.” The Canadian Journal of Chemical Engineering 64, no. 2 (April 1, 1986): 323-33.
doi:10.1002/cjce.5450640224.
[2] Stryjek, R., and J. H. Vera. “PRSV - An Improved Peng-Robinson Equation of State with New Mixing Rules for
Strongly Nonideal Mixtures.” The Canadian Journal of Chemical Engineering 64, no. 2 (April 1, 1986): 334-40.
doi:10.1002/cjce.5450640225.
[3] Stryjek, R., and J. H. Vera. “Vapor-liquid Equilibrium of Hydrochloric Acid Solutions with the PRSV Equation of
State.” Fluid Phase Equilibria 25, no. 3 (January 1, 1986): 279-90. doi:10.1016/0378-3812(86)80004-8.
[4] Proust, P., and J. H. Vera. “PRSV: The Stryjek-Vera Modification of the Peng-Robinson Equation of State. Param-
eters for Other Pure Compounds of Industrial Interest.” The Canadian Journal of Chemical Engineering 67, no. 1
(February 1, 1989): 170-73. doi:10.1002/cjce.5450670125.
[1] Stryjek, R., and J. H. Vera. “PRSV2: A Cubic Equation of State for Accurate Vapor-liquid Equilib-
ria Calculations.” The Canadian Journal of Chemical Engineering 64, no. 5 (October 1, 1986): 820-26.
doi:10.1002/cjce.5450640516.
[1] Twu, Chorng H., John E. Coon, and John R. Cunningham. “A New Generalized Alpha Function for a Cubic
Equation of State Part 1. Peng-Robinson Equation.” Fluid Phase Equilibria 105, no. 1 (March 15, 1995): 49-59.
doi:10.1016/0378-3812(94)02601-V.
[1] Twu, Chorng H., John E. Coon, and John R. Cunningham. “A New Generalized Alpha Function for a Cubic
Equation of State Part 2. Redlich-Kwong Equation.” Fluid Phase Equilibria 105, no. 1 (March 15, 1995): 61-69.
doi:10.1016/0378-3812(94)02602-W.
[1] API Technical Data Book: General Properties & Characterization. American Petroleum Institute, 7E, 2005.

490 Bibliography
thermo Documentation, Release 0.1

[1] IPCC. “2.10.2 Direct Global Warming Potentials - AR4 WGI Chapter 2: Changes in Atmospheric Constituents
and in Radiative Forcing.” 2007. https://www.ipcc.ch/publications_and_data/ar4/wg1/en/ch2s2-10-2.html.
[1] US EPA, OAR. “Ozone-Depleting Substances.” Accessed April 26, 2016. https://www.epa.gov/
ozone-layer-protection/ozone-depleting-substances.
[2] WMO (World Meteorological Organization), 2011: Scientific Assessment of Ozone Depletion: 2010. Global
Ozone Research and Monitoring Project-Report No. 52, Geneva, Switzerland, 516 p. https://www.wmo.int/pages/
prog/arep/gaw/ozone_2010/documents/Ozone-Assessment-2010-complete.pdf
[1] Syrres. 2006. KOWWIN Data, SrcKowData2.zip. http://esc.syrres.com/interkow/Download/SrcKowData2.zip
[2] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics, 95E. Boca Raton,
FL: CRC press, 2014.
[1] Lastovka, Vaclav, and John M. Shaw. “Predictive Correlations for Ideal Gas Heat Capacities of Pure
Hydrocarbons and Petroleum Fractions.” Fluid Phase Equilibria 356 (October 25, 2013): 338-370.
doi:10.1016/j.fluid.2013.07.023.
[1] Lastovka, Vaclav, and John M. Shaw. “Predictive Correlations for Ideal Gas Heat Capacities of Pure
Hydrocarbons and Petroleum Fractions.” Fluid Phase Equilibria 356 (October 25, 2013): 338-370.
doi:10.1016/j.fluid.2013.07.023.
[1] Lastovka, Vaclav, and John M. Shaw. “Predictive Correlations for Ideal Gas Heat Capacities of Pure
Hydrocarbons and Petroleum Fractions.” Fluid Phase Equilibria 356 (October 25, 2013): 338-370.
doi:10.1016/j.fluid.2013.07.023.
[1] Kabo, G. J., and G. N. Roganov. Thermodynamics of Organic Compounds in the Gas State, Volume II: V. 2.
College Station, Tex: CRC Press, 1994.
[1] Kabo, G. J., and G. N. Roganov. Thermodynamics of Organic Compounds in the Gas State, Volume II: V. 2.
College Station, Tex: CRC Press, 1994.
[1] Kabo, G. J., and G. N. Roganov. Thermodynamics of Organic Compounds in the Gas State, Volume II: V. 2.
College Station, Tex: CRC Press, 1994.
[1] Kabo, G. J., and G. N. Roganov. Thermodynamics of Organic Compounds in the Gas State, Volume II: V. 2.
College Station, Tex: CRC Press, 1994.
[2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[3] Bell, Ian H., Jorrit Wronski, Sylvain Quoilin, and Vincent Lemort. “Pure and Pseudo-Pure Fluid Thermophysical
Property Evaluation and the Open-Source Thermophysical Property Library CoolProp.” Industrial & Engineering
Chemistry Research 53, no. 6 (February 12, 2014): 2498-2508. doi:10.1021/ie4033999. http://www.coolprop.org/
[4] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics. [Boca Raton,
FL]: CRC press, 2014.
[5] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[2] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010.
[3] J.S. Rowlinson, Liquids and Liquid Mixtures, 2nd Ed., Butterworth, London (1969).
[1] Dadgostar, Nafiseh, and John M. Shaw. “A Predictive Correlation for the Constant-Pressure Specific Heat Ca-
pacity of Pure and Ill-Defined Liquid Hydrocarbons.” Fluid Phase Equilibria 313 (January 15, 2012): 211-226.
doi:10.1016/j.fluid.2011.09.015.
[1] Zabransky, M., V. Ruzicka Jr, V. Majer, and Eugene S. Domalski. Heat Capacity of Liquids: Critical Review and
Recommended Values. 2 Volume Set. Washington, D.C.: Amer Inst of Physics, 1996.

Bibliography 491
thermo Documentation, Release 0.1

[1] Zabransky, M., V. Ruzicka Jr, V. Majer, and Eugene S. Domalski. Heat Capacity of Liquids: Critical Review and
Recommended Values. 2 Volume Set. Washington, D.C.: Amer Inst of Physics, 1996.
[1] Zabransky, M., V. Ruzicka Jr, V. Majer, and Eugene S. Domalski. Heat Capacity of Liquids: Critical Review and
Recommended Values. 2 Volume Set. Washington, D.C.: Amer Inst of Physics, 1996.
[1] Zabransky, M., V. Ruzicka Jr, V. Majer, and Eugene S. Domalski. Heat Capacity of Liquids: Critical Review and
Recommended Values. 2 Volume Set. Washington, D.C.: Amer Inst of Physics, 1996.
[1] Zabransky, M., V. Ruzicka Jr, V. Majer, and Eugene S. Domalski. Heat Capacity of Liquids: Critical Review and
Recommended Values. 2 Volume Set. Washington, D.C.: Amer Inst of Physics, 1996.
[1] Zabransky, M., V. Ruzicka Jr, V. Majer, and Eugene S. Domalski. Heat Capacity of Liquids: Critical Review and
Recommended Values. 2 Volume Set. Washington, D.C.: Amer Inst of Physics, 1996.
[1] Zabransky, M., V. Ruzicka Jr, V. Majer, and Eugene S. Domalski. Heat Capacity of Liquids: Critical Review and
Recommended Values. 2 Volume Set. Washington, D.C.: Amer Inst of Physics, 1996.
[1] Zabransky, M., V. Ruzicka Jr, V. Majer, and Eugene S. Domalski. Heat Capacity of Liquids: Critical Review and
Recommended Values. 2 Volume Set. Washington, D.C.: Amer Inst of Physics, 1996.
[1] Zabransky, M., V. Ruzicka Jr, V. Majer, and Eugene S. Domalski. Heat Capacity of Liquids: Critical Review and
Recommended Values. 2 Volume Set. Washington, D.C.: Amer Inst of Physics, 1996.
[2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[3] Bell, Ian H., Jorrit Wronski, Sylvain Quoilin, and Vincent Lemort. “Pure and Pseudo-Pure Fluid Thermophysical
Property Evaluation and the Open-Source Thermophysical Property Library CoolProp.” Industrial & Engineering
Chemistry Research 53, no. 6 (February 12, 2014): 2498-2508. doi:10.1021/ie4033999. http://www.coolprop.org/
[4] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics. [Boca Raton,
FL]: CRC press, 2014.
[5] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010.
[1] Laštovka, Václav, Michal Fulem, Mildred Becerra, and John M. Shaw. “A Similarity Variable for Estimating
the Heat Capacity of Solid Organic Compounds: Part II. Application: Heat Capacity Calculation for Ill-Defined
Organic Solids.” Fluid Phase Equilibria 268, no. 1-2 (June 25, 2008): 134-41. doi:10.1016/j.fluid.2008.03.018.
[1] Laštovka, Václav, Michal Fulem, Mildred Becerra, and John M. Shaw. “A Similarity Variable for Estimating
the Heat Capacity of Solid Organic Compounds: Part II. Application: Heat Capacity Calculation for Ill-Defined
Organic Solids.” Fluid Phase Equilibria 268, no. 1-2 (June 25, 2008): 134-41. doi:10.1016/j.fluid.2008.03.018.
[1] Laštovka, Václav, Michal Fulem, Mildred Becerra, and John M. Shaw. “A Similarity Variable for Estimating
the Heat Capacity of Solid Organic Compounds: Part II. Application: Heat Capacity Calculation for Ill-Defined
Organic Solids.” Fluid Phase Equilibria 268, no. 1-2 (June 25, 2008): 134-41. doi:10.1016/j.fluid.2008.03.018.
[1] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics. [Boca Raton,
FL]: CRC press, 2014.
[2] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill Profes-
sional, 2007.
[1] Pubchem.
[1] Pubchem.
[1] Diky, Vladimir, Robert D. Chirico, Chris D. Muzny, Andrei F. Kazakov, Kenneth Kroenlein, Joseph W. Magee,
Ilmutdin Abdulagatov, and Michael Frenkel. “ThermoData Engine (TDE): Software Implementation of the Dy-
namic Data Evaluation Concept.” Journal of Chemical Information and Modeling 53, no. 12 (2013): 3418-30.
doi:10.1021/ci4005699.
[1] Somayajulu, G. R. “A Generalized Equation for Surface Tension from the Triple Point to the Critical Point.”
International Journal of Thermophysics 9, no. 4 (July 1988): 559-66. doi:10.1007/BF00503154.

492 Bibliography
thermo Documentation, Release 0.1

[1] Jasper, Joseph J. “The Surface Tension of Pure Liquid Compounds.” Journal of Physical and Chemical Reference
Data 1, no. 4 (October 1, 1972): 841-1010. doi:10.1063/1.3253106.
[2] Speight, James. Lange’s Handbook of Chemistry. 16 edition. McGraw-Hill Professional, 2005.
[1] Brock, James R., and R. Byron Bird. “Surface Tension and the Principle of Corresponding States.” AIChE Journal
1, no. 2 (June 1, 1955): 174-77. doi:10.1002/aic.690010208
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[2] Curl, R. F., and Kenneth Pitzer. “Volumetric and Thermodynamic Properties of Fluids-Enthalpy, Free Energy, and
Entropy.” Industrial & Engineering Chemistry 50, no. 2 (February 1, 1958): 265-74. doi:10.1021/ie50578a047
[3] Pitzer, K. S.: Thermodynamics, 3d ed., New York, McGraw-Hill, 1995, p. 521.
[1] Sastri, S. R. S., and K. K. Rao. “A Simple Method to Predict Surface Tension of Organic Liquids.” The
Chemical Engineering Journal and the Biochemical Engineering Journal 59, no. 2 (October 1995): 181-86.
doi:10.1016/0923-0467(94)02946-6.
[1] Zuo, You-Xiang, and Erling H. Stenby. “Corresponding-States and Parachor Models for the Calculation of In-
terfacial Tensions.” The Canadian Journal of Chemical Engineering 75, no. 6 (December 1, 1997): 1130-37.
doi:10.1002/cjce.5450750617
[1] Hakim, D. I., David Steinberg, and L. I. Stiel. “Generalized Relationship for the Surface Tension of Po-
lar Fluids.” Industrial & Engineering Chemistry Fundamentals 10, no. 1 (February 1, 1971): 174-75.
doi:10.1021/i160037a032.
[1] Miqueu, C, D Broseta, J Satherley, B Mendiboure, J Lachaise, and A Graciaa. “An Extended Scaled Equation for
the Temperature Dependence of the Surface Tension of Pure Compounds Inferred from an Analysis of Experi-
mental Data.” Fluid Phase Equilibria 172, no. 2 (July 5, 2000): 169-82. doi:10.1016/S0378-3812(00)00384-8.
[1] Aleem, W., N. Mellon, S. Sufian, M. I. A. Mutalib, and D. Subbarao. “A Model for the Estimation of Surface
Tension of Pure Hydrocarbon Liquids.” Petroleum Science and Technology 33, no. 23-24 (December 17, 2015):
1908-15. doi:10.1080/10916466.2015.1110593.
[1] Somayajulu, G. R. “A Generalized Equation for Surface Tension from the Triple Point to the Critical Point.”
International Journal of Thermophysics 9, no. 4 (July 1988): 559-66. doi:10.1007/BF00503154.
[2] Mulero, A., M. I. Parra, and I. Cachadina. “The Somayajulu Correlation for the Surface Tension Revisited.” Fluid
Phase Equilibria 339 (February 15, 2013): 81-88. doi:10.1016/j.fluid.2012.11.038.
[3] Jasper, Joseph J. “The Surface Tension of Pure Liquid Compounds.” Journal of Physical and Chemical Reference
Data 1, no. 4 (October 1, 1972): 841-1010. doi:10.1063/1.3253106.
[4] Speight, James. Lange’s Handbook of Chemistry. 16 edition. McGraw-Hill Professional, 2005.
[5] Mulero, A., I. Cachadiña, and M. I. Parra. “Recommended Correlations for the Surface Tension of Com-
mon Fluids.” Journal of Physical and Chemical Reference Data 41, no. 4 (December 1, 2012): 043105.
doi:10.1063/1.4768782.
[6] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010.
[1] Winterfeld, P. H., L. E. Scriven, and H. T. Davis. “An Approximate Theory of Interfacial Tensions of Multicom-
ponent Systems: Applications to Binary Liquid-Vapor Tensions.” AIChE Journal 24, no. 6 (November 1, 1978):
1010-14. doi:10.1002/aic.690240610.
[2] Danner, Ronald P, and Design Institute for Physical Property Data. Manual for Predicting Chemical Process De-
sign Data. New York, N.Y, 1982.
[1] Diguilio, Ralph, and Amyn S. Teja. “Correlation and Prediction of the Surface Tensions of Mixtures.” The Chem-
ical Engineering Journal 38, no. 3 (July 1988): 205-8. doi:10.1016/0300-9467(88)80079-0.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.

Bibliography 493
thermo Documentation, Release 0.1

[1] Joback, Kevin G. “A Unified Approach to Physical Property Estimation Using Multivariate Statistical Techniques.”
Thesis, Massachusetts Institute of Technology, 1984.
[2] Joback, K.G., and R.C. Reid. “Estimation of Pure-Component Properties from Group-Contributions.” Chemical
Engineering Communications 57, no. 1-6 (July 1, 1987): 233-43. doi:10.1080/00986448708960487.
[1] Government of Canada.. “Substances Lists” Feb 11, 2015. https://www.ec.gc.ca/subsnouvelles-newsubs/default.
asp?n=47F768FE-1.
[2] US EPA. “TSCA Chemical Substance Inventory.” Accessed April 2016. https://www.epa.gov/tsca-inventory.
[3] ECHA. “EC Inventory”. Accessed March 2015. http://echa.europa.eu/information-on-chemicals/ec-inventory.
[4] SPIN. “SPIN Substances in Products In Nordic Countries.” Accessed March 2015. http://195.215.202.233/
DotNetNuke/default.aspx.
[1] Bird, R. Byron, Warren E. Stewart, and Edwin N. Lightfoot. Transport Phenomena, Revised 2nd Edition. New
York: John Wiley & Sons, Inc., 2006
[2] Magalhães, Ana L., Patrícia F. Lito, Francisco A. Da Silva, and Carlos M. Silva. “Simple and Accurate Correla-
tions for Diffusion Coefficients of Solutes in Liquids and Supercritical Fluids over Wide Ranges of Temperature
and Density.” The Journal of Supercritical Fluids 76 (April 2013): 94-114. doi:10.1016/j.supflu.2013.02.002.
[1] Bird, R. Byron, Warren E. Stewart, and Edwin N. Lightfoot. Transport Phenomena, Revised 2nd Edition. New
York: John Wiley & Sons, Inc., 2006
[2] Magalhães, Ana L., Patrícia F. Lito, Francisco A. Da Silva, and Carlos M. Silva. “Simple and Accurate Correla-
tions for Diffusion Coefficients of Solutes in Liquids and Supercritical Fluids over Wide Ranges of Temperature
and Density.” The Journal of Supercritical Fluids 76 (April 2013): 94-114. doi:10.1016/j.supflu.2013.02.002.
[1] Flynn, L.W., M.S. thesis, Northwestern Univ., Evanston, Ill. (1960).
[2] Stiel, L. I., and George Thodos. “Lennard-Jones Force Constants Predicted from Critical Properties.” Journal of
Chemical & Engineering Data 7, no. 2 (April 1, 1962): 234-36. doi:10.1021/je60013a023
[1] Bird, R. Byron, Warren E. Stewart, and Edwin N. Lightfoot. Transport Phenomena, Revised 2nd Edition. New
York: John Wiley & Sons, Inc., 2006
[1] Bird, R. Byron, Warren E. Stewart, and Edwin N. Lightfoot. Transport Phenomena, Revised 2nd Edition. New
York: John Wiley & Sons, Inc., 2006
[1] Bird, R. Byron, Warren E. Stewart, and Edwin N. Lightfoot. Transport Phenomena, Revised 2nd Edition. New
York: John Wiley & Sons, Inc., 2006
[1] Bird, R. Byron, Warren E. Stewart, and Edwin N. Lightfoot. Transport Phenomena, Revised 2nd Edition. New
York: John Wiley & Sons, Inc., 2006
[1] Stiel, L. I., and George Thodos. “Lennard-Jones Force Constants Predicted from Critical Properties.” Journal of
Chemical & Engineering Data 7, no. 2 (April 1, 1962): 234-36. doi:10.1021/je60013a023
[1] Tee, L. S., Sukehiro Gotoh, and W. E. Stewart. “Molecular Parameters for Normal Fluids. Lennard-Jones
12-6 Potential.” Industrial & Engineering Chemistry Fundamentals 5, no. 3 (August 1, 1966): 356-63.
doi:10.1021/i160019a011
[1] Tee, L. S., Sukehiro Gotoh, and W. E. Stewart. “Molecular Parameters for Normal Fluids. Lennard-Jones
12-6 Potential.” Industrial & Engineering Chemistry Fundamentals 5, no. 3 (August 1, 1966): 356-63.
doi:10.1021/i160019a011
[1] Silva, Carlos M., Hongqin Liu, and Eugenia A. Macedo. “Models for Self-Diffusion Coefficients of Dense Fluids,
Including Hydrogen-Bonding Substances.” Chemical Engineering Science 53, no. 13 (July 1, 1998): 2423-29.
doi:10.1016/S0009-2509(98)00037-2
[1] Flynn, L.W., M.S. thesis, Northwestern Univ., Evanston, Ill. (1960).

494 Bibliography
thermo Documentation, Release 0.1

[2] Stiel, L. I., and George Thodos. “Lennard-Jones Force Constants Predicted from Critical Properties.” Journal of
Chemical & Engineering Data 7, no. 2 (April 1, 1962): 234-36. doi:10.1021/je60013a023
[1] Bird, R. Byron, Warren E. Stewart, and Edwin N. Lightfoot. Transport Phenomena, Revised 2nd Edition. New
York: John Wiley & Sons, Inc., 2006
[1] Bird, R. Byron, Warren E. Stewart, and Edwin N. Lightfoot. Transport Phenomena, Revised 2nd Edition. New
York: John Wiley & Sons, Inc., 2006
[1] Bird, R. Byron, Warren E. Stewart, and Edwin N. Lightfoot. Transport Phenomena, Revised 2nd Edition. New
York: John Wiley & Sons, Inc., 2006
[1] Stiel, L. I., and George Thodos. “Lennard-Jones Force Constants Predicted from Critical Properties.” Journal of
Chemical & Engineering Data 7, no. 2 (April 1, 1962): 234-36. doi:10.1021/je60013a023
[1] Tee, L. S., Sukehiro Gotoh, and W. E. Stewart. “Molecular Parameters for Normal Fluids. Lennard-Jones
12-6 Potential.” Industrial & Engineering Chemistry Fundamentals 5, no. 3 (August 1, 1966): 356-63.
doi:10.1021/i160019a011
[1] Tee, L. S., Sukehiro Gotoh, and W. E. Stewart. “Molecular Parameters for Normal Fluids. Lennard-Jones
12-6 Potential.” Industrial & Engineering Chemistry Fundamentals 5, no. 3 (August 1, 1966): 356-63.
doi:10.1021/i160019a011
[1] Neufeld, Philip D., A. R. Janzen, and R. A. Aziz. “Empirical Equations to Calculate 16 of the Transport Collision
Integrals Omega(l, S)* for the Lennard-Jones (12-6) Potential.” The Journal of Chemical Physics 57, no. 3 (August
1, 1972): 1100-1102. doi:10.1063/1.1678363
[1] Kim, Sun Ung, and Charles W. Monroe. “High-Accuracy Calculations of Sixteen Collision Integrals for Lennard-
Jones (12-6) Gases and Their Interpolation to Parameterize Neon, Argon, and Krypton.” Journal of Computational
Physics 273 (September 15, 2014): 358-73. doi:10.1016/j.jcp.2014.05.018.
[1] Bird, R. Byron, Warren E. Stewart, and Edwin N. Lightfoot. Transport Phenomena, Revised 2nd Edition. New
York: John Wiley & Sons, Inc., 2006
[1] Gesellschaft, VDI, ed. VDI Heat Atlas. 2E. Berlin: Springer, 2010.
[1] IAPWS. 1997. Release on the Static Dielectric Constant of Ordinary Water Substance for Temperatures from 238
K to 873 K and Pressures up to 1000 MPa.
[1] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics. [Boca Raton,
FL]: CRC press, 2014.
[1] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics, 95E. Boca Raton,
FL: CRC press, 2014.
[2] Yaws, Carl L. Thermophysical Properties of Chemicals and Hydrocarbons, Second Edition. Amsterdam Boston:
Gulf Professional Publishing, 2014.
[1] Bradley, Jean-Claude, Antony Williams, and Andrew Lang. “Jean-Claude Bradley Open Melting Point Dataset”,
May 20, 2014. https://figshare.com/articles/Jean_Claude_Bradley_Open_Melting_Point_Datset/1031637.
[2] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics, 95E. Boca Raton,
FL: CRC press, 2014.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Pitzer, Kenneth S. “The Volumetric and Thermodynamic Properties of Fluids. I. Theoretical Basis and Virial Coef-
ficients.” Journal of the American Chemical Society 77, no. 13 (July 1, 1955): 3427-33. doi:10.1021/ja01618a001
[2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[3] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill Profes-
sional, 2007.

Bibliography 495
thermo Documentation, Release 0.1

[1] Sivaraman, Alwarappa, Joe W. Magee, and Riki Kobayashi. “Generalized Correlation of Latent Heats of Va-
porization of Coal-Liquid Model Compounds between Their Freezing Points and Critical Points.” Industrial &
Engineering Chemistry Fundamentals 23, no. 1 (February 1, 1984): 97-100. doi:10.1021/i100013a017.
[1] Morgan, David L., and Riki Kobayashi. “Extension of Pitzer CSP Models for Vapor Pressures and Heats of Va-
porization to Long-Chain Hydrocarbons.” Fluid Phase Equilibria 94 (March 15, 1994): 51-87. doi:10.1016/0378-
3812(94)87051-9.
[1] Velasco, S., M. J. Santos, and J. A. White. “Extended Corresponding States Expressions for the Changes in
Enthalpy, Compressibility Factor and Constant-Volume Heat Capacity at Vaporization.” The Journal of Chemical
Thermodynamics 85 (June 2015): 68-76. doi:10.1016/j.jct.2015.01.011.
[1] Riedel, L. “Eine Neue Universelle Dampfdruckformel Untersuchungen Uber Eine Erweiterung Des Theorems
Der Ubereinstimmenden Zustande. Teil I.” Chemie Ingenieur Technik 26, no. 2 (February 1, 1954): 83-89.
doi:10.1002/cite.330260206.
[2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[3] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill Profes-
sional, 2007.
[1] Chen, N. H. “Generalized Correlation for Latent Heat of Vaporization.” Journal of Chemical & Engineering Data
10, no. 2 (April 1, 1965): 207-10. doi:10.1021/je60025a047
[2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] LIU, ZHI-YONG. “Estimation of Heat of Vaporization of Pure Liquid at Its Normal Boiling Temperature.” Chem-
ical Engineering Communications 184, no. 1 (February 1, 2001): 221-28. doi:10.1080/00986440108912849.
[1] Vetere, Alessandro. “Methods to Predict the Vaporization Enthalpies at the Normal Boiling Temperature of
Pure Compounds Revisited.” Fluid Phase Equilibria 106, no. 1-2 (May 1, 1995): 1–10. doi:10.1016/0378-
3812(94)02627-D.
[2] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill Profes-
sional, 2007.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[2] Bell, Ian H., Jorrit Wronski, Sylvain Quoilin, and Vincent Lemort. “Pure and Pseudo-Pure Fluid Thermophysical
Property Evaluation and the Open-Source Thermophysical Property Library CoolProp.” Industrial & Engineering
Chemistry Research 53, no. 6 (February 12, 2014): 2498-2508. doi:10.1021/ie4033999. http://www.coolprop.org/
[3] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010.
[4] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics. [Boca Raton,
FL]: CRC press, 2014.
[5] Gharagheizi, Farhad, Poorandokht Ilani-Kashkouli, William E. Acree Jr., Amir H. Mohammadi, and Deresh
Ramjugernath. “A Group Contribution Model for Determining the Vaporization Enthalpy of Organic Compounds
at the Standard Reference Temperature of 298 K.” Fluid Phase Equilibria 360 (December 25, 2013): 279-92.
doi:10.1016/j.fluid.2013.09.021.
[6] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill Profes-
sional, 2007.
[7] Alibakhshi, Amin. “Enthalpy of Vaporization, Its Temperature Dependence and Correlation with Surface Tension:
A Theoretical Approach.” Fluid Phase Equilibria 432 (January 25, 2017): 62-69. doi:10.1016/j.fluid.2016.10.013.
[1] Albahri, Tareq A., and Abdulla F. Aljasmi. “SGC Method for Predicting the Standard Enthalpy of Formation
of Pure Compounds from Their Molecular Structures.” Thermochimica Acta 568 (September 20, 2013): 46-60.
doi:10.1016/j.tca.2013.06.020.

496 Bibliography
thermo Documentation, Release 0.1

[1] Ruscic, Branko, Reinhardt E. Pinzon, Gregor von Laszewski, Deepti Kodeboyina, Alexander Burcat, David Leahy,
David Montoy, and Albert F. Wagner. “Active Thermochemical Tables: Thermochemistry for the 21st Century.”
Journal of Physics: Conference Series 16, no. 1 (January 1, 2005): 561. doi:10.1088/1742-6596/16/1/078.
[1] Ruscic, Branko, Reinhardt E. Pinzon, Gregor von Laszewski, Deepti Kodeboyina, Alexander Burcat, David Leahy,
David Montoy, and Albert F. Wagner. “Active Thermochemical Tables: Thermochemistry for the 21st Century.”
Journal of Physics: Conference Series 16, no. 1 (January 1, 2005): 561. doi:10.1088/1742-6596/16/1/078.
[2] Frenkel, M. L, Texas Engineering Experiment Station, and Thermodynamics Research Center. Thermodynamics
of Organic Compounds in the Gas State. College Station, Tex.: Thermodynamics Research Center, 1994.
[1] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics, 95E. Boca Raton,
FL: CRC press, 2014.
[1] Panuganti, Sai R., Fei Wang, Walter G. Chapman, and Francisco M. Vargas. “A Simple Method for Estimation of
Dielectric Constants and Polarizabilities of Nonpolar and Slightly Polar Hydrocarbons.” International Journal of
Thermophysics 37, no. 7 (June 6, 2016): 1-24. doi:10.1007/s10765-016-2075-8.
[1] Panuganti, Sai R., Fei Wang, Walter G. Chapman, and Francisco M. Vargas. “A Simple Method for Estimation of
Dielectric Constants and Polarizabilities of Nonpolar and Slightly Polar Hydrocarbons.” International Journal of
Thermophysics 37, no. 7 (June 6, 2016): 1-24. doi:10.1007/s10765-016-2075-8.
[1] Panuganti, Sai R., Fei Wang, Walter G. Chapman, and Francisco M. Vargas. “A Simple Method for Estimation of
Dielectric Constants and Polarizabilities of Nonpolar and Slightly Polar Hydrocarbons.” International Journal of
Thermophysics 37, no. 7 (June 6, 2016): 1-24. doi:10.1007/s10765-016-2075-8.
[1] ACGIH. Industrial Ventilation: A Manual of Recommended Practice, 23rd Edition. American Conference of
Governmental and Industrial Hygenists, 2004.
[1] ACGIH. Industrial Ventilation: A Manual of Recommended Practice, 23rd Edition. American Conference of
Governmental and Industrial Hygenists, 2004.
[1] International Agency for Research on Cancer. Agents Classified by the IARC Monographs, Volumes 1-115. Lyon,
France: IARC; 2016 Available from: http://monographs.iarc.fr/ENG/Classification/
[2] NTP (National Toxicology Program). 2014. Report on Carcinogens, Thirteenth Edition. Research Triangle Park,
NC: U.S. Department of Health and Human Services, Public Health Service. http://ntp.niehs.nih.gov/pubhealth/
roc/roc13/
[1] IEC. “IEC 60079-20-1:2010 Explosive atmospheres - Part 20-1: Material characteristics for gas and vapour clas-
sification - 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] Serat, Fatima Zohra, Ali Mustapha Benkouider, Ahmed Yahiaoui, and Farid Bagui. “Nonlinear Group Contribu-
tion 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.
[1] IEC. “IEC 60079-20-1:2010 Explosive atmospheres - Part 20-1: Material characteristics for gas and vapour clas-
sification - 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.
[1] IEC. “IEC 60079-20-1:2010 Explosive atmospheres - Part 20-1: Material characteristics for gas and vapour clas-
sification - 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

Bibliography 497
thermo Documentation, Release 0.1

[2] National Fire Protection Association. NFPA 497: Recommended Practice for the Classification of Flammable
Liquids, Gases, or Vapors and of Hazardous. NFPA, 2008.
[1] IEC. “IEC 60079-20-1:2010 Explosive atmospheres - Part 20-1: Material characteristics for gas and vapour clas-
sification - 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.
[1] Suzuki, Takahiro. “Note: Empirical Relationship between Lower Flammability Limits and Standard En-
thalpies of Combustion of Organic Compounds.” Fire and Materials 18, no. 5 (September 1, 1994): 333-36.
doi:10.1002/fam.810180509.
[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.
[1] 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
[1] 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
[1] Barton, Allan F. M. CRC Handbook of Solubility Parameters and Other Cohesion Parameters, Second Edition.
CRC Press, 1991.
[1] Gmehling, Jurgen. Chemical Thermodynamics: For Process Simulation. Weinheim, Germany: Wiley-VCH, 2012.
[1] Gmehling, Jurgen. Chemical Thermodynamics: For Process Simulation. Weinheim, Germany: Wiley-VCH, 2012.
[1] Wier, Ron D., and Robert N. Goldberg. “On the Conversion of Thermodynamic Properties to the Basis of the
International Temperature Scale of 1990.” The Journal of Chemical Thermodynamics 28, no. 3 (March 1996):
261-76. doi:10.1006/jcht.1996.0026.
[2] Goldberg, Robert N., and R. D. Weir. “Conversion of Temperatures and Thermodynamic Properties to the Basis of
the International Temperature Scale of 1990 (Technical Report).” Pure and Applied Chemistry 64, no. 10 (1992):
1545-1562. doi:10.1351/pac199264101545.
[1] Bedford, R. E., G. Bonnier, H. Maas, and F. Pavese. “Techniques for Approximating the International Temperature
Scale of 1990.” Bureau International Des Poids et Mesures, Sfievres, 1990.
[2] Wier, Ron D., and Robert N. Goldberg. “On the Conversion of Thermodynamic Properties to the Basis of the
International Temperature Scale of 1990.” The Journal of Chemical Thermodynamics 28, no. 3 (March 1996):
261-76. doi:10.1006/jcht.1996.0026.
[3] Goldberg, Robert N., and R. D. Weir. “Conversion of Temperatures and Thermodynamic Properties to the Basis of
the International Temperature Scale of 1990 (Technical Report).” Pure and Applied Chemistry 64, no. 10 (1992):
1545-1562. doi:10.1351/pac199264101545.
[4] Code10.info. “Conversions among International Temperature Scales.” Accessed May 22, 2016.
http://www.code10.info/index.php%3Foption%3Dcom_content%26view%3Darticle%26id%3D83:
conversions-among-international-temperature-scales%26catid%3D60:temperature%26Itemid%3D83.
[1] Scheffy, W. J., and E. F. Johnson. “Thermal Conductivities of Liquids at High Temperatures.” Journal of Chemical
& Engineering Data 6, no. 2 (April 1, 1961): 245-49. doi:10.1021/je60010a019

498 Bibliography
thermo Documentation, Release 0.1

[1] Riedel, L.: Chem. Ing. Tech., 21, 349 (1949); 23: 59, 321, 465 (1951)
[2] Maejima, T., private communication, 1973
[3] Properties of Gases and Liquids”, 3rd Ed., McGraw-Hill, 1977
[1] Lakshmi, D. S., and D. H. L. Prasad. “A Rapid Estimation Method for Thermal Conductivity of Pure Liquids.”
The Chemical Engineering Journal 48, no. 3 (April 1992): 211-14. doi:10.1016/0300-9467(92)80037-B
[1] Gharagheizi, Farhad, Poorandokht Ilani-Kashkouli, Mehdi Sattari, Amir H. Mohammadi, Deresh Ramjuger-
nath, and Dominique Richon. “Development of a General Model for Determination of Thermal Conductivity
of Liquid Chemical Compounds at Atmospheric Pressure.” AIChE Journal 59, no. 5 (May 1, 2013): 1702-8.
doi:10.1002/aic.13938
[1] Nicola, Giovanni Di, Eleonora Ciarrocchi, Mariano Pierantozzi, and Roman Stryjek. “A New Equation for the
Thermal Conductivity of Organic Compounds.” Journal of Thermal Analysis and Calorimetry 116, no. 1 (April 1,
2014): 135-40. doi:10.1007/s10973-013-3422-7
[1] Di Nicola, Giovanni, Eleonora Ciarrocchi, Gianluca Coccia, and Mariano Pierantozzi. “Correlations of Thermal
Conductivity for Liquid Refrigerants at Atmospheric Pressure or near Saturation.” International Journal of Refrig-
eration. 2014. doi:10.1016/j.ijrefrig.2014.06.003
[1] Bahadori, Alireza, and Saeid Mokhatab. “Estimating Thermal Conductivity of Hydrocarbons.” Chemical Engi-
neering 115, no. 13 (December 2008): 52-54
[1] Mersmann, Alfons, and Matthias Kind. “Prediction of Mechanical and Thermal Properties of Pure Liquids, of
Critical Data, and of Vapor Pressure.” Industrial & Engineering Chemistry Research, January 31, 2017. https:
//doi.org/10.1021/acs.iecr.6b04323.
[1] Bell, Ian H., Jorrit Wronski, Sylvain Quoilin, and Vincent Lemort. “Pure and Pseudo-Pure Fluid Thermophysical
Property Evaluation and the Open-Source Thermophysical Property Library CoolProp.” Industrial & Engineering
Chemistry Research 53, no. 6 (February 12, 2014): 2498-2508. doi:10.1021/ie4033999. http://www.coolprop.org/
[2] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010.
[3] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill Profes-
sional, 2007.
[1] Missenard, F. A., Thermal Conductivity of Organic Liquids of a Series or a Group of Liquids , Rev.
Gen.Thermodyn., 101 649 (1970).
[2] Danner, Ronald P, and Design Institute for Physical Property Data. Manual for Predicting Chemical Process De-
sign Data. New York, N.Y, 1982.
[1] Missenard, F. A., Thermal Conductivity of Organic Liquids of a Series or a Group of Liquids , Rev.
Gen.Thermodyn., 101 649 (1970).
[2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E. The Properties of Gases and Liquids. McGraw-Hill Com-
panies, 1987.
[2] Danner, Ronald P, and Design Institute for Physical Property Data. Manual for Predicting Chemical Process De-
sign Data. New York, N.Y, 1982.
[1] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E. The Properties of Gases and Liquids. McGraw-Hill Com-
panies, 1987.
[2] Filippov, L. P.: Vest. Mosk. Univ., Ser. Fiz. Mat. Estestv. Nauk, (8I0E): 67-69A955); Chem. Abstr., 50: 8276
A956). Filippov, L. P., and N. S. Novoselova: Vestn. Mosk. Univ., Ser. F iz. Mat. Estestv.Nauk, CI0B): 37-
40A955); Chem. Abstr., 49: 11366 A955).
[1] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E. Properties of Gases and Liquids. McGraw-Hill Companies,
1987.

Bibliography 499
thermo Documentation, Release 0.1

[1] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E. Properties of Gases and Liquids. McGraw-Hill Companies,
1987.
[1] Bromley, LeRoy A., Berkeley. University of California, and U.S. Atomic Energy Commission. Thermal Conduc-
tivity of Gases at Moderate Pressures. UCRL;1852. Berkeley, CA: University of California Radiation Laboratory,
1952.
[2] Stiel, Leonard I., and George Thodos. “The Thermal Conductivity of Nonpolar Substances in the Dense Gaseous
and Liquid Regions.” AIChE Journal 10, no. 1 (January 1, 1964): 26-30. doi:10.1002/aic.690100114
[3] Danner, Ronald P, and Design Institute for Physical Property Data. Manual for Predicting Chemical Process De-
sign Data. New York, N.Y, 1982.
[1] Chung, Ting Horng, Lloyd L. Lee, and Kenneth E. Starling. “Applications of Kinetic Gas Theories and Multipa-
rameter Correlation for Prediction of Dilute Gas Viscosity and Thermal Conductivity.” Industrial & Engineering
Chemistry Fundamentals 23, no. 1 (February 1, 1984): 8-13. doi:10.1021/i100013a002
[2] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E. Properties of Gases and Liquids. McGraw-Hill Companies,
1987.
[1] Ely, James F., and H. J. M. Hanley. “Prediction of Transport Properties. 2. Thermal Conductivity of Pure Flu-
ids and Mixtures.” Industrial & Engineering Chemistry Fundamentals 22, no. 1 (February 1, 1983): 90-97.
doi:10.1021/i100009a016.
[2] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E. Properties of Gases and Liquids. McGraw-Hill Companies,
1987.
[1] Gharagheizi, Farhad, Poorandokht Ilani-Kashkouli, Mehdi Sattari, Amir H. Mohammadi, Deresh Ramjuger-
nath, and Dominique Richon. “Development of a General Model for Determination of Thermal Conductivity
of Liquid Chemical Compounds at Atmospheric Pressure.” AIChE Journal 59, no. 5 (May 1, 2013): 1702-8.
doi:10.1002/aic.13938
[1] Bahadori, Alireza, and Saeid Mokhatab. “Estimating Thermal Conductivity of Hydrocarbons.” Chemical Engi-
neering 115, no. 13 (December 2008): 52-54
[1] Bell, Ian H., Jorrit Wronski, Sylvain Quoilin, and Vincent Lemort. “Pure and Pseudo-Pure Fluid Thermophysical
Property Evaluation and the Open-Source Thermophysical Property Library CoolProp.” Industrial & Engineering
Chemistry Research 53, no. 6 (February 12, 2014): 2498-2508. doi:10.1021/ie4033999. http://www.coolprop.org/
[2] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010.
[3] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill Profes-
sional, 2007.
[1] Stiel, Leonard I., and George Thodos. “The Thermal Conductivity of Nonpolar Substances in the Dense Gaseous
and Liquid Regions.” AIChE Journal 10, no. 1 (January 1, 1964): 26-30. doi:10.1002/aic.690100114.
[2] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E. Properties of Gases and Liquids. McGraw-Hill Companies,
1987.
[1] Ely, James F., and H. J. M. Hanley. “Prediction of Transport Properties. 2. Thermal Conductivity of Pure Flu-
ids and Mixtures.” Industrial & Engineering Chemistry Fundamentals 22, no. 1 (February 1, 1983): 90-97.
doi:10.1021/i100009a016.
[2] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E. Properties of Gases and Liquids. McGraw-Hill Companies,
1987.
[1] Chung, Ting Horng, Mohammad Ajlan, Lloyd L. Lee, and Kenneth E. Starling. “Generalized Multiparameter
Correlation for Nonpolar and Polar Fluid Transport Properties.” Industrial & Engineering Chemistry Research 27,
no. 4 (April 1, 1988): 671-79. doi:10.1021/ie00076a024.
[2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.

500 Bibliography
thermo Documentation, Release 0.1

[1] Lindsay, Alexander L., and LeRoy A. Bromley. “Thermal Conductivity of Gas Mixtures.” Industrial & Engineering
Chemistry 42, no. 8 (August 1, 1950): 1508-11. doi:10.1021/ie50488a017.
[2] Danner, Ronald P, and Design Institute for Physical Property Data. Manual for Predicting Chemical Process De-
sign Data. New York, N.Y, 1982.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Staveley, L. A. K., L. Q. Lobo, and J. C. G. Calado. “Triple-Points of Low Melting Substances and Their Use in
Cryogenic Work.” Cryogenics 21, no. 3 (March 1981): 131-144. doi:10.1016/0011-2275(81)90264-2.
[1] Staveley, L. A. K., L. Q. Lobo, and J. C. G. Calado. “Triple-Points of Low Melting Substances and Their Use in
Cryogenic Work.” Cryogenics 21, no. 3 (March 1981): 131-144. doi:10.1016/0011-2275(81)90264-2.
[1] Gmehling, Jurgen. Chemical Thermodynamics: For Process Simulation. Weinheim, Germany: Wiley-VCH, 2012.
[2] Fredenslund, Aage, Russell L. Jones, and John M. Prausnitz. “Group Contribution Estimation of Activ-
ity Coefficients in Nonideal Liquid Mixtures.” AIChE Journal 21, no. 6 (November 1, 1975): 1086-99.
doi:10.1002/aic.690210607.
[3] Jakob, Antje, Hans Grensemann, Jürgen Lohmann, and Jürgen Gmehling. “Further Development of Modified
UNIFAC (Dortmund): Revision and Extension 5.” Industrial & Engineering Chemistry Research 45, no. 23
(November 1, 2006): 7924-33. doi:10.1021/ie060355c.
[4] Kang, Jeong Won, Vladimir Diky, and Michael Frenkel. “New Modified UNIFAC Parameters Using Crit-
ically Evaluated Phase Equilibrium Data.” Fluid Phase Equilibria 388 (February 25, 2015): 128-41.
doi:10.1016/j.fluid.2014.12.042.
[1] Gmehling, Jurgen. Chemical Thermodynamics: For Process Simulation. Weinheim, Germany: Wiley-VCH, 2012.
[2] Fredenslund, Aage, Russell L. Jones, and John M. Prausnitz. “Group Contribution Estimation of Activ-
ity Coefficients in Nonideal Liquid Mixtures.” AIChE Journal 21, no. 6 (November 1, 1975): 1086-99.
doi:10.1002/aic.690210607.
[1] Gmehling, Jurgen. Chemical Thermodynamics: For Process Simulation. Weinheim, Germany: Wiley-VCH, 2012.
[1] Wei, James, Morton M. Denn, John H. Seinfeld, Arup Chakraborty, Jackie Ying, Nicholas Peppas, and George
Stephanopoulos. Molecular Modeling and Theory in Chemical Engineering. Academic Press, 2001.
[1] Wei, James, Morton M. Denn, John H. Seinfeld, Arup Chakraborty, Jackie Ying, Nicholas Peppas, and George
Stephanopoulos. Molecular Modeling and Theory in Chemical Engineering. Academic Press, 2001.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[2] Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.
[3] Gmehling, Jurgen, Barbel Kolbe, Michael Kleiber, and Jurgen Rarey. Chemical Thermodynamics for Process
Simulation. 1st edition. Weinheim: Wiley-VCH, 2012.
[1] Gmehling, Jurgen, Barbel Kolbe, Michael Kleiber, and Jurgen Rarey. Chemical Thermodynamics for Process
Simulation. 1st edition. Weinheim: Wiley-VCH, 2012.
[2] Pratt, R. M. “Thermodynamic Properties Involving Derivatives: Using the Peng-Robinson Equation of State.”
Chemical Engineering Education 35, no. 2 (March 1, 2001): 112-115.
[1] Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.
[2] Pratt, R. M. “Thermodynamic Properties Involving Derivatives: Using the Peng-Robinson Equation of State.”
Chemical Engineering Education 35, no. 2 (March 1, 2001): 112-115.

Bibliography 501
thermo Documentation, Release 0.1

[1] Venkatarathnam, G., and L. R. Oellrich. “Identification of the Phase of a Fluid Using Partial Derivatives of Pres-
sure, Volume, and Temperature without Reference to Saturation Properties: Applications in Phase Equilibria
Calculations.” Fluid Phase Equilibria 301, no. 2 (February 25, 2011): 225-33. doi:10.1016/j.fluid.2010.12.001.
[2] Jayanti, Pranava Chaitanya, and G. Venkatarathnam. “Identification of the Phase of a Substance from the Deriva-
tives of Pressure, Volume and Temperature, without Prior Knowledge of Saturation Properties: Extension to Solid
Phase.” Fluid Phase Equilibria 425 (October 15, 2016): 269-277. doi:10.1016/j.fluid.2016.06.001.
[1] Venkatarathnam, G., and L. R. Oellrich. “Identification of the Phase of a Fluid Using Partial Derivatives of Pres-
sure, Volume, and Temperature without Reference to Saturation Properties: Applications in Phase Equilibria
Calculations.” Fluid Phase Equilibria 301, no. 2 (February 25, 2011): 225-33. doi:10.1016/j.fluid.2010.12.001.
[2] Jayanti, Pranava Chaitanya, and G. Venkatarathnam. “Identification of the Phase of a Substance from the Deriva-
tives of Pressure, Volume and Temperature, without Prior Knowledge of Saturation Properties: Extension to Solid
Phase.” Fluid Phase Equilibria 425 (October 15, 2016): 269-277. doi:10.1016/j.fluid.2016.06.001.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Prausnitz, John M., Rudiger N. Lichtenthaler, and Edmundo Gomes de Azevedo. Molecular Thermodynamics of
Fluid-Phase Equilibria. 3rd edition. Upper Saddle River, N.J: Prentice Hall, 1998.
[2] Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.
[1] Prausnitz, John M., Rudiger N. Lichtenthaler, and Edmundo Gomes de Azevedo. Molecular Thermodynamics of
Fluid-Phase Equilibria. 3rd edition. Upper Saddle River, N.J: Prentice Hall, 1998.
[2] Walas, Stanley M. Phase Equilibria in Chemical Engineering. Butterworth-Heinemann, 1985.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[2] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, 8E. McGraw-Hill Professional, 2007.
[3] Danner, Ronald P, and Design Institute for Physical Property Data. Manual for Predicting Chemical Process De-
sign Data. New York, N.Y, 1982.
[1] API Technical Data Book: General Properties & Characterization.
[1] API Technical Data Book: General Properties & Characterization.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[2] Antoine, C. 1888. Tensions des Vapeurs: Nouvelle Relation Entre les Tensions et les Tempé. Compt.Rend.
107:681-684.
[3] Yaws, Carl L. The Yaws Handbook of Vapor Pressure: Antoine Coefficients. 1 edition. Houston, Tex: Gulf Pub-
lishing Company, 2007.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[2] McGarry, Jack. “Correlation and Prediction of the Vapor Pressures of Pure Liquids over Large Pressure Ranges.”
Industrial & Engineering Chemistry Process Design and Development 22, no. 2 (April 1, 1983): 313-22.
doi:10.1021/i200021a023.
[1] Wagner, W. “New Vapour Pressure Measurements for Argon and Nitrogen and a New Method for Establish-
ing Rational Vapour Pressure Equations.” Cryogenics 13, no. 8 (August 1973): 470-82. doi:10.1016/0011-
2275(73)90003-9

502 Bibliography
thermo Documentation, Release 0.1

[2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] McGarry, Jack. “Correlation and Prediction of the Vapor Pressures of Pure Liquids over Large Pressure Ranges.”
Industrial & Engineering Chemistry Process Design and Development 22, no. 2 (April 1, 1983): 313-22.
doi:10.1021/i200021a023.
[2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[3] Bell, Ian H., Jorrit Wronski, Sylvain Quoilin, and Vincent Lemort. “Pure and Pseudo-Pure Fluid Thermophysical
Property Evaluation and the Open-Source Thermophysical Property Library CoolProp.” Industrial & Engineering
Chemistry Research 53, no. 6 (February 12, 2014): 2498-2508. doi:10.1021/ie4033999. http://www.coolprop.org/
[4] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010.
[5] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill Profes-
sional, 2007.
[1] Reid, Robert C..; Prausnitz, John M.;; Poling, Bruce E. The Properties of Gases and Liquids. McGraw-Hill Com-
panies, 1987.
[1] Lee, Byung Ik, and Michael G. Kesler. “A Generalized Thermodynamic Correlation Based on Three-Parameter
Corresponding States.” AIChE Journal 21, no. 3 (1975): 510-527. doi:10.1002/aic.690210313.
[2] Reid, Robert C..; Prausnitz, John M.;; Poling, Bruce E. The Properties of Gases and Liquids. McGraw-Hill Com-
panies, 1987.
[1] Ambrose, D., and J. Walton. “Vapour Pressures up to Their Critical Temperatures of Normal Alkanes and 1-
Alkanols.” Pure and Applied Chemistry 61, no. 8 (1989): 1395-1403. doi:10.1351/pac198961081395.
[2] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Edalat, M., R. B. Bozar-Jomehri, and G. A. Mansoori. “Generalized Equation Predicts Vapor Pressure of Hydro-
carbons.” Oil and Gas Journal; 91:5 (February 1, 1993).
[1] Sanjari, Ehsan, Mehrdad Honarmand, Hamidreza Badihi, and Ali Ghaheri. “An Accurate Generalized Model for
Predict Vapor Pressure of Refrigerants.” International Journal of Refrigeration 36, no. 4 (June 2013): 1327-32.
doi:10.1016/j.ijrefrig.2013.01.007.
[1] Pitzer, Kenneth S., and R. F. Curl. “The Volumetric and Thermodynamic Properties of Fluids. III. Empirical
Equation for the Second Virial Coefficient1.” Journal of the American Chemical Society 79, no. 10 (May 1,
1957): 2369-70. doi:10.1021/ja01567a007.
[1] Smith, H. C. Van Ness Joseph M. Introduction to Chemical Engineering Thermodynamics 4E 1987.
[1] Tsonopoulos, Constantine. “An Empirical Correlation of Second Virial Coefficients.” AIChE Journal 20, no. 2
(March 1, 1974): 263-72. doi:10.1002/aic.690200209.
[1] Tsonopoulos, C., and J. L. Heidman. “From the Virial to the Cubic Equation of State.” Fluid Phase Equilibria 57,
no. 3 (1990): 261-76. doi:10.1016/0378-3812(90)85126-U
[2] Tsonopoulos, Constantine, and John H. Dymond. “Second Virial Coefficients of Normal Alkanes, Linear 1-
Alkanols (and Water), Alkyl Ethers, and Their Mixtures.” Fluid Phase Equilibria, International Workshop on
Vapour-Liquid Equilibria and Related Properties in Binary and Ternary Mixtures of Ethers, Alkanes and Alka-
nols, 133, no. 1-2 (June 1997): 11-34. doi:10.1016/S0378-3812(97)00058-7.
[1] Viswanath, Dabir S., and G. Natarajan. Databook On The Viscosity Of Liquids. New York: Taylor & Francis,
1989
[1] Letsou, Athena, and Leonard I. Stiel. “Viscosity of Saturated Nonpolar Liquids at Elevated Pressures.” AIChE
Journal 19, no. 2 (1973): 409-11. doi:10.1002/aic.690190241.

Bibliography 503
thermo Documentation, Release 0.1

[1] Przedziecki, J. W., and T. Sridhar. “Prediction of Liquid Viscosities.” AIChE Journal 31, no. 2 (February 1, 1985):
333-35. doi:10.1002/aic.690310225.
[1] Viswanath, Dabir S., and G. Natarajan. Databook On The Viscosity Of Liquids. New York: Taylor & Francis,
1989
[2] Bell, Ian H., Jorrit Wronski, Sylvain Quoilin, and Vincent Lemort. “Pure and Pseudo-Pure Fluid Thermophysical
Property Evaluation and the Open-Source Thermophysical Property Library CoolProp.” Industrial & Engineering
Chemistry Research 53, no. 6 (February 12, 2014): 2498-2508. doi:10.1021/ie4033999. http://www.coolprop.org/
[3] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010.
[4] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill Profes-
sional, 2007.
[1] Bell, Ian H., Jorrit Wronski, Sylvain Quoilin, and Vincent Lemort. “Pure and Pseudo-Pure Fluid Thermophysical
Property Evaluation and the Open-Source Thermophysical Property Library CoolProp.” Industrial & Engineering
Chemistry Research 53, no. 6 (February 12, 2014): 2498-2508. doi:10.1021/ie4033999. http://www.coolprop.org/
[2] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010.
[3] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, Eighth Edition. McGraw-Hill Profes-
sional, 2007.
[1] Lucas, Klaus. “Ein Einfaches Verfahren Zur Berechnung Der Viskositat von Gasen Und Gasgemischen.” Chemie
Ingenieur Technik 46, no. 4 (February 1, 1974): 157-157. doi:10.1002/cite.330460413.
[2] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E. Properties of Gases and Liquids. McGraw-Hill Companies,
1987.
[1] Yoon, Poong, and George Thodos. “Viscosity of Nonpolar Gaseous Mixtures at Normal Pressures.” AIChE Journal
16, no. 2 (1970): 300-304. doi:10.1002/aic.690160225.
[1] Stiel, Leonard I., and George Thodos. “The Viscosity of Nonpolar Gases at Normal Pressures.” AIChE Journal 7,
no. 4 (1961): 611-15. doi:10.1002/aic.690070416.
[1] Reid, Robert C.; Prausnitz, John M.; Poling, Bruce E. Properties of Gases and Liquids. McGraw-Hill Companies,
1987.
[1] Gharagheizi, Farhad, Ali Eslamimanesh, Mehdi Sattari, Amir H. Mohammadi, and Dominique Richon. “Cor-
responding States Method for Determination of the Viscosity of Gases at Atmospheric Pressure.” Industrial &
Engineering Chemistry Research 51, no. 7 (February 22, 2012): 3179-85. doi:10.1021/ie202591f.
[1] Herning, F. and Zipperer, L,: “Calculation of the Viscosity of Technical Gas Mixtures from the Viscosity of
Individual Gases, german”, Gas u. Wasserfach (1936) 79, No. 49, 69.
[1] TODO
[1] Brokaw, R. S. “Predicting Transport Properties of Dilute Gases.” Industrial & Engineering Chemistry Process
Design and Development 8, no. 2 (April 1, 1969): 240-53. doi:10.1021/i260030a015.
[2] Brokaw, R. S. Viscosity of Gas Mixtures, NASA-TN-D-4496, 1968.
[3] Danner, Ronald P, and Design Institute for Physical Property Data. Manual for Predicting Chemical Process De-
sign Data. New York, N.Y, 1982.
[1] ASTM D2270-10(2016) Standard Practice for Calculating Viscosity Index from Kinematic Viscosity at 40°C and
100°C, ASTM International, West Conshohocken, PA, 2016, http://dx.doi.org/10.1520/D2270-10R16
[1] Hydraulic Institute. Hydraulic Institute Engineering Data Book. Cleveland, Ohio: Hydraulic Institute, 1990.
[2] Gardner/Sward. Paint Testing Manual. Physical and Chemical Examination of Paints, Varnishes, Lacquers, and
Colors. 13th Edition. ASTM, 1972.
[3] Euverard, M. R., The Efflux Type Viscosity Cup. National Paint, Varnish, and Lacquer Association, 1948.

504 Bibliography
thermo Documentation, Release 0.1

[4] API Technical Data Book: General Properties & Characterization. American Petroleum Institute, 7E, 2005.
[5] ASTM. Standard Practice for Conversion of Kinematic Viscosity to Saybolt Universal Viscosity or to Saybolt
Furol Viscosity. D 2161 - 93.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Yen, Lewis C., and S. S. Woods. “A Generalized Equation for Computer Calculation of Liquid Densities.” AIChE
Journal 12, no. 1 (1966): 95-99. doi:10.1002/aic.690120119
[1] Rackett, Harold G. “Equation of State for Saturated Liquids.” Journal of Chemical & Engineering Data 15, no. 4
(1970): 514-517. doi:10.1021/je60047a012
[1] Gunn, R. D., and Tomoyoshi Yamada. “A Corresponding States Correlation of Saturated Liquid Volumes.” AIChE
Journal 17, no. 6 (1971): 1341-45. doi:10.1002/aic.690170613
[2] Yamada, Tomoyoshi, and Robert D. Gunn. “Saturated Liquid Molar Volumes. Rackett Equation.” Journal of
Chemical & Engineering Data 18, no. 2 (1973): 234-36. doi:10.1021/je60057a006
[1] Hales, J. L, and R Townsend. “Liquid Densities from 293 to 490 K of Nine Aromatic Hydrocarbons.” The Journal
of Chemical Thermodynamics 4, no. 5 (1972): 763-72. doi:10.1016/0021-9614(72)90050-X
[1] Bhirud, Vasant L. “Saturated Liquid Densities of Normal Fluids.” AIChE Journal 24, no. 6 (November 1, 1978):
1127-31. doi:10.1002/aic.690240630
[1] Hankinson, Risdon W., and George H. Thomson. “A New Correlation for Saturated Densities of Liquids and Their
Mixtures.” AIChE Journal 25, no. 4 (1979): 653-663. doi:10.1002/aic.690250412
[1] Campbell, Scott W., and George Thodos. “Prediction of Saturated Liquid Densities and Critical Volumes for
Polar and Nonpolar Substances.” Journal of Chemical & Engineering Data 30, no. 1 (January 1, 1985): 102-11.
doi:10.1021/je00039a032.
[1] Mchaweh, A., A. Alsaygh, Kh. Nasrifar, and M. Moshfeghian. “A Simplified Method for Calculating Saturated
Liquid Densities.” Fluid Phase Equilibria 224, no. 2 (October 1, 2004): 157-67. doi:10.1016/j.fluid.2004.06.054
[1] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics, 95E. [Boca
Raton, FL]: CRC press, 2014.
[1] Green, Don, and Robert Perry. Perry’s Chemical Engineers’ Handbook, 8E. McGraw-Hill Professional, 2007.
[2] Mchaweh, A., A. Alsaygh, Kh. Nasrifar, and M. Moshfeghian. “A Simplified Method for Calculating Saturated
Liquid Densities.” Fluid Phase Equilibria 224, no. 2 (October 1, 2004): 157-67. doi:10.1016/j.fluid.2004.06.054
[3] Hankinson, Risdon W., and George H. Thomson. “A New Correlation for Saturated Densities of Liquids and Their
Mixtures.” AIChE Journal 25, no. 4 (1979): 653-663. doi:10.1002/aic.690250412
[4] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics. [Boca Raton,
FL]: CRC press, 2014.
[5] Bell, Ian H., Jorrit Wronski, Sylvain Quoilin, and Vincent Lemort. “Pure and Pseudo-Pure Fluid Thermophysical
Property Evaluation and the Open-Source Thermophysical Property Library CoolProp.” Industrial & Engineering
Chemistry Research 53, no. 6 (February 12, 2014): 2498-2508. doi:10.1021/ie4033999. http://www.coolprop.org/
[6] Gesellschaft, V. D. I., ed. VDI Heat Atlas. 2nd edition. Berlin; New York:: Springer, 2010.
[1] Thomson, G. H., K. R. Brobst, and R. W. Hankinson. “An Improved Correlation for Densities of Compressed
Liquids and Liquid Mixtures.” AIChE Journal 28, no. 4 (July 1, 1982): 671-76. doi:10.1002/aic.690280420
[1] Rackett, Harold G. “Equation of State for Saturated Liquids.” Journal of Chemical & Engineering Data 15, no. 4
(1970): 514-517. doi:10.1021/je60047a012
[2] Danner, Ronald P, and Design Institute for Physical Property Data. Manual for Predicting Chemical Process De-
sign Data. New York, N.Y, 1982.

Bibliography 505
thermo Documentation, Release 0.1

[1] Hankinson, Risdon W., and George H. Thomson. “A New Correlation for Saturated Densities of Liquids and Their
Mixtures.” AIChE Journal 25, no. 4 (1979): 653-663. doi:10.1002/aic.690250412
[1] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics. [Boca Raton,
FL]: CRC press, 2014.
[2] Bell, Ian H., Jorrit Wronski, Sylvain Quoilin, and Vincent Lemort. “Pure and Pseudo-Pure Fluid Thermophysical
Property Evaluation and the Open-Source Thermophysical Property Library CoolProp.” Industrial & Engineering
Chemistry Research 53, no. 6 (February 12, 2014): 2498-2508. doi:10.1021/ie4033999. http://www.coolprop.org/
[1] Goodman, Benjamin T., W. Vincent Wilding, John L. Oscarson, and Richard L. Rowley. “A Note on the Relation-
ship between Organic Solid Density and Liquid Density at the Triple Point.” Journal of Chemical & Engineering
Data 49, no. 6 (2004): 1512-14. doi:10.1021/je034220e.
[1] Haynes, W.M., Thomas J. Bruno, and David R. Lide. CRC Handbook of Chemistry and Physics. [Boca Raton,
FL]: CRC press, 2014.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.
[1] Poling, Bruce E. The Properties of Gases and Liquids. 5th edition. New York: McGraw-Hill Professional, 2000.

506 Bibliography
Python Module Index

t
thermo.acentric, 3
thermo.activity, 7
thermo.chemical, 17
thermo.combustion, 48
thermo.critical, 49
thermo.datasheet, 62
thermo.dipole, 63
thermo.dippr, 64
thermo.electrochem, 73
thermo.elements, 86
thermo.environment, 156
thermo.eos, 91
thermo.eos_mix, 130
thermo.heat_capacity, 159
thermo.identifiers, 193
thermo.interface, 197
thermo.joback, 213
thermo.law, 222
thermo.lennard_jones, 224
thermo.miscdata, 236
thermo.mixture, 237
thermo.permittivity, 272
thermo.phase_change, 276
thermo.reaction, 289
thermo.refractivity, 292
thermo.safety, 294
thermo.solubility, 303
thermo.stream, 305
thermo.temperature, 314
thermo.thermal_conductivity, 316
thermo.triple, 350
thermo.unifac, 351
thermo.utils, 356
thermo.vapor_pressure, 396
thermo.virial, 407
thermo.viscosity, 414
thermo.volume, 442

507
thermo Documentation, Release 0.1

508 Python Module Index


Index

A add_coeffs() (thermo.heat_capacity.Zabransky_spline
A (thermo.chemical.Chemical attribute), 26 method), 174
a_alpha_and_derivatives() (thermo.eos.APISRK Aleem() (in module thermo.interface), 203
method), 118 all_methods (thermo.heat_capacity.HeatCapacityGas at-
a_alpha_and_derivatives() (thermo.eos.GCEOS method), tribute), 165
94 all_methods (thermo.heat_capacity.HeatCapacityGasMixture
a_alpha_and_derivatives() (thermo.eos.PR method), 101 attribute), 189
a_alpha_and_derivatives() (thermo.eos.PRSV method), all_methods (thermo.heat_capacity.HeatCapacityLiquid
108 attribute), 178
a_alpha_and_derivatives() (thermo.eos.PRSV2 method), all_methods (thermo.heat_capacity.HeatCapacityLiquidMixture
110 attribute), 192
a_alpha_and_derivatives() (thermo.eos.RK method), 115 all_methods (thermo.heat_capacity.HeatCapacitySolid at-
a_alpha_and_derivatives() (thermo.eos.SRK method), tribute), 184
104 all_methods (thermo.heat_capacity.HeatCapacitySolidMixture
a_alpha_and_derivatives() (thermo.eos.TWUPR method), attribute), 187
120 all_methods (thermo.interface.SurfaceTension attribute),
a_alpha_and_derivatives() (thermo.eos.TWUSRK 207
method), 122 all_methods (thermo.interface.SurfaceTensionMixture at-
a_alpha_and_derivatives() (thermo.eos.VDW method), tribute), 211
113 all_methods (thermo.permittivity.Permittivity attribute),
a_alpha_and_derivatives() (thermo.eos_mix.GCEOSMIX 274
method), 131 all_methods (thermo.phase_change.EnthalpyVaporization
a_alpha_mro (thermo.eos_mix.APISRKMIX attribute), attribute), 287
156 all_methods (thermo.thermal_conductivity.ThermalConductivityGas
a_alpha_mro (thermo.eos_mix.PR78MIX attribute), 141 attribute), 340
a_alpha_mro (thermo.eos_mix.PRMIX attribute), 135 all_methods (thermo.thermal_conductivity.ThermalConductivityGasMixture
a_alpha_mro (thermo.eos_mix.PRSV2MIX attribute), attribute), 349
148 all_methods (thermo.thermal_conductivity.ThermalConductivityLiquid
a_alpha_mro (thermo.eos_mix.PRSVMIX attribute), 146 attribute), 325
a_alpha_mro (thermo.eos_mix.SRKMIX attribute), 138 all_methods (thermo.vapor_pressure.VaporPressure at-
a_alpha_mro (thermo.eos_mix.TWUPRMIX attribute), tribute), 401
151 all_methods (thermo.viscosity.ViscosityGas attribute),
a_alpha_mro (thermo.eos_mix.TWUSRKMIX attribute), 425
153 all_methods (thermo.viscosity.ViscosityGasMixture at-
a_alpha_mro (thermo.eos_mix.VDWMIX attribute), 143 tribute), 440
absolute_permittivity (thermo.chemical.Chemical at- all_methods (thermo.viscosity.ViscosityLiquid attribute),
tribute), 38 420
acos() (in module thermo.utils), 394 all_methods (thermo.viscosity.ViscosityLiquidMixture
acosh() (in module thermo.utils), 394 attribute), 437
all_methods (thermo.volume.VolumeGasMixture at-

509
thermo Documentation, Release 0.1

tribute), 472 atoms_to_Hill() (in module thermo.elements), 89


all_methods (thermo.volume.VolumeLiquid attribute), atomss (thermo.mixture.Mixture attribute), 260
452
all_methods (thermo.volume.VolumeLiquidMixture at- B
tribute), 469 B_from_Z() (in module thermo.utils), 363
all_methods (thermo.volume.VolumeSolid attribute), 466 B_to_Z() (in module thermo.utils), 363
all_methods (thermo.volume.VolumeSolidMixture Bahadori_gas() (in module
attribute), 474 thermo.thermal_conductivity), 335
all_methods_P (thermo.thermal_conductivity.ThermalConductivityGas
Bahadori_liquid() (in module
attribute), 340 thermo.thermal_conductivity), 320
all_methods_P (thermo.thermal_conductivity.ThermalConductivityLiquid
balance_ions() (in module thermo.electrochem), 84
attribute), 325 Bhirud_normal() (in module thermo.volume), 444
all_methods_P (thermo.viscosity.ViscosityGas attribute), blocks (in module thermo.elements), 90
425 boiling_critical_relation() (in module
all_methods_P (thermo.viscosity.ViscosityLiquid at- thermo.vapor_pressure), 403
tribute), 420 boiling_methods (thermo.phase_change.EnthalpyVaporization
all_methods_P (thermo.volume.VolumeGas attribute), attribute), 287
462 Bond() (thermo.chemical.Chemical method), 27
all_methods_P (thermo.volume.VolumeLiquid attribute), Bond() (thermo.mixture.Mixture method), 245
452 Brock_Bird() (in module thermo.interface), 199
allclose_variable() (in module thermo.utils), 392 Brokaw() (in module thermo.viscosity), 433
Almeida() (thermo.eos.ALPHA_FUNCTIONS static bubble_at_P() (in module thermo.activity), 17
method), 124 bubble_at_T() (in module thermo.activity), 15
alpha (thermo.chemical.Chemical attribute), 38 Bvirial (thermo.chemical.Chemical attribute), 27
alpha (thermo.mixture.Mixture attribute), 258 Bvirial (thermo.mixture.Mixture attribute), 245
ALPHA_FUNCTIONS (class in thermo.eos), 122 BVirial_Abbott() (in module thermo.virial), 408
alphag (thermo.chemical.Chemical attribute), 38 BVirial_Pitzer_Curl() (in module thermo.virial), 407
alphag (thermo.mixture.Mixture attribute), 258 BVirial_Tsonopoulos() (in module thermo.virial), 410
alphags (thermo.mixture.Mixture attribute), 259 BVirial_Tsonopoulos_extended() (in module
alphal (thermo.chemical.Chemical attribute), 39 thermo.virial), 411
alphal (thermo.mixture.Mixture attribute), 259
alphals (thermo.mixture.Mixture attribute), 259 C
Am (thermo.chemical.Chemical attribute), 27 c1 (thermo.eos.PR attribute), 101
Ambrose_Walton() (in module thermo.vapor_pressure), c1 (thermo.eos.RK attribute), 115
404 c1 (thermo.eos.SRK attribute), 104
Amgat() (in module thermo.volume), 456 c2 (thermo.eos.PR attribute), 101
Androulakis() (thermo.eos.ALPHA_FUNCTIONS static c2 (thermo.eos.RK attribute), 115
method), 124 c2 (thermo.eos.SRK attribute), 104
Antoine() (in module thermo.vapor_pressure), 396 calc_H() (thermo.chemical.Chemical method), 39
API (thermo.chemical.Chemical attribute), 26 calc_H_excess() (thermo.chemical.Chemical method), 39
API (thermo.mixture.Mixture attribute), 244 calc_S() (thermo.chemical.Chemical method), 40
API_to_SG() (in module thermo.utils), 372 calc_S_excess() (thermo.chemical.Chemical method), 40
APISRK (class in thermo.eos), 116 calculate() (thermo.chemical.Chemical method), 40
APISRKMIX (class in thermo.eos_mix), 153 calculate() (thermo.heat_capacity.HeatCapacityGas
aromatic_rings (thermo.chemical.Chemical attribute), 39 method), 165
asin() (in module thermo.utils), 394 calculate() (thermo.heat_capacity.HeatCapacityGasMixture
asinh() (in module thermo.utils), 394 method), 189
atan() (in module thermo.utils), 394 calculate() (thermo.heat_capacity.HeatCapacityLiquid
atan2() (in module thermo.utils), 394 method), 178
atanh() (in module thermo.utils), 394 calculate() (thermo.heat_capacity.HeatCapacityLiquidMixture
atom_fractions (thermo.chemical.Chemical attribute), 39 method), 192
atom_fractions (thermo.mixture.Mixture attribute), 259 calculate() (thermo.heat_capacity.HeatCapacitySolid
atom_fractions() (in module thermo.elements), 88 method), 184
atom_fractionss (thermo.mixture.Mixture attribute), 260

510 Index
thermo Documentation, Release 0.1

calculate() (thermo.heat_capacity.HeatCapacitySolidMixturecalculate_integral() (thermo.heat_capacity.HeatCapacitySolid


method), 187 method), 184
calculate() (thermo.heat_capacity.Zabransky_quasipolynomialcalculate_integral() (thermo.heat_capacity.Zabransky_quasipolynomial
method), 173 method), 173
calculate() (thermo.heat_capacity.Zabransky_spline calculate_integral() (thermo.heat_capacity.Zabransky_spline
method), 175 method), 175
calculate() (thermo.interface.SurfaceTension method), calculate_integral() (thermo.utils.TDependentProperty
207 method), 378
calculate() (thermo.interface.SurfaceTensionMixture calculate_integral_over_T()
method), 211 (thermo.heat_capacity.HeatCapacityGas
calculate() (thermo.mixture.Mixture method), 260 method), 165
calculate() (thermo.permittivity.Permittivity method), 274 calculate_integral_over_T()
calculate() (thermo.phase_change.EnthalpyVaporization (thermo.heat_capacity.HeatCapacityLiquid
method), 287 method), 178
calculate() (thermo.stream.Stream method), 314 calculate_integral_over_T()
calculate() (thermo.thermal_conductivity.ThermalConductivityGas (thermo.heat_capacity.HeatCapacitySolid
method), 340 method), 184
calculate() (thermo.thermal_conductivity.ThermalConductivityGasMixture
calculate_integral_over_T()
method), 349 (thermo.heat_capacity.Zabransky_quasipolynomial
calculate() (thermo.thermal_conductivity.ThermalConductivityLiquid method), 173
method), 325 calculate_integral_over_T()
calculate() (thermo.utils.TDependentProperty method), (thermo.heat_capacity.Zabransky_spline
377 method), 175
calculate() (thermo.vapor_pressure.VaporPressure calculate_integral_over_T()
method), 401 (thermo.utils.TDependentProperty method),
calculate() (thermo.viscosity.ViscosityGas method), 425 378
calculate() (thermo.viscosity.ViscosityGasMixture calculate_P() (thermo.thermal_conductivity.ThermalConductivityGas
method), 440 method), 340
calculate() (thermo.viscosity.ViscosityLiquid method), calculate_P() (thermo.thermal_conductivity.ThermalConductivityLiquid
420 method), 326
calculate() (thermo.viscosity.ViscosityLiquidMixture calculate_P() (thermo.viscosity.ViscosityGas method),
method), 437 426
calculate() (thermo.volume.VolumeGasMixture method), calculate_P() (thermo.viscosity.ViscosityLiquid method),
472 420
calculate() (thermo.volume.VolumeLiquid method), 452 calculate_P() (thermo.volume.VolumeGas method), 462
calculate() (thermo.volume.VolumeLiquidMixture calculate_P() (thermo.volume.VolumeLiquid method),
method), 469 453
calculate() (thermo.volume.VolumeSolid method), 466 calculate_PH() (thermo.chemical.Chemical method), 40
calculate() (thermo.volume.VolumeSolidMixture calculate_PH() (thermo.mixture.Mixture method), 260
method), 474 calculate_PS() (thermo.chemical.Chemical method), 40
calculate_derivative() (thermo.utils.TDependentProperty calculate_PS() (thermo.mixture.Mixture method), 260
method), 377 calculate_TH() (thermo.chemical.Chemical method), 40
calculate_derivative_P() (thermo.utils.MixtureProperty calculate_TH() (thermo.mixture.Mixture method), 260
method), 388 calculate_TS() (thermo.chemical.Chemical method), 40
calculate_derivative_P() (thermo.utils.TPDependentPropertycalculate_TS() (thermo.mixture.Mixture method), 260
method), 384 calculated_Cpig_coeffs (thermo.joback.Joback attribute),
calculate_derivative_T() (thermo.utils.MixtureProperty 221
method), 388 calculated_mul_coeffs (thermo.joback.Joback attribute),
calculate_derivative_T() (thermo.utils.TPDependentProperty 221
method), 384 Campbell_Thodos() (in module thermo.volume), 446
calculate_integral() (thermo.heat_capacity.HeatCapacityGasCapillary() (thermo.chemical.Chemical method), 27
method), 165 Capillary() (thermo.mixture.Mixture method), 245
calculate_integral() (thermo.heat_capacity.HeatCapacityLiquid
Carcinogen() (in module thermo.safety), 296
method), 178 CAS (thermo.heat_capacity.Zabransky_quasipolynomial

Index 511
thermo Documentation, Release 0.1

attribute), 173 conductivity (thermo.mixture.Mixture attribute), 260


CAS (thermo.heat_capacity.Zabransky_spline attribute), conductivity() (in module thermo.electrochem), 73
174 conductivity_McCleskey() (in module
CAS2int() (in module thermo.utils), 370 thermo.electrochem), 80
CAS_by_number (in module thermo.elements), 90 copysign() (in module thermo.utils), 394
CAS_from_any() (in module thermo.identifiers), 194 Coquelet() (thermo.eos.ALPHA_FUNCTIONS static
CAS_to_elements (thermo.elements.PeriodicTable method), 125
attribute), 86 cos() (in module thermo.utils), 394
ceil() (in module thermo.utils), 394 cosh() (in module thermo.utils), 394
Ceiling() (in module thermo.safety), 296 COSTALD() (in module thermo.volume), 445
charge (thermo.chemical.Chemical attribute), 40 COSTALD_compressed() (in module thermo.volume),
charge_balance (thermo.mixture.Mixture attribute), 260 455
charge_from_formula() (in module thermo.elements), 91 COSTALD_mixture() (in module thermo.volume), 457
charges (thermo.mixture.Mixture attribute), 260 Cp (thermo.chemical.Chemical attribute), 27
check_sufficient_inputs() (thermo.eos.GCEOS method), Cp (thermo.mixture.Mixture attribute), 245
95 Cp_minus_Cv() (in module thermo.utils), 357
checkCAS() (in module thermo.identifiers), 193 Cpg (thermo.chemical.Chemical attribute), 27
Chemical (class in thermo.chemical), 17 Cpg (thermo.mixture.Mixture attribute), 245
Chen() (in module thermo.phase_change), 282 Cpgm (thermo.chemical.Chemical attribute), 28
Chen_Yang() (thermo.eos.ALPHA_FUNCTIONS static Cpgm (thermo.mixture.Mixture attribute), 245
method), 125 Cpgms (thermo.mixture.Mixture attribute), 246
Chueh_Prausnitz_Tc() (in module thermo.critical), 58 Cpgs (thermo.mixture.Mixture attribute), 246
Chueh_Prausnitz_Vc() (in module thermo.critical), 61 Cpig() (thermo.joback.Joback method), 216
Chung() (in module thermo.thermal_conductivity), 332 Cpig_coeffs() (thermo.joback.Joback static method), 216
chung_dense() (in module thermo.thermal_conductivity), Cpl (thermo.chemical.Chemical attribute), 28
345 Cpl (thermo.mixture.Mixture attribute), 246
Clapeyron() (in module thermo.phase_change), 278 Cplm (thermo.chemical.Chemical attribute), 28
cleanup_a_alpha_and_derivatives() Cplm (thermo.mixture.Mixture attribute), 246
(thermo.eos_mix.APISRKMIX method), Cplms (thermo.mixture.Mixture attribute), 247
156 Cpls (thermo.mixture.Mixture attribute), 247
cleanup_a_alpha_and_derivatives() Cpm (thermo.chemical.Chemical attribute), 29
(thermo.eos_mix.PRMIX method), 135 Cpm (thermo.mixture.Mixture attribute), 247
cleanup_a_alpha_and_derivatives() Cps (thermo.chemical.Chemical attribute), 29
(thermo.eos_mix.PRSV2MIX method), 148 Cps (thermo.mixture.Mixture attribute), 247
cleanup_a_alpha_and_derivatives() Cpsm (thermo.chemical.Chemical attribute), 29
(thermo.eos_mix.PRSVMIX method), 146 Cpsm (thermo.mixture.Mixture attribute), 247
cleanup_a_alpha_and_derivatives() Cpsms (thermo.mixture.Mixture attribute), 248
(thermo.eos_mix.SRKMIX method), 138 Cpss (thermo.mixture.Mixture attribute), 248
cleanup_a_alpha_and_derivatives() CRC_inorganic() (in module thermo.volume), 448
(thermo.eos_mix.TWUPRMIX method), critical_surface() (in module thermo.critical), 55
151 Crowl_Louvar_LFL() (in module thermo.safety), 302
cleanup_a_alpha_and_derivatives() Crowl_Louvar_UFL() (in module thermo.safety), 302
(thermo.eos_mix.TWUSRKMIX method), CSP_methods (thermo.phase_change.EnthalpyVaporization
153 attribute), 287
cleanup_a_alpha_and_derivatives() Cvg (thermo.chemical.Chemical attribute), 30
(thermo.eos_mix.VDWMIX method), 143 Cvg (thermo.mixture.Mixture attribute), 248
coeff_sets (thermo.heat_capacity.Zabransky_spline at- Cvgm (thermo.chemical.Chemical attribute), 30
tribute), 175 Cvgm (thermo.mixture.Mixture attribute), 248
coeffs (thermo.heat_capacity.Zabransky_quasipolynomial Cvgms (thermo.mixture.Mixture attribute), 248
attribute), 173 Cvgs (thermo.mixture.Mixture attribute), 249
collision_integral_Kim_Monroe() (in module
thermo.lennard_jones), 235 D
collision_integral_Neufeld_Janzen_Aziz() (in module d_TPD_dy() (thermo.eos_mix.GCEOSMIX method),
thermo.lennard_jones), 234 132

512 Index
thermo Documentation, Release 0.1

Dadgostar_Shaw() (in module thermo.heat_capacity), epsilon_Tee_Gotoh_Steward_2() (in module


168 thermo.lennard_jones), 233
degrees() (in module thermo.utils), 394 EQ100() (in module thermo.dippr), 64
delta (thermo.eos.VDW attribute), 113 EQ101() (in module thermo.dippr), 64
derivatives_and_departures() (thermo.eos.GCEOS EQ102() (in module thermo.dippr), 65
method), 95 EQ104() (in module thermo.dippr), 66
dew_at_T() (in module thermo.activity), 15 EQ105() (in module thermo.dippr), 67
Diguilio_Teja() (in module thermo.interface), 209 EQ106() (in module thermo.dippr), 68
dilute_ionic_conductivity() (in module EQ107() (in module thermo.dippr), 68
thermo.electrochem), 79 EQ114() (in module thermo.dippr), 69
dipole_moment() (in module thermo.dipole), 63 EQ115() (in module thermo.dippr), 70
DIPPR9B() (in module thermo.thermal_conductivity), EQ116() (in module thermo.dippr), 71
332 EQ127() (in module thermo.dippr), 72
DIPPR9G() (in module thermo.thermal_conductivity), estimate() (thermo.joback.Joback method), 221
328 Eucken() (in module thermo.thermal_conductivity), 330
DIPPR9H() (in module thermo.thermal_conductivity), Eucken_modified() (in module
329 thermo.thermal_conductivity), 331
dPsat_dT() (thermo.eos.GCEOS method), 95 exp() (in module thermo.utils), 395
draw_2d() (thermo.chemical.Chemical method), 40 extrapolate_tabular() (thermo.utils.TDependentProperty
draw_2d() (thermo.mixture.Mixture method), 260 method), 378
draw_3d() (thermo.chemical.Chemical method), 40
F
E fabs() (in module thermo.utils), 395
economic_status (thermo.chemical.Chemical attribute), factorial() (in module thermo.utils), 395
40 Filippov() (in module thermo.thermal_conductivity), 330
economic_status() (in module thermo.law), 223 fire_mixing() (in module thermo.safety), 300
economic_statuses (thermo.mixture.Mixture attribute), flash() (in module thermo.activity), 15
261 flash_inner_loop() (in module thermo.activity), 11
Edalat() (in module thermo.vapor_pressure), 405 floor() (in module thermo.utils), 395
eli_hanley() (in module thermo.thermal_conductivity), fmod() (in module thermo.utils), 395
333 forced (thermo.utils.MixtureProperty attribute), 389
eli_hanley_dense() (in module forced (thermo.utils.TDependentProperty attribute), 378
thermo.thermal_conductivity), 343 forced_P (thermo.utils.TPDependentProperty attribute),
enthalpy_vaporization_methods (in module 385
thermo.phase_change), 284 formula() (in module thermo.identifiers), 196
EnthalpyVaporization (class in thermo.phase_change), formulas (thermo.mixture.Mixture attribute), 261
284 frexp() (in module thermo.utils), 395
eos (thermo.chemical.Chemical attribute), 41 fsum() (in module thermo.utils), 395
eos (thermo.mixture.Mixture attribute), 261 fugacities() (thermo.eos_mix.GCEOSMIX method), 132
eos_in_a_box (thermo.mixture.Mixture attribute), 261 fugacities_partial_derivatives()
epsilon (thermo.eos.RK attribute), 115 (thermo.eos_mix.GCEOSMIX method),
epsilon (thermo.eos.SRK attribute), 104 133
epsilon (thermo.eos.VDW attribute), 113 fugacities_partial_derivatives_2()
epsilon_Bird_Stewart_Lightfoot_boiling() (in module (thermo.eos_mix.GCEOSMIX method),
thermo.lennard_jones), 231 133
epsilon_Bird_Stewart_Lightfoot_critical() (in module fugacity_coefficients() (thermo.eos_mix.PRMIX
thermo.lennard_jones), 231 method), 135
epsilon_Bird_Stewart_Lightfoot_melting() (in module fugacity_coefficients() (thermo.eos_mix.SRKMIX
thermo.lennard_jones), 232 method), 138
epsilon_Flynn() (in module thermo.lennard_jones), 231 fugacity_coefficients() (thermo.eos_mix.VDWMIX
epsilon_Stiel_Thodos() (in module method), 143
thermo.lennard_jones), 232
epsilon_Tee_Gotoh_Steward_1() (in module G
thermo.lennard_jones), 233 Gasem() (thermo.eos.ALPHA_FUNCTIONS static

Index 513
thermo Documentation, Release 0.1

method), 125 Hill (thermo.chemical.Chemical attribute), 30


GCEOS (class in thermo.eos), 91 Hm (thermo.mixture.Mixture attribute), 249
GCEOS_DUMMY (class in thermo.eos), 129 horner() (in module thermo.utils), 393
GCEOSMIX (class in thermo.eos_mix), 130 Hsub() (in module thermo.phase_change), 289
Gf() (thermo.joback.Joback static method), 217 Hvap (thermo.chemical.Chemical attribute), 30
Gharagheizi_gas() (in module Hvap() (thermo.eos.GCEOS method), 93
thermo.thermal_conductivity), 335 Hvap() (thermo.joback.Joback static method), 218
Gharagheizi_gas_viscosity() (in module Hvapm (thermo.chemical.Chemical attribute), 31
thermo.viscosity), 431 Hvapms (thermo.mixture.Mixture attribute), 249
Gharagheizi_liquid() (in module Hvaps (thermo.mixture.Mixture attribute), 249
thermo.thermal_conductivity), 318 hypot() (in module thermo.utils), 395
Gibbons_Laughton() (thermo.eos.ALPHA_FUNCTIONS
static method), 125 I
Goodman() (in module thermo.volume), 463 ideal_gas() (in module thermo.volume), 458
Grashof() (thermo.chemical.Chemical method), 30 identify_phase() (in module thermo.activity), 15
Grashof() (thermo.mixture.Mixture method), 249 identify_phase_mixture() (in module thermo.activity), 16
Grieves_Thodos() (in module thermo.critical), 59 Ihmels() (in module thermo.critical), 55
Grigoras() (in module thermo.critical), 57 InChI() (in module thermo.identifiers), 196
groups (in module thermo.elements), 90 InChI_Key() (in module thermo.identifiers), 196
GWP() (in module thermo.environment), 156 InChI_Keys (thermo.mixture.Mixture attribute), 249
InChIs (thermo.mixture.Mixture attribute), 250
H int2CAS() (in module thermo.utils), 370
H (thermo.mixture.Mixture attribute), 249 interpolate() (thermo.utils.TDependentProperty method),
Haghtalab() (thermo.eos.ALPHA_FUNCTIONS static 378
method), 126 interpolate_P() (thermo.utils.TPDependentProperty
Hakim_Steinberg_Stiel() (in module thermo.interface), method), 385
202 interpolation_P (thermo.thermal_conductivity.ThermalConductivityGas
Harmens_Knapp() (thermo.eos.ALPHA_FUNCTIONS attribute), 340
static method), 126 interpolation_P (thermo.thermal_conductivity.ThermalConductivityLiquid
Hcombustion() (in module thermo.combustion), 48 attribute), 326
heat_capacity_gas_methods (in module interpolation_P (thermo.utils.TPDependentProperty at-
thermo.heat_capacity), 163 tribute), 385
heat_capacity_liquid_methods (in module interpolation_P (thermo.viscosity.ViscosityGas attribute),
thermo.heat_capacity), 175 426
heat_capacity_solid_methods (in module interpolation_P (thermo.viscosity.ViscosityLiquid at-
thermo.heat_capacity), 182 tribute), 420
HeatCapacityGas (class in thermo.heat_capacity), 163 interpolation_P (thermo.volume.VolumeGas attribute),
HeatCapacityGasMixture (class in 462
thermo.heat_capacity), 188 interpolation_P (thermo.volume.VolumeLiquid attribute),
HeatCapacityLiquid (class in thermo.heat_capacity), 175 453
HeatCapacityLiquidMixture (class in interpolation_property (thermo.heat_capacity.HeatCapacityGas
thermo.heat_capacity), 190 attribute), 165
HeatCapacitySolid (class in thermo.heat_capacity), 182 interpolation_property (thermo.heat_capacity.HeatCapacityLiquid
HeatCapacitySolidMixture (class in attribute), 179
thermo.heat_capacity), 185 interpolation_property (thermo.heat_capacity.HeatCapacitySolid
Herning_Zipperer() (in module thermo.viscosity), 432 attribute), 184
Heyen() (thermo.eos.ALPHA_FUNCTIONS static interpolation_property (thermo.interface.SurfaceTension
method), 126 attribute), 207
Hf() (in module thermo.reaction), 289 interpolation_property (thermo.permittivity.Permittivity
Hf() (thermo.joback.Joback static method), 217 attribute), 275
Hf_g() (in module thermo.reaction), 291 interpolation_property (thermo.phase_change.EnthalpyVaporization
Hf_l() (in module thermo.reaction), 290 attribute), 287
Hfus() (in module thermo.phase_change), 289 interpolation_property (thermo.thermal_conductivity.ThermalConductivityG
Hfus() (thermo.joback.Joback static method), 218 attribute), 341

514 Index
thermo Documentation, Release 0.1

interpolation_property (thermo.thermal_conductivity.ThermalConductivityLiquid
interpolation_property_inv (thermo.volume.VolumeSolid
attribute), 326 attribute), 466
interpolation_property (thermo.utils.TDependentProperty interpolation_property_inv()
attribute), 379 (thermo.vapor_pressure.VaporPressure
interpolation_property (thermo.viscosity.ViscosityGas at- method), 402
tribute), 426 interpolation_T (thermo.heat_capacity.HeatCapacityGas
interpolation_property (thermo.viscosity.ViscosityLiquid attribute), 165
attribute), 421 interpolation_T (thermo.heat_capacity.HeatCapacityLiquid
interpolation_property (thermo.volume.VolumeGas at- attribute), 179
tribute), 462 interpolation_T (thermo.heat_capacity.HeatCapacitySolid
interpolation_property (thermo.volume.VolumeLiquid at- attribute), 184
tribute), 453 interpolation_T (thermo.interface.SurfaceTension at-
interpolation_property (thermo.volume.VolumeSolid at- tribute), 207
tribute), 466 interpolation_T (thermo.permittivity.Permittivity at-
interpolation_property() (thermo.vapor_pressure.VaporPressure tribute), 275
method), 402 interpolation_T (thermo.phase_change.EnthalpyVaporization
interpolation_property_inv attribute), 287
(thermo.heat_capacity.HeatCapacityGas at- interpolation_T (thermo.thermal_conductivity.ThermalConductivityGas
tribute), 165 attribute), 341
interpolation_property_inv interpolation_T (thermo.thermal_conductivity.ThermalConductivityLiquid
(thermo.heat_capacity.HeatCapacityLiquid attribute), 326
attribute), 179 interpolation_T (thermo.utils.TDependentProperty
interpolation_property_inv attribute), 379
(thermo.heat_capacity.HeatCapacitySolid interpolation_T (thermo.viscosity.ViscosityGas attribute),
attribute), 184 426
interpolation_property_inv interpolation_T (thermo.viscosity.ViscosityLiquid at-
(thermo.interface.SurfaceTension attribute), tribute), 421
207 interpolation_T (thermo.volume.VolumeGas attribute),
interpolation_property_inv 462
(thermo.permittivity.Permittivity attribute), interpolation_T (thermo.volume.VolumeLiquid attribute),
275 453
interpolation_property_inv interpolation_T (thermo.volume.VolumeSolid attribute),
(thermo.phase_change.EnthalpyVaporization 466
attribute), 288 interpolation_T() (thermo.vapor_pressure.VaporPressure
interpolation_property_inv method), 402
(thermo.thermal_conductivity.ThermalConductivityGas
ionic_strength() (in module thermo.electrochem), 82
attribute), 341 isentropic_exponent (thermo.chemical.Chemical at-
interpolation_property_inv tribute), 41
(thermo.thermal_conductivity.ThermalConductivityLiquid
isentropic_exponent (thermo.mixture.Mixture attribute),
attribute), 326 261
interpolation_property_inv isentropic_exponent() (in module thermo.utils), 361
(thermo.utils.TDependentProperty attribute), isentropic_exponents (thermo.mixture.Mixture attribute),
379 261
interpolation_property_inv isinf() (in module thermo.utils), 395
(thermo.viscosity.ViscosityGas attribute), isnan() (in module thermo.utils), 395
426 isobaric_expansion (thermo.chemical.Chemical at-
interpolation_property_inv tribute), 41
(thermo.viscosity.ViscosityLiquid attribute), isobaric_expansion (thermo.mixture.Mixture attribute),
421 262
interpolation_property_inv (thermo.volume.VolumeGas isobaric_expansion() (in module thermo.utils), 356
attribute), 462 isobaric_expansion_g (thermo.chemical.Chemical
interpolation_property_inv attribute), 41
(thermo.volume.VolumeLiquid attribute), isobaric_expansion_g (thermo.mixture.Mixture attribute),
453 262

Index 515
thermo Documentation, Release 0.1

isobaric_expansion_gs (thermo.mixture.Mixture at- Laliberte_heat_capacity() (in module


tribute), 262 thermo.electrochem), 74
isobaric_expansion_l (thermo.chemical.Chemical at- Laliberte_heat_capacity_i() (in module
tribute), 42 thermo.electrochem), 78
isobaric_expansion_l (thermo.mixture.Mixture attribute), Laliberte_heat_capacity_w() (in module
262 thermo.electrochem), 78
isobaric_expansion_ls (thermo.mixture.Mixture at- Laliberte_viscosity() (in module thermo.electrochem), 75
tribute), 262 Laliberte_viscosity_i() (in module thermo.electrochem),
isothermal_compressibility() (in module thermo.utils), 76
357 Laliberte_viscosity_w() (in module thermo.electrochem),
ITS90_68_difference() (in module thermo.temperature), 75
315 Lastovka_Shaw() (in module thermo.heat_capacity), 159
IUPAC_name() (in module thermo.identifiers), 196 Lastovka_Shaw_integral() (in module
IUPAC_names (thermo.mixture.Mixture attribute), 249 thermo.heat_capacity), 159
Lastovka_Shaw_integral_over_T() (in module
J thermo.heat_capacity), 160
Jakob() (thermo.chemical.Chemical method), 32 Lastovka_solid() (in module thermo.heat_capacity), 180
Jakob() (thermo.mixture.Mixture method), 251 Lastovka_solid_integral() (in module
Jasper() (in module thermo.interface), 199 thermo.heat_capacity), 180
Joback (class in thermo.joback), 213 Lastovka_solid_integral_over_T() (in module
Joule_Thomson() (in module thermo.utils), 359 thermo.heat_capacity), 181
JT (thermo.chemical.Chemical attribute), 31 ldexp() (in module thermo.utils), 395
JT (thermo.mixture.Mixture attribute), 250 Lee_Kesler() (in module thermo.vapor_pressure), 403
JTg (thermo.chemical.Chemical attribute), 31 legal_status (thermo.chemical.Chemical attribute), 43
JTg (thermo.mixture.Mixture attribute), 250 legal_status() (in module thermo.law), 222
JTgs (thermo.mixture.Mixture attribute), 250 legal_statuses (thermo.mixture.Mixture attribute), 264
JTl (thermo.chemical.Chemical attribute), 31 Letsou_Stiel() (in module thermo.viscosity), 415
JTl (thermo.mixture.Mixture attribute), 251 LFL() (in module thermo.safety), 298
JTls (thermo.mixture.Mixture attribute), 251 LFL_mixture() (in module thermo.safety), 300
Li() (in module thermo.critical), 57
K Li_Johns_Ahmadi_solution() (in module
k (thermo.chemical.Chemical attribute), 42 thermo.activity), 10
k (thermo.mixture.Mixture attribute), 262 Lindsay_Bromley() (in module
K_value() (in module thermo.activity), 7 thermo.thermal_conductivity), 346
kappa1_Tr_limit (thermo.eos.PRSV attribute), 108 Liu() (in module thermo.phase_change), 283
kg (thermo.chemical.Chemical attribute), 42 LK_omega() (in module thermo.acentric), 4
kg (thermo.mixture.Mixture attribute), 263 load_all_methods() (thermo.heat_capacity.HeatCapacityGas
kgs (thermo.mixture.Mixture attribute), 263 method), 165
kl (thermo.chemical.Chemical attribute), 43 load_all_methods() (thermo.heat_capacity.HeatCapacityGasMixture
kl (thermo.mixture.Mixture attribute), 263 method), 190
kls (thermo.mixture.Mixture attribute), 263 load_all_methods() (thermo.heat_capacity.HeatCapacityLiquid
ks (thermo.mixture.Mixture attribute), 263 method), 179
kwargs (thermo.eos.GCEOS attribute), 95 load_all_methods() (thermo.heat_capacity.HeatCapacityLiquidMixture
Kweq_1981() (in module thermo.electrochem), 82 method), 192
Kweq_IAPWS() (in module thermo.electrochem), 83 load_all_methods() (thermo.heat_capacity.HeatCapacitySolid
Kweq_IAPWS_gas() (in module thermo.electrochem), 83 method), 184
load_all_methods() (thermo.heat_capacity.HeatCapacitySolidMixture
L method), 187
Lakshmi_Prasad() (in module load_all_methods() (thermo.interface.SurfaceTension
thermo.thermal_conductivity), 317 method), 207
Laliberte_density() (in module thermo.electrochem), 74 load_all_methods() (thermo.interface.SurfaceTensionMixture
Laliberte_density_i() (in module thermo.electrochem), 77 method), 212
Laliberte_density_w() (in module thermo.electrochem), load_all_methods() (thermo.permittivity.Permittivity
77 method), 275

516 Index
thermo Documentation, Release 0.1

load_all_methods() (thermo.phase_change.EnthalpyVaporization
Mathias_Copeman() (thermo.eos.ALPHA_FUNCTIONS
method), 288 static method), 126
load_all_methods() (thermo.thermal_conductivity.ThermalConductivityGas
Meissner() (in module thermo.critical), 56
method), 341 Melhem() (thermo.eos.ALPHA_FUNCTIONS static
load_all_methods() (thermo.thermal_conductivity.ThermalConductivityGasMixture
method), 127
method), 349 Mersmann_Kind_predictor() (in module thermo.critical),
load_all_methods() (thermo.thermal_conductivity.ThermalConductivityLiquid
53
method), 326 Mersmann_Kind_thermal_conductivity_liquid() (in mod-
load_all_methods() (thermo.utils.TDependentProperty ule thermo.thermal_conductivity), 321
method), 379 method (thermo.utils.MixtureProperty attribute), 389
load_all_methods() (thermo.vapor_pressure.VaporPressure method (thermo.utils.TDependentProperty attribute), 379
method), 402 method (thermo.vapor_pressure.VaporPressure attribute),
load_all_methods() (thermo.viscosity.ViscosityGas 402
method), 426 method_P (thermo.utils.TPDependentProperty attribute),
load_all_methods() (thermo.viscosity.ViscosityGasMixture 385
method), 441 mgm3_to_ppmv() (in module thermo.safety), 294
load_all_methods() (thermo.viscosity.ViscosityLiquid Miqueu() (in module thermo.interface), 203
method), 421 Missenard() (in module thermo.thermal_conductivity),
load_all_methods() (thermo.viscosity.ViscosityLiquidMixture 328
method), 438 mixing_logarithmic() (in module thermo.utils), 369
load_all_methods() (thermo.volume.VolumeGas mixing_simple() (in module thermo.utils), 368
method), 462 Mixture (class in thermo.mixture), 237
load_all_methods() (thermo.volume.VolumeGasMixture mixture_from_any() (in module thermo.identifiers), 197
method), 472 mixture_property() (thermo.utils.MixtureProperty
load_all_methods() (thermo.volume.VolumeLiquid method), 389
method), 453 MixtureProperty (class in thermo.utils), 387
load_all_methods() (thermo.volume.VolumeLiquidMixture MK() (in module thermo.phase_change), 280
method), 469 modf() (in module thermo.utils), 395
load_all_methods() (thermo.volume.VolumeSolid modified_Wilson_Tc() (in module thermo.critical), 60
method), 466 modified_Wilson_Vc() (in module thermo.critical), 61
load_all_methods() (thermo.volume.VolumeSolidMixture molar_refractivity_from_RI() (in module
method), 475 thermo.refractivity), 293
load_economic_data() (in module thermo.law), 224 molecular_diameter() (in module thermo.lennard_jones),
load_group_assignments_DDBST() (in module 225
thermo.unifac), 356 molecular_weight() (in module thermo.elements), 86
load_law_data() (in module thermo.law), 224 mu (thermo.chemical.Chemical attribute), 43
log() (in module thermo.utils), 395 mu (thermo.mixture.Mixture attribute), 264
log10() (in module thermo.utils), 395 mug (thermo.chemical.Chemical attribute), 44
log1p() (in module thermo.utils), 395 mug (thermo.mixture.Mixture attribute), 264
logP() (in module thermo.environment), 158 mugs (thermo.mixture.Mixture attribute), 265
Lucas() (in module thermo.viscosity), 428 mul (thermo.chemical.Chemical attribute), 44
lucas_gas() (in module thermo.viscosity), 430 mul (thermo.mixture.Mixture attribute), 265
mul() (thermo.joback.Joback method), 221
M mul_coeffs() (thermo.joback.Joback static method), 221
main_derivatives_and_departures() (thermo.eos.GCEOS muls (thermo.mixture.Mixture attribute), 265
static method), 95 MW() (in module thermo.identifiers), 195
main_derivatives_and_departures() (thermo.eos.VDW
static method), 113 N
mass_fractions (thermo.chemical.Chemical attribute), 43 n (thermo.heat_capacity.Zabransky_spline attribute), 175
mass_fractions (thermo.mixture.Mixture attribute), 264 name (thermo.heat_capacity.HeatCapacityGas attribute),
mass_fractions() (in module thermo.elements), 87 166
mass_fractionss (thermo.mixture.Mixture attribute), 264 name (thermo.heat_capacity.HeatCapacityGasMixture at-
Mathias() (thermo.eos.ALPHA_FUNCTIONS static tribute), 190
method), 126

Index 517
thermo Documentation, Release 0.1

name (thermo.heat_capacity.HeatCapacityLiquid at- nu (thermo.chemical.Chemical attribute), 44


tribute), 179 nu (thermo.mixture.Mixture attribute), 265
name (thermo.heat_capacity.HeatCapacityLiquidMixture nug (thermo.chemical.Chemical attribute), 44
attribute), 193 nug (thermo.mixture.Mixture attribute), 265
name (thermo.heat_capacity.HeatCapacitySolid at- nugs (thermo.mixture.Mixture attribute), 266
tribute), 185 nul (thermo.chemical.Chemical attribute), 45
name (thermo.heat_capacity.HeatCapacitySolidMixture nul (thermo.mixture.Mixture attribute), 266
attribute), 187 nuls (thermo.mixture.Mixture attribute), 266
name (thermo.heat_capacity.Zabransky_quasipolynomial number_to_elements (thermo.elements.PeriodicTable at-
attribute), 173 tribute), 86
name (thermo.heat_capacity.Zabransky_spline attribute),
175 O
name (thermo.interface.SurfaceTension attribute), 207 ODP() (in module thermo.environment), 157
name (thermo.interface.SurfaceTensionMixture at- omega (thermo.eos.GCEOS_DUMMY attribute), 130
tribute), 212 omega (thermo.eos.RK attribute), 115
name (thermo.permittivity.Permittivity attribute), 275 omega (thermo.eos.VDW attribute), 113
name (thermo.phase_change.EnthalpyVaporization at- omega() (in module thermo.acentric), 3
tribute), 288 omega_mixture() (in module thermo.acentric), 5
name (thermo.thermal_conductivity.ThermalConductivityGas
attribute), 341 P
name (thermo.thermal_conductivity.ThermalConductivityGasMixture
Parachor (thermo.chemical.Chemical attribute), 32
attribute), 349 Parachor() (in module thermo.utils), 371
name (thermo.thermal_conductivity.ThermalConductivityLiquidPbubble_mixture() (in module thermo.activity), 16
attribute), 326 Pc (thermo.eos.GCEOS_DUMMY attribute), 130
name (thermo.utils.MixtureProperty attribute), 389 Pc() (in module thermo.critical), 50
name (thermo.utils.TDependentProperty attribute), 379 Pc() (thermo.joback.Joback static method), 218
name (thermo.vapor_pressure.VaporPressure attribute), Pc_mixture() (in module thermo.critical), 61
402 Pdew_mixture() (in module thermo.activity), 17
name (thermo.viscosity.ViscosityGas attribute), 426 Peclet_heat() (thermo.chemical.Chemical method), 32
name (thermo.viscosity.ViscosityGasMixture attribute), Peclet_heat() (thermo.mixture.Mixture method), 251
441 PeriodicTable (class in thermo.elements), 86
name (thermo.viscosity.ViscosityLiquid attribute), 421 periods (in module thermo.elements), 90
name (thermo.viscosity.ViscosityLiquidMixture at- permittivites (thermo.mixture.Mixture attribute), 266
tribute), 438 Permittivity (class in thermo.permittivity), 273
name (thermo.volume.VolumeGas attribute), 462 permittivity (thermo.chemical.Chemical attribute), 45
name (thermo.volume.VolumeGasMixture attribute), 472 permittivity_IAPWS() (in module thermo.permittivity),
name (thermo.volume.VolumeLiquid attribute), 453 272
name (thermo.volume.VolumeLiquidMixture attribute), phase (thermo.mixture.Mixture attribute), 267
470 phase_identification_parameter() (in module
name (thermo.volume.VolumeSolid attribute), 466 thermo.utils), 359
name (thermo.volume.VolumeSolidMixture attribute), phase_identification_parameter_phase() (in module
475 thermo.utils), 360
name() (in module thermo.identifiers), 196 phase_select_property() (in module thermo.utils), 373
name_to_elements (thermo.elements.PeriodicTable at- Pitzer() (in module thermo.interface), 200
tribute), 86 Pitzer() (in module thermo.phase_change), 278
nested_formula_parser() (in module thermo.elements), 90 plot_isobar() (thermo.utils.MixtureProperty method), 389
NFPA_combustible_classification() (in module plot_isobar() (thermo.utils.TPDependentProperty
thermo.safety), 303 method), 386
Nicola() (in module thermo.thermal_conductivity), 319 plot_isotherm() (thermo.utils.MixtureProperty method),
Nicola_original() (in module 390
thermo.thermal_conductivity), 319 plot_isotherm() (thermo.utils.TPDependentProperty
none_and_length_check() (in module thermo.utils), 368 method), 386
normalize() (in module thermo.utils), 368 plot_property() (thermo.utils.MixtureProperty method),
NRTL() (in module thermo.activity), 12 390

518 Index
thermo Documentation, Release 0.1

plot_T_dependent_property() attribute), 341


(thermo.utils.TDependentProperty method), property_max (thermo.thermal_conductivity.ThermalConductivityGasMixtu
379 attribute), 349
plot_TP_dependent_property() property_max (thermo.thermal_conductivity.ThermalConductivityLiquid
(thermo.utils.TPDependentProperty method), attribute), 326
385 property_max (thermo.utils.MixtureProperty attribute),
Pmax (thermo.volume.VolumeGas attribute), 461 392
Pmin (thermo.volume.VolumeGas attribute), 461 property_max (thermo.utils.TDependentProperty at-
polarizability_from_RI() (in module thermo.refractivity), tribute), 379
292 property_max (thermo.vapor_pressure.VaporPressure at-
polylog2() (in module thermo.utils), 393 tribute), 402
pow() (in module thermo.utils), 395 property_max (thermo.viscosity.ViscosityGas attribute),
Poynting (thermo.chemical.Chemical attribute), 32 426
ppmv_to_mgm3() (in module thermo.safety), 294 property_max (thermo.viscosity.ViscosityGasMixture at-
PR (class in thermo.eos), 99 tribute), 441
Pr (thermo.chemical.Chemical attribute), 33 property_max (thermo.viscosity.ViscosityLiquid at-
Pr (thermo.mixture.Mixture attribute), 251 tribute), 421
PR78 (class in thermo.eos), 104 property_max (thermo.viscosity.ViscosityLiquidMixture
PR78MIX (class in thermo.eos_mix), 138 attribute), 438
Prg (thermo.chemical.Chemical attribute), 33 property_max (thermo.volume.VolumeGas attribute), 462
Prg (thermo.mixture.Mixture attribute), 252 property_max (thermo.volume.VolumeGasMixture
Prgs (thermo.mixture.Mixture attribute), 252 attribute), 472
Prl (thermo.chemical.Chemical attribute), 33 property_max (thermo.volume.VolumeLiquid attribute),
Prl (thermo.mixture.Mixture attribute), 252 453
Prls (thermo.mixture.Mixture attribute), 252 property_max (thermo.volume.VolumeLiquidMixture at-
PRMIX (class in thermo.eos_mix), 133 tribute), 470
prop_cached (thermo.utils.MixtureProperty attribute), property_max (thermo.volume.VolumeSolid attribute),
391 466
property_derivative_P() (thermo.utils.MixtureProperty property_max (thermo.volume.VolumeSolidMixture at-
method), 391 tribute), 475
property_derivative_T() (thermo.utils.MixtureProperty property_min (thermo.heat_capacity.HeatCapacityGas at-
method), 391 tribute), 166
property_mass_to_molar() (in module thermo.utils), 371 property_min (thermo.heat_capacity.HeatCapacityGasMixture
property_max (thermo.heat_capacity.HeatCapacityGas attribute), 190
attribute), 166 property_min (thermo.heat_capacity.HeatCapacityLiquid
property_max (thermo.heat_capacity.HeatCapacityGasMixture attribute), 179
attribute), 190 property_min (thermo.heat_capacity.HeatCapacityLiquidMixture
property_max (thermo.heat_capacity.HeatCapacityLiquid attribute), 193
attribute), 179 property_min (thermo.heat_capacity.HeatCapacitySolid
property_max (thermo.heat_capacity.HeatCapacityLiquidMixture attribute), 185
attribute), 193 property_min (thermo.heat_capacity.HeatCapacitySolidMixture
property_max (thermo.heat_capacity.HeatCapacitySolid attribute), 187
attribute), 185 property_min (thermo.interface.SurfaceTension at-
property_max (thermo.heat_capacity.HeatCapacitySolidMixture tribute), 207
attribute), 187 property_min (thermo.interface.SurfaceTensionMixture
property_max (thermo.interface.SurfaceTension at- attribute), 212
tribute), 207 property_min (thermo.permittivity.Permittivity attribute),
property_max (thermo.interface.SurfaceTensionMixture 275
attribute), 212 property_min (thermo.phase_change.EnthalpyVaporization
property_max (thermo.permittivity.Permittivity attribute), attribute), 288
275 property_min (thermo.thermal_conductivity.ThermalConductivityGas
property_max (thermo.phase_change.EnthalpyVaporization attribute), 341
attribute), 288 property_min (thermo.thermal_conductivity.ThermalConductivityGasMixtu
property_max (thermo.thermal_conductivity.ThermalConductivityGasattribute), 349

Index 519
thermo Documentation, Release 0.1

property_min (thermo.thermal_conductivity.ThermalConductivityLiquid
Rachford_Rice_flash_error() (in module thermo.activity),
attribute), 326 8
property_min (thermo.utils.MixtureProperty attribute), Rachford_Rice_solution() (in module thermo.activity), 9
392 Rackett() (in module thermo.volume), 442
property_min (thermo.utils.TDependentProperty at- Rackett_mixture() (in module thermo.volume), 456
tribute), 379 radians() (in module thermo.utils), 395
property_min (thermo.vapor_pressure.VaporPressure at- ranked_methods (thermo.heat_capacity.HeatCapacityGas
tribute), 402 attribute), 166
property_min (thermo.viscosity.ViscosityGas attribute), ranked_methods (thermo.heat_capacity.HeatCapacityGasMixture
426 attribute), 190
property_min (thermo.viscosity.ViscosityGasMixture at- ranked_methods (thermo.heat_capacity.HeatCapacityLiquid
tribute), 441 attribute), 179
property_min (thermo.viscosity.ViscosityLiquid at- ranked_methods (thermo.heat_capacity.HeatCapacityLiquidMixture
tribute), 421 attribute), 193
property_min (thermo.viscosity.ViscosityLiquidMixture ranked_methods (thermo.heat_capacity.HeatCapacitySolid
attribute), 438 attribute), 185
property_min (thermo.volume.VolumeGas attribute), 462 ranked_methods (thermo.heat_capacity.HeatCapacitySolidMixture
property_min (thermo.volume.VolumeGasMixture attribute), 187
attribute), 473 ranked_methods (thermo.interface.SurfaceTension
property_min (thermo.volume.VolumeLiquid attribute), attribute), 207
453 ranked_methods (thermo.interface.SurfaceTensionMixture
property_min (thermo.volume.VolumeLiquidMixture at- attribute), 212
tribute), 470 ranked_methods (thermo.permittivity.Permittivity at-
property_min (thermo.volume.VolumeSolid attribute), tribute), 275
466 ranked_methods (thermo.phase_change.EnthalpyVaporization
property_min (thermo.volume.VolumeSolidMixture at- attribute), 288
tribute), 475 ranked_methods (thermo.thermal_conductivity.ThermalConductivityGas
property_molar_to_mass() (in module thermo.utils), 371 attribute), 341
PRSV (class in thermo.eos), 106 ranked_methods (thermo.thermal_conductivity.ThermalConductivityGasMi
PRSV2 (class in thermo.eos), 108 attribute), 349
PRSV2MIX (class in thermo.eos_mix), 146 ranked_methods (thermo.thermal_conductivity.ThermalConductivityLiquid
PRSVMIX (class in thermo.eos_mix), 143 attribute), 326
Przedziecki_Sridhar() (in module thermo.viscosity), 415 ranked_methods (thermo.utils.MixtureProperty attribute),
Psat (thermo.chemical.Chemical attribute), 33 392
Psat() (thermo.eos.GCEOS method), 93 ranked_methods (thermo.utils.TDependentProperty at-
Psat_coeffs (thermo.eos.PR attribute), 101 tribute), 379
Psat_coeffs (thermo.eos.RK attribute), 115 ranked_methods (thermo.vapor_pressure.VaporPressure
Psat_coeffs (thermo.eos.SRK attribute), 103 attribute), 402
Psat_coeffs (thermo.eos.VDW attribute), 112 ranked_methods (thermo.viscosity.ViscosityGas at-
Psat_coeffs_limiting (thermo.eos.PR attribute), 101 tribute), 426
Psat_coeffs_limiting (thermo.eos.RK attribute), 115 ranked_methods (thermo.viscosity.ViscosityGasMixture
Psat_coeffs_limiting (thermo.eos.SRK attribute), 104 attribute), 441
Psat_coeffs_limiting (thermo.eos.VDW attribute), 112 ranked_methods (thermo.viscosity.ViscosityLiquid at-
Psats (thermo.mixture.Mixture attribute), 253 tribute), 421
PSRK_groups (thermo.chemical.Chemical attribute), 32 ranked_methods (thermo.viscosity.ViscosityLiquidMixture
PSRK_groups (thermo.mixture.Mixture attribute), 251 attribute), 438
Pt() (in module thermo.triple), 351 ranked_methods (thermo.volume.VolumeGas attribute),
PubChem() (in module thermo.identifiers), 195 462
PubChems (thermo.mixture.Mixture attribute), 253 ranked_methods (thermo.volume.VolumeGasMixture at-
tribute), 473
R ranked_methods (thermo.volume.VolumeLiquid at-
R_specific (thermo.chemical.Chemical attribute), 34 tribute), 453
R_specific (thermo.mixture.Mixture attribute), 253 ranked_methods (thermo.volume.VolumeLiquidMixture
attribute), 470

520 Index
thermo Documentation, Release 0.1

ranked_methods (thermo.volume.VolumeSolid attribute), Rowlinson_Bondi() (in module thermo.heat_capacity),


466 167
ranked_methods (thermo.volume.VolumeSolidMixture Rowlinson_Poling() (in module thermo.heat_capacity),
attribute), 475 166
ranked_methods_P (thermo.thermal_conductivity.ThermalConductivityGas
attribute), 341 S
ranked_methods_P (thermo.thermal_conductivity.ThermalConductivityLiquid
Saffari() (thermo.eos.ALPHA_FUNCTIONS static
attribute), 326 method), 127
ranked_methods_P (thermo.viscosity.ViscosityGas Sanjari() (in module thermo.vapor_pressure), 406
attribute), 426 Sastri_Rao() (in module thermo.interface), 201
ranked_methods_P (thermo.viscosity.ViscosityLiquid at- Sato_Riedel() (in module thermo.thermal_conductivity),
tribute), 421 317
ranked_methods_P (thermo.volume.VolumeGas at- Schwartzentruber() (thermo.eos.ALPHA_FUNCTIONS
tribute), 462 static method), 127
ranked_methods_P (thermo.volume.VolumeLiquid select_valid_methods() (thermo.utils.MixtureProperty
attribute), 453 method), 392
rdkitmol (thermo.chemical.Chemical attribute), 45 select_valid_methods() (thermo.utils.TDependentProperty
rdkitmol_Hs (thermo.chemical.Chemical attribute), 45 method), 379
REFPROP() (in module thermo.interface), 197 select_valid_methods_P()
refractive_index() (in module thermo.refractivity), 292 (thermo.utils.TPDependentProperty method),
Reynolds() (thermo.chemical.Chemical method), 34 386
Reynolds() (thermo.mixture.Mixture method), 253 serialize_formula() (in module thermo.elements), 91
rho (thermo.chemical.Chemical attribute), 45 set_chemical_constants() (thermo.mixture.Mixture
rho (thermo.mixture.Mixture attribute), 267 method), 270
rho_to_Vm() (in module thermo.utils), 362 set_Chemical_property_objects()
rhog (thermo.chemical.Chemical attribute), 45 (thermo.mixture.Mixture method), 270
rhog (thermo.mixture.Mixture attribute), 267 set_chemical_TP() (thermo.mixture.Mixture method),
rhog_STP (thermo.mixture.Mixture attribute), 267 270
rhogm (thermo.chemical.Chemical attribute), 46 set_constant_sources() (thermo.chemical.Chemical
rhogm (thermo.mixture.Mixture attribute), 267 method), 47
rhogm_STP (thermo.mixture.Mixture attribute), 267 set_constant_sources() (thermo.mixture.Mixture
rhogms (thermo.mixture.Mixture attribute), 268 method), 270
rhogs (thermo.mixture.Mixture attribute), 268 set_constants() (thermo.chemical.Chemical method), 48
rhol (thermo.chemical.Chemical attribute), 46 set_constants() (thermo.mixture.Mixture method), 270
rhol (thermo.mixture.Mixture attribute), 268 set_eos() (thermo.chemical.Chemical method), 48
rhol_STP (thermo.mixture.Mixture attribute), 268 set_eos() (thermo.mixture.Mixture method), 270
rholm (thermo.chemical.Chemical attribute), 46 set_extensive_flow() (thermo.stream.Stream method),
rholm (thermo.mixture.Mixture attribute), 268 314
rholm_STP (thermo.mixture.Mixture attribute), 269 set_extensive_properties() (thermo.stream.Stream
rholms (thermo.mixture.Mixture attribute), 269 method), 314
rhols (thermo.mixture.Mixture attribute), 269 set_from_PT() (thermo.eos.GCEOS method), 95
rhom (thermo.chemical.Chemical attribute), 47 set_phase() (thermo.mixture.Mixture method), 270
rhom (thermo.mixture.Mixture attribute), 269 set_properties_from_solution() (thermo.eos.GCEOS
rhos (thermo.chemical.Chemical attribute), 47 method), 96
rhos (thermo.mixture.Mixture attribute), 269 set_ref() (thermo.chemical.Chemical method), 48
rhosm (thermo.chemical.Chemical attribute), 47 set_tabular_data() (thermo.utils.TDependentProperty
rhosms (thermo.mixture.Mixture attribute), 269 method), 380
rhoss (thermo.mixture.Mixture attribute), 270 set_tabular_data_P() (thermo.utils.TPDependentProperty
RI_from_molar_refractivity() (in module method), 387
thermo.refractivity), 293 set_thermo() (thermo.chemical.Chemical method), 48
Riedel() (in module thermo.phase_change), 281 set_TP() (thermo.mixture.Mixture method), 270
rings (thermo.chemical.Chemical attribute), 47 set_TP_sources() (thermo.chemical.Chemical method),
ringss (thermo.mixture.Mixture attribute), 270 47
RK (class in thermo.eos), 113 set_TP_sources() (thermo.mixture.Mixture method), 270

Index 521
thermo Documentation, Release 0.1

set_user_method() (thermo.utils.MixtureProperty sigma_Tee_Gotoh_Steward_2() (in module


method), 392 thermo.lennard_jones), 229
set_user_methods() (thermo.utils.TDependentProperty sigmas (thermo.mixture.Mixture attribute), 271
method), 380 similarity_variable() (in module thermo.elements), 88
set_user_methods_P() (thermo.utils.TPDependentProperty similarity_variables (thermo.mixture.Mixture attribute),
method), 387 271
setup_a_alpha_and_derivatives() simple_formula_parser() (in module thermo.elements),
(thermo.eos_mix.APISRKMIX method), 89
156 sin() (in module thermo.utils), 395
setup_a_alpha_and_derivatives() sinh() (in module thermo.utils), 395
(thermo.eos_mix.PRMIX method), 136 Skin() (in module thermo.safety), 296
setup_a_alpha_and_derivatives() smarts_fragment() (in module thermo.joback), 213
(thermo.eos_mix.PRSV2MIX method), 148 smiles() (in module thermo.identifiers), 196
setup_a_alpha_and_derivatives() smiless (thermo.mixture.Mixture attribute), 271
(thermo.eos_mix.PRSVMIX method), 146 SMK() (in module thermo.phase_change), 279
setup_a_alpha_and_derivatives() SNM0() (in module thermo.volume), 447
(thermo.eos_mix.SRKMIX method), 138 Soave_1972() (thermo.eos.ALPHA_FUNCTIONS static
setup_a_alpha_and_derivatives() method), 127
(thermo.eos_mix.TWUPRMIX method), Soave_1984() (thermo.eos.ALPHA_FUNCTIONS static
151 method), 128
setup_a_alpha_and_derivatives() Soave_1993() (thermo.eos.ALPHA_FUNCTIONS static
(thermo.eos_mix.TWUSRKMIX method), method), 128
153 solubility_eutectic() (in module thermo.solubility), 304
setup_a_alpha_and_derivatives() solubility_parameter (thermo.chemical.Chemical at-
(thermo.eos_mix.VDWMIX method), 143 tribute), 48
SG (thermo.chemical.Chemical attribute), 34 solubility_parameter() (in module thermo.solubility), 303
SG (thermo.mixture.Mixture attribute), 253 solubility_parameters (thermo.mixture.Mixture attribute),
SG() (in module thermo.utils), 373 271
SG_to_API() (in module thermo.utils), 371 solve() (thermo.eos.GCEOS method), 98
SGg (thermo.chemical.Chemical attribute), 34 solve_prop() (thermo.utils.TDependentProperty method),
SGg (thermo.mixture.Mixture attribute), 253 380
SGl (thermo.chemical.Chemical attribute), 34 solve_T() (thermo.eos.APISRK method), 118
SGl (thermo.mixture.Mixture attribute), 254 solve_T() (thermo.eos.GCEOS method), 98
SGs (thermo.chemical.Chemical attribute), 35 solve_T() (thermo.eos.PR method), 102
SGs (thermo.mixture.Mixture attribute), 254 solve_T() (thermo.eos.PRSV method), 108
Sheffy_Johnson() (in module solve_T() (thermo.eos.PRSV2 method), 110
thermo.thermal_conductivity), 316 solve_T() (thermo.eos.RK method), 115
sigma (thermo.chemical.Chemical attribute), 48 solve_T() (thermo.eos.SRK method), 104
sigma (thermo.mixture.Mixture attribute), 270 solve_T() (thermo.eos.VDW method), 113
sigma_Bird_Stewart_Lightfoot_boiling() (in module solve_T() (thermo.eos_mix.GCEOSMIX method), 133
thermo.lennard_jones), 227 Somayajulu() (in module thermo.interface), 198
sigma_Bird_Stewart_Lightfoot_critical_1() (in module sorted_valid_methods (thermo.heat_capacity.HeatCapacityGas
thermo.lennard_jones), 227 attribute), 166
sigma_Bird_Stewart_Lightfoot_critical_2() (in module sorted_valid_methods (thermo.heat_capacity.HeatCapacityGasMixture
thermo.lennard_jones), 226 attribute), 190
sigma_Bird_Stewart_Lightfoot_melting() (in module sorted_valid_methods (thermo.heat_capacity.HeatCapacityLiquid
thermo.lennard_jones), 228 attribute), 179
sigma_Flynn() (in module thermo.lennard_jones), 226 sorted_valid_methods (thermo.heat_capacity.HeatCapacityLiquidMixture
sigma_Silva_Liu_Macedo() (in module attribute), 193
thermo.lennard_jones), 230 sorted_valid_methods (thermo.heat_capacity.HeatCapacitySolid
sigma_Stiel_Thodos() (in module thermo.lennard_jones), attribute), 185
228 sorted_valid_methods (thermo.heat_capacity.HeatCapacitySolidMixture
sigma_Tee_Gotoh_Steward_1() (in module attribute), 187
thermo.lennard_jones), 229 sorted_valid_methods (thermo.interface.SurfaceTension

522 Index
thermo Documentation, Release 0.1

attribute), 207 Stockmayer() (in module thermo.lennard_jones), 224


sorted_valid_methods (thermo.interface.SurfaceTensionMixture
Stream (class in thermo.stream), 305
attribute), 212 surface_tension_methods (in module thermo.interface),
sorted_valid_methods (thermo.permittivity.Permittivity 204
attribute), 275 SurfaceTension (class in thermo.interface), 204
sorted_valid_methods (thermo.phase_change.EnthalpyVaporization
SurfaceTensionMixture (class in thermo.interface), 209
attribute), 288 Suzuki_LFL() (in module thermo.safety), 300
sorted_valid_methods (thermo.thermal_conductivity.ThermalConductivityGas
Suzuki_UFL() (in module thermo.safety), 301
attribute), 341 symbol_to_elements (thermo.elements.PeriodicTable at-
sorted_valid_methods (thermo.thermal_conductivity.ThermalConductivityGasMixture
tribute), 86
attribute), 349 synonyms() (in module thermo.identifiers), 196
sorted_valid_methods (thermo.thermal_conductivity.ThermalConductivityLiquid
synonymss (thermo.mixture.Mixture attribute), 271
attribute), 326
sorted_valid_methods (thermo.vapor_pressure.VaporPressureT
attribute), 402 T_cached (thermo.utils.TDependentProperty attribute),
sorted_valid_methods (thermo.viscosity.ViscosityGas at- 376
tribute), 426 T_converter() (in module thermo.temperature), 314
sorted_valid_methods (thermo.viscosity.ViscosityGasMixture
T_dependent_property() (thermo.utils.TDependentProperty
attribute), 441 method), 376
sorted_valid_methods (thermo.viscosity.ViscosityLiquid T_dependent_property_derivative()
attribute), 421 (thermo.utils.TDependentProperty method),
sorted_valid_methods (thermo.viscosity.ViscosityLiquidMixture 376
attribute), 438 T_dependent_property_integral()
sorted_valid_methods (thermo.volume.VolumeGasMixture (thermo.utils.TDependentProperty method),
attribute), 473 377
sorted_valid_methods (thermo.volume.VolumeLiquid at- T_dependent_property_integral_over_T()
tribute), 454 (thermo.utils.TDependentProperty method),
sorted_valid_methods (thermo.volume.VolumeLiquidMixture 377
attribute), 470 tabular_data (thermo.heat_capacity.HeatCapacityGas at-
sorted_valid_methods (thermo.volume.VolumeSolid at- tribute), 166
tribute), 467 tabular_data (thermo.heat_capacity.HeatCapacityLiquid
sorted_valid_methods (thermo.volume.VolumeSolidMixture attribute), 179
attribute), 475 tabular_data (thermo.heat_capacity.HeatCapacitySolid
sorted_valid_methods_P (thermo.thermal_conductivity.ThermalConductivityGas
attribute), 185
attribute), 341 tabular_data (thermo.interface.SurfaceTension attribute),
sorted_valid_methods_P (thermo.thermal_conductivity.ThermalConductivityLiquid
207
attribute), 326 tabular_data (thermo.permittivity.Permittivity attribute),
sorted_valid_methods_P (thermo.viscosity.ViscosityGas 275
attribute), 427 tabular_data (thermo.phase_change.EnthalpyVaporization
sorted_valid_methods_P (thermo.viscosity.ViscosityLiquid attribute), 288
attribute), 421 tabular_data (thermo.thermal_conductivity.ThermalConductivityGas
sorted_valid_methods_P (thermo.volume.VolumeGas at- attribute), 341
tribute), 462 tabular_data (thermo.thermal_conductivity.ThermalConductivityLiquid
sorted_valid_methods_P (thermo.volume.VolumeLiquid attribute), 326
attribute), 454 tabular_data (thermo.vapor_pressure.VaporPressure at-
speed_of_sound() (in module thermo.utils), 358 tribute), 402
sqrt() (in module thermo.utils), 395 tabular_data (thermo.viscosity.ViscosityGas attribute),
SRK (class in thermo.eos), 102 427
SRKMIX (class in thermo.eos_mix), 136 tabular_data (thermo.viscosity.ViscosityLiquid attribute),
STEL() (in module thermo.safety), 295 421
Stiel_Thodos() (in module thermo.viscosity), 429 tabular_data (thermo.volume.VolumeGas attribute), 463
stiel_thodos_dense() (in module tabular_data (thermo.volume.VolumeLiquid attribute),
thermo.thermal_conductivity), 342 454
StielPolar() (in module thermo.acentric), 5 tabular_data (thermo.volume.VolumeSolid attribute), 467

Index 523
thermo Documentation, Release 0.1

tabular_data_interpolators tabular_data_interpolators_P
(thermo.heat_capacity.HeatCapacityGas at- (thermo.volume.VolumeLiquid attribute),
tribute), 166 454
tabular_data_interpolators tabular_data_P (thermo.thermal_conductivity.ThermalConductivityGas
(thermo.heat_capacity.HeatCapacityLiquid attribute), 341
attribute), 179 tabular_data_P (thermo.thermal_conductivity.ThermalConductivityLiquid
tabular_data_interpolators attribute), 326
(thermo.heat_capacity.HeatCapacitySolid tabular_data_P (thermo.viscosity.ViscosityGas attribute),
attribute), 185 427
tabular_data_interpolators tabular_data_P (thermo.viscosity.ViscosityLiquid at-
(thermo.interface.SurfaceTension attribute), tribute), 421
207 tabular_data_P (thermo.volume.VolumeGas attribute),
tabular_data_interpolators 463
(thermo.permittivity.Permittivity attribute), tabular_data_P (thermo.volume.VolumeLiquid attribute),
275 454
tabular_data_interpolators tabular_extrapolation_permitted
(thermo.phase_change.EnthalpyVaporization (thermo.heat_capacity.HeatCapacityGas at-
attribute), 288 tribute), 166
tabular_data_interpolators tabular_extrapolation_permitted
(thermo.thermal_conductivity.ThermalConductivityGas (thermo.heat_capacity.HeatCapacityLiquid
attribute), 341 attribute), 179
tabular_data_interpolators tabular_extrapolation_permitted
(thermo.thermal_conductivity.ThermalConductivityLiquid (thermo.heat_capacity.HeatCapacitySolid
attribute), 327 attribute), 185
tabular_data_interpolators tabular_extrapolation_permitted
(thermo.vapor_pressure.VaporPressure at- (thermo.interface.SurfaceTension attribute),
tribute), 402 207
tabular_data_interpolators tabular_extrapolation_permitted
(thermo.viscosity.ViscosityGas attribute), (thermo.permittivity.Permittivity attribute),
427 275
tabular_data_interpolators tabular_extrapolation_permitted
(thermo.viscosity.ViscosityLiquid attribute), (thermo.phase_change.EnthalpyVaporization
421 attribute), 288
tabular_data_interpolators (thermo.volume.VolumeGas tabular_extrapolation_permitted
attribute), 463 (thermo.thermal_conductivity.ThermalConductivityGas
tabular_data_interpolators attribute), 341
(thermo.volume.VolumeLiquid attribute), tabular_extrapolation_permitted
454 (thermo.thermal_conductivity.ThermalConductivityLiquid
tabular_data_interpolators (thermo.volume.VolumeSolid attribute), 327
attribute), 467 tabular_extrapolation_permitted
tabular_data_interpolators_P (thermo.utils.TDependentProperty attribute),
(thermo.thermal_conductivity.ThermalConductivityGas 380
attribute), 341 tabular_extrapolation_permitted
tabular_data_interpolators_P (thermo.vapor_pressure.VaporPressure at-
(thermo.thermal_conductivity.ThermalConductivityLiquid tribute), 402
attribute), 327 tabular_extrapolation_permitted
tabular_data_interpolators_P (thermo.viscosity.ViscosityGas attribute),
(thermo.viscosity.ViscosityGas attribute), 427
427 tabular_extrapolation_permitted
tabular_data_interpolators_P (thermo.viscosity.ViscosityLiquid attribute),
(thermo.viscosity.ViscosityLiquid attribute), 421
421 tabular_extrapolation_permitted
tabular_data_interpolators_P (thermo.volume.VolumeGas attribute), 463
(thermo.volume.VolumeGas attribute), 463 tabular_extrapolation_permitted

524 Index
thermo Documentation, Release 0.1

(thermo.volume.VolumeLiquid attribute), method), 427


454 test_method_validity() (thermo.viscosity.ViscosityGasMixture
tabular_extrapolation_permitted method), 441
(thermo.volume.VolumeSolid attribute), test_method_validity() (thermo.viscosity.ViscosityLiquid
467 method), 422
tabulate_constants() (in module thermo.datasheet), 62 test_method_validity() (thermo.viscosity.ViscosityLiquidMixture
tabulate_gas() (in module thermo.datasheet), 62 method), 438
tabulate_liq() (in module thermo.datasheet), 62 test_method_validity() (thermo.volume.VolumeGasMixture
tabulate_solid() (in module thermo.datasheet), 62 method), 473
tan() (in module thermo.utils), 395 test_method_validity() (thermo.volume.VolumeLiquid
tanh() (in module thermo.utils), 396 method), 454
Tautoignition() (in module thermo.safety), 298 test_method_validity() (thermo.volume.VolumeLiquidMixture
Tb() (in module thermo.phase_change), 276 method), 470
Tb() (thermo.joback.Joback static method), 219 test_method_validity() (thermo.volume.VolumeSolid
Tc (thermo.eos.GCEOS_DUMMY attribute), 130 method), 467
Tc (thermo.heat_capacity.Zabransky_quasipolynomial at- test_method_validity() (thermo.volume.VolumeSolidMixture
tribute), 173 method), 475
Tc() (in module thermo.critical), 49 test_method_validity_P()
Tc() (thermo.joback.Joback static method), 219 (thermo.thermal_conductivity.ThermalConductivityGas
Tc_mixture() (in module thermo.critical), 60 method), 342
TDependentProperty (class in thermo.utils), 374 test_method_validity_P()
TDP_Michelsen() (thermo.eos_mix.GCEOSMIX (thermo.thermal_conductivity.ThermalConductivityLiquid
method), 131 method), 327
test_method_validity() (thermo.heat_capacity.HeatCapacityGastest_method_validity_P() (thermo.viscosity.ViscosityGas
method), 166 method), 427
test_method_validity() (thermo.heat_capacity.HeatCapacityGasMixture
test_method_validity_P()
method), 190 (thermo.viscosity.ViscosityLiquid method),
test_method_validity() (thermo.heat_capacity.HeatCapacityLiquid 422
method), 179 test_method_validity_P() (thermo.volume.VolumeGas
test_method_validity() (thermo.heat_capacity.HeatCapacityLiquidMixture method), 463
method), 193 test_method_validity_P() (thermo.volume.VolumeLiquid
test_method_validity() (thermo.heat_capacity.HeatCapacitySolid method), 454
method), 185 test_property_validity() (thermo.utils.MixtureProperty
test_method_validity() (thermo.heat_capacity.HeatCapacitySolidMixture class method), 392
method), 188 test_property_validity() (thermo.utils.TDependentProperty
test_method_validity() (thermo.interface.SurfaceTension class method), 381
method), 208 Tflash() (in module thermo.safety), 297
test_method_validity() (thermo.interface.SurfaceTensionMixture
thermal_conductivity_gas_methods (in module
method), 212 thermo.thermal_conductivity), 336
test_method_validity() (thermo.permittivity.Permittivity thermal_conductivity_gas_methods_P (in module
method), 275 thermo.thermal_conductivity), 336
test_method_validity() (thermo.phase_change.EnthalpyVaporization
thermal_conductivity_liquid_methods (in module
method), 288 thermo.thermal_conductivity), 322
test_method_validity() (thermo.thermal_conductivity.ThermalConductivityGas
thermal_conductivity_Magomedov() (in module
method), 342 thermo.electrochem), 81
test_method_validity() (thermo.thermal_conductivity.ThermalConductivityGasMixture
ThermalConductivityGas (class in
method), 350 thermo.thermal_conductivity), 336
test_method_validity() (thermo.thermal_conductivity.ThermalConductivityLiquid
ThermalConductivityGasMixture (class in
method), 327 thermo.thermal_conductivity), 347
test_method_validity() (thermo.utils.TDependentProperty ThermalConductivityLiquid (class in
method), 381 thermo.thermal_conductivity), 322
test_method_validity() (thermo.vapor_pressure.VaporPressure thermo.acentric (module), 3
method), 402 thermo.activity (module), 7
test_method_validity() (thermo.viscosity.ViscosityGas thermo.chemical (module), 17

Index 525
thermo Documentation, Release 0.1

thermo.combustion (module), 48 Tmax (thermo.interface.SurfaceTension attribute), 206


thermo.critical (module), 49 Tmax (thermo.interface.SurfaceTensionMixture at-
thermo.datasheet (module), 62 tribute), 211
thermo.dipole (module), 63 Tmax (thermo.permittivity.Permittivity attribute), 274
thermo.dippr (module), 64 Tmax (thermo.phase_change.EnthalpyVaporization at-
thermo.electrochem (module), 73 tribute), 287
thermo.elements (module), 86 Tmax (thermo.thermal_conductivity.ThermalConductivityGas
thermo.environment (module), 156 attribute), 340
thermo.eos (module), 91 Tmax (thermo.thermal_conductivity.ThermalConductivityGasMixture
thermo.eos_mix (module), 130 attribute), 349
thermo.heat_capacity (module), 159 Tmax (thermo.thermal_conductivity.ThermalConductivityLiquid
thermo.identifiers (module), 193 attribute), 325
thermo.interface (module), 197 Tmax (thermo.vapor_pressure.VaporPressure attribute),
thermo.joback (module), 213 401
thermo.law (module), 222 Tmax (thermo.viscosity.ViscosityGas attribute), 425
thermo.lennard_jones (module), 224 Tmax (thermo.viscosity.ViscosityGasMixture attribute),
thermo.miscdata (module), 236 440
thermo.mixture (module), 237 Tmax (thermo.viscosity.ViscosityLiquid attribute), 420
thermo.permittivity (module), 272 Tmax (thermo.viscosity.ViscosityLiquidMixture at-
thermo.phase_change (module), 276 tribute), 437
thermo.reaction (module), 289 Tmax (thermo.volume.VolumeGas attribute), 462
thermo.refractivity (module), 292 Tmax (thermo.volume.VolumeGasMixture attribute), 472
thermo.safety (module), 294 Tmax (thermo.volume.VolumeLiquid attribute), 452
thermo.solubility (module), 303 Tmax (thermo.volume.VolumeLiquidMixture attribute),
thermo.stream (module), 305 469
thermo.temperature (module), 314 Tmax (thermo.volume.VolumeSolid attribute), 466
thermo.thermal_conductivity (module), 316 Tmax (thermo.volume.VolumeSolidMixture attribute),
thermo.triple (module), 350 474
thermo.unifac (module), 351 Tmin (thermo.heat_capacity.HeatCapacityGas attribute),
thermo.utils (module), 356 165
thermo.vapor_pressure (module), 396 Tmin (thermo.heat_capacity.HeatCapacityGasMixture at-
thermo.virial (module), 407 tribute), 189
thermo.viscosity (module), 414 Tmin (thermo.heat_capacity.HeatCapacityLiquid at-
thermo.volume (module), 442 tribute), 178
third_property() (in module thermo.critical), 54 Tmin (thermo.heat_capacity.HeatCapacityLiquidMixture
Tliquidus() (in module thermo.phase_change), 289 attribute), 192
Tm() (in module thermo.phase_change), 277 Tmin (thermo.heat_capacity.HeatCapacitySolid at-
Tm() (thermo.joback.Joback static method), 220 tribute), 183
Tm_depression_eutectic() (in module thermo.solubility), Tmin (thermo.heat_capacity.HeatCapacitySolidMixture
305 attribute), 187
Tmax (thermo.heat_capacity.HeatCapacityGas attribute), Tmin (thermo.heat_capacity.Zabransky_quasipolynomial
164 attribute), 173
Tmax (thermo.heat_capacity.HeatCapacityGasMixture Tmin (thermo.interface.SurfaceTension attribute), 207
attribute), 189 Tmin (thermo.interface.SurfaceTensionMixture at-
Tmax (thermo.heat_capacity.HeatCapacityLiquid at- tribute), 211
tribute), 178 Tmin (thermo.permittivity.Permittivity attribute), 274
Tmax (thermo.heat_capacity.HeatCapacityLiquidMixture Tmin (thermo.phase_change.EnthalpyVaporization at-
attribute), 192 tribute), 287
Tmax (thermo.heat_capacity.HeatCapacitySolid at- Tmin (thermo.thermal_conductivity.ThermalConductivityGas
tribute), 183 attribute), 340
Tmax (thermo.heat_capacity.HeatCapacitySolidMixture Tmin (thermo.thermal_conductivity.ThermalConductivityGasMixture
attribute), 187 attribute), 349
Tmax (thermo.heat_capacity.Zabransky_quasipolynomial Tmin (thermo.thermal_conductivity.ThermalConductivityLiquid
attribute), 173 attribute), 325

526 Index
thermo Documentation, Release 0.1

Tmin (thermo.vapor_pressure.VaporPressure attribute), method), 128


401 TWUPR (class in thermo.eos), 118
Tmin (thermo.viscosity.ViscosityGas attribute), 425 TWUPRMIX (class in thermo.eos_mix), 148
Tmin (thermo.viscosity.ViscosityGasMixture attribute), TWUSRK (class in thermo.eos), 120
440 TWUSRKMIX (class in thermo.eos_mix), 151
Tmin (thermo.viscosity.ViscosityLiquid attribute), 420
Tmin (thermo.viscosity.ViscosityLiquidMixture at- U
tribute), 437 U (thermo.chemical.Chemical attribute), 35
Tmin (thermo.volume.VolumeGas attribute), 462 UFL() (in module thermo.safety), 299
Tmin (thermo.volume.VolumeGasMixture attribute), 472 UFL_mixture() (in module thermo.safety), 300
Tmin (thermo.volume.VolumeLiquid attribute), 452 Um (thermo.chemical.Chemical attribute), 36
Tmin (thermo.volume.VolumeLiquidMixture attribute), uncertainty (thermo.heat_capacity.Zabransky_quasipolynomial
469 attribute), 174
Tmin (thermo.volume.VolumeSolid attribute), 466 uncertainty (thermo.heat_capacity.Zabransky_spline at-
Tmin (thermo.volume.VolumeSolidMixture attribute), tribute), 175
474 UNIFAC() (in module thermo.unifac), 351
to_num() (in module thermo.utils), 369 UNIFAC_Dortmund_groups (thermo.chemical.Chemical
to_TP() (thermo.eos.GCEOS method), 98 attribute), 35
to_TP_zs() (thermo.eos_mix.GCEOSMIX method), 133 UNIFAC_Dortmund_groups (thermo.mixture.Mixture at-
Townsend_Hales() (in module thermo.volume), 444 tribute), 254
TP_cached (thermo.utils.TPDependentProperty at- UNIFAC_groups (thermo.chemical.Chemical attribute),
tribute), 383 36
TP_dependent_property() UNIFAC_groups (thermo.mixture.Mixture attribute), 254
(thermo.utils.TPDependentProperty method), UNIFAC_psi() (in module thermo.unifac), 353
383 UNIFAC_Q (thermo.chemical.Chemical attribute), 35
TP_dependent_property_derivative_P() UNIFAC_R (thermo.chemical.Chemical attribute), 35
(thermo.utils.TPDependentProperty method), UNIFAC_RQ() (in module thermo.unifac), 354
383 UNIQUAC() (in module thermo.activity), 14
TP_dependent_property_derivative_T() units (thermo.heat_capacity.HeatCapacityGas attribute),
(thermo.utils.TPDependentProperty method), 166
384 units (thermo.heat_capacity.HeatCapacityGasMixture at-
TP_or_T_dependent_property() tribute), 190
(thermo.utils.TPDependentProperty method), units (thermo.heat_capacity.HeatCapacityLiquid at-
384 tribute), 180
TP_zs_ws_cached (thermo.utils.MixtureProperty at- units (thermo.heat_capacity.HeatCapacityLiquidMixture
tribute), 388 attribute), 193
TPD() (thermo.eos_mix.GCEOSMIX method), 131 units (thermo.heat_capacity.HeatCapacitySolid attribute),
TPDependentProperty (class in thermo.utils), 381 185
TRC_Antoine_extended() (in module units (thermo.heat_capacity.HeatCapacitySolidMixture
thermo.vapor_pressure), 398 attribute), 188
TRCCp() (in module thermo.heat_capacity), 160 units (thermo.interface.SurfaceTension attribute), 208
TRCCp_integral() (in module thermo.heat_capacity), 161 units (thermo.interface.SurfaceTensionMixture attribute),
TRCCp_integral_over_T() (in module 212
thermo.heat_capacity), 162 units (thermo.permittivity.Permittivity attribute), 276
Trebble_Bishnoi() (thermo.eos.ALPHA_FUNCTIONS units (thermo.phase_change.EnthalpyVaporization
static method), 128 attribute), 289
trunc() (in module thermo.utils), 396 units (thermo.thermal_conductivity.ThermalConductivityGas
Ts (thermo.heat_capacity.Zabransky_spline attribute), attribute), 342
174 units (thermo.thermal_conductivity.ThermalConductivityGasMixture
Tsat() (thermo.chemical.Chemical method), 35 attribute), 350
Tstar() (in module thermo.lennard_jones), 235 units (thermo.thermal_conductivity.ThermalConductivityLiquid
Tt() (in module thermo.triple), 350 attribute), 328
TWA() (in module thermo.safety), 295 units (thermo.utils.MixtureProperty attribute), 392
Twu() (thermo.eos.ALPHA_FUNCTIONS static units (thermo.utils.TDependentProperty attribute), 381

Index 527
thermo Documentation, Release 0.1

units (thermo.vapor_pressure.VaporPressure attribute), user_methods (thermo.volume.VolumeLiquid attribute),


403 455
units (thermo.viscosity.ViscosityGas attribute), 428 user_methods (thermo.volume.VolumeLiquidMixture at-
units (thermo.viscosity.ViscosityGasMixture attribute), tribute), 470
441 user_methods (thermo.volume.VolumeSolid attribute),
units (thermo.viscosity.ViscosityLiquid attribute), 422 467
units (thermo.viscosity.ViscosityLiquidMixture attribute), user_methods (thermo.volume.VolumeSolidMixture at-
438 tribute), 475
units (thermo.volume.VolumeGas attribute), 463 user_methods_P (thermo.thermal_conductivity.ThermalConductivityGas
units (thermo.volume.VolumeGasMixture attribute), 473 attribute), 342
units (thermo.volume.VolumeLiquid attribute), 455 user_methods_P (thermo.thermal_conductivity.ThermalConductivityLiquid
units (thermo.volume.VolumeLiquidMixture attribute), attribute), 328
470 user_methods_P (thermo.viscosity.ViscosityGas at-
units (thermo.volume.VolumeSolid attribute), 467 tribute), 428
units (thermo.volume.VolumeSolidMixture attribute), user_methods_P (thermo.viscosity.ViscosityLiquid at-
475 tribute), 422
user_methods (thermo.heat_capacity.HeatCapacityGas user_methods_P (thermo.volume.VolumeGas attribute),
attribute), 166 463
user_methods (thermo.heat_capacity.HeatCapacityGasMixture user_methods_P (thermo.volume.VolumeLiquid at-
attribute), 190 tribute), 455
user_methods (thermo.heat_capacity.HeatCapacityLiquid
attribute), 180 V
user_methods (thermo.heat_capacity.HeatCapacityLiquidMixtureV_g_sat() (thermo.eos.GCEOS method), 94
attribute), 193 V_l_sat() (thermo.eos.GCEOS method), 94
user_methods (thermo.heat_capacity.HeatCapacitySolid V_over_F (thermo.mixture.Mixture attribute), 254
attribute), 185 Van_der_Waals_area (thermo.chemical.Chemical at-
user_methods (thermo.heat_capacity.HeatCapacitySolidMixture tribute), 36
attribute), 188 Van_der_Waals_area() (in module thermo.unifac), 355
user_methods (thermo.interface.SurfaceTension at- Van_der_Waals_volume (thermo.chemical.Chemical at-
tribute), 208 tribute), 36
user_methods (thermo.interface.SurfaceTensionMixture Van_der_Waals_volume() (in module thermo.unifac), 355
attribute), 212 vapor_pressure_methods (in module
user_methods (thermo.permittivity.Permittivity attribute), thermo.vapor_pressure), 399
276 VaporPressure (class in thermo.vapor_pressure), 399
user_methods (thermo.phase_change.EnthalpyVaporization Vc() (in module thermo.critical), 51
attribute), 289 Vc() (thermo.joback.Joback static method), 220
user_methods (thermo.thermal_conductivity.ThermalConductivityGas
Vc_mixture() (in module thermo.critical), 62
attribute), 342 VDI_tabular_data() (in module thermo.miscdata), 236
user_methods (thermo.thermal_conductivity.ThermalConductivityGasMixture
VDW (class in thermo.eos), 111
attribute), 350 VDWMIX (class in thermo.eos_mix), 141
user_methods (thermo.thermal_conductivity.ThermalConductivityLiquid
Velasco() (in module thermo.phase_change), 281
attribute), 328 Vetere() (in module thermo.phase_change), 284
user_methods (thermo.vapor_pressure.VaporPressure at- Vfgs() (thermo.mixture.Mixture method), 254
tribute), 403 Vfls() (thermo.mixture.Mixture method), 255
user_methods (thermo.viscosity.ViscosityGas attribute), Vfs_to_zs() (in module thermo.utils), 367
428 viscosity_converter() (in module thermo.viscosity), 435
user_methods (thermo.viscosity.ViscosityGasMixture at- viscosity_gas_methods (in module thermo.viscosity), 431
tribute), 441 viscosity_gas_methods_P (in module thermo.viscosity),
user_methods (thermo.viscosity.ViscosityLiquid at- 431
tribute), 422 viscosity_index() (in module thermo.viscosity), 434
user_methods (thermo.viscosity.ViscosityLiquidMixture viscosity_liquid_methods (in module thermo.viscosity),
attribute), 438 416
user_methods (thermo.volume.VolumeGasMixture viscosity_liquid_methods_P (in module
attribute), 473 thermo.viscosity), 416

528 Index
thermo Documentation, Release 0.1

ViscosityGas (class in thermo.viscosity), 422 Y


ViscosityGasMixture (class in thermo.viscosity), 438 Yamada_Gunn() (in module thermo.volume), 443
ViscosityLiquid (class in thermo.viscosity), 416 Yen_Woods_saturation() (in module thermo.volume), 442
ViscosityLiquidMixture (class in thermo.viscosity), 436 Yoon_Thodos() (in module thermo.viscosity), 429
ViswanathNatarajan2() (in module thermo.viscosity), 414 ys (thermo.mixture.Mixture attribute), 272
ViswanathNatarajan2Exponential() (in module Yu_Lu() (thermo.eos.ALPHA_FUNCTIONS static
thermo.viscosity), 414 method), 129
ViswanathNatarajan3() (in module thermo.viscosity), 414
Vm (thermo.chemical.Chemical attribute), 36 Z
Vm (thermo.mixture.Mixture attribute), 255
Z (thermo.chemical.Chemical attribute), 37
Vm_to_rho() (in module thermo.utils), 361
Z (thermo.mixture.Mixture attribute), 257
Vmg (thermo.chemical.Chemical attribute), 36 Z() (in module thermo.utils), 362
Vmg (thermo.mixture.Mixture attribute), 255
Z_from_virial_density_form() (in module thermo.utils),
Vmg_STP (thermo.mixture.Mixture attribute), 255
364
Vmgs (thermo.mixture.Mixture attribute), 256
Z_from_virial_pressure_form() (in module thermo.utils),
Vml (thermo.chemical.Chemical attribute), 37
365
Vml (thermo.mixture.Mixture attribute), 256
Zabransky_cubic() (in module thermo.heat_capacity),
Vml_STP (thermo.mixture.Mixture attribute), 256 170
Vmls (thermo.mixture.Mixture attribute), 256
Zabransky_cubic_integral() (in module
Vms (thermo.chemical.Chemical attribute), 37
thermo.heat_capacity), 171
Vms (thermo.mixture.Mixture attribute), 256
Zabransky_cubic_integral_over_T() (in module
Vmss (thermo.mixture.Mixture attribute), 256
thermo.heat_capacity), 171
volume_gas_methods (in module thermo.volume), 458
Zabransky_quasi_polynomial() (in module
volume_liquid_methods (in module thermo.volume), 449 thermo.heat_capacity), 168
volume_liquid_methods_P (in module thermo.volume),
Zabransky_quasi_polynomial_integral() (in module
449
thermo.heat_capacity), 169
volume_solid_methods (in module thermo.volume), 464
Zabransky_quasi_polynomial_integral_over_T() (in
volume_solutions() (thermo.eos.GCEOS static method),
module thermo.heat_capacity), 170
98 Zabransky_quasipolynomial (class in
VolumeGas (class in thermo.volume), 458 thermo.heat_capacity), 172
VolumeGasMixture (class in thermo.volume), 470
Zabransky_spline (class in thermo.heat_capacity), 174
VolumeLiquid (class in thermo.volume), 449
Zc (thermo.eos.PR attribute), 101
VolumeLiquidMixture (class in thermo.volume), 467
Zc (thermo.eos.RK attribute), 115
VolumeSolid (class in thermo.volume), 464
Zc (thermo.eos.SRK attribute), 104
VolumeSolidMixture (class in thermo.volume), 473 Zc (thermo.eos.VDW attribute), 112
Zc() (in module thermo.critical), 52
W Zg (thermo.chemical.Chemical attribute), 37
Wagner() (in module thermo.vapor_pressure), 398 Zg (thermo.mixture.Mixture attribute), 257
Wagner_original() (in module thermo.vapor_pressure), Zg_STP (thermo.mixture.Mixture attribute), 257
397 Zgs (thermo.mixture.Mixture attribute), 257
Watson() (in module thermo.phase_change), 284 Zl (thermo.chemical.Chemical attribute), 38
Watson_exponent (thermo.phase_change.EnthalpyVaporization
Zl (thermo.mixture.Mixture attribute), 257
attribute), 287 Zl_STP (thermo.mixture.Mixture attribute), 258
Weber() (thermo.chemical.Chemical method), 37 Zls (thermo.mixture.Mixture attribute), 258
Weber() (thermo.mixture.Mixture method), 257 Zs (thermo.chemical.Chemical attribute), 38
Wilke() (in module thermo.viscosity), 432 zs_to_Vfs() (in module thermo.utils), 367
Wilson() (in module thermo.activity), 13 zs_to_ws() (in module thermo.utils), 366
Winterfeld_Scriven_Davis() (in module Zss (thermo.mixture.Mixture attribute), 258
thermo.interface), 208 Zuo_Stenby() (in module thermo.interface), 201
ws_to_zs() (in module thermo.utils), 366

X
xs (thermo.mixture.Mixture attribute), 272

Index 529

You might also like