MatLens · Ecuaciones y modelos

Espectroscopía Mössbauer de ⁵⁷Fe

Esta sección describe el modelo de espectro Mössbauer de ⁵⁷Fe que usa MatLens (absorbente delgado con lorentzianas), el ajuste por sitios, la distribución de campo hiperfino, el plegado y la calibración de velocidad con α-Fe. Velocidades y desplazamientos isoméricos (IS) se expresan en mm/s respecto al centroide del sextete de α-Fe a temperatura ambiente.

Origen físico. Una fuente de ⁵⁷Co emite rayos γ de 14.4 keV sin retroceso (fracción f de Lamb–Mössbauer); moviéndola con velocidad v, el efecto Doppler cambia la energía en \Delta E = E_\gamma v/c (1 mm/s ≈ 48 neV), suficiente para barrer las interacciones hiperfinas del núcleo absorbente. Tres interacciones determinan el espectro:

  • Desplazamiento isomérico (IS, \delta): diferencia de densidad electrónica s en el núcleo entre absorbente y referencia; desplaza todo el espectro y depende del estado de oxidación y del enlace. Incluye el desplazamiento Doppler de segundo orden (térmico), que crece al bajar la temperatura.
  • Desdoblamiento cuadrupolar (\Delta, QS): interacción del momento cuadrupolar del estado excitado (I = 3/2) con un gradiente de campo eléctrico; separa el espectro en un doblete.
  • Campo hiperfino magnético (B_{hf}): efecto Zeeman nuclear; seis transiciones permitidas (\Delta m = 0, \pm1) forman un sextete.

El área de cada sitio es proporcional a f\cdot n (fracción sin retroceso por número de átomos de Fe en el sitio), siempre que el absorbente sea delgado; por eso las fracciones de área solo son fracciones atómicas si los f de los sitios son iguales.

Modelo de transmisión (absorbente delgado)

Código: matlens/core/mossbauer.py::transmission, matlens/core/mossbauer.py::lorentz, matlens/core/mossbauer.py::Site.

T(v) = \left(B + s\,v\right)\left[1 - \sum_{k} A_k \sum_{j} w_{kj}\, L(v;\, c_{kj}, \Gamma_k)\right]
L(v; c, \Gamma) = \frac{\Gamma/2}{\pi\left[(v-c)^2 + (\Gamma/2)^2\right]}
SímboloSignificadoUnidades
vvelocidad de la fuentemm/s
B, slínea base y pendiente opcionalcuentas (o normalizada), cuentas/(mm/s)
A_kárea de absorción relativa del sitio kmm/s
w_{kj}intensidades relativas de las líneas del sitio (suman 1)—
c_{kj}posiciones de las líneasmm/s
\Gamma_kanchura a media altura (FWHM)mm/s

Líneas de cada tipo de sitio:

  • Singlete: c = \delta, w = 1.
  • Doblete: c = \delta \mp \Delta/2, w = (1/2, 1/2), con \Delta = QS.
  • Sextete: posiciones \delta + v_j^{(0)}(B_{hf}) + \varepsilon\,(1,-1,-1,-1,-1,1)_j con \varepsilon = \mathrm{QS}/2, e intensidades 3 : r_{23} : 1 : 1 : r_{23} : 3 normalizadas (r_{23} = 2 para polvos, 0–4 según la textura).

Validez: aproximación de absorbente delgado, espesor efectivo t_a = f_a n \sigma_0 \lesssim 1; los absorbentes gruesos ensanchan y saturan las líneas y sesgan las áreas relativas.

Referencias: Margulies & Ehrman, Nucl. Instrum. Methods 12, 131 (1961); Greenwood & Gibb, Mössbauer Spectroscopy, Chapman & Hall 1971, cap. 1.

Posiciones del sextete y campo hiperfino

Código: matlens/core/mossbauer.py::sextet_offsets, matlens/core/mossbauer.py::sextet_lines, matlens/core/mossbauer.py::bhf_from_lines.

Transiciones \Delta m = 0, \pm1 entre el estado fundamental (I = 1/2) y el excitado (I = 3/2):

v^{(0)} = \frac{c}{E_\gamma}\,\mu_N B_{hf}\left(g_g m_g - g_e m_e\right), \qquad g_g = \frac{\mu_g}{1/2}, \qquad g_e = \frac{\mu_e}{3/2}

