Опалесценция коллоидных частиц — очень красивое явление природы. Посмотрев на просвет пробирку с опалесцирующими частицами мы увидим, что раствор как будто окрашен, однако, это не так — сами частицы состоят из вещества не поглощающего свет. Всё дело в том, как наночастицы рассеивают излучение.
Раз мы наблюдаем цвет, и это не иллюзия, то возможно записать спектр поглощения коллоида. Затем, полученный спектр вычислим теоретически, чтобы убедиться в том, как теория рассеяния света работает в этом случае. Для расчётов нам понадобится теория Густава Ми. Для расчётов я использовал язык программирования Julia и модуль MieScatter.
Нужный модуль штатно подсоединяется к набору пакетов Julia:
pkg> add https://github.com/dronir/MieScatter.jlпосле чего мы можем с ним работать.
using MieScatter const nm = 0.001 const nλ = 1000 particle_area = π*(1.0nm)^2 x = size_parameter(1.0nm, 400nm) S, Qsca, Qext, Qback = compute_mie(x, 2.0, [0.0]) σ_sc_mie = Qsca*particle_area Qsca_rayleigh(λ, α, m) = 2/3π*λ^2*α^6*((m^2 - 1)/(m^2 + 2))^2 σ_sc_ray = Qsca_rayleigh(400nm, x, 2.0)Здесь мы проверили, что в предельном случае рассеяние Ми переходит в рэлеевское рассеяние. Переходим к расчёту спектра опалесценции 1500 нм частиц полистирола в воде:
using MieScatter # индексы преломления воды и полистирола # взяты с https://refractiveindex.info/ ref_indx_core(λ) = sqrt(1 + 1.4435λ^2/(λ^2 - 0.020216)) ref_indx_medium(λ) = sqrt(1.46659 + 0.293555*λ^2/(λ^2-0.0155008)) # 1.3378 const nm = 0.001 const nλ = 1000 const r_NP = 1500nm/2 λs0 = LinRange(250nm, 1000nm, nλ) λs = λs0 ./ ref_indx_medium.(λs0) xs = size_parameter.(r_NP, λs) Qexts = zeros(nλ) for i=1:nλ n_rel = ref_indx_core(λs0[i])/ref_indx_medium(λs0[i]) S, Qscas, Qexts[i], Qback = compute_mie(xs[i], n_rel, [0.0]) end using Printf for i=1:nλ Printf.@printf("%f %f\n",λs0[i]/nm, Qexts[i]) endВывод спектра осуществляется командой
julia Mie-PS-latex.jl > PS-1500nm.dataЗатем, файл PS-1500nm.data отрисовываем в программе Gnuplot. Результат представлен на картинке ниже. Фиолетовая кривая — наш расчёт, бирюзовая — экспериментальный спектр.