Цель второго этапа — формализовать задачу моделирования неравновесной агрегации в виде четких алгоритмических схем, определить необходимый математический аппарат для анализа получаемых структур и обосновать выбор вычислительных подходов для дальнейшей программной реализации.
В рамках этапа «Алгоритмы» требуется:
Описать общий подход к моделированию агрегации, ограниченной диффузией (DLA).
Привести математические формулы для вычисления фрактальной размерности двумя методами.
Составить пошаговые алгоритмы для базовой модели DLA.
Описать модификации алгоритма для случаев с переменной вероятностью прилипания.
Изложить алгоритмы для бессеточной модели, баллистической агрегации и кластер-кластерной агрегации.
Моделирование агрегации основано на методе дискретных событий (или клеточных автоматов для сеточной версии). Пространство представляется в виде регулярной сетки (решеточная модель) либо непрерывного поля координат (бессеточная модель). Ключевое предположение модели DLA: скорость роста кластера лимитируется диффузией частиц, а не кинетикой их присоединения к поверхности.
Процесс моделируется пошагово:
Задается начальное состояние системы (затравочная частица или подложка).
Генерируется новая блуждающая частица на границе области.
Частица совершает случайные блуждания.
При контакте с кластером частица присоединяется к нему с заданной вероятностью.
Процесс повторяется до достижения нужного размера кластера.
Для ускорения вычислений применяются методы ограничения области блуждания (стартовая окружность и зона уничтожения).
Движение частицы описывается дискретным случайным процессом. На каждом шаге $t$ координаты частицы изменяются на вектор $(dx, dy)$, где компоненты выбираются случайно из множества разрешенных направлений.
Для сеточной модели:
Направления выбираются из четырех возможностей: вверх, вниз, влево, вправо. Вероятность каждого направления равна $1/4$:
$$ P(\text{вверх}) = P(\text{вниз}) = P(\text{влево}) = P(\text{вправо}) = \frac{1}{4} $$
Для бессеточной модели:
Угол движения $\alpha$ выбирается равномерно из интервала $[0, 2\pi)$. Смещение на шаге $h$ задается как:
$$ \Delta x = h \cdot \cos(\alpha), \quad \Delta y = h \cdot \sin(\alpha) $$
Для количественной характеристики получаемых разветвленных структур используется понятие фрактальной размерности $D$.
Масса кластера (число частиц) $N$ связана с его характерным размером степенным законом:
$$ N \sim R_g^D $$
Радиус гирации $R_g$ определяется как среднеквадратичное расстояние от частиц до центра масс кластера:
$$ R_g = \sqrt{ \frac{1}{N} \sum_{i=1}^{N} \left[ (x_i - x_c)^2 + (y_i - y_c)^2 \right] } $$
где $(x_c, y_c)$ — координаты центра масс.
В логарифмических координатах эта зависимость становится линейной:
$$ \ln N = D \cdot \ln R_g + C $$
Тангенс угла наклона прямой, построенной методом наименьших квадратов, дает значение размерности $D$.
Пространство, содержащее кластер, покрывается сеткой с квадратными ячейками размера $\varepsilon$. Подсчитывается число ячеек $N(\varepsilon)$, содержащих хотя бы одну точку кластера. При уменьшении размера ячейки число непустых ячеек растет по закону:
$$ N(\varepsilon) \sim \varepsilon^{-D} $$
В логарифмических координатах:
$$ \ln N(\varepsilon) = -D \cdot \ln \varepsilon + C $$
По наклону графика $\ln N(\varepsilon)$ от $-\ln \varepsilon$ определяется размерность $D$.
В базовой модели частица прилипает при первом же касании кластера (вероятность $p = 1$). В более сложных модификациях вводится параметр вероятности прилипания $p < 1$. При проверке контакта генерируется случайное число $\xi$, равномерно распределенное на $[0, 1]$. Прилипание происходит при выполнении условия:
$$ \xi \leq p $$
В химически-ограниченной агрегации вероятность $p$ зависит от локального окружения — числа уже занятых соседних узлов $k$:
$$ p = p(k), \quad k = 1, 2, 3, 4 $$
В кластер-кластерной агрегации используется модель диффузии целых агрегатов. Коэффициент диффузии кластера зависит от его размера (массы $M$). Обычно принимается степенная зависимость:
$$ D(M) = D_0 \cdot M^{-\gamma} $$
где $\gamma = 1/2$ (для свободно-сочлененных цепочек) или $\gamma = 1/d_f$ (для фрактальных агрегатов).
Входные данные:
Шаг 1. Инициализация. Создать пустую сетку $grid[L][L]$. Поместить затравочную частицу в центр $(L/2, L/2)$. Установить счетчик $N = 1$.
Шаг 2. Основной цикл. Пока $N < N_{total}$:
Шаг 3. Блуждание. Пока не $stuck$ и расстояние от центра $< R_{kill}$ ( $\approx 2 \cdot R_{max} + \delta$ ):
Шаг 4. Если частица не прилипла (ушла далеко) — запустить новую (вернуться к шагу 2).
Входные данные:
Алгоритм:
Для каждого размера кластера $N$ (с шагом $\Delta N$) вычислить:
Построить график в координатах $X = \ln(R_g)$, $Y = \ln(N)$. Выполнить линейную регрессию $Y = D \cdot X + C$. Наклон $D$ — искомая фрактальная размерность.
Входные данные: бинарное изображение кластера (матрица занятости).
Алгоритм:
Определить ограничивающий прямоугольник кластера.
Для размера ячейки $\varepsilon = L/2, L/4, L/8, \dots, \varepsilon_{min}$:
Построить график в координатах $X = -\ln(\varepsilon)$, $Y = \ln(N_{box})$. Выполнить линейную регрессию $Y = D \cdot X + C$. Наклон $D$ — фрактальная размерность.
Модификация шага проверки прилипания в базовом алгоритме:
При обнаружении контакта с кластером подсчитать число занятых соседей $k$. Определить вероятность $p_k$ по таблице:
| $k$ | $p_k$ |
|---|---|
| 1 | 0.01 |
| 2 | 0.1 |
| 3 | 0.9 |
| 4 | 1.0 |
Если $random() < p_k$ — прилипание. Иначе — отступить на предыдущую позицию и продолжить блуждание.
Координаты частиц — вещественные числа $(x, y \in \mathbb{R})$.
Начальная позиция: $R_{start} = R_{max} + 5 \cdot r$, $\alpha = random(0, 2\pi)$, $x = R_{start} \cdot \cos(\alpha)$, $y = R_{start} \cdot \sin(\alpha)$, где $r$ — радиус частицы.
Шаг блуждания: $\alpha = random(0, 2\pi)$, $x = x + h \cdot \cos(\alpha)$, $y = y + h \cdot \sin(\alpha)$, где $h$ — длина шага.
Проверка прилипания: для каждой точки кластера $(x_c, y_c)$ вычислить расстояние $d = \sqrt{(x - x_c)^2 + (y - y_c)^2}$. Если $d \leq d_{stick}$ ( $\approx 2 \cdot r$ ) — прилипание.
Уничтожение: если расстояние от центра $> 2 \cdot R_{max} + 20 \cdot r$ — частица уничтожается.
Инициализация: создать подложку — линию занятых узлов при $y = 0$.
Для каждой новой частицы:
Граница кластера определяется как множество точек с максимальной $y$-координатой для каждого $x$.
Инициализация: создать $N$ одиночных частиц в случайных позициях. Каждая частица — отдельный кластер размера 1.
Эволюция (пока число кластеров $> 1$):
Результат — один большой фрактальный агрегат.
Выбор сеточной модели как базовой обусловлен простотой реализации, наглядностью, естественным параллелизмом (клеточный автомат) и возможностью точного подсчета соседей.
Метод стартовой окружности позволяет сократить время расчета в десятки раз, исключая бесполезное блуждание частиц на периферии.
Два метода расчета размерности используются для взаимной верификации результатов: метод радиуса гирации удобен при анализе процесса роста «на лету», метод ящиков дает более точную оценку для уже сформированного кластера.
Расширение до бессеточной и кластер-кластерной моделей необходимо для исследования влияния дискретизации пространства на структуру агрегатов и сравнения с реальными физическими экспериментами (коллоидные системы, аэрозоли).
В рамках второго этапа проекта:
Полученные алгоритмические схемы служат основой для непосредственного написания программного кода на следующем этапе работы.