Главная страница
Навигация по странице:

  • Визначення початкових і граничних умов

  • ПЕРЕЛІК ДЖЕРЕЛ ПОСИЛАННЯ

  • Математичні моделі та методи розрахунку динаміки рідини на основі гратчастих рівнянь Больцмана Змін Арк. Номер докум. Підп. Дата Розроб.

  • Дубова ДО. Тема роботи) Відомість атестаційної роботи Аркуш Аркушів Перевір. Єсілевський В.С. Н. контр. Сидоров МВ.

  • Диплом. Пример++димплома. Кваліфікаційна робота пояснювальна записка


    Скачать 1.76 Mb.
    НазваниеКваліфікаційна робота пояснювальна записка
    АнкорДиплом
    Дата30.03.2023
    Размер1.76 Mb.
    Формат файлаpdf
    Имя файлаПример++димплома.pdf
    ТипПояснювальна записка
    #1026681
    страница3 из 3
    1   2   3
    Підготовка решітки
    В своєму проекті я вибрав найпростішу двовимірну решітку D2Q9
    (обявлення в коді розглянуто в розділі 1). Рідина в нас – вода. Вода є нестисли- вою рідиною. Кожна клітина BlockLattice2D несе в собі власний динамічний об'єкт, і зіткнення викликається деяким динамічним механізмом виконання.
    Накладні витрати, понесені шляхом делегування зіткнення об'єкту (а не зітк- ненням жорсткого кодування десь усередині циклу через вузли сітки), абсолютно не мають значення.
    BlockLattice2D це в основному nx-by-ny-by-q масив змін-

    41 них типу T. Наступний код, задає решітку для нашої моделі:
    Лістинг 6. Задання решітки в 2D. Метод BlockLattice2D :: get () повертає об'єкт типу Cell
    , який містить простір для зберігання частинок і для додаткових скалярів. Cell пропонує багато методів для читання та маніпулювання даними.
    Краще користуватися цими методами на практиці, ніж звертатися до популяцій часток безпосередньо, яку лістингу 6. Розглянемо як це було зроблено.
    Лістинг 7. Маніпулювання даними методами Cell. У цьому прикладі метод Cell :: computeU() обчислює швидкість на клітині, використовуючи його динамічний об'єкт. Метод Cell :: defineU() навпаки модифікує швидкість шляхом перекладу популяцій частинок у простір моментів, модифікуючи момент швидкості і залишаючи інші моменти такими які вони були. Доступ до даних у лістингу 7 зручний та має виразну перевагу перед під- ходом до лістингу 6. У лістингу 6 доступ до даних всередині Cell здійснюється безпосередньо, тоді як в лістингу 7 до неї можна звертатися через об'єкт дина

    42 міки cell. Хоча прямий доступ до даних працює в простих структурах даних, таких як даний BlockLattice2D, тільки непрямий доступ до даних може викори- стовуватися в складних структурах даних. Якщо код, виконується паралельно, вине можете отримати доступ до даних безпосередньо, так як він не може бути знайдений на процесорі вашого компютера. Об'єкт динаміки, з іншого боку, до- сить розумний, щоб знаходити дані на вашому процесорі, а також створювати пристрій MPI для доступу до нього. По цих причинах в своїй роботі я буду ви- користовувати лістинг 7 та обєкт Cell для задання решітки і маніпуляції данни- ми. Для моделювання руху човна в воді потрібен таймер. Таймер викликаєть- ся і запускається в методі main (лістинг 8). Таймер ініціалізується і починаєть- ся. В циклі виконуються послідовно три функції, які будуть описані далі в цьо- му розділі. Це:
    -
    Функція визначення почакових та граничних умов setBoundaryValues( sLattice, converter, iT, superGeometry );
    -
    Функція зіткнення та виконання потоків sLattice.collideAndStream();
    -
    Функція обчислення та виведення результатів getResults( sLattice, converter, iT, superGeometry, timer );
    Після досягнення максимум ітерацій, що задається із константи maxPhysT, таймер завершається. Після виконання таймеру результат друкуєть- ся в консолі.

    43
    Лістинг 8. Запуск таймера
    Визначення початкових і граничних умов
    Розглянемо першу з трьох важливих функцій, які викликаються під час циклу - це setBoundaryValues (Лістинг 9). Дана функція задає повільно зроста- ючу граничну умову припливу рідини. Оскільки границя залежить від часу, дана функція викликається в основному циклі, який ми описали в вище. Межі за- лишимо незмінними протягом всього моделювання. Дана функція не робить нічого після першої ітерації.

    44
    Лістинг 9. Функція визначення граничних умов
    Даний випуск OpenLB версії 1.1 пропонує пять різних граничних умов для реалізації меж тиску і швидкості. Вони підтримують межі, які узгоджують- ся з числовою сіткою, а також реалізують належні кутові вузли в 2D і 3D, а та- кож крайові вузли. Вибір граничної умови концептуально відокремлений від визначення місця розташування граничних вузлів. Таким чином в даній про- грамі можна змінити вибір граничногї умови шляхом зміни однієї команди в програмі. Ця інструкція є інстанцією об'єкта OnLatticeBoundaryCondition (Ліс- тинг 10):
    // Instantiate 2D boundary condition

    45
    Лістинг 10. Інсталяція OnLatticeBoundaryCondition в 2D.
    Об'єкти типу OnLatticeBoundaryCondition2D використовуються для віднесення ролі граничного вузла до обраних вузлів решітки. Представленний нище код конфігурує решітку таким чином, що човен, що слідує за межами решітки, реалізує граничну умову на швидкості (Лістинг 11).
    Лістинг 11. Встановлення граничних умов швидкості уздовж гратки.

    46 Так як граничні вузли є екземплярами, необхідно вказати орієнтацію кордону через нормальний вектор, який вказується за межами домену. Інструкція addVelocityBoundary1P відноситься до межі, норма, яка знаходиться в додатнь- ому y-напрямку (P означає "додатній", а індекси нумеруються як 0 для x-
    індексу і 1 для індексу y). Для зовнішніх кутів вираз NN відноситься добудь- якого граничного вектора, протилежних точкам напрямку всередині чисельного домену. У цьому випадку цей граничний вектор вказує в відємному х-напрямку і відємному y-напрямку. Термін Зовнішній в методі addExternalVeloci- tyCornerNN відноситься до того, що межі домену мають опуклу форму. Кути увігнутих формованих меж створюються методами форми addInternalVeloci- tyCornerXX, де X знову стоїть для N або P і вказує напрямок вектора, що вказує поза числового домену. Межі тиску так само створюємо, замінюючи слово Ve- locity на Pressure у методах об'єкта OnLatticeBoundaryCondition. Налаштування геометрії числового домену є одноразовою роботою. Нижче наведено функції які були використанні в программі для задання граничних умов швидкості та тиску (Лістинг 12).
    Лістинг 12. Задання граничних умов швидкості та тиску води.
    Дані моделювання OpenLB зберігаються у файловій системі відповід- но до формату даних VTK [12]. Цей формат має структуру XML, і дані в ньому записані як двійковий код Base64. Додатково, дані моделювання стискаються zlib, що дозволяє значно скоротити дані.
    На верхньому рівні ієрархія паралельного виведення містить файл pvd,

    47 який складається з посилань на файли vtm. Файли vtm узагальнюють файли vti.
    Нижче наведенно приклади лістингів файлів pvd (Лістинг 14) та vtm (Лістинг
    15), в які будуть зберігатися результати моделювання.
    Лістинг 15. Приклад файлу "vtm", який вказує на файли "vti", які містять дані кубоїдів. Кожен кубоїд записує свої дані у файл «vti», який збирається файлом «vtm».
    Процес зберігання данних у форматі VTK реалізований в функції getResults, яка викликається в головному циклі з таймером. В лістингу 16 показано процесс збереження данних за допомогою необхідних функцій OpenLB.

    48
    Лістинг 16. Функція getResults для збереження результатів моделювання в файл River2dResults.
    Для графічного відобреження руху човен в воді будемо використовува-

    49 ти такі бібліотеки C++, як OpenGL та QT. Всі будуть проводитися в інтегрова- ному середовищі для програмування QtCreator.
    Створимо головний файл програми main.cpp з таким кодом
    Лістинг 17. Файл main.cpp з методом main. В данному файлі обявленний метод main, який є виконавчим файлом для всіх програм написаних на c++. В данному файлі створенно екземпляр класу
    MyWindow window та показано вікно програми, А також підключено заголово- чниі файли.
    Розглянемо детальніше клас MyWindow.

    50
    Лістинг 18. Класс MyWindow
    Класс MyWindow розширяє клас QDialog з бібліотеки QT. В данному класі в конструкторі створюється вікно программи, на яке додаються такі еле- менти програми, як вивід значень швидкості та тиску внизу вікна, та демонст- рація руху човен в воді вверху вікна. Вивід значень швидкості та тиску зроб- ленно за домомогою такого віджету, як SpinBox. Для відобреження руху човен

    51 створюємо екземпляр класу glView *nView та встановлюємо його як віджет для шару демонстрації. Також в данному класі встановлено назву вікна «River».
    Розглянемо клас демонстрації руху човен glView.
    Лістинг 19. Клас glView. Заголовочний файл glview.h.
    Данний клас розширяє клас QGLWidget бібліотеки OpenGL. В ньму пере- визначенні такі функції даної бібліотеки як initializeGL(), resizeGL() та paintGL() для ініціалізації та відображення графіки. Функція paintGL() малює човен, воду, землю та повітря по заданній геометрії. Функція timerFunction() використовується для відображення руху човна та води. Дана функція виклика-
    ється в конструкторі класу glView
    Лістинг 20. Виклик функції timerFunction() в конструкторі класу glView.

    52
    Данні про швидкість човна зчитуються з файлу River2dResults та запи- суються в змінну xstep. Потім ці данні використовуються функцією timerFunc- tion() для відображення руху. Координата човна по ох задається змінною х
    Лістинг 20. Виклик функції timerFunction() в конструкторі класу glView. В результаті виконання программи човен має рухатись неперервно зліва направо. При досягненні правого краю човен знову повертається на початок.
    Програма працює постійно, аж поки не буде завершенна вручну.
    3.2 Результати обчислювального експерименту
    Запустимо розробленну програму при заданні різних вхідних параметрів, та проаналізуємо результати виконання. Зробленні три тести роботи програми представленні в таблиці 3.1. Так як густина води та вага човна залишаються сталими, вони не будуть відображенні в таблиці. Задамо сталу швидкість руху каное без течії, що дорівнює 8 мс.

    53
    Таблиця 3.1.
    № v течії
    , мс ка- ноем сканое, Па Рисунок
    1 0
    8 0
    4.
    7 2
    0.5 4
    25 00 4.
    8 3
    0.7 2
    49 00 4.
    9
    Результати виконання програми представленні на рис. 3.1 – 3.3 Рис. 3.1. Тест 1

    54 Рис. 3.2. Тест 2 Рис. 3.3. Тест 3

    55
    ВИСНОВКИ В представленній кваліфікаціній роботі було разглянуто основні методи математичного моделювання динаміки рідини. Серед них метод моделювання
    «Гратчаста модель Больцмана, яку я використала у своїй роботі. Було розгля- нуто бібліотеки C++, що реалізують заданий метод моделювання. Серед них була вибрана бібліотека OpenLB. Була розробленна програма для моделювання руху спортивного човна в воді. За домогою бібліотеки OpenLB, було змодельо- вано рух човна з заданням відповідних параметрів моделювання. Були заданні необхідні умови для геометрії та зіткнення човна та води. Програма отримує на вході швидкість руху течії річки, швидкість руху човна без течії, та вагу човна.
    Данні про геометрію човна та води зчитуються з файлу geometry.stl. Результати молелювання записуються в файл River2dResults з розширенням vtk.
    Було розробленно графічний інтерфейс та графічно відображенно резуль- тати моделювання, використовуючи бібліотеки C++ QT та OpenGL. Данні для моделі зчитуються з файлу. Графічний інтерфейс відображає значення швидкос- ті, та тиску, а також рух човна проти течії та зміни руху течії.
    Розробленний інтерфейс відповідає всім необхідним умовам та може бути ви- користанний в операційних системах Linux.
    Створенна система призначена для використання в теоретичному ана- лізі руху твердих тіл в воді, руху човнів в річці. Система може бути викорис- танна на підприємствах по виготовленню спортивних човнів, для попередньо- го моделювання їх руху в воді.
    В подальших етапах розвитку даної системи, можна виділити викорис- тання даного програмного продукту в реальних човнах, та зчитування реальних параметрів течії річки та задання геометрії реальних спортивних човнів.

    56
    ПЕРЕЛІК ДЖЕРЕЛ ПОСИЛАННЯ
    1. Адровер A., Гіона М. Гідродинамічні властивості фракталів: застосування рівняння решітки Больцмана до поперечного потоку, що проходить по ма- сиву фрактальних об'єктів: Міжнародний журнал багатофазного потоку,
    1997.– с.
    2. Агарваль С. Локальні і глобальні теореми Саду Едена: Мічиган, с.
    3. Агаронов Е, Ротман Д.Г. Неньютонівський потік (через пористі середови- ща), метод решітки-Больцмана: Геофізи, с.
    4. Ахлрічс П, Данвег Б. Моделювання решітки Больцмана в системах полімер- них розчинників. - Міжнародний журнал сучасної фізики, 1998. –C. 1429-
    1438.
    5. Аласьєв В, Краснопрошина А, Крищановський В.І. Невирішені проблеми водно рідних структурах. Конспект лекцій у комп'ютерних науках, с.
    6. Чапман С, Говлінг Т.Г. Математична теорія неоднорідних газів: Кембрідж університет, 1970.
    7. Чен Г. теорема і узагальнена напівдетальна умови балансу для гратчастих газових систем. J. Stat. Phys, с.
    8. Аладьев В.З. Классические однородные структуры Клеточные автоматы.
    СА: Palo Alto, Fultus Books, 2009.-535 с.
    9. Аноприенко А.Я., Коноплёва А.П., Плотников Д.Ю. Применение клеточных автоматов для моделирования динамических процессов опыт ДонНТУ, с.
    10. Латт Д, Чопард B. Метод ґратчастого Больцмана з регуляризованими нері- вноважними функціями розподілу: Мат. Comp. Sim., с.
    11. «Документація формату даних VTK». 2009. [Електронний ресурс - Режим доступу http:/ /www.vtk.org/VTK/ img/file-formats.pdf. – Дата доступу
    19.05.2019.

    57
    ДОДАТОК А
    Лістинг програми

    58

    59

    60

    61

    62

    63

    64

    65

    66
    ВІДОМІСТЬ КВАЛІФІКАЦІЙНОЇ РОБОТИ
    Позначення
    Найменування
    Дод. відомості
    Текстові документи
    1
    Пояснювальна записка
    66 с.
    2
    Презентаційний матеріал
    00 с.
    Інші документи
    3
    Роздруківки програм
    00 с.
    4
    Рецензія
    00 с.
    5
    Відгук керівника
    00 с.
    Математичні моделі та методи розрахунку динаміки
    рідини на основі гратчастих рівнянь Больцмана
    Змін
    Арк. Номер докум.
    Підп. Дата
    Розроб.
    Дубова ДО. Тема роботи)
    Відомість
    атестаційної
    роботи
    Аркуш
    Аркушів
    Перевір.
    Єсілевський В.С. Н. контр. Сидоров МВ.
    ХНУРЕ кафедра ПМ
    Затв.
    Тевяшев АД.
    1   2   3


    написать администратору сайта