ordenadas de menor a mayor velocidad (líneas 1…6). Constantes: E_\gamma = 14412.5 eV, \mu_g = +0.09044\,\mu_N, \mu_e = -0.15531\,\mu_N, \mu_N = 3.15245125844\times10^{-8} eV/T, c = 2.99792458\times10^{11} mm/s. Con B_{hf} = 33.0 T resultan \pm5.31, \pm3.08 y \pm0.84 mm/s.

Campo a partir de las líneas externas (independiente de \varepsilon):

B_{hf} = \frac{v_6 - v_1}{v_6^{(0)}(1\,\mathrm{T}) - v_1^{(0)}(1\,\mathrm{T})}

Desplazamiento cuadrupolar del sextete (primer orden): las líneas 1 y 6 se desplazan +\varepsilon y las 2–5 -\varepsilon, y se informa

\mathrm{QS} = 2\varepsilon = \tfrac{1}{2}\left[(v_6 - v_5) - (v_2 - v_1)\right]

Derivación. La energía de un subnivel Zeeman es E_m = -g\,\mu_N B_{hf}\, m con g = \mu/I; la energía de la transición m_g \to m_e es E_\gamma + (g_g m_g - g_e m_e)\,\mu_N B_{hf}, y la velocidad Doppler que la compensa es esa diferencia por c/E_\gamma. Las intensidades 3 : r_{23} : 1 : 1 : r_{23} : 3 son los coeficientes de Clebsch–Gordan; r_{23} = 4\sin^2\theta/(1+\cos^2\theta) depende del ángulo \theta entre el rayo γ y el campo, y vale 2 para un polvo isótropo. El desplazamiento cuadrupolar de primer orden supone e^2qQ \ll \mu B_{hf}; con interacciones comparables (p. ej. en algunos óxidos de Fe²⁺) las posiciones requieren diagonalizar el hamiltoniano completo, que MatLens no hace.

Referencias: Stone, At. Data Nucl. Data Tables 90, 75 (2005), doi:10.1016/j.adt.2005.04.001 (momentos nucleares); CODATA 2018, Tiesinga et al., Rev. Mod. Phys. 93 (2021) 025010, doi:10.1103/RevModPhys.93.025010 (\mu_N, c); Greenwood & Gibb 1971, §3.5 y tabla 2.3.

Ejemplo resuelto: líneas del α-Fe

sextet_offsets(33.0) con las constantes del módulo:

Línea123456
v^{(0)} (mm/s)-5.318-3.077-0.83680.83683.0775.318

Sensibilidad de las líneas externas: v_6^{(0)} - v_1^{(0)} = 0.32229 mm/s por tesla, de modo que bhf_from_lines recupera 33 T.

Ajuste por sitios

Código: matlens/core/mossbauer.py::fit_sites, matlens/core/mossbauer.py::area_percent, matlens/core/mossbauer.py::auto_sites.

Mínimos cuadrados no lineales (lmfit, Levenberg–Marquardt) del residuo ponderado

\chi^2 = \sum_i w_i^2\left[T(v_i) - y_i\right]^2
  • Pesos: si el percentil 90 de y supera 50 (cuentas), w_i = 1/\sqrt{\max(y_i, 1)} (Poisson); si no, w_i = 1/s, con s la desviación típica del 30 % superior de los datos. Pueden darse pesos propios.
  • Parámetros por sitio: singlete (IS, \Gamma, área), doblete (IS, QS, \Gamma, área), sextete (IS, QS, B_{hf}, \Gamma, área); cualquiera puede fijarse. r_{23} no se ajusta.
  • Límites: 0.05 \le \Gamma \le 3 mm/s, área \ge 0, 0 \le B_{hf} \le 70 T, 0 \le \Delta \le 5 mm/s (doblete), -2 \le \delta \le 2.5 mm/s; línea base \ge 0 con valor inicial el percentil 90 de y.
  • Valores iniciales: los del modelo de sitios del usuario o los de auto_sites, que resta una recta ajustada al 10 % de cada extremo, detecta líneas con prominencia \ge 10\,\% del máximo, estima \Gamma por la mediana de las FWHM (recortada a 0.15–0.6 mm/s) y propone un sextete (≥ 5 líneas que abarcan más de 4 mm/s; B_{hf} de las líneas extremas, IS en el centroide) o dobletes con las líneas más intensas por pares.

