-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathisotopes.py
More file actions
38 lines (29 loc) · 1.08 KB
/
isotopes.py
File metadata and controls
38 lines (29 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import numpy as np
class Isotope:
def __init__(self, name):
self.name = name
def alpha_lv(self, Tc):
TK = Tc + 273.15
if self.name == "18O":
ln_a = 0.35041 * (1e6 / TK ** 3) - 1.6664 * (1e3 / TK ** 2) + 6.7123 / TK - 0.007685
elif self.name == "2H":
ln_a = 1.1588 * (TK ** 3 / 1e9) - 1.6201 * (TK ** 2 / 1e6) + 0.79484 * (TK/1e3) + 2.9992 * (1e6 / TK ** 3) - 0.16104
else:
ln_a = np.nan
return np.exp(ln_a)
def eps_eq(self, Tc):
return (self.alpha_lv(Tc) - 1) * 1000.
def eps_k(self, RH):
if self.name == "18O":
Ck = 14.2 # permil
elif self.name == "2H":
Ck = 12.5 # permil
else:
Ck = np.nan
return (1 - RH) * Ck
def eps_tot(self, Tc, RH):
return self.eps_eq(Tc) + self.eps_k(RH)
def delta_e(self, Tc, RH, delta_w, delta_atm):
num = self.alpha_lv(Tc) * delta_w - RH * delta_atm - self.eps_tot(Tc, RH)
den = 1 - RH + self.eps_k(RH) / 1000
return num / den