MatLens · Ecuaciones y modelos

Refinamiento Rietveld

Esta sección describe el modelo de Rietveld que MatLens ajusta (geometría Bragg-Brentano), su función objetivo, los indicadores de calidad y el tratamiento de restricciones e incertidumbres, tal como están implementados.

Patrón calculado

Código: matlens/xrd/rietveld.py::calc_phase_pattern, matlens/xrd/rietveld.py::RietveldModel.calculate.

y_c(2\theta_i) = b(2\theta_i) + \sum_{p} S_p \sum_{\lambda} \sum_{hkl} w_\lambda\, m_{hkl}\, |F_{hkl}|^2\, LP(2\theta_{hkl})\, P_{hkl}\, \Phi(2\theta_i - 2\theta_{hkl,\lambda})
SímboloSignificadoUnidades
y_cintensidad calculadacuentas
bfondo (Chebyshev + halos amorfos)cuentas
S_pfactor de escala de la fase parbitrarias
w_\lambdapeso de cada línea; por defecto Kα1 = 1, Kα2 = 0.5adimensional
m_{hkl}multiplicidad—
\lvert F_{hkl}\rvert^2factor de estructura al cuadrado (con B isótropo por sitio más B global)e²
LPfactor de Lorentz-polarizaciónadimensional
P_{hkl}corrección de orientación preferente (y textura opcional)adimensional
\Phiperfil normalizado (área 1 en grados)°⁻¹

Factor de Lorentz-polarización con monocromador opcional (matlens/xrd/crystal.py::lp_factor):

LP = \frac{1 + \cos^2 2\theta\,\cos^2 2\theta_m}{\sin^2\theta\,\cos\theta\,(1 + \cos^2 2\theta_m)}

con 2\theta_m el ángulo del monocromador (0 por defecto; 26.6° para grafito con Cu).

Nota (diferencia con la literatura): \lvert F\rvert^2 (incluida la dispersión anómala) se evalúa solo a la primera longitud de onda y se reutiliza para Kα2.

Posición del pico con aberraciones instrumentales:

2\theta_{hkl} = 2\theta_0 + z - \frac{180}{\pi}\,\frac{2 s\cos\theta}{R} - \frac{180}{\pi}\,\frac{\sin 2\theta}{2\mu R}
SímboloSignificadoUnidades
zdesplazamiento de cero (refinable entre −1 y 1)°
sdesplazamiento de altura de la muestra (entre −500 y 500)µm
1/\mutransparencia, 1/\mu_{\text{eff}} (entre 0 y 2000)µm
Rradio del goniómetro (240 mm por defecto o leído del archivo)mm

Orientación preferente de March-Dollase (matlens/xrd/rietveld.py::_march_dollase):

P_{hkl} = \left(r^2\cos^2\alpha + \frac{\sin^2\alpha}{r}\right)^{-3/2}

con \alpha el ángulo entre \mathbf h y la dirección de orientación, calculado con la métrica de la celda, y r refinable entre 0.3 y 3 (r = 1: sin textura).

Nota (diferencia con la literatura): se evalúa solo en la reflexión representante hkl, sin promediar sobre las equivalentes de la multiplicidad (aproximación indicada en el código).

Referencias: Young, The Rietveld Method, IUCr/OUP 1993; March-Dollase: J. Appl. Cryst. 19 (1986) 267.

Fondo

Código: matlens/xrd/rietveld.py::chebyshev_bkg.

b(2\theta) = \sum_{n=0}^{N-1} c_n T_n(x) + \sum_k h_k \exp\!\left[-4\ln 2\,\frac{(2\theta - p_k)^2}{\Gamma_k^2}\right], \qquad x = 2\,\frac{2\theta - 2\theta_{\min}}{2\theta_{\max} - 2\theta_{\min}} - 1

T_n son polinomios de Chebyshev de primera especie (6 coeficientes por defecto). Los halos amorfos gaussianos opcionales tienen posición p_k (± 10° de la inicial), FWHM \Gamma_k (1–60°) y altura h_k \ge 0; se refinan con el grupo de fondo. Referencia: implementación propia.

