
4. Реализация алгоритма и результаты.
На языке С++ была написана программа, со следующей функциональностью:
- получение случайных величин с заданным спектром.
- построение полей с заданным спектром.
- визуализация полученных полей.
- статистический анализ результатов.
Для
простоты был использован стационарный
случай, когда все частоты
.
Не представляет труда построить
нестационарные решения, однако,
сколько-нибудь адекватная визуализация
на бумаге в этом случае не представляется
возможной.
Для тестов был выбран спектр:
Где
за
обозначен максимум спектра.
Число
гармоник было выбиралось поочередно
равным 10, 100 и 1000, расчетная сетка состояла
из 40 делений по осям Х и по У, и 12 делений
по Z.
Визуализация представляет собой
«фотографии» двумерных полей скорости
на разных слоях по оси Z.
Сетка равномерная, шаг сетки h
был выбран равным 0.3,
.
Моделирование случайных величин с заданной плотностью распределения выполнялось с помощью преобразования Смирнова (метода обратных преобразований). Моделирование гауссовых векторов производилось с помощью преобразования Бокса-Мюллера. Описание этих методов можно найти в [4]. Для машинной реализации равномерно распределенных случайных величин был выбран стандартный алгоритм получения псевдослучайных чисел двойной точности, вшитый в компилятор Visual Studio 2010.
На рис.1 в приложении приведена визуализация одной реализации описанного выше алгоритма. Поле качественно совпадает с нашими интуитивными представлениями о полях турбулентных пульсаций скорости.
Посчитаем сначала аналитически корреляционную функцию с выбранным выше спектром, и затем сравним ее с вычисленной в ходе работы алгоритма. Выражение (32) запишется следующим образом (с точностью до константы):
Графики этих функций и их соотнесение с посчитанными в программе при различных числах гармоник можно найти на рис. 2(а, б, в) в Приложении.
Сравнение теоретического спектра с полученным в программе отражены на рис. 3.
Статистический анализ результатов показал, что, во-первых, при росте N (10, 100, 1000) спектр поля стремится к изначально заданному, а, во-вторых, корреляционные функции стремились к аналитически вычисленным.
5. Выводы.
1) Была написана программа, позволяющая получать практически применимые поля. В выходном файле хранятся данные о всех гармониках в разложении (9).
2) Анализ полученных графиков показал, что при увеличении числа гармоник корреляционные функции стремились к аналитически вычисленным. Также, спектр стремился к теоретическому.
3) Было оценено примерное количество гармоник, при которых корреляционные функции становились едва различимы на графиках: N = 600~700.
6. Заключение.
Данный алгоритм позволяет получать трехмерные нестационарные поля турбулентной пульсации скорости без непосредственных решений сложных уравнений, а лишь благодаря знаниям о спектре этих полей. В задачах, где не требуется особая точность вычисления полей далеко от граничных условий, данный метод может дать удовлетворяющие нас результаты. Также данный алгоритм может помочь в решении диффузионных задач, например, для получения траекторий частиц в случайных полях.
Современные вычислительные возможности сполна позволяют получать практически применимые результаты. Одна реализация поля из 1000 гармоник занимает на персональном компьютере от 1 до 15 секунд, что позволяет проводить подобные вычислительные эксперименты, буквально, в домашних условиях.