"""Here we compute the chesmitry coefficients as presented in Mitra & Rowe, 1974"""
import numpy as np
[docs]
def B_coeff(M):
"""Coefficient B from Mitra & Rowe, 1974"""
return 1e-31 * M**2
[docs]
def alpha_i():
"""Recombination of each positive ion to the negative ones
From Mitra & Rowe, 1972"""
return 1e-7
[docs]
def Xm_to_e(M):
"""X- -> e
:param M: [O2] + [N2]
From Breakall, 1982: Private communication in Burns et al., 1991
"""
gamma_2 = 0.1 + 4E-17 * M
return gamma_2
[docs]
def O2m_to_e(N2, O2, O, H, Tn):
"""O2- -> e
This comes from reactions 26, 27, 31, 33 and 34 of Table 10 of Pavlov, 2014
We assume that [O2(1Dg)] is 1e10 cm-3 at our altitudes (Crutzen et al., 1970 (Figure 1))
:param N2: Density of N2 (cm-3)
:param O2: Density of N2 (cm-3)
:param O: Density of O (cm-3)
:param H: Density of H (cm-3)
:param Tn: Neutral density (in K)
"""
# Temperature
X = 300 / Tn
O21Dg = 1e-10
# Reaction rates
A_26 = 1.9e-12 * X ** (-1.5) * np.exp(-4990 / Tn)
A_27 = 2.7e-10 * X ** (-0.5) * np.exp(-5590 / Tn)
A_31 = 2.1e-10
A_33 = 7e-10
A_34 = 1.4e-9
return A_26 * N2 + A_27 * O2 + A_31 * O + A_33 * O21Dg + A_34 * H
[docs]
def e_to_O2m(Tn, O2, N2):
"""
e- -> O2-
From reactions 1 and 2 in Table 10 of Pavlov, 2014
:param Tn: Neutrals temperature (in K)
:param O2: O2 density (cm-3)
:param N2: N2 density (cm-2)
"""
# Temperature
X = 300 / Tn
# Reaction rates
A_1 = 1.4e-29 * X * np.exp(-600 / Tn)
A_2 = 1.07e-31 * X**2 * np.exp(-70 / Tn)
return A_1 * O2**2 + A_2 * O2 * N2
[docs]
def O2m_to_Xm(O2, M, O3):
"""
:param O2: O2 density (cm-3)
:param M: O2 + N2 density (cm-3)
:param O3: O3 density (cm-3)
From Mitra, 1975"""
return 1e-30 * O2 * M + 3e-10 * O3
[docs]
def e_and_NOp(Tn):
"""Recombination coefficient of NO+ and e-
From Pavlov, 2014, reaction 30 of Table 6
Tn is less than 1200 K
:param Tn: Neutral temperature (in K)"""
# Temperature
X = 300 / Tn
# Reaction rate
A_30 = 3.5e-7 * X ** (0.69)
return A_30
[docs]
def e_and_O2p(Tn):
"""Recombination coefficent of O2+ and e-
From Pavlov, 2014, reaction 27 of Table 6
We assume Tn is less than 1200 K
:param Tn: Neutral temperature (in K)"""
# Temperature
X = 300 / Tn
return 1.95e-7 * X**0.7
[docs]
def e_and_04p(Tn):
"""Recombination coefficient for O4+ and e-
From Pavlov, 2014, reaction 110 of Table 6
:param Tn: Neutrals temperature (in K)"""
# Temperature
X = 300 / Tn
return 4.2e-6 * X**0.48
[docs]
def e_and_Yp():
"""Recombination coefficient"""
return 1e-5
[docs]
def O2p_to_04p(M, O2, Tn):
"""O2+ -> O4+
From Pavlov, 2014, reaction 36 of Table 6
:param M: O2 + N2 densities (in cm-3)
:param O2: O2 density (in cm-3)
:param Tn: Neutral temperature (in K)"""
# Temperature
X = 300 / Tn
# Rate
A_36 = 4e-30 * X**2.93
return A_36 * M * O2
[docs]
def O4p_to_O2p(M, O, Tn):
"""O4+ -> O2+
From Pavlov, 2014, reactions 37, 44 and 45 of Table 6
We assume that [O2(1Dg)] is 1e10 cm-3 at our altitudes (Crutzen et al., 1970 (Figure 1))
:param M: O2 + N2 densities (in cm-3)
:param O: O density (in cm-3)
:param Tn: Neutrals temperature (in K)
"""
# Temperature
X = 300 / Tn
O21Dg = 1e10
# Rates
A_37 = 1.3e-6 * X**3.93 * np.exp(-4607 / Tn)
A_44 = 3e-10
A_45 = 1e-10
return A_37 * M + A_44 * O + A_45 * O21Dg
def O4p_to_Yp(H2O):
return 1e-9 * H2O
def Xm_and_O4p():
return 1e-6
[docs]
def O2p_to_NOp(NO, N):
"""O2+ -> NO+
From Pavlov, 2014, reactions 28 and 29 of Table 6
:param NO: NO density (in cm-3)
:param N: N density (in cm-3)"""
return 4.1e-10 * NO + 1e-10 * N
def get_mr_coeffs(n_here, e_here):
result = np.zeros((15, len(e_here.altitudes)))
start = int(e_here.altitudes[0])
stop = int(e_here.altitudes[-1]) + 1
O2 = n_here.O2[start:stop]
N2 = n_here.N2[start:stop]
O = n_here.O[start:stop]
NO = n_here.NO[start:stop]
H2O = n_here.H2O[start:stop]
M = n_here.M[start:stop]
O3 = n_here.O3[start:stop]
H = n_here.H[start:stop]
Tn = n_here.Tn[start:stop]
N = n_here.N[start:stop]
result[0, :] = B_coeff(M)
result[1, :] = alpha_i()
result[2, :] = Xm_to_e(M)
result[3, :] = O2m_to_e(N2, O2, O, H, Tn)
result[4, :] = e_to_O2m(Tn, O2, N2)
result[5, :] = O2m_to_Xm(O2, M, O3)
result[6, :] = e_and_NOp(Tn)
result[7, :] = e_and_O2p(Tn)
result[8, :] = e_and_04p(Tn)
result[9, :] = e_and_Yp()
result[10, :] = O2p_to_04p(M, O2, Tn)
result[11, :] = O4p_to_O2p(M, O, Tn)
result[12, :] = O4p_to_Yp(H2O)
result[13, :] = Xm_and_O4p()
result[14, :] = O2p_to_NOp(NO, N)
return result