Perfil pseudo-Voigt de Thompson-Cox-Hastings y Caglioti

Código: matlens/xrd/rietveld.py::_tch_parameters, matlens/xrd/rietveld.py::_pvoigt.

Anchuras gaussiana y lorentziana (en grados):

H_G^2 = U\tan^2\theta + V\tan\theta + W, \qquad H_L = X\tan\theta + \frac{Y}{\cos\theta} + \frac{180}{\pi}\,\frac{0.9\,\lambda}{D\cos\theta} + \frac{180}{\pi}\,4\varepsilon\tan\theta

H_G^2 se recorta a un mínimo de 10^{-8} y H_L a 10^{-6}. Anchura total y fracción lorentziana:

H = \left(H_G^5 + 2.69269 H_G^4 H_L + 2.42843 H_G^3 H_L^2 + 4.47163 H_G^2 H_L^3 + 0.07842 H_G H_L^4 + H_L^5\right)^{1/5}
\eta = 1.36603\,q - 0.47719\,q^2 + 0.11116\,q^3, \qquad q = H_L/H
\Phi(\Delta) = \eta\,\frac{2}{\pi H}\,\frac{1}{1 + (2\Delta/H)^2} + (1 - \eta)\,\frac{2}{H}\sqrt{\frac{\ln 2}{\pi}}\,\exp\!\left(-4\ln 2\,\frac{\Delta^2}{H^2}\right)
SímboloSignificadoUnidades
U, V, Wparámetros de Caglioti (por defecto 0.004, −0.002, 0.003; U \ge 0, W \ge 10^{-6})°²
X, Yparámetros lorentzianos (por defecto 0 y 0.02; ambos ≥ 0)°
Dtamaño de cristalito, refinado en nm (1–10000) y convertido a Ånm
\varepsilonmicrodeformación isótropa (0–0.05)adimensional
\Delta2\theta_i - 2\theta_{hkl}°

Cada reflexión se evalúa solo en una ventana de ±12 (H_G + H_L). La asimetría opcional multiplica el perfil por

1 - A\,\operatorname{sgn}(\Delta)\,\frac{\Delta^2}{(H_G^2 + H_L^2)\tan 2\theta_{hkl}}

con A entre −0.5 y 0.5.

Nota (diferencia con la literatura): el tamaño (constante de Scherrer fija en 0.9) y la deformación (4\varepsilon\tan\theta) se suman íntegramente a la componente lorentziana; la asimetría es una forma simple «tipo Howard» y no la corrección de Finger-Cox-Jephcoat.

Modelos opcionales por fase (matlens/xrd/rietveld_ext.py):

  • Microdeformación anisótropa de Stephens (matlens/xrd/rietveld_ext.py::stephens_fwhm_rad): \sigma^2(M_{hkl}) = \sum S_{HKL}\, h^H k^K l^L (H+K+L = 4, M = 1/d^2, S_{HKL} en 10^{-6} Å⁻⁴); se suma \tan\theta\, d^2\sqrt{\sigma^2} (rad) a H_L en lugar de 4\varepsilon\tan\theta. Los valores iniciales reproducen la deformación isótropa (\sigma^2 = 16\varepsilon^2 M^2, con \varepsilon \ge 5\times10^{-4}).
  • Tamaño uniaxial (matlens/xrd/rietveld_ext.py::uniaxial_inv_size): 1/D(\varphi) = \sqrt{(\cos\varphi/D_\parallel)^2 + (\sin\varphi/D_\perp)^2}, con \varphi el ángulo entre \mathbf h^{*} y el eje único.
  • Textura por armónicos esféricos simetrizados (matlens/xrd/rietveld_ext.py::sh_correction): T(\mathbf h) = 1 + \sum_{l\ \text{par}} \sqrt{4\pi/(2l+1)}\sum_\nu C_{l\nu} k_{l\nu}(\mathbf h), recortado a T \ge 10^{-3}, coeficientes entre −5 y 5; índice J = 1 + \sum C_{l\nu}^2/(2l+1).

Referencias: Thompson, Cox & Hastings, J. Appl. Cryst. 20 (1987) 79; Stephens, J. Appl. Cryst. 32 (1999) 281; Bunge, Texture Analysis in Materials Science, 1982; Järvinen, J. Appl. Cryst. 31 (1998) 486.

Función objetivo, pesos y algoritmo

Código: matlens/xrd/rietveld.py::refine.

\min \sum_i w_i\,(y_{o,i} - y_{c,i})^2 + \sum_k \left(\frac{g_k(\mathbf p) - t_k}{\sigma_k}\right)^2, \qquad w_i = \frac{1}{\max(y_{o,i},\ 1)}

Por qué estos pesos. Si las cuentas de cada punto siguen una distribución de Poisson, \sigma_i^2 = y_{o,i} y el estimador de máxima verosimilitud (en la aproximación gaussiana) es el de mínimos cuadrados con w_i = 1/\sigma_i^2. El recorte a 1 evita pesos infinitos en puntos con cero cuentas; con datos ya normalizados o promediados (no cuentas brutas), w_i deja de ser 1/\sigma^2 y R_\text{exp} y GoF pierden su significado absoluto.

El segundo término son las restricciones blandas (restraints): expresión g_k, objetivo t_k y desviación \sigma_k. La minimización usa lmfit.Minimizer.least_squares (SciPy, región de confianza con límites) con un máximo de 400 evaluaciones por etapa. Se descartan puntos no finitos.

Valores iniciales:

  • Si la escala vale 1.0 al inicio, se reescala a f = (\max y_o - P_{10}(y_o))/\max(\sum_p y_p).
  • Si todos los coeficientes de fondo son 0, c_0 = P_{10}(y_o) (percentil 10).
  • Tamaño inicial 100 nm si no se indica; celda, posiciones, ocupaciones y B desde el CIF.

Límites: celda ±5 % del valor CIF; coordenadas libres ±0.1 (fraccionarias); ocupaciones 0–1; B por sitio −1 a 20 Ų; B global −2 a 10 Ų (un valor negativo se acepta, pero se advierte).

Refinamiento por etapas (matlens/xrd/rietveld.py::refine_staged): (1) escala y fondo; (2) + celda y cero; (3) + tamaño y W; (4) + U, V, microdeformación, B; (5) + orientación preferente y desplazamiento; (6) + ocupaciones, B por sitio, posiciones y transparencia (solo en fases que las habilitan). Se omiten las etapas que no liberan nada nuevo. Y no se refina en muestras (correlaciona con el tamaño): se calibra sobre un estándar (LaB6, Si) con CALIBRATION_STAGES, en cuyo caso no se modela ensanchamiento por muestra.

Restricciones (constraints)

Código: matlens/xrd/rietveld.py::_build_params, matlens/xrd/rietveld.py::RietveldModel.link, matlens/xrd/rietveld.py::RietveldModel.sum_to_one, matlens/xrd/rietveld.py::RietveldModel.spinel_inversion.

Las restricciones duras son expresiones de lmfit: el parámetro restringido no se refina y se recalcula a partir de otros. La simetría se impone automáticamente: parámetros de celda independientes según el sistema cristalino y coordenadas libres según la simetría del sitio (matlens/xrd/rietveld_ext.py::site_freedoms). Constructores incluidos:

\mathrm{occ}_{n} = 1 - \sum_{j<n} \mathrm{occ}_j \quad\text{(sitio compartido)}
(A_{1-x}B_x)[A_x B_{2-x}]O_4:\quad \mathrm{occ}_{A,\text{tet}} = 1 - x,\ \mathrm{occ}_{B,\text{tet}} = x,\ \mathrm{occ}_{A,\text{oct}} = x/2,\ \mathrm{occ}_{B,\text{oct}} = 1 - x/2

con x \in [0, 1] (inversión de espinela).

Indicadores de acuerdo

Código: matlens/xrd/rietveld.py::refine.

R_p = \frac{\sum \lvert y_o - y_c\rvert}{\sum y_o}, \qquad R_{wp} = \sqrt{\frac{\sum w (y_o - y_c)^2}{\sum w\, y_o^2}}, \qquad R_{\text{exp}} = \sqrt{\frac{\max(N - P,\ 1)}{\sum w\, y_o^2}}, \qquad \mathrm{GoF} = \frac{R_{wp}}{R_{\text{exp}}}, \qquad \chi^2_\nu = \mathrm{GoF}^2 = \left(\frac{R_{wp}}{R_{\text{exp}}}\right)^2
R_{\text{Bragg}} = \frac{\sum_{hkl} \lvert I_{o,hkl} - I_{c,hkl}\rvert}{\sum_{hkl} \lvert I_{o,hkl}\rvert}

donde I_{o,hkl} se obtiene repartiendo y_o - b entre las reflexiones solapadas en proporción a su contribución calculada (partición de Rietveld).

SímboloSignificado
Nnúmero de puntos
Pnúmero de parámetros variados

Se informan ambos, como en Toby (Powder Diffr. 21 (2006) 67). Los umbrales del índice de determinación (matlens/core/determination.py) se aplican a \chi^2_\nu (\le 2 validado, > 5 impreciso); las hojas guardadas antes de la versión 0.9.6 tenían \chi^2_\nu en el campo gof y se siguen leyendo así.

Validez (matlens/xrd/rietveld.py::result_validity): el análisis cuantitativo se invalida si alguna R_{\text{Bragg}} > 100 %, si una escala cae por debajo de 10^{-6} o si se alcanza el tope de iteraciones; se advierte si R_{\text{Bragg}} > 30 % o si el B global es negativo.

Análisis cuantitativo de fases

Código: matlens/xrd/rietveld.py::refine, matlens/xrd/rietveld_ext.py::internal_standard_qpa, matlens/xrd/rietveld_ext.py::external_standard_qpa.

W_p = \frac{S_p (ZMV)_p}{\sum_i S_i (ZMV)_i}

donde ZM es la masa de la celda y V su volumen (solo con más de una fase). Estándar interno con fracción pesada w_s: k = w_s/W_s, fracciones absolutas kW_p/(1 - w_s) y amorfo = (1 - \sum kW_p)/(1 - w_s). Estándar externo: W_\alpha = S_\alpha (ZMV)_\alpha\, \mu^{*}_m / K, con K = S_s (ZMV)_s \mu^{*}_s / W_s y \mu^{*} en cm²/g; amorfo = 1 - \sum W_\alpha.

Referencias: Hill & Howard, J. Appl. Cryst. 20 (1987) 467; O'Connor & Raven, Powder Diffr. 3 (1988) 2.

Incertidumbres

Código: matlens/xrd/rietveld.py::refine, matlens/xrd/rietveld_ext.py::berar_lelann_factor, matlens/xrd/rietveld_ext.py::durbin_watson.

Las desviaciones estándar (k = 1) son las que devuelve lmfit a partir de la matriz de covarianza del ajuste (aproximación jacobiana, escalada por \chi^2 reducido, comportamiento por defecto de lmfit). Los parámetros restringidos heredan su incertidumbre por propagación de lmfit. Además se reportan:

d_{DW} = \frac{\sum (e_{i+1} - e_i)^2}{\sum e_i^2}, \qquad \rho = \frac{\sum e_{i+1} e_i}{\sum e_i^2}, \qquad \mathrm{SCOR} = \sqrt{\frac{1 + \rho}{1 - \rho}}

con e_i = \sqrt{w_i}(y_{o,i} - y_{c,i}); SCOR = 1 si \rho \le 0 y \rho se limita a 0.999. Las esd corregidas son esd × SCOR. Se listan los pares de parámetros con \lvert r\rvert > 0.9 en la matriz de correlación.

Nota (diferencia con la literatura): la corrección de Bérar-Lelann se aplica en su forma AR(1) simplificada, no con el cálculo completo por bloques de correlación serial.

Supuestos: estadística de Poisson (\sigma^2 = y_o); los errores sistemáticos de modelo no se incluyen en las esd. Referencias: Hill & Flack, J. Appl. Cryst. 20 (1987) 356; Bérar & Lelann, J. Appl. Cryst. 24 (1991) 1, doi:10.1107/S0021889890008391.

Qué no incluyen las esd. Son incertidumbres estadísticas condicionadas a que el modelo sea correcto: no cubren un perfil mal elegido, una estructura de partida errónea, la microabsorción, la rugosidad, la orientación preferente no modelada, ni la correlación con parámetros que se mantuvieron fijos. Con \chi^2_\nu \gg 1 las esd escaladas siguen sin representar el error de modelo. Las fracciones en peso no llevan esd propia (se derivan de las escalas sin propagar). La incertidumbre se informa con k = 1; para un intervalo de ≈ 95 % multiplíquela por 2.

Cuándo falla el método. Fases con estructura desconocida o muy desordenada, amorfo no modelado (las fracciones relativas de Hill–Howard suman 1 aunque haya amorfo: use estándar interno o externo), partículas gruesas (estadística de granos pobre), y muestras con fuerte microabsorción (contraste de absorción entre fases; Brindley).

Ejemplo resuelto: mezcla rutilo + corindón

Patrón sintético Cu Kα1+Kα2 (20–120° 2θ, paso 0.02°) de una mezcla rutilo + corindón calculada con RietveldModel.calculate (perfil TCH con los U, V, W, Y por defecto, tamaños 40 y 80 nm, B global 0.5 Ų), escalado a 20 000 cuentas de máximo, con fondo constante de 50 cuentas y ruido de Poisson (semilla fija). Se parte de celdas desplazadas (rutilo a = 4.600, c = 2.962 Å; corindón a = 4.765, c = 13.005 Å), tamaño 100 nm, y se ejecuta refine_staged con las etapas por defecto.

parámetroverdaderorefinadoesd (k = 1)esd × SCOR
rutilo a (Å)4.59374.593670.000420.00042
rutilo c (Å)2.95872.958670.000260.00026
corindón a (Å)4.75894.758880.000420.00042
corindón c (Å)12.99112.99090.00120.0012
rutilo D (nm)4040.04040.0950.095
corindón D (nm)8080.28450.540.54
B global rutilo (Ų)0.50.4889030.00860.0086
B global corindón (Ų)0.50.5007520.0150.015

Fracciones en peso (Hill–Howard):

faseverdadera (%)refinada (%)
rutile60.0359.98
corundum39.9740.02

Indicadores:

indicadorvalor
R_wp (%)5.049
R_p (%)3.029
R_exp (%)5
GoF1.01
χ²_ν1.02
Durbin–Watson d2.041
factor Bérar–Lelann1
R_Bragg rutile (%)0.327
R_Bragg corundum (%)0.618
validezok

Las esd son estadísticas (Poisson + jacobiano); no incluyen el error de modelo (aquí nulo porque el modelo generador y el ajustado coinciden), por lo que con datos reales la discrepancia con el valor verdadero suele ser mayor que la esd.

Referencias con DOI

  • Rietveld, J. Appl. Cryst. 2 (1969) 65, doi:10.1107/S0021889869006558.
  • Thompson, Cox & Hastings, J. Appl. Cryst. 20 (1987) 79, doi:10.1107/S0021889887087090.
  • Dollase, J. Appl. Cryst. 19 (1986) 267, doi:10.1107/S0021889886089458 (March–Dollase).
  • Hill & Howard, J. Appl. Cryst. 20 (1987) 467, doi:10.1107/S0021889887086199.
  • Stephens, J. Appl. Cryst. 32 (1999) 281, doi:10.1107/S0021889898006001.
  • Toby, Powder Diffr. 21 (2006) 67, doi:10.1154/1.2179804.
  • Caglioti, Paoletti & Ricci, Nucl. Instrum. 3 (1958) 223, doi:10.1016/0369-643X(58)90029-X.
  • Sin DOI verificado aquí: Hill & Flack (1987), Järvinen (1998), O'Connor & Raven (1988), Young (1993, libro), Bunge (1982, libro).

Generado desde MatLens c0ab138. ← Todas las técnicas