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.
| Símbolo | Significado | Unidades |
|---|---|---|
| y_c | intensidad calculada | cuentas |
| b | fondo (Chebyshev + halos amorfos) | cuentas |
| S_p | factor de escala de la fase p | arbitrarias |
| w_\lambda | peso de cada línea; por defecto Kα1 = 1, Kα2 = 0.5 | adimensional |
| m_{hkl} | multiplicidad | — |
| \lvert F_{hkl}\rvert^2 | factor de estructura al cuadrado (con B isótropo por sitio más B global) | e² |
| LP | factor de Lorentz-polarización | adimensional |
| P_{hkl} | corrección de orientación preferente (y textura opcional) | adimensional |
| \Phi | perfil normalizado (área 1 en grados) | °⁻¹ |
Factor de Lorentz-polarización con monocromador opcional (matlens/xrd/crystal.py::lp_factor):
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:
| Símbolo | Significado | Unidades |
|---|---|---|
| z | desplazamiento de cero (refinable entre −1 y 1) | ° |
| s | desplazamiento de altura de la muestra (entre −500 y 500) | µm |
| 1/\mu | transparencia, 1/\mu_{\text{eff}} (entre 0 y 2000) | µm |
| R | radio 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):
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.
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 se recorta a un mínimo de 10^{-8} y H_L a 10^{-6}. Anchura total y fracción lorentziana:
| Símbolo | Significado | Unidades |
|---|---|---|
| U, V, W | parámetros de Caglioti (por defecto 0.004, −0.002, 0.003; U \ge 0, W \ge 10^{-6}) | °² |
| X, Y | parámetros lorentzianos (por defecto 0 y 0.02; ambos ≥ 0) | ° |
| D | tamaño de cristalito, refinado en nm (1–10000) y convertido a Å | nm |
| \varepsilon | microdeformación isótropa (0–0.05) | adimensional |
| \Delta | 2\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
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.
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:
con x \in [0, 1] (inversión de espinela).
Indicadores de acuerdo
Código: matlens/xrd/rietveld.py::refine.
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ímbolo | Significado |
|---|---|
| N | número de puntos |
| P | nú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.
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:
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ámetro | verdadero | refinado | esd (k = 1) | esd × SCOR |
|---|---|---|---|---|
| rutilo a (Å) | 4.5937 | 4.59367 | 0.00042 | 0.00042 |
| rutilo c (Å) | 2.9587 | 2.95867 | 0.00026 | 0.00026 |
| corindón a (Å) | 4.7589 | 4.75888 | 0.00042 | 0.00042 |
| corindón c (Å) | 12.991 | 12.9909 | 0.0012 | 0.0012 |
| rutilo D (nm) | 40 | 40.0404 | 0.095 | 0.095 |
| corindón D (nm) | 80 | 80.2845 | 0.54 | 0.54 |
| B global rutilo (Ų) | 0.5 | 0.488903 | 0.0086 | 0.0086 |
| B global corindón (Ų) | 0.5 | 0.500752 | 0.015 | 0.015 |
Fracciones en peso (Hill–Howard):
| fase | verdadera (%) | refinada (%) |
|---|---|---|
| rutile | 60.03 | 59.98 |
| corundum | 39.97 | 40.02 |
Indicadores:
| indicador | valor |
|---|---|
| R_wp (%) | 5.049 |
| R_p (%) | 3.029 |
| R_exp (%) | 5 |
| GoF | 1.01 |
| χ²_ν | 1.02 |
| Durbin–Watson d | 2.041 |
| factor Bérar–Lelann | 1 |
| R_Bragg rutile (%) | 0.327 |
| R_Bragg corundum (%) | 0.618 |
| validez | ok |
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).