Porcentaje de área: \%A_k = 100\,A_k / \sum_j A_j.

Incertidumbre: errores típicos de lmfit (raíz de la diagonal de la covarianza, escalada por \chi^2_{\mathrm{red}} por defecto de lmfit), k=1. Se informa \chi^2_{\mathrm{red}}.

Detalles del algoritmo: se descartan los puntos no finitos; la pendiente solo se ajusta con fit_slope=True; r_{23} queda fijo al valor del sitio (2 por defecto). Con un árbol de parámetros (tree), los valores iniciales y los indicadores de refinado salen de site.<i>.<IS|QS|Bhf|gamma|area> y los valores ajustados, sus errores y el porcentaje de área se escriben de vuelta. Criterio de convergencia: el de lmfit.minimize(method="leastsq") (MINPACK, tolerancias por defecto); success se informa tal cual.

Lo que la incertidumbre no incluye. La correlación entre parámetros de sitios solapados (p. ej. áreas de dobletes que comparten una línea) aparece en la covarianza pero no se informa; el sesgo por espesor del absorbente, por forma de línea no lorentziana (distribuciones de QS o B_{hf}), por el f supuesto y por la elección del número de sitios no se cuantifica. Un \chi^2_\text{red} claramente mayor que 1 con pesos de Poisson indica un modelo incompleto. Los pesos se calculan con los datos observados (1/\sqrt{y}), no con el modelo, lo que introduce un sesgo pequeño a bajas cuentas.

Referencia: implementación propia del ajuste; modelo según Greenwood & Gibb 1971.

Ejemplo resuelto: dos dobletes Fe³⁺ + Fe²⁺

Espectro sintético de 512 canales entre −4 y 4 mm/s, línea base 2\times10^5 cuentas, con ruido de Poisson (semilla fija). Sitio 1: IS 0.35, QS 0.80, Γ 0.30 mm/s, área 0.30; sitio 2: IS 1.10, QS 2.20, Γ 0.32 mm/s, área 0.20 (60 % / 40 %). auto_sites(v, y, max_sites=2) propone 1 doblete(s): la línea izquierda del Fe²⁺ (0.00 mm/s) se solapa con la del Fe³⁺ (−0.05 mm/s) y no se resuelve, un caso en que el modelo automático no basta. Se ajusta con fit_sites (pesos de Poisson) partiendo de dos dobletes dados por el usuario (IS 0.3 / 1.0, QS 0.7 / 2.0, Γ 0.3, área 0.2).

IS (mm/s)QS (mm/s)Γ (mm/s)% áreaassign_site
0.3495 ± 0.000430.8011 ± 0.000840.299 ± 0.0008559.91Fe3+ Oh
1.101 ± 0.000712.197 ± 0.00140.319 ± 0.001740.09Fe2+ Oh
  • \chi^2_\text{red} = 0.9645; ajuste convergido: True.
  • Fe³⁺/ΣFe = 0.5991 con f_{3+}/f_{2+} = 1 y 0.5546 con f_{3+}/f_{2+} = 1.2.

Las incertidumbres son los errores típicos de lmfit (k = 1) y no incluyen el sesgo del modelo (absorbente delgado, forma lorentziana, f supuesto).

Distribución de campo hiperfino

Código: matlens/core/mossbauer.py::hyperfine_distribution.

d(v) = 1 - \frac{y(v)}{B}, \qquad d \approx G\,w, \qquad G_{ik} = \text{absorción del sextete con } B_k \text{ en } v_i
\min_{w \ge 0}\; \lVert G w - d\rVert^2 + \lambda\,\frac{\lVert G\rVert_F^2}{n}\,\lVert D_2 w\rVert^2

con B = percentil 95 de y, sextetes de IS, \varepsilon, \Gamma y r_{23} fijos, rejilla por defecto de 56 campos entre 0.5 y 55 T, D_2 la matriz de segundas diferencias y \lambda el parámetro smooth (1 por defecto). Se resuelve con NNLS. Se informan p_k = w_k/\sum w, el área total y \langle B_{hf}\rangle = \sum_k B_k p_k.

