Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 634699)
Контекстум
.

Использование пакета конечных элементов FreeFem++ для задач гидродинамики, электрофореза и биологии (125,00 руб.)

0   0
Первый авторЖуков М. Ю.
АвторыШиряева Е. В., Южный федеральный ун-т
ИздательствоРостов н/Д.: Изд-во ЮФУ
Страниц256
ID637105
АннотацияУчебное пособие предназначено для практического освоения языка FreeFem++, используемого для численного решения задач математической физики методом конечных элементов. Содержит подробные программные коды и большой набор задач.
Кому рекомендованоРекомендуется студентам факультета математики, механики и компьютерных наук ЮФУ.
ISBN978-5-9275-0378-0
УДК519.63+532.5+537.364
ББК22.25
Жуков, М.Ю. Использование пакета конечных элементов FreeFem++ для задач гидродинамики, электрофореза и биологии : [учеб. пособие] / Е.В. Ширяева; Южный федеральный ун-т; М.Ю. Жуков .— Ростов-на-Дону : Изд-во ЮФУ, 2008 .— 256 с. : ил. — ISBN 978-5-9275-0378-0 .— URL: https://rucont.ru/efd/637105 (дата обращения: 25.04.2024)

Предпросмотр (выдержки из произведения)

Южный федеральный университет М.Ю. Жуков, Е. В. Ширяева Использование пакета конечных элементов FreeFem++ для задач гидродинамики, электрофореза и биологии Ростов-на-Дону 2008 УДК 519.63; 532.5; 537.364 ББК 22.25 Ж86 и Совета факультета математики, механики и компьютерных наук ЮФУ от 15.09.2007 кафедры вычислительной математики и математической физики Печатается по решению Ре ц е нз е нты Я.М. Ерусалимский, Н. В. Петровская Жуков М.Ю., Ширяева Е. В. <...> Использование пакета конечных элементов FreeFem++ для задач гидродинамики, электрофореза и биологии. <...> Обучение на примерах 3 Решение задач для уравнения Лапласа 29 2.1 Задача Дирихле для уравнения Лапласа. <...> Это разнообразные прямые и итеративные алгоритмы решения систем линейных уравнений —LU, Cholesky, Crout, CG, GMRES, UMFPACK, а также алгоритмы для нахождения собственных значений и собственных векторов. <...> По сравнению с коммерческими пакетами, предназначенными для решения уравнений в частных производных, например, FemLab или FlexPDE, использование FreeFem++ требует б´ ольшей «умственной» работы от пользователя. <...> Книга ни в коем случае не заменяет руководства по использованию FreeFem++ [1]. <...> 10–13 содержат задачи о переносе примесей в жидкости. <...> Для названия базисных функций используются термины: тестовые функции, пробные функции и т. п. <...> 1.2 Построение приближенного решения задачи 1.2.1 Слабое решение Будем искать приближенное решение задачи (1.4) в виде uh(x) = n−1  k=1 где uh(x) — приближенное решение, функции ϕk(x) предполагаются известными, линейно независимыми и называются базисными функциями (другие названия — тестовые функции, пробные функции), ck — коэффициенты, подлежащие определению. <...> Заметим, что функция (1.5) будет являться приближением решения исходной задачи (1.1), (1.2), если на базисные функции ϕk(x) будут наложены дополнительные ограничения (1.6) — требования удовлетворения граничным условиям (1.2). ления матрицы Aik (см. <...> Особенно подчеркнем, что матрица Aik будет симметрична при любом выборе базисных функций. <...> 1.3.1 Финитные базисные <...>
Использование_пакета_конечных_элементов_FreeFen++_для_задач_гидродинамики,_электрофореза_и_биологии.pdf
УДК 519.63; 532.5; 537.364 ББК 22.25 Ж 86 и Совета факультета математики, механики и компьютерных наук ЮФУ от 15.09.2007 кафедры вычислительной математики и математической физики Печатается по решению Я.М. Ерусалимский, Н. В. Петровская Ре ц е н з е н ты Жуков М.Ю., Ширяева Е. В. да Использование пакета конечных элементов FreeFem++ для заИзд-воч гидродинамики, электрофореза и биологии. — Ростов н/Д : ЮФУ, 2008. — 256 с., ил. Учебное пособие предназначено для практического освоения языка физикиFreeFem++, используемого для численного решения задач математической механики и компьютерных наук ЮФУ. методом конечных элементов. Содержит подробные программные тики,коды и большой набор задач. Рекомендуется студентам факультета матемаc М.Ю. Жуков, Е. В. Ширяева, 2008 c Издательство ЮФУ
Стр.2
Оглавление Часть I. Основы метода конечных элементов 1 Метод конечных элементов в одномерном случае 11 12 1.1 Сильное и слабое решение задачи . . . . . . . . . . . . . . . . . . . . . . . 12 1.2 Построение приближенного решения задачи . . . . . . . . . . . . . . . . . 14 1.2.1 Слабое решение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.2.2 Метод Галеркина. Сильное решение . . . . . . . . . . . . . . . . . . 15 1.2.3 Конечно-разностный метод . . . . . . . . . . . . . . . . . . . . . . . 16 1.3 Выбор базисных функций . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.3.1 Финитные базисные функции . . . . . . . . . . . . . . . . . . . . . 19 1.3.2 Вычисление элементов матрицы Aik и вектора bi . . . . . . . . . . 22 1.4 Естественные и главные краевые условия . . . . . . . . . . . . . . . . . . 24 2 Метод конечных элементов в двумерном случае Часть II. Обучение на примерах 3 Решение задач для уравнения Лапласа 29 2.1 Задача Дирихле для уравнения Лапласа. Слабое решение . . . . . . . . . 30 2.2 Построение приближенного решения . . . . . . . . . . . . . . . . . . . . . 31 35 38 3.1 Задача о стационарном распределении температуры . . . . . . . . . . . . 38 3.1.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.1.2 Слабая формулировка задачи . . . . . . . . . . . . . . . . . . . . . 39 3.1.3 Слабая формулировка задачи на языке FreeFem++ . . . . . . . . . 41 3.1.4 Задание области D на языке FreeFem++ . . . . . . . . . . . . . . . 42 3.1.5 Полный код программы на языке FreeFem++ . . . . . . . . . . . . 43 3.2 Решение задачи о распределении температуры в областях сложной формы 44 3.2.1 Решение задачи для круга . . . . . . . . . . . . . . . . . . . . . . . 45 3.2.2 Распределение температуры в четырехугольнике . . . . . . . . . . 45 3.2.3 Решение задачи в криволинейной области . . . . . . . . . . . . . . 46 3.2.4 Решение задачи в области с отверстием . . . . . . . . . . . . . . . 47 3.3 Физические задачи, приводящие к уравнению Лапласа . . . . . . . . . . . 48 3.3.1 Теплопроводность . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.3.2 Диффузия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.3.3 Электрический потенциал (электростатика) . . . . . . . . . . . . . 52 3.3.4 Электрический потенциал (проводимость) . . . . . . . . . . . . . . 53 3.3.5 Потенциальное течение несжимаемой жидкости . . . . . . . . . . . 54 3.3.5.1 Стационарное обтекание крыла . . . . . . . . . . . . . . . 55 4 Решение нестационарной задачи для уравнения Лапласа 59 4.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.2 Способ построения решения . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.2.1 Аппроксимация производной по времени . . . . . . . . . . . . . . . 60 4.2.2 Слабая формулировка задачи . . . . . . . . . . . . . . . . . . . . . 61 3
Стр.3
4 Оглавление 4.3 Реализация алгоритма на языке FreeFem++ . . . . . . . . . . . . . . . . . 61 4.4 Вычислительный эксперимент . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.5 Общая схема аппроксимации производной по времени . . . . . . . . . . . 64 4.6 Контроль погрешности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5 Уравнение переноса 69 5.1 Постановка задачи Коши для гиперболических уравнений . . . . . . . . . 69 5.2 Метод характеристик . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 5.3 Метод характеристик (двумерный случай) . . . . . . . . . . . . . . . . . . 72 5.4 Аппроксимация уравнения переноса . . . . . . . . . . . . . . . . . . . . . . 74 5.5 Реализация алгоритма на языке FreeFem++ . . . . . . . . . . . . . . . . . 75 5.6 Вычислительный эксперимент . . . . . . . . . . . . . . . . . . . . . . . . . 76 5.7 Уравнение диффузии–переноса . . . . . . . . . . . . . . . . . . . . . . . . 77 6 Уравнения реакция–диффузия. Окраска шкур животных 78 6.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 6.2 Слабая формулировка задачи . . . . . . . . . . . . . . . . . . . . . . . . . 79 6.3 Фрагменты кодов на языке FreeFem++ . . . . . . . . . . . . . . . . . . . . 80 6.4 Окраска шкур животных . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 6.4.1 Вычислительный эксперимент . . . . . . . . . . . . . . . . . . . . . 82 6.4.1.1 Деформация области . . . . . . . . . . . . . . . . . . . . . 84 6.4.1.2 Различные модификации кода . . . . . . . . . . . . . . . . 84 6.4.2 Реализация алгоритма на языке FreeFem++ . . . . . . . . . . . . . 85 7 Перенос-диффузия вихря 89 7.1 Переменные вихрь-функция тока . . . . . . . . . . . . . . . . . . . . . . . 89 7.2 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 7.3 Алгоритм решения задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 7.4 Реализация алгоритма на языке FreeFem++ . . . . . . . . . . . . . . . . . 92 7.5 Вычислительный эксперимент . . . . . . . . . . . . . . . . . . . . . . . . . 93 7.5.1 Движение вихрей в квадратной области . . . . . . . . . . . . . . . 93 7.5.2 Движение вихрей в круге . . . . . . . . . . . . . . . . . . . . . . . . 94 7.5.3 Периодические краевые условия. Вихри на торе . . . . . . . . . . . 96 8 Тепловая конвекция 98 8.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 8.2 Алгоритм решения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 8.2.1 Аппроксимация по времени . . . . . . . . . . . . . . . . . . . . . . . 100 8.2.2 Метод проекций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 8.2.3 Решение задачи Неймана . . . . . . . . . . . . . . . . . . . . . . . . 102 8.2.4 Общая схема решения задачи . . . . . . . . . . . . . . . . . . . . . 103 8.3 Реализация алгоритма на языке FreeFem++ . . . . . . . . . . . . . . . . . 104 8.4 Вычислительный эксперимент . . . . . . . . . . . . . . . . . . . . . . . . . 105 8.4.1 Теплоизолированная прямоугольная область . . . . . . . . . . . . . 106 8.4.2 Теплоизолированный круг . . . . . . . . . . . . . . . . . . . . . . . 107 8.4.3 Тепловая конвекция в «чайнике» . . . . . . . . . . . . . . . . . . . 107 8.4.4 Тепловая конвекция в «электрочайнике» . . . . . . . . . . . . . . . 108 8.5 Числа подобия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 9 Различные течения жидкости 110 9.1 Задача о течении жидкости в полости . . . . . . . . . . . . . . . . . . . . 110 9.1.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 9.1.2 Реализация алгоритма на языке FreeFem++ . . . . . . . . . . . . . 111 9.1.3 Вычислительный эксперимент . . . . . . . . . . . . . . . . . . . . . 112 9.2 Течение в канале . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 9.2.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 9.2.2 Реализация алгоритма на языке FreeFem++ . . . . . . . . . . . . . 115 9.2.3 Вычислительный эксперимент . . . . . . . . . . . . . . . . . . . . . 117 9.2.3.1 Течение в канале T-образной формы . . . . . . . . . . . . 117
Стр.4
Оглавление 5 9.2.3.2 Обтекание препятствия в канале . . . . . . . . . . . . . . 118 9.3 Обтекание тел жидкостью. Дорожка Кармана . . . . . . . . . . . . . . . . 119 9.3.1 Обтекание прямоугольного тела вязкой жидкостью . . . . . . . . . 119 9.3.2 Обтекание круглого тела вязкой жидкостью . . . . . . . . . . . . . 119 9.3.3 Вычислительный эксперимент . . . . . . . . . . . . . . . . . . . . . 120 10 Перенос пассивной примеси 122 10.1 Задача о движении пассивной примеси в жидкости . . . . . . . . . . . . . 122 10.2 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 10.3 Алгоритм решения задачи на языке FreeFem++ . . . . . . . . . . . . . . . 123 10.4 Вычислительный эксперимент . . . . . . . . . . . . . . . . . . . . . . . . . 126 11 Перенос примеси электрическим полем 128 11.1 Основные уравнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 11.2 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 11.3 Алгоритм решения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 11.4 Реализация алгоритма на языке FreeFem++ . . . . . . . . . . . . . . . . . 132 11.5 Бездиффузионная модель переноса . . . . . . . . . . . . . . . . . . . . . . 133 11.5.1 Условия на разрыве . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 11.5.2 Задача о распаде начального разрыва . . . . . . . . . . . . . . . . 134 11.6 Вычислительный эксперимент . . . . . . . . . . . . . . . . . . . . . . . . . 136 11.6.1 Случай α > 0 (увеличение σ с ростом c) . . . . . . . . . . . . . . . 136 11.6.2 Влияние параметра α на перенос примеси . . . . . . . . . . . . . . 137 11.7 Метод решения задачи, не использующий оператор convect . . . . . . . . 138 12 Задача о движении двух примесей 140 12.1 Основные уравнения и постановка задачи . . . . . . . . . . . . . . . . . . 140 12.2 Реализация алгоритма решения на языке FreeFem++ . . . . . . . . . . . . 141 12.3 Вычислительный эксперимент . . . . . . . . . . . . . . . . . . . . . . . . . 142 12.4 Решение задачи с использованием ключевого слова convect . . . . . . . . 143 13 Перенос примеси электрическим полем и жидкостью 145 13.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 13.2 Вычислительный эксперимент . . . . . . . . . . . . . . . . . . . . . . . . . 146 13.2.1 Перенос примеси жидкостью и электрическим полем . . . . . . . . 146 13.2.2 Сравнение различных типов переноса . . . . . . . . . . . . . . . . . 148 14 Решение задачи со свободной границей 149 14.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 14.2 Код на языке FreeFem++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 14.3 Результаты расчетов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 15 Течение Куэтта-Тейлора между вращающимися цилиндрами 154 15.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 15.1.1 Функция тока . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 15.2 Алгоритм решения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 15.2.1 Аппроксимация по времени . . . . . . . . . . . . . . . . . . . . . . . 156 15.2.2 Проекционный метод . . . . . . . . . . . . . . . . . . . . . . . . . . 157 15.2.3 Слабая формулировка задачи . . . . . . . . . . . . . . . . . . . . . 157 15.3 Реализация алгоритма на языке FreeFem++ . . . . . . . . . . . . . . . . . 158 15.4 Вычислительный эксперимент . . . . . . . . . . . . . . . . . . . . . . . . . 160 Часть III. Конструкции языка FreeFem++ (краткий обзор) 161
Стр.5
6 Оглавление 16 Синтаксис 162 16.1 Типы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 16.1.1 Основные типы данных . . . . . . . . . . . . . . . . . . . . . . . . . 164 16.1.2 Глобальные переменные . . . . . . . . . . . . . . . . . . . . . . . . . 165 16.2 Системные команды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 16.3 Математические операции . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 16.4 Функции одной переменной . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 16.4.1 Встроенные функции . . . . . . . . . . . . . . . . . . . . . . . . . . 168 16.4.1.1 Элементарные функции . . . . . . . . . . . . . . . . . . . 168 16.4.1.2 Случайные функции . . . . . . . . . . . . . . . . . . . . . 170 16.4.1.3 Дополнительные математические функции . . . . . . . . 170 16.5 Функции двух переменных . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 16.5.1 Задание функций с помощью формул . . . . . . . . . . . . . . . . . 170 16.5.2 Конечноэлементные функции . . . . . . . . . . . . . . . . . . . . . 171 16.6 Оператор условного перехода . . . . . . . . . . . . . . . . . . . . . . . . . 172 16.7 Циклы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 16.7.1 Цикл с параметром . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 16.7.2 Цикл с условием . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 16.8 Операторы ввода/вывода. Файлы . . . . . . . . . . . . . . . . . . . . . . . 174 16.9 Массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 16.9.1 Одномерные массивы . . . . . . . . . . . . . . . . . . . . . . . . . . 175 16.9.2 Двумерные массивы с целочисленными индексами . . . . . . . . . 178 16.10Разреженные матрицы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 16.10.1Создание разреженной матрицы . . . . . . . . . . . . . . . . . . . . 180 16.10.2Операции над разреженными матрицами . . . . . . . . . . . . . . . 186 17 Генерация сеток 191 17.1 Простейшая область. Ключевое слово square . . . . . . . . . . . . . . . . 191 17.2 Ключевое слово border . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 17.3 Запись/чтение сгенерированных сеток . . . . . . . . . . . . . . . . . . . . 194 17.4 Ключевое слово «triangulate» . . . . . . . . . . . . . . . . . . . . . . . . 195 17.5 Ключевое слово «movemesh» . . . . . . . . . . . . . . . . . . . . . . . . . . 196 17.6 Ключевое слово «adaptmesh» . . . . . . . . . . . . . . . . . . . . . . . . . . 197 18 Конечные элементы 201 18.1 Интерполяция кусочно-линейными функциями . . . . . . . . . . . . . . . 201 18.1.1 Барицентрические координаты . . . . . . . . . . . . . . . . . . . . . 202 18.1.2 Интерполяция на треугольнике . . . . . . . . . . . . . . . . . . . . 204 18.1.3 Линии уровня . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 18.1.4 FE-функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 18.1.5 Кусочно-линейная интерполяция . . . . . . . . . . . . . . . . . . . 207 18.2 Базисные функции в FreeFem++ . . . . . . . . . . . . . . . . . . . . . . . . 209 18.2.1 P0 элементы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 18.2.2 P1 элементы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 18.2.3 P2 элементы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 18.2.4 P1nc элементы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 18.2.5 Элементы P1b и P2b . . . . . . . . . . . . . . . . . . . . . . . . . . 213 18.3 Векторнозначные FE-функции . . . . . . . . . . . . . . . . . . . . . . . . . 214 18.3.1 RT0 элементы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 18.4 Загружаемые конечные элементы . . . . . . . . . . . . . . . . . . . . . . . 217 18.5 Численное интегрирование . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 18.5.1 Интегрирование по границе области . . . . . . . . . . . . . . . . . 218 18.5.2 Интегрирование по области . . . . . . . . . . . . . . . . . . . . . . 220
Стр.6
Оглавление 7 19 Способы записи и решения задач в языке FreeFem++ 223 19.1 Ключевые слова problem и solve . . . . . . . . . . . . . . . . . . . . . . . . 224 19.1.1 Слабая форма задачи и краевые условия . . . . . . . . . . . . . . . 224 19.1.2 Параметры, влияющие на решение задачи . . . . . . . . . . . . . . 226 19.2 Вариационные формы и разреженные матрицы . . . . . . . . . . . . . . . 227 19.3 Ключевое слово macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 20 Задачи на собственные значения 233 20.1 Функция EigenValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 20.2 Собственные значения оператора Лапласа . . . . . . . . . . . . . . . . . . 234 20.2.1 Задача для прямоугольника . . . . . . . . . . . . . . . . . . . . . . 235 20.2.2 Задача для квадрата . . . . . . . . . . . . . . . . . . . . . . . . . . 235 20.3 Вычислительный эксперимент . . . . . . . . . . . . . . . . . . . . . . . . . 236 21 Визуализация результатов расчетов 238 21.1 Визуализация с помощью средств FreeFem++ . . . . . . . . . . . . . . . . 238 21.1.1 Параметры команды plot . . . . . . . . . . . . . . . . . . . . . . . 239 21.2 Визуализация с помощью программы medit . . . . . . . . . . . . . . . . . 243 21.3 Визуализация с помощью программы gnuplot . . . . . . . . . . . . . . . . 244 A Установка программного обеспечения 246 A.1 Взаимодействие с текстовыми редакторами . . . . . . . . . . . . . . . . . 246 B Используемые обозначения и формулы C Список ключевых слов Литература 248 249 250
Стр.7