Source code for petrobuffer.ferric

import numpy as np

[docs]def fo2_to_iron_kc91(C,T,P,lnfo2): """ Calculates the Fe2O3/FeO mole ratio of a melt where the fO2 is known. Parameters ---------- C : dictionary Major element composition of the silicate melt as MOLE FRACTIONS Required species: Al2O3, FeOt, CaO, Na2O, K2O T : float Temperature in degrees K P : float Pressure in pascals (Pa) lnfo2 : float ln(fO2) Returns ------- float Fe2O3/FeO mole ratio References ---------- Kress and Carmichael (1991) The compressibility of silicate liquids containing Fe2O3 and the effect of composition, temperature, oxygen fugacity and pressure on their redox states Notes ----------------------- ln(X_Fe2O3/X_FeO) = a*FO2 + b/T + c + sum(d_i*X_i) + e*[1-T0/T-ln(T/T0)] + f*P/T + g*[(T-T0)*P]/T + h*P^2/T a = 0.196 b = 1.1492e4 K c = -6.675 dal2o3 = -2.243 dfeo = -1.828 dcao = 3.201 dna2o = 5.854 dk2o = 6.215 e = -3.36 f = -7.01e-7 K/Pa g = -1.54e-10 /Pa h = 3.85e-17 K/Pa^2 """ dal2o3 = -2.243 dfeo = -1.828 dcao = 3.201 dna2o = 5.854 dk2o = 6.215 T0 = 1673.0 # K F = np.exp(0.196*lnfo2 + 1.1492e4/T -6.675 + dal2o3*C['al2o3'] + dfeo*C['feo'] + dcao*C['cao'] + dna2o*C['na2o'] + dk2o*C['k2o'] - 3.36*(1.0 - T0/T - np.log(T/T0)) - 7.01e-7*P/T - 1.54e-10*(T-T0)*P/T + 3.85e-17*P**2/T) return F
[docs]def iron_to_fo2_kc91(C,T,P): """ Calculates the oxygen fugacity (fO2) of a melt given where the ferric/ ferrous ratio is known. Parameters ---------- C : dictionary Major element composition of the silicate melt as mole fractions Required species: Al2O3, FeO, Fe2O3, CaO, Na2O, K2O T : float Temperature in degrees K P : float Pressure in pascals (Pa) Returns ------- float ln(fO2) References ---------- Kress and Carmichael (1991) The compressibility of silicate liquids containing Fe2O3 and the effect of composition, temperature, oxygen fugacity and pressure on their redox states Notes ----------------------- ln(fO2) = [ln(X_Fe2O3/X_FeO) - b/T - c - sum(d_i*X_i) - e*[1-T0/T-ln(T/T0)] - f*P/T - g*[(T-T0)*P]/T - h*P^2/T]/a a = 0.196 b = 1.1492e4 K c = -6.675 dal2o3 = -2.243 dfeo = -1.828 dcao = 3.201 dna2o = 5.854 dk2o = 6.215 e = -3.36 f = -7.01e-7 K/Pa g = -1.54e-10 /Pa h = 3.85e-17 K/Pa^2 """ dal2o3 = -2.243 dfeo = -1.828 dcao = 3.201 dna2o = 5.854 dk2o = 6.215 T0 = 1673.0 # K FeOt = C['feo'] + C['fe2o3']*0.8998 # total iron as a mole fraction FO2 = (np.log(C['fe2o3']/C['feo']) - 1.1492e4/T + 6.675 - dal2o3*C['al2o3'] - dfeo*(FeOt) - dcao*C['cao'] - dna2o*C['na2o'] - dk2o*C['k2o'] + 3.36*(1.0 - T0/T - np.log(T/T0)) + 7.01e-7*(P/T) + 1.54e-10*(T-T0)*P/T - 3.85e-17*P**2/T)/0.196 return FO2
[docs]def fo2_to_iron_r13(C, T, P, lnfo2): """ Calculates the Fe2O3/FeO mole ratio of an FeOt>15 wt% melt where the fO2 is known. Parameters ---------- C : dictionary Major element composition of the silicate melt as mole fractions Required species: Al2O3, FeOt, CaO, Na2O, K2O, P2O5 T : float Temperature in degrees K P : float Pressure in gigapascals (GPa) lnfo2 : float ln(fO2) Returns ------- float Fe2O3/FeO mole ratio References ---------- Righter et al. (2013) Redox systematics of martian magmas with implications for magnetite stability. """ a = 0.22 b = 3800 c = -370 dfeo = -6.6 dal2o3 = 7.3 dcao = 17.3 dna2o = 132.3 dk2o = -147.8 dp2o5 = 0.6 j = -4.26 F = np.exp(a*lnfo2 + b/T + c*(P/T) + dfeo*C['feo'] + dal2o3*C['al2o3'] + dcao*C['cao'] + dna2o*C['na2o'] + dk2o*C['k2o'] + dp2o5*C['p2o5'] + j) return F
[docs]def iron_to_fo2_r13(C, T, P): """ Calculates the oxygen fugacity (fO2) of an FeOt>15 wt% melt given where the ferric/ferrous ratio is known. Parameters ---------- C : dictionary Major element composition of the silicate melt as mole fractions Required species: Al2O3, FeOt, CaO, Na2O, K2O, P2O5 T : float Temperature in degrees K P : float Pressure in gigapascals (GPa) Returns ------- float ln(fO2) References ---------- Righter et al. (2013) Redox systematics of martian magmas with implications for magnetite stability. """ a = 0.22 b = 3800 c = -370 dfeo = -6.6 dal2o3 = 7.3 dcao = 17.3 dna2o = 132.3 dk2o = -147.8 dp2o5 = 0.6 j = -4.26 FeOt = C['feo'] + C['fe2o3']*0.8998 # total iron mole fraction lnfo2 = (np.log(C['fe2o3']/C['feo']) - (b/T + c*(P/T) + dfeo*(FeOt) + dal2o3*C['al2o3'] + dcao*C['cao'] + dna2o*C['na2o'] + dk2o*C['k2o'] + dp2o5*C['p2o5'] + j))/a return lnfo2