Исследование проблемы неинвариантности относительно поворота в методе частиц в ячейках (PIC) Выполнили: Агафонцев А.А. Веретельникова И.В. Руководитель: н.с. ИВМиМГ СО РАН, Киреев С.Е. Цель работы Исследовать проблему неинвариантности относительно поворота в задаче моделирования самогравитирующего пылевого облака. Решается задача: f f f u a 0 t x u a 2 2 2 4 2 2 2 x y z t , x fdu Используется PIC-метод: • сетка • частицы Метод частиц в ячейках (PIC) u n1 u n u n1 x n1 x n x n1 2. Частица → сетка: вычисление распределения плотности на сетке 1. Лагранжев этап: осуществление сдвига частиц 3. Эйлеров этап: вычисление гравитационного потенциала (решение трехмерного уравнения Пуассона на сетке): ρ → φ 4. Вычисление сил на сетке: F F Переход на Лагранжев этап. Смотрим время, при котором плотность достигает некоторого порога. Проверка правильности работы программы ячеек по направлению TAU EPS NP EPS число частиц шаг TAU модельное время 100 1,00E-04 100000 0,01 65 0,65 100 1,00E-04 100000 0,05 16 0,8 100 1,00E-05 100000 0,01 100 1 100 1,00E-04 100000 0,01 65 0,65 100 1,00E-04 100000 0,01 65 0,65 100 1,00E-04 225000 0,01 65 0,65 1,2 Модельное время 1 0,8 0,6 0,4 0,2 0 базовый расчет уменьшили TAU уменьшили EPS увеличили число частиц Решение уравнения Пуассона с помощью быстрого преобразования Фурье (FFT) FFT 7 ~ ~ 27 FFTR (7) ikl (27) ikl FFT – прямой метод, сложность порядка О(n*log(n)); является значительно более быстрым, чем методы Зейделя и Якоби. 4*( ikl 1 1 1 2 i 2 k 2 l sin sin sin ) 2 2 2 NX hy NY hz NZ hx ikl 6 2 i 2 k 2 l * ( 1 ( 1 sin )( 1 sin )( 1 sin )) 2 h NX NY NZ Тест с шаром. Проверка на соответствие распределения потенциала аналитическому решению. fourie_7 fourie_27 Исследование неинвариантности Алгоритмы: Пуассон 7 точек Подпрограммы: 1. move_particles 2. density 3. poisson 4. force Пуассон 27 точек Алг 1 Алг 2 Базовый алгоритм 1. cетка → частицы 2. частицы → сетка 3. cетка 4. сетка Тест с кругом для FFT 1,20E-03 1,00E-03 8,00E-04 6,00E-04 4,00E-04 2,00E-04 0,00E+00 1 7 13 19 25 31 37 43 49 55 61 67 73 79 85 91 97 Выделяется 4-я гармоника, схема 7 точек. Ряд1 Ряд2 Ряд3 Ряд4 Ряд5 Ряд6 Ряд7 Ряд8 Ряд9 Ряд10 Ряд11 Ряд12 Ряд13 Ряд14 Ряд15 Ряд16 Ряд17 Ряд18 Ряд19 Ряд20 Ряд21 Ряд22 Ряд23 Ряд24 Ряд25 1,20E-03 1,00E-03 8,00E-04 6,00E-04 4,00E-04 2,00E-04 0,00E+00 1 7 13 19 25 31 37 43 49 55 61 67 73 79 85 91 97 Выделяется 4-я гармоника, схема 27 точек. Ряд1 Ряд2 Ряд3 Ряд4 Ряд5 Ряд6 Ряд7 Ряд8 Ряд9 Ряд10 Ряд11 Ряд12 Ряд13 Ряд14 Ряд15 Ряд16 Ряд17 Ряд18 Ряд19 Ряд20 Ряд21 Ряд22 Ряд23 Ряд24 Ряд25 Сравнение графиков гармоник для различных алгоритмов решения задачи FFT, 7 точек FFT, 27 точек 3,50E-04 3,50E-04 3,00E-04 3,00E-04 2,50E-04 2,50E-04 2,00E-04 Ряд4 2,00E-04 Ряд4 Ряд8 Ряд16 1,50E-04 Ряд8 1,00E-04 1,00E-04 5,00E-05 5,00E-05 0,00E+00 Ряд16 1,50E-04 0,00E+00 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 1 Первый алгоритм 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 Второй алгоритм 3,00E+00 1,80E+00 1,60E+00 2,50E+00 1,40E+00 2,00E+00 1,20E+00 Ряд4 1,50E+00 Ряд8 Ряд16 1,00E+00 Ряд4 1,00E+00 Ряд8 8,00E-01 Ряд16 6,00E-01 4,00E-01 5,00E-01 2,00E-01 0,00E+00 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 0,00E+00 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 Распараллеливание Использовали: • многопоточную библиотеку FFTW • OpenMP 7-точечная схема, FFT 1400 1279.442017 1200 1000 925.764343 time 800 735.041077 688.0755 600 400 200 0 1 2 4 8 threads Threads Time Speedup Efficiency, % 1 2 4 8 1279,442017 925,764343 735,041077 688,0755 1 1,382038557 1,740640159 1,859450041 100 69,10192787 43,51600397 23,24312552 Алгоритм 1 160 144,743408 140 120 time 100 86,672218 80 55,316227 60 39,002926 40 20 0 1 2 3 4 threads Threads Time Speedup Efficiency, % 1 2 4 8 144,743408 86,672218 55,316227 39,002926 1 1,67000928 2,616653663 3,711091009 100 83,5004638 65,41634157 46,38863761 Алгоритм 2 120 113,069267 100 time 80 60 56,792877 40 28,51438 17,219147 20 0 1 2 3 4 threads Threads Time Speedup Efficiency, % 1 2 4 8 113,0693 56,792877 28,51438 17,219147 1 1,9909058 3,9653419 6,5664848 100 99,545289 99,133549 82,08106 Выводы Схема решения уравнения Пуассона практически не влияет на неинвариантность. Этап перехода от сетки к частицам сильнее влияет на неинвариантность, чем этап вычисления распределения плотности (density). Спасибо за внимание