Incertidumbre: no se propaga.

Referencia: Hesse & Rübartsch, J. Phys. E 7, 526 (1974).

Nota (diferencia con la literatura): el término de suavidad se escala con \lVert G\rVert_F/\sqrt{n} para que smooth sea adimensional; la elección de \lambda es manual.

Plegado del espectro y calibración de velocidad

Código: matlens/core/mossbauer.py::fold, matlens/core/mossbauer.py::calibrate_alpha_fe, matlens/core/mossbauer.py::triangular_velocity.

Plegado (accionamiento triangular, N canales): el canal i y su espejo j = 2c - i tienen la misma velocidad. El punto de plegado c minimiza

\left\langle \left(\frac{y_i}{\bar{y}} - \frac{y(2c-i)}{\overline{y(2c-i)}}\right)^2 \right\rangle

buscando en \pm20 canales alrededor de (N-1)/2 con paso 0.25 y refinando con paso 0.02; el espejo se interpola linealmente. El espectro plegado es y_i + y(2c-i), i < N/2.

Calibración con lámina de α-Fe: se localizan las seis líneas (mínimos más profundos y ajuste de seis lorentzianas en el espacio de canales) y se ajusta por mínimos cuadrados lineales

v(\text{canal}) = v_0 + \Delta v\cdot\text{canal}

contra las posiciones teóricas v^{(0)}(33.0\ \mathrm{T}), lo que además fija el cero en el centroide de α-Fe. Se prueba también el eje invertido y se queda la solución de menor residuo. Comprobaciones: el B_{hf} recalculado con las líneas calibradas (debe ser 33.0 T) y el residuo cuadrático medio en mm/s.

Velocidad nominal sin calibrar: v_i = -v_{\max} + 2v_{\max}\,i/c para i \le c y v_i = v_{\max} - 2v_{\max}(i-c)/(N-1-c) después.

Corrección de referencia: para una fuente distinta, sumar el IS de α-Fe respecto a esa fuente (Rh 0.114, Pd 0.185, Cu 0.226, Cr 0.152, Pt 0.347, SNP −0.257 mm/s).

Detalle de la localización de líneas: profundidad = P_{95}(y) - y; find_peaks con prominencia \ge 15\,\% de la profundidad máxima y separación \ge \max(2, N/60) canales (si hay menos de seis, se repite con 3 % y \max(2, N/80)); se conservan las seis más prominentes. Ajuste de seis lorentzianas en canales (curve_fit, maxfev = 40000, anchura inicial 2w con w = \max(1, (c_6 - c_1)/60)); si falla, se usan los mínimos sin ajustar. Si no se encuentran seis líneas, error «No se encontraron las seis líneas del α-Fe». La calibración no propaga incertidumbre a v_0 ni a \Delta v; el residuo rms es el indicador de calidad. La linealidad del accionamiento se supone: una no linealidad aparece como residuo rms grande. Los valores de α-Fe usan B_{hf} = 33.0 T a temperatura ambiente; a otra temperatura el campo del α-Fe es distinto.

Referencias: NIST SRM 1541; Greenwood & Gibb 1971, tablas 2.3 y 2.4; Stevens & Stevens, Mössbauer Effect Data Index (1975).

Ejemplo resuelto: calibración con α-Fe

Espectro plegado sintético de α-Fe en 256 canales con eje real v = -6.5 + 0.051\cdot\text{canal} mm/s, Γ = 0.25 mm/s y ruido de Poisson. calibrate_alpha_fe devuelve:

MagnitudMatLensVerdadero
v_0 (mm/s)-6.5005-6.5
\Delta v (mm/s por canal)0.0510010.051
B_{hf} de comprobación (T)3333.0
residuo rms (mm/s)0.000281—

Asignación de sitios y fracción Fe³⁺/ΣFe

Código: matlens/core/mossbauer.py::assign_site, matlens/core/mossbauer.py::oxidation_fractions.

Se elige el intervalo (IS, QS) a temperatura ambiente más compatible minimizando d = d_{IS} + 0.25\,d_{QS} + 10^{-3}|\delta - \delta_{\mathrm{medio}}|, donde d_{IS} y d_{QS} son las distancias fuera del intervalo. Intervalos (IS en mm/s): Fe⁰ −0.15–0.10 (solo sextete con 30–35 T), Fe³⁺ Td 0.15–0.30, Fe³⁺ Oh 0.30–0.55, Fe²·⁵⁺ 0.55–0.75, Fe²⁺ Td 0.75–1.00, Fe²⁺ Oh 0.95–1.40. Es una guía, no una identificación; a baja temperatura el desplazamiento Doppler de segundo orden eleva el IS (≈ +0.1 mm/s a 4 K).

\frac{\mathrm{Fe}^{3+}}{\Sigma\mathrm{Fe}} = \frac{n_3}{n_2 + n_3}, \qquad n_3 = \sum \frac{A_{3+}}{f_{3+}/f_{2+}}, \qquad n_2 = \sum A_{2+}

Los sitios Fe²·⁵⁺ cuentan mitad y mitad; Fe⁰ se excluye. Por defecto f_{3+}/f_{2+} = 1 (cociente de áreas sin corregir; valores típicos 1.2–1.3 a temperatura ambiente).

El sitio se considera dentro de intervalo (in_range) si d < 0.01. Los intervalos se solapan cerca de IS ≈ 0.3 mm/s (Fe³⁺ Td/Oh) y ≈ 0.95 mm/s (Fe²⁺ Td/Oh); en esas zonas la asignación de coordinación es ambigua. La fracción Fe³⁺/ΣFe no lleva incertidumbre propagada.

Referencias: Dyar, Agresti, Schaefer, Grant & Sklute, Annu. Rev. Earth Planet. Sci. 34, 83 (2006), doi:10.1146/annurev.earth.34.031405.125049; Greenwood & Gibb 1971, cap. 6; Menil, J. Phys. Chem. Solids 46, 763 (1985); De Grave & Van Alboom, Phys. Chem. Minerals 18, 337 (1991).

Inversión de espinelas a partir de las áreas A/B

Código: matlens/core/mossbauer.py::spinel_inversion.

R = \frac{A_A}{A_B}\,\frac{f_B}{f_A}, \qquad x = \frac{2R}{1+R}
u(R) = R\sqrt{\left(\frac{u(A_A)}{A_A}\right)^2 + \left(\frac{u(A_B)}{A_B}\right)^2}, \qquad u(x) = \frac{2}{(1+R)^2}\,u(R)

Propagación de primer orden de las incertidumbres típicas de las áreas (k=1); x se recorta a [0,1]. Por defecto f_B/f_A = 1 (Sawatzky et al. midieron ≈ 0.94 a 300 K). Validez: absorbente delgado y sextetos A/B resueltos (idealmente baja temperatura y campo aplicado).

Derivación: en la ferrita (\mathrm{M}_{1-x}\mathrm{Fe}_x)[\mathrm{M}_x\mathrm{Fe}_{2-x}]\mathrm{O}_4 hay x átomos de Fe en A y 2-x en B por fórmula; con áreas \propto f\,n, A_A/A_B = (f_A/f_B)\,x/(2-x), de donde x = 2R/(1+R). Si el error de un área es 0 se ignora su término. El resultado lleva siempre la advertencia de que supone absorbente delgado y f_A/f_B indicado, y de que con sextetos A/B solapados (sin campo aplicado) el cociente es aproximado.

Avisos y errores del módulo. El módulo no emite avisos warning/invalid; lanza errores con «Muy pocos canales para plegar» (N < 16), «No se encontraron las seis líneas del α-Fe», «Espectro demasiado corto para un modelo automático» (< 20 puntos), «No hay una señal de absorción detectable», «No se detectaron líneas de absorción» y «El área del sitio B debe ser positiva».

Referencia: Sawatzky, van der Woude & Morrish, Phys. Rev. 187, 747 (1969), doi:10.1103/PhysRev.187.747.

Ejemplo resuelto: grado de inversión

Áreas de los sextetos A = 0.40 ± 0.02 y B = 0.60 ± 0.02 con f_B/f_A = 0.94: spinel_inversion da

R = (0.40/0.60)\times0.94 = 0.6267, x = 0.7705 ± 0.028 (k = 1).

Generado desde MatLens c0ab138. ← Todas las técnicas