7 votos

El cálculo de los patrones de difracción de uso de la FFT

Estoy tratando de escribir un fragmento de código que calcula un patrón de difracción similar a un experimento de rayos X mediante una FFT.

Desde mi conocimiento, el patrón de difracción por punto, las partículas pueden ser calculados a partir de la siguiente fórmula:

$$ S(\mathbf{k}) = \left| \int_V d\mathbf{r}\rho(\mathbf{r})e^{-i\mathbf{k}\cdot\mathbf{r}} \right|^2 $$

que es, básicamente, el factor de estructura y $\rho(\mathbf{r})$ es la función de densidad.

Mi tiro sobre esta fue la primera discretise la fórmula anterior utilizando una caja de lado a $r_{max}$: $$ S(\mathbf{k}) = \frac{r_{max}}{M} \sum_{lmn}^M \rho_{lmn} e^{-i\frac{r_{max}}{M}\left( k_x l + k_y m +k_z n \right)} $$ Ahora, no estoy seguro de cómo discretise la wavevector y cómo esta discretización se corresponden a las motoneuronas inferiores a los índices de la FFT: $$ A_{lmn} = \sum_{ijk}^M a_{ijk} e^{-i2\pi\frac{1}{M}\left( l i + mj +nk \right)} $$

Otro detalle estoy seguro de cuál es la forma de obtener una imagen 2D correspondiente al patrón de difracción. Lo que yo, sin embargo, fue que el $\mathbf{k} = \mathbf{k}_S - \mathbf{k}_I$, donde S es la de la luz dispersa y yo por el incidente y puedo establecer $\mathbf{k}_I = (\frac{2\pi}{\lambda},0,0)$. En la aproximación, la dispersos y de incidencia de las ondas tienen la misma magnitud $\frac{2\pi}{\lambda}$, por lo que para un píxel de la pantalla (que tiene una distancia d de la muestra) con coordenadas $x,y$, tengo: $$ \mathbf{k}_S = \frac{2\pi}{\lambda} \frac{(d, x, y)}{\sqrt{d^2 + x^2 + y^2}} $$ y, en consecuencia, puedo calcular una dispersión vector de onda para cada píxel.

Como ya he mencionado que no estoy tan seguro de cómo discretise mi dispersión de vector de onda y cómo esto corresponde a la FFT de la onda-vectores, y en el último paso de encontrar la correcta onda-vectores para cada píxel. Podría tal vez me ayude a salir?

1voto

codethrift Puntos 452

Si usted realmente tiene punto de partículas, a continuación,$\rho(\mathbf{r})=\sum_i \rho_i \delta(\mathbf{r}-\mathbf{r}_i)$, y, por tanto,$S(\mathbf{k}) = \left| \sum_i\rho_i e^{-i\mathbf{k}\cdot\mathbf{r_i}} \right|^2$. Incluso si el $\mathbf{r}_i$ no están en una red uniformes, existe no uniforme de la FFT técnicas para evaluar tales sumas de dinero para una lista de $\mathbf{k}_j$ el uso normal de la Fft con la adecuada corrección + filtros de paso bajo y la interpolación de los núcleos.

Como parece suponer que el $\mathbf{r}_i$ están en una cuadrícula uniforme, sólo se necesita la interpolación de los núcleos (y apropiado sobremuestreo). La más sencilla de proceder es, probablemente, para calcular las derivadas de orden mayor por una FFT en un uniforme de la cuadrícula, y el uso de estos derivados para la construcción de locales polinomio interpolants que permiten la evaluación del espectro en puntos arbitrarios $\mathbf{k}_j$.

Ahora, no estoy seguro de cómo discretise la wavevector y cómo esta discretización se corresponden a las motoneuronas inferiores a los índices de la FFT:

Si se le pregunta como esta, solo hay que comparar los coeficientes de $l$, $m$ y $n$ en el exponente: El $k_x$, $k_y$ y $k_z$ debe ser tal que $e^{-i\frac{r_{max}}{M}\left( k_x l + k_y m +k_z n \right)} = e^{-i2\pi\frac{1}{M}\left( l i + mj +nk \right)}$. Esto es equivalente a $r_{max}\left( k_x l + k_y m +k_z n \right) = 2\pi\left( l i + mj + nk + M\mathbb{Z} \right)$. Si esto debe ser cierto para arbitrario $l$, $m$ y $n$ ($\in \mathbb{Z}$) entonces $k_x = \frac{2\pi}{r_{max}}(i + M\mathbb{Z})$, $k_y = \frac{2\pi}{r_{max}}(j + M\mathbb{Z})$ y $k_z = \frac{2\pi}{r_{max}}(k + M\mathbb{Z})$.

Otro detalle estoy seguro de cuál es la forma de obtener una imagen 2D correspondiente al patrón de difracción.

No estoy seguro, pero creo que usted necesita para seleccionar una teoría de difracción como la de Rayleigh-Sommerfeld o de Fresnel-Kirchhoff en primer lugar. Esto le dará una descomposición de la difracción de campo en una suma de ondas planas. (Alternativamente, usted puede también resolver el problema de difracción rigurosamente por Maxwell ecuación para obtener esta suma de ondas planas.) A continuación, se debe propagar estas ondas planas para el punto de observación (tener cuidado para tratar evanescente ondas planas correctamente...), y superponer ellos de nuevo (por ejemplo por otro FFT).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X