Dinamica Browniana
Un coloide es un sistema formado por 2 o más fases. Típicamente una fase sólida y una líquida. La fase líquida se encuentra formada por partículas de unas pocas micras. En este caso, cada partícula sigue un movimiento browniano, pues la partícula es sufcientemente pequeña como para ver afectado su movimiento por la colisión de las moléculas del líquido, pero no tan pequeña que se pueda considerar parte del fluido.
En esta práctica desarrollarás un método para poder estudiar sistemas coloidales. La idea fundamental es resolver la ecuación de Langevin con el método de Euler y después aplicar esto a un conjunto de partículas que puede interactuar entre ellas.
Paso 1: Movimiento Browniano
En 1827 Robert Brown, un biólogo inglés, observó en el microscopio que las partículas de polen en agua se movían de forma "extraña", siguiendo trayectorias asarosas. Sus observaciones sirvieron como prueba de que la materia está constituida por moléculas que se mueven ergódicamente en todas direcciones. En 1905, Einstein fue capaz de hacer un modelo estadístico el cual describía adecuadamente el movimiento Browniano. Con él pudo mostrar que, las partículas Brownianas siguen un comportamiento difusivo.
Hoy en día esto se usa en muchas áreas de la física, como la termodinámica, la dinámica de fluidos, biofísica, y muchos otros.
Como un primer paso, tendrás que ser capaz de modelar una caminata aleatoria (o movimiento browniano).
[1] Dibuja una caminata de borracho en 2D. Para esto, genera pasos de tamaño fijo, en una dirección aleatoria.
INFO: Initializing package repository /home/user/.julia/v0.6
INFO: Cloning METADATA from https://github.com/JuliaLang/METADATA.jl
GitError(Code:ERROR, Class:Net, curl error: Failed to connect to github.com port 443: Connection timed out
)
Stacktrace:
[1] macro expansion at ./libgit2/error.jl:99 [inlined]
[2] clone(::String, ::String, ::Base.LibGit2.CloneOptions) at ./libgit2/repository.jl:276
[3] #clone#100(::String, ::Bool, ::Ptr{Void}, ::Nullable{Base.LibGit2.AbstractCredentials}, ::Function, ::String, ::String) at ./libgit2/libgit2.jl:562
[4] (::Base.LibGit2.#kw##clone)(::Array{Any,1}, ::Base.LibGit2.#clone, ::String, ::String) at ./<missing>:0
[5] (::Base.Pkg.Dir.##8#10{String,String})() at ./pkg/dir.jl:55
[6] cd(::Base.Pkg.Dir.##8#10{String,String}, ::String) at ./file.jl:70
[7] init(::String, ::String) at ./pkg/dir.jl:53
[8] #cd#1(::Array{Any,1}, ::Function, ::Function, ::String, ::Vararg{String,N} where N) at ./pkg/dir.jl:28
[9] pickDefaultBackend() at /ext/julia/julia-0.6.2/share/julia/site/v0.6/Plots/src/backends.jl:155
[10] backend() at /ext/julia/julia-0.6.2/share/julia/site/v0.6/Plots/src/backends.jl:174
[11] Plots.Plot() at /ext/julia/julia-0.6.2/share/julia/site/v0.6/Plots/src/types.jl:81
[12] #plot#176(::Array{Any,1}, ::Function, ::Array{Real,1}, ::Vararg{Array{Real,1},N} where N) at /ext/julia/julia-0.6.2/share/julia/site/v0.6/Plots/src/plot.jl:56
[13] plot(::Array{Real,1}, ::Array{Real,1}, ::Vararg{Array{Real,1},N} where N) at /ext/julia/julia-0.6.2/share/julia/site/v0.6/Plots/src/plot.jl:52
[14] include_string(::String, ::String) at ./loading.jl:522
[2] Calcula el desplazamiento cuadrático medio de estas caminatas aleatorias. Es decir, el promedio de como función del tiempo ( significa el promedio sobre muchas caminatas aleatorias).
[3] Para tiempos grandes, el desplazamiento cuadrático medio va como , donde es el coeficiente de difusión. Calcula este coeficiente.
[4] Generaliza esto para dimensiones.
Paso 2: Movimiento Browniano y la ecuación de Langevin
Hacer una caminata aleatroia es relativamente sencillo, pero ¿cómo se vería esa misma caminata si estuviramos bajo la acción de algún potencial? Tendría que haber una probabilidad mayor de moverse en determinada dirección. Calcular esa probabilidad como función del potencial no parece tan fácil.
La forma de resolver este problema, es escribiendo la segunda ley de Newton para nuestra partícula browniana de masa . Una vez escrita la segunda ley de Newton, se utiliza el teorema de equipartición que dice que por cada grado de libertad de cada partícula, la energía cinética está dada por para reducir términos ( es la temperatura y la constante de Boltzmann). Entonces, las fuerza que actúan sobre una partícula grande de masa serán:
la fuerza debido al potencial, es decir .
la fuerza debido a la fricción de la partícula en el fluido, es decir y finalmente,
una contribución estocástica que depende de la fricción y la energía cinética de las partículas, es decir, , donde es una variable aleatoria de tipo gaussiana.
Es decir:
Esta ecuación es complicada y en general, lo que nos interesa simular es el caso donde con respecto a nuestro sistema completo, es muy pequeña. En el caso donde tiende a 0, esta equación se reduce a , que es la equación de Lagevin, base para dinámica Browniana.
La dificultad de resolver esta clase de ecuaciones consiste en la , pues no es una variable aleatoria homogenea, sino gaussiana.
[1] haz una función R(t) que te genere un valor aleatorio entre -Inf e Inf, con una distribución de probabilidad de tipo gaussiano.
[2] Para el caso donde U(x) = 0, resuelve la ecuación de dinámica Browniana usando el método de Euler (recuerda que R depende del tiempo. Deberías obtener simplmente una partícula Browniana libre.
[3] Calcula el coeficiente de difusión del paso anterior. Ahora tu coeficiente de difusión depende de la temperatura y de . Para fijo, ¿Cómo depende de la temperatura? ¿Qué relación hay con la del paso anterior?
Paso 3: Dinámica Browniana.
En este punto ya eres casi un experto en movimiento Browniano. Ahora vamos a pasar a implementar potenciales. Para esto tendrás que usar una versión n-dimensional del método de Euler.
[1] Haz una función que calcule , dada cualquier función
[2] Haz una función que aplique el método de Euler n-dimensional para obtener las soluciones de la ecuación de la dinámica Browniana, dado un potencial , una temperatura y un coeficiente de fricción .
Constante de Boltzmann:
Coeficiente de fricción:
Donde es la viscosidad dinámica del medio y es el radio de la partícula browniana
[3] Haz una simulación (una animación), de una partícula de polen en agua bajo el cámpo gravitatorio de la tierra. En este punto suele haber problemas. A la hora de graficar, observa la escala y asegúrate que está realmente cayendo la partícula de Polen para campos suficientemente grandes (que la caída no sea de con .
[4] Haz una simulación de una partícula browniana cargada negativamente, en un potencial de Coulomb de otra partícula (masiva) cargada positivamente. Tendrás problemas si las partículas se acercan demasiado, piensa como resolver ese caso de forma realista.
El potencial de una partícula de carga con carga en presencia de un potencial generado por una partícula de carga ubicada en el origen es:
(carga de un electrón)
(radio de la partícula cargada)
Paso 4: Dinámica Browniana con muchas partículas.
Hasta ahora sólo hemos visto qué pasa cuando tenemos 1 partícula. Pero puede ser que las partículas interactuen entre ellas. ¿Cómo podemos hacer esto? El potenciál U dependerá de las posiciones de las demás partículas.
[1] Haz una simulación considerando 10 partículas (posiciones iniciales aleatorias). Las partículas deben tener algún potencial de esfera suave (el que gustes). ¿Qué sucede?
Suponiendo un conjunto de 10 particulas con carga negativa en presencia de una particula mas masiva de carga positiva tendremos que incluir en el potencial las interacciones entre las particulas negativas y las interacciones entre las particulas positivas, e,i donde y
[2] Ahora cambia de esfera suave a partículas cargadas, 5 positivas, 5 negativas.
Paso 5: Condiciones a la frontera.
En algunos casos, si las partículas no están confunadas, simplemente se escaparán del sistema. Una forma de confinar las partículas es poniendo un potencial de amarre para todas, pero eso es poco realista. Una mejor forma de confinar el sistema, es poniendo condiciones a la frontera. Un posible caso, es poner una barrera de potencial "suave" (lo pongo entre comillas, porque típicamente se busca que ese potencial se comporte como un potencial duro). Otra opción es considerar al sistema infinito, pero periódico, o lo que es lo mismo, poner condiciones periódicas (tipo pac-man) a la frontera.
[1] Haz las mismas simulaciones que en el paso 4, pero con condiciones periódicas a la frontera. ¿Qué sucede ahora? El arreglo final es igual?
[2] Repite las simulaciones del paso 4, pero esta vez poniendo barreras de potencial "suave" en la frontera, de tal forma quelas partículas estén confinadas. ¿Qué sucede esta vez?
[3] Confinamos las partículas coloidales entre 2 planos. Esto nos deja 2 direcciones donde las partículas se pueden mover libremente. En esas direcciones aplicamos condiciones periódicas a la frontera. pon los planos perpendiculares al eje . Utiliza un potencial de esfera suave y potencial gravitatorio. ¿Qué sucede?
Paso 5: Mediciones
Ya tenemos nuestras simulaciones, ahora, nos interesa hacer mediciones. Hay muchas posibilidades de medición aquí, porque hay muchas variables que podríamos considerar y muchos modelos complejos que podríamos hacer. Aquí te propondré uno relativamente sencillo. Utilizaremos la geometría del punto 3 del paso 5 y el potencial de esfera suabe de la forma: con una constante dada, si el radio de las esferas y si .
[1] Mide el para cada una de las simulaciones. ¿Cómo cambia la difusión (desplazamiento cuadrático medio) como función de y como función de ? ¿Como cambia si se "apaga" la gravedad?
[2] Incrementa la densidad del sistema y vuelve a medir . ¿cómo cambia la difusión, como función de la densidad? (Para cambiar la densidad puedes incrementar las partículas o reducir el